Full-stack Currency Converter with NestJS backend & React+Bootstrap frontend. Provides currency conversion and historical exchange rate APIs.
This is a NestJS backend exposing 4 currency conversion tools via HTTP REST endpoints, not a native MCP server. Tool definitions are inferred from controller method signatures and Swagger annotations rather than explicit MCP tool registration. All 4 tools have basic descriptions (40-60 chars) and input schemas with type info, but descriptions lack LLM-optimization guidance (when to use, prerequisites, what it returns). Parameter descriptions are present but minimal. No output schemas documented. No error handling guidance. Transport is unknown, appears to be HTTP REST, not MCP protocol. This is a currency API wrapped as tools, not a production MCP server.
Convert amount between two currencies (Live or Historical)
Get supported currencies metadata
Get historical exchange rates for a given date
Get exchange rates for a base currency
Tool definitions are inferred from NestJS controller methods, not explicitly registered as MCP tools. No evidence of MCP server implementation (no MCP SDK imports, no tool registration handler, no protocol handshake).
Descriptions are too short (35-45 chars) and lack LLM-optimization: missing WHEN to use, WHAT it returns, and prerequisites. E.g., 'Get supported currencies metadata' does not explain when to call it vs getRates.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., what fields does getCurrencies return? Is it an array of {code, name}?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
No error handling guidance. If an invalid currency code is passed, what error is returned? How should the LLM recover? No recovery hints provided.
Parameter 'date' in getRates and getHistoricalRates lacks validation constraints in description. Should specify format (YYYY-MM-DD), valid range (e.g., not future dates), and what happens if date is invalid.