An MCP server that provides currency exchange rate information and lists available currencies
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error guidance. Tool names follow verb_noun convention (list_, get_), but descriptions lack actionable context for LLM selection. No parameter descriptions beyond the symbol/date fields. Output schemas are not documented, LLMs cannot plan downstream calls. Error handling returns raw exceptions rather than recovery guidance. Descriptions are 100-150 chars (within baseline 194 avg), but lack WHEN/WHY context. No pagination, no result limits documented, no chaining IDs returned.
Returns the current currency exchange rate details of a currency. This tool should be used after using the list_all_currencies tool.
Returns the current currency exchange rate details of a currency on a particular date. This tool should be used after using the list_all_currencies tool to retrieve rate for a particular date.
Lists currencies of all countries and currency codes This tool should be used first to actual currency code before calling get_currency_rate_details tool.
Output schemas not documented. LLMs cannot infer what fields are returned or plan downstream calls. Tools return raw JSON from external API without structure declaration.
Parameter 'symbol' lacks description in schema. Description field is missing from inputSchema properties. LLMs cannot infer what currency codes are valid or how to obtain them.
Error handling returns raw exception strings ('Error: ' + error) instead of actionable recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Tool descriptions lack WHEN/WHY context. 'Returns the current currency exchange rate details' does not explain when to call this vs list_all_currencies, or what the output structure is. Descriptions should guide LLM selection.
No input validation or constraint documentation. 'symbol' parameter accepts any string; no enum of valid currency codes, no format validation, no length limits. LLMs will pass invalid symbols.