MCP server for the Bank of Canada Valet API — live Canadian economic data (exchange rates, policy rate, CPI, bond yields) for Claude and other LLMs
Four well-named tools with clear, actionable descriptions (avg 156 chars). All tools have complete input schemas with proper Zod validation, type constraints, and parameter descriptions. Naming follows verb_noun pattern (search_, get_, latest_, convert_). Error handling via guarded() wrapper surfaces API errors to LLM for self-correction. Output schemas are JSON-serialized but not formally documented. No tool annotations (readOnlyHint, etc.). Parameter constraints are well-specified (regex patterns, min/max, enums via length validation). Missing: explicit output schema documentation, tool annotations for read-only operations.
Convert an amount between currencies using the latest Bank of Canada daily rates (cross-rated through CAD). Indicative daily averages, not transactional quotes.
Fetch observations for up to 5 Bank of Canada series (find names with search_series). Defaults to the 10 most recent observations when no range is given.
Latest official Bank of Canada daily exchange rates, quoted as CAD per 1 unit of each foreign currency.
Search the Bank of Canada's catalogue of ~16,000 economic time series (exchange rates, policy interest rate, CPI, bond yields, commodity prices...). Returns series names to use with get_observations.
Output schemas not formally documented. Tools return JSON but LLM cannot see field structure in advance. Requires reverse-engineering from examples.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All four tools are read-only but this is not declared in schema.
get_observations accepts mutually exclusive parameters (start_date+end_date vs recent) but does not document this constraint in descriptions.
convert_currency accepts ISO currency codes but does not validate against known BoC rates. Error handling relies on downstream API; no enum or validation list provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
search_series limit parameter defaults to 20 but no guidance on when to increase. No pagination support for results >20.