South African Reserve Bank (SARB) Web API MCP. Keyless.
Server defines 5 tools with complete input schemas and descriptions. Naming is domain-specific but lacks action verbs (home_rates, current_market_rates, cpd_rates, exchange_rates, timeseries). Descriptions are adequate (100-250 chars) but lack WHEN/WHY guidance for LLM selection. Parameter descriptions present but sparse. No output schema documentation. Error handling is minimal, unknown timeseries codes silently return empty arrays rather than guiding recovery. Tools are read-only and well-scoped, but descriptions could better explain dependencies (e.g., 'Use home_rates first to discover TimeseriesCodes').
Current Corporation for Public Deposits (CPD) interest rates: interest charged and interest earned. Each item includes a TimeseriesCode usable with the `timeseries` tool. No arguments.
Current South African money-market rates: SARB Policy Rate, Sabor, Zaronia. Each item includes a TimeseriesCode usable with the `timeseries` tool. No arguments.
Selected South African Rand exchange rates. frequency="daily" (default) returns latest daily rates (Rand per USD, GBP, Euro, etc.). frequency="monthly" returns latest monthly figures including the nominal and real effective exchange rate indices. Each item includes a TimeseriesCode usable with the `timeseries` tool.
Current headline South African rates shown on the SARB home page: CPI & PPI inflation, SARB Policy Rate, prime lending rate, government bond yields, Sabor/Zaronia money-market rates, and key Rand exchange rates (USD/GBP/EUR). Each item includes its TimeseriesCode for use with the `timeseries` tool. No arguments.
Historical observation series for a single SARB indicator, identified by its TimeseriesCode (obtain codes from home_rates, current_market_rates, cpd_rates or exchange_rates). Examples: "MMRD002A" (SARB Policy Rate), "MMRD000A" (prime lending rate), "EXCX135D" (Rand per US Dollar), "CPI1000F" (CPI). Optionally bound the range with start_date and end_date (YYYY-MM-DD); omit both for the full available history. An unknown code returns an empty list.
Tool names lack action verbs. 'home_rates', 'current_market_rates', 'cpd_rates', 'exchange_rates' are nouns/adjectives, not verb_noun patterns. LLMs infer intent from names, 'get_home_rates', 'list_current_market_rates' would be clearer.
No output schema documentation. Descriptions mention returned fields (Name, SectionName, TimeseriesCode, Date, Value, UpDown) in code comments but not in tool descriptions. LLMs cannot plan downstream calls without knowing response structure.
Silent failure on unknown timeseries codes. API returns HTTP 200 with empty array [] instead of error. Descriptions mention this quirk but tool provides no recovery guidance. LLM cannot distinguish 'code not found' from 'no data available'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Parameter descriptions lack format constraints. 'start_date' and 'end_date' state 'YYYY-MM-DD' format in description but no regex pattern or explicit validation guidance. LLMs may pass invalid dates.
No tool-chaining guidance. Descriptions do not explain that snapshot tools (home_rates, etc.) return TimeseriesCodes for use with timeseries. LLM must infer the workflow from reading all descriptions.