National Bank of Romania (Banca Naţională a României, BNR) FX reference rates MCP. Keyless. Fetches and parses daily and historical exchange rates from BNR's XML feeds.
Two tools with clear, detailed descriptions (194 - 250 chars each) and explicit input schemas. Tool names follow verb_noun pattern (exchange_rates, exchange_rates_history). However, critical gaps: exchange_rates has NO input parameters despite being a tool (empty properties object), limiting composability. exchange_rates_history parameters lack type constraints (period should be enum, year should have min/max bounds). No output schemas documented, LLMs cannot predict response structure for downstream chaining. No error handling guidance (what if BNR feed is unavailable? What if year is invalid?). Descriptions are good but lack dependency hints and recovery paths. Overall: solid naming and descriptions, but incomplete schemas and missing error guidance.
Latest National Bank of Romania (BNR) official FX reference rates, parsed from BNR's daily XML feed. Returns the reference date plus an array of currency rates. Each rate is RON (Romanian leu) per `multiplier` units of the currency (multiplier is 1 unless noted, e.g. 100 for HUF/JPY/KRW), so the per-1-unit rate = value / multiplier. Currencies are ISO 4217 codes (plus XAU gold, XDR SDR).
Historical National Bank of Romania (BNR) official FX reference rates, parsed from XML. With no arguments (or period="10days") returns the last 10 published business days. Pass year=YYYY (e.g. 2024) to return every published day in that calendar year. Returns an array of daily entries, each { date, rates:[{currency, value, multiplier}] }. Each rate is RON per `multiplier` units of the currency; per-1-unit rate = value / multiplier. Currencies are ISO 4217 codes. Note the currency set can vary across dates.
exchange_rates has empty input schema (no parameters). Tool is not composable, cannot accept filters, date ranges, or currency selection. Limits agent flexibility.
exchange_rates_history parameters lack type constraints. 'period' should be enum ['10days']; 'year' should have min/max bounds (1990 - 2100). Free-form strings invite hallucinated values.
No output schemas documented. LLMs cannot predict response structure (e.g., does 'rates' return array of objects? What fields?). Breaks downstream tool chaining and forces agents to infer structure.
No error handling guidance. If BNR feed is unavailable (network error, 404, malformed XML), tool throws generic Error. LLM has no recovery path, should suggest retry, fallback, or user action.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter descriptions lack format/constraint details. 'year' description says 'e.g. 2024' but does not state valid range (1990 - 2100). LLMs may pass invalid years without validation.