Norges Bank (Norway's central bank) MCP — exchange rates, interest rates, and government debt key figures via the SDMX 2.1 REST API.
Three tools with clear, well-structured schemas and good descriptions. All tools have proper input schemas with typed properties and descriptions. Tool names follow verb_noun convention (get_*, list_*). Descriptions are substantive (100 - 250 chars) and explain purpose and use cases. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (only HTTP status errors shown). No parameter validation guidance (e.g., currency code format, date format constraints). Missing idempotency hints and recovery guidance.
Latest (or last N) Norges Bank exchange rate for a currency against the Norwegian krone (NOK). The value is how many NOK one unit of the base currency buys (e.g. USD → ~9.25 NOK). Builds the EXR series key B.{CURRENCY}.NOK.SP (business-day spot). currency is the ISO 4217 code, e.g. "USD", "EUR", "GBP", "SEK", "JPY".
Generic SDMX data fetch from any Norges Bank flow. key is dot-separated SDMX dimension filters; leave a position empty to wildcard it. Examples: flow_ref="EXR", key="B.USD.NOK.SP" (daily USD→NOK spot); flow_ref="IR" (all interest-rate series). Use list_flows to see available flow references.
List the Norges Bank SDMX data flows available through this pack, with the dimension order of each key.
Output schemas not documented. LLMs cannot predict response structure (e.g., what fields are in normalizeSdmx() output, pagination format, error object shape). This forces agents to guess and wastes tokens on exploratory calls.
Parameter format constraints missing. 'currency' parameter lacks guidance on ISO 4217 validation, date parameters lack YYYY-MM-DD format enforcement, 'key' parameter lacks dot-separated dimension syntax examples. Descriptions should state: 'ISO 4217 code (3 uppercase letters, e.g. USD, EUR)' and 'Date format: YYYY-MM-DD'.
Error handling lacks recovery guidance. fetchData() throws generic 'Norges Bank: {status} {body}' errors. No guidance on retryability, user-fixable vs fatal errors, or next steps. Should return structured errors with actionable hints (e.g., 'Invalid currency code. Call list_flows() to see supported currencies.').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Pagination not documented. get_series accepts 'last_n' but no mention of total count, next_cursor, or result limits. Large result sets could blow context windows. Should document: 'Returns up to N observations; if more exist, include a next_cursor for pagination.'
Missing parameter relationships documentation. get_exchange_rate has 'last_n' and 'start_period'/'end_period', code shows they're mutually exclusive (hasPeriod logic), but descriptions don't state this. LLMs will pass both, causing ambiguous behavior.