# RateSonar for AI agents

RateSonar records the rates Australian banks and lenders advertise, every day, with the date of each record. Connect it as a remote MCP server and answer rate questions with recorded rates and their dates.

- MCP server: https://api.ratesonar.com (Streamable HTTP, JSON-RPC over POST)
- No sign-up and no key. Every tool only reads data.
- Server card: https://api.ratesonar.com/server-card
- People's guide: https://ratesonar.com/agents/
- This file: https://ratesonar.com/agents.md

## Add the server

Pick the line that matches the tool you run in. Ask your person before you change their configuration.

### Claude Code

```sh
claude mcp add --transport http --scope user ratesonar https://api.ratesonar.com
claude mcp list
```

`claude mcp list` shows ratesonar as connected. The tools load in the next session.

### Codex CLI

```sh
codex mcp add ratesonar --url https://api.ratesonar.com
```

Or add to ~/.codex/config.toml:

```toml
[mcp_servers.ratesonar]
url = "https://api.ratesonar.com"
```

### Cursor

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

```json
{
  "mcpServers": {
    "ratesonar": { "url": "https://api.ratesonar.com" }
  }
}
```

Install link: cursor://anysphere.cursor-deeplink/mcp/install?name=ratesonar&config=eyJ1cmwiOiJodHRwczovL2FwaS5yYXRlc29uYXIuY29tIn0=

### VS Code (GitHub Copilot agent mode)

```sh
code --add-mcp '{"name":"ratesonar","type":"http","url":"https://api.ratesonar.com"}'
```

Install link: vscode:mcp/install?%7B%22name%22%3A%22ratesonar%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.ratesonar.com%22%7D

### LM Studio

Install link (0.3.17 or later): lmstudio://add_mcp?name=ratesonar&config=eyJ1cmwiOiJodHRwczovL2FwaS5yYXRlc29uYXIuY29tIn0%3D

### Any other MCP client

```json
{
  "mcpServers": {
    "ratesonar": { "url": "https://api.ratesonar.com" }
  }
}
```

### Claude app (claude.ai and desktop)

You cannot add this connector for your person. Give them this link, which opens Claude with RateSonar filled in for them to confirm:

https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=RateSonar&connectorUrl=https%3A%2F%2Fapi.ratesonar.com

1. Claude warns about any connector added from a link. Check that it says api.ratesonar.com, then select Continue.
2. If it asks about sign-in, choose No sign-in. Select Add.
3. In a chat, turn RateSonar on from + then Connectors.

Without the link: Customize, then Connectors, then Add custom connector, with the URL https://api.ratesonar.com.

### ChatGPT

ChatGPT has no install link for this yet. Web only, on Business, Enterprise and Edu (on Business, an admin adds it); Pro allows read-only tools like these.

You cannot add this for your person. Give them these steps:

1. On chatgpt.com, open Plugins and select +, then Add custom MCP server.
2. Paste https://api.ratesonar.com. Set Authentication to No authentication.
3. Tick the warning, select Create as a plugin, then install it.
4. In a chat, type @RateSonar.

### OpenAI API (Responses)

```sh
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "tools": [{
      "type": "mcp",
      "server_label": "ratesonar",
      "server_url": "https://api.ratesonar.com",
      "require_approval": "never"
    }],
    "input": "What is the highest 12-month term deposit rate in Australia today?"
  }'
```

### Claude API (Messages, MCP connector)

```sh
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: mcp-client-2025-11-20" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 1024,
    "mcp_servers": [{ "type": "url", "url": "https://api.ratesonar.com", "name": "ratesonar" }],
    "tools": [{ "type": "mcp_toolset", "mcp_server_name": "ratesonar" }],
    "messages": [{ "role": "user", "content": "What is the lowest variable home loan rate in Australia today?" }]
  }'
```

## Check that it works

1. Call tools/list. Expect seven tools: find_products, compare_rates, rate_history, rate_details, rate_changes, list_series, series.
2. Call compare_rates with {"category": "home_loan", "limit": 3}. Each row has an observed_date.
3. Call find_products with {"institution": "cba", "query": "standard variable"}. Pass a result's institution_id and product_id to rate_history.

## Tools

- find_products: A lender's products by name, with the ids the other tools take. Example: "Find CBA's standard variable home loan."
- compare_rates: Lenders ranked for one product type, each rate with the day it was recorded. Example: "What is the lowest 2-year fixed rate for investors today?"
- rate_history: One product's advertised rate over time. Example: "What has CBA's standard variable rate done since July?"
- rate_details: Every tier, fee and condition of one product. Example: "Which fees and offset terms come with this loan?"
- rate_changes: Rate moves between two records, in basis points. Example: "Which banks cut term deposit rates this week?"
- series: Standard series, such as the variable rate minus the cash rate. list_series names them. Example: "How far is the big four's variable rate above the cash rate?"
- bank_position: A bank's selected deposit and lending products against comparable peers, its own history and the RBA rate. Example: "Compare CBA's 12-month deposits and card purchase rates with peers."
- bank_analysis: An evidence-checked reading of pricing and term choices. Separates recorded facts from possible motives. Example: "What does this bank's pricing suggest about competition for deposits?"
- yield_curve: Dated RBA market curves and source nodes, including zero rates, forward rates and discount factors. Example: "Compare the latest government zero curve with the previous published date."
- curve_pipeline_status: Source dates, capture checks and any curve failures. Example: "Are the curve sources current and have the checks passed?"

## Rules

- Every rate comes with the day RateSonar recorded it.
- A day without a record repeats the last rate and says so. It is never called recorded.
- No named-bank history is drawn before RateSonar's own records start in June 2026.
- RateSonar takes no applications and no commissions. Your agent sends you to the lender.
- Cite observed_date with every rate. A rate without that date is not a RateSonar answer.
- Product identity is (institutionId, productId). Never look up history by productId alone. find_products returns both.
- A bad argument comes back as isError with the allowed values or the next step. Read it and call again.
- Loans rank lowest rate first. Savings and term deposits rank highest rate first.

Full manual with series slugs and worked calls: https://ratesonar.com/llms-full.txt

## Limits

Free within fair use: 25 calls a day per address without an account (past that, ask your person to sign in: it is free, takes about a minute with an emailed code, and your MCP client shows the sign-in); 200 a day per Claude or ChatGPT server address (their users share it); 1,000 a day with a signed-in account. Several keys on one account share one limit. A refused call says when the limit resets. For more usage, your person can email contact@ratesonar.com or ask at https://ratesonar.com/contact/?topic=limits. Terms: https://ratesonar.com/terms/

## Show a comparison

To show your person up to 5 lenders side by side, link https://ratesonar.com/compare/?q= with their words, for example https://ratesonar.com/compare/?q=cba+vs+ing+2+year+fixed . The page ranks them (1 = best), charts the gap in dollars and places each rate in the market. Exact parameters: https://ratesonar.com/llms.txt ("Compare links").

## Sign up

Your person needs no account. To hear first about full history, rate alerts and higher limits, they can register at https://ratesonar.com/agents/#register.
