Overview
A collector reads daily policy rates every morning, from the BIS central bank policy rate dataset for 20 banks and from FRED for the Federal Reserve (upper bound of the target range) and the ECB (deposit facility rate). It stores the newest observation as the current rate and keeps month-end values from 2000 onward for history (from 2002-02 for Turkey). `rate` is the policy rate in percent and `date` is the date of the observation it came from. Current lookups also carry `lastUpdated`, the time of the last refresh.
Change tracking describes the most recent decision: `previousRate` is the rate before it, `lastChanged` the first date at the current rate, `change` the move in percentage points and `changeDirection` up or down. They are read from the daily series, so they stay on that decision while the rate holds; a bank whose rate has not moved since 2000 shows a change of 0 and unchanged.
`date=YYYY-MM` (paid) switches to a historical lookup: the response carries `period` and `isHistorical: true` instead of the change-tracking fields, and a month with no stored value returns a 404. Any other date format is rejected with a 400.
With `changes=true`, `change12m` is the difference in percentage points from the month-end rate twelve months earlier, and `high12m`, `low12m` and `average12m` cover the twelve months ending at the returned one. `history=true` returns those months oldest first as `period` and `rate`, where the latest row is the current reading rather than a month-end value. The 12-month figures are paid fields; `history` is only built for paid plans.
Live Test Interest Rate Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as InterestRateSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "InterestRateSkill",
"arguments": {
"country": "US"
}
}You do not name the tool yourself; the model picks it. Asking about US in the terms this skill covers is enough for it to reach for InterestRateSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
countryRequired | string | 2-letter country codeAUBRCACHCNCZDKEU+14length 2–2 |
dateOptionalPremium | string | Optional month in YYYY-MM format for a historical lookup. Omit for the current rate. |
historyOptionalPremium | boolean | Include the 12 monthly rates ending at the returned month |
changesOptional | boolean | Include the 12-month change and the 12-month high, low and average |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"country": "US",
"countryName": "United States",
"centralBank": "Federal Reserve",
"rate": 4,
"date": "2026-10-27",
"lastUpdated": "2026-10-27T10:00:00.000Z",
"lastChanged": "2026-09-17",
"change": 0.25,
"changeDirection": "up",
"previousRate": 3.75,
"change12m": 0,
"high12m": 4,
"low12m": 3.75,
"average12m": 3.8125,
"history": [
{
"period": "2025-11",
"rate": 4
},
{
"period": "2025-12",
"rate": 3.75
},
{
"period": "2026-01",
"rate": 3.75
},
{
"period": "2026-02",
"rate": 3.75
},
{
"period": "2026-03",
"rate": 3.75
},
{
"period": "2026-04",
"rate": 3.75
},
{
"period": "2026-05",
"rate": 3.75
},
{
"period": "2026-06",
"rate": 3.75
},
{
"period": "2026-07",
"rate": 3.75
},
{
"period": "2026-08",
"rate": 3.75
},
{
"period": "2026-09",
"rate": 4
},
{
"period": "2026-10",
"rate": 4
}
]
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
country | string | US | Two-letter ISO country code for the nation |
countryName | string | United States | Full name of the country in English |
centralBank | string | Federal Reserve | Name of the central bank managing monetary policy |
rate | number | 4 | Central bank policy interest rate percentage for the requested period (current if no date) |
date | string | 2026-10-27 | Date when the rate data was recorded |
lastUpdated | string | 2026-10-27T10:00:00.000Z | ISO timestamp of the last data refresh update (current lookups only) |
lastChangedPremium | string | 2026-09-17 | Date when the rate was last changed (current lookups only) |
changePremium | number | 0.25 | Size of the last rate change in percentage points (current lookups only) |
changeDirection | string | up | Direction of last change: up, down, or unchanged (current lookups only) |
previousRatePremium | number | 3.75 | Rate before the last change (current lookups only) |
change12mPremium | number | 0 | Change in percentage points from the rate 12 months earlier (with changes=true) |
high12mPremium | number | 4 | Highest month-end rate in the 12 months ending at the returned month (with changes=true) |
low12mPremium | number | 3.75 | Lowest month-end rate in the 12 months ending at the returned month (with changes=true) |
average12mPremium | number | 3.8125 | Average month-end rate over the 12 months ending at the returned month (with changes=true) |
historyPremium | array[12] | The 12 monthly rates ending at the returned month, oldest first (when history=true) | |
history.0.periodPremium | string | 2025-11 | Month of the rate (YYYY-MM) |
history.0.ratePremium | number | 4 | Policy rate at the end of that month (or the latest, for the current month) |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Forex Trading Strategies
- Algorithmic currency traders evaluate interest rate differentials between countries to identify carry trade opportunities and adjust open positions before policy announcements.
- Fixed Income Portfolios
- When evaluating sovereign debt yields, bond portfolio managers compare current policy rates against benchmark curves to model duration risks across international markets.
- Macroeconomic Dashboards
- Financial media portals publish current central bank benchmark rates and recent change directions next to national inflation reports for market researchers.
- Loan Underwriting Calculations
- Calculate cross-border financing costs by feeding sovereign policy rates directly into commercial lending valuation models across 22 tracked economies.
Other ways to use Interest Rate Skill
Set up Interest Rate Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Finance: