An MCP server that provides currency exchange rate functionality using the Frankfurter API
Single-tool server with a clear action verb, good description, and valid JSON Schema. The tool naming (get_exchange_rate) follows the verb_noun pattern correctly. Description is 170 chars, within the 10 - 1024 baseline. All three parameters have descriptions and type definitions. However, the output schema is completely undocumented, users/agents cannot know what fields to expect (rates dict structure, date field format, etc.). Parameter descriptions mention 'latest' as a default but do not specify valid date format constraints (YYYY-MM-DD assumed but never stated). Error handling returns unstructured dicts with 'error' keys; no recovery guidance for agents. The tool is simple enough that the lack of pagination and result-limit documentation is acceptable (single exchange rate lookup, not a list operation).
Use this to get current exchange rate. Args: currency_from: The currency to convert from (e.g., "USD"). currency_to: The currency to convert to (e.g., "KRW"). currency_date: The date for the exchange rate or "latest". Defaults to "latest". Returns: A dictionary containing the exchange rate data, or an error message if the request fails.
Output schema completely undocumented. Tool returns a dict from the Frankfurter API but the exact structure (rates field content, date field format, etc.) is never described. Agents cannot plan downstream usage without trial-and-error.
Date parameter format not formally constrained. Description says 'The date for the exchange rate or "latest"' but does not specify ISO 8601 format (YYYY-MM-DD), valid date range, or that only business days are valid. Agents will pass invalid dates and receive unhelpful API errors.
Error responses do not guide agent recovery. Returns {"error": "API request failed: ..."} with no actionable next step. Per pattern:recovery-guide, errors should suggest what the agent should do (retry, try a different currency pair, contact support).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 74 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | - | v1 |
No enum constraint on currency codes. Parameters accept any string; agents may pass invalid ISO 4217 codes (e.g., 'USDA' instead of 'USD'). Should either validate and return a clear error, or provide an enum of supported currencies.