Five tools with complete input schemas and descriptions. Naming follows verb_noun pattern (exchange_rates, gold_kijang_emas, policy_rate_opr, base_rate, bnm_endpoint). Descriptions are detailed (100-250 chars) and explain WHAT, WHEN, and WHAT IS RETURNED. All parameters have type definitions and descriptions. However, no output schemas are documented, LLMs cannot predict response structure. Parameter descriptions lack format constraints (e.g., 'YYYY-MM-DD' is stated but not formalized). base_rate has empty properties (no params), which is valid but underdocumented. Error handling is minimal, no recovery guidance or categorization. No tool annotations (readOnlyHint, etc.) despite all being READ_ONLY. Composition is sound: each tool has one responsibility, and bnm_endpoint provides escape hatch for undocumented endpoints.
Per-bank Base Rate (BR), Base Lending Rate (BLR) and indicative effective lending rate published by Malaysian financial institutions to Bank Negara Malaysia. Returns the latest values for every bank.
Call any other confirmed Bank Negara Malaysia public endpoint by path and get its raw `data`. Confirmed live paths: "interest-rate" (interbank/money-market deposit rates by tenor), "interest-volume" (transaction volumes by tenor), "islamic-interbank-rate", "kl-usd-reference-rate" (KL USD/MYR reference rate), "usd-interbank-intraday-rate" (intraday hi/lo). Also accepts the documented sub-path forms (e.g. "exchange-rate/USD", "opr/year/2025") if you need a path not covered by a dedicated tool.
Foreign exchange rates against the Malaysian Ringgit (MYR) from Bank Negara Malaysia. Latest rates for all currencies (default), one currency, or one currency on a specific historical date. Rates are published per session (snapshot time) and quote basis. Returns buying/selling/middle rates per currency unit.
Kijang Emas — Malaysia's official gold bullion coin — buying and selling prices (in MYR) by coin size (one_oz, half_oz, quarter_oz). Latest prices by default, or every effective date within a given year+month.
Overnight Policy Rate (OPR) — Bank Negara Malaysia's benchmark monetary policy interest rate. Latest OPR decision by default, or every decision in a given year (with change_in_opr and new_opr_level).
No output schemas documented. LLMs cannot predict response structure (fields, types, pagination). Responses are raw JSON from BNM API with no shaping or field documentation.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All five tools are READ_ONLY but this is not declared in the tool definition, forcing LLMs to infer safety from descriptions.
Error handling lacks recovery guidance. bnmGet() throws raw HTTP errors ('BNM: 404 ...') with no actionable next steps. LLMs cannot self-correct or retry intelligently.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Parameter constraints stated in descriptions but not formalized. 'YYYY-MM-DD' format is mentioned for 'date' but not declared as a JSON Schema pattern. Enums for 'session' and 'quote' are correct, but 'currency' accepts free-form strings with no validation.
base_rate tool has empty inputSchema.properties and no description of what it returns or when to use it. Minimal documentation for a tool with no parameters.