Currency conversion MCP server that provides exchange rate functionality
Single tool with reasonable naming and description, but critical gaps in schema documentation, parameter descriptions, and error handling guidance. The tool is explicitly registered via @mcp.tool() decorator in server.py and accepts structured input with defaults. However, the output schema is undocumented, and parameter descriptions lack actionable constraints (format, valid ranges, examples of valid currency codes). Error handling returns generic error objects without recovery guidance. Tool follows verb_noun naming convention (get_exchange_rate) which is positive, but lacks the rigor expected of production-grade tools.
Use this to get current exchange rate.
Output schema is completely undocumented. Tool returns dict with 'rates' field but LLM has no guidance on structure, field types, or what to extract for downstream use.
Parameter descriptions lack actionable constraints. 'The currency to convert from (e.g., "USD")' uses an example instead of enumeration or format specification. Valid ISO 4217 codes are not listed, and LLM is left to guess valid inputs.
Error responses do not guide recovery. 'Invalid API response format' and 'API request failed: {e}' give the agent no actionable next steps. Should specify: is this retryable? Should the user provide different inputs? Is the service down?
Parameter 'currency_date' accepts free-form string ('latest' or a date) but format is not validated or described. What date format is accepted? ISO 8601? Unix timestamp? Consequences of invalid input are unclear.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Tool description is terse (50 chars: 'Use this to get current exchange rate.') and does not answer: When should the LLM call this vs. other currency tools? What does it return? What prerequisites exist (API availability, valid currency codes)?