Handle multi-currency conversion, import duties, and international shipping costs for cross-border e-commerce
This MCP server defines 2 tools with complete input schemas and reasonable descriptions. Both tools follow verb_noun naming ('calculate', 'compare_countries') and are READ_ONLY operations. However, the server lacks critical production-grade polish: output schemas are not formally documented in the MCP tool definitions, error handling guidance is absent, and the descriptions, while present, are generic and do not provide LLM-optimized selection guidance. The tools themselves are well-structured in the Python implementation, but the MCP interface lacks the rigor expected for A-grade tooling.
Calculate full landed cost for an international order.
Compare landed costs across multiple destination countries.
Output schemas not formally documented. The MCP tool definitions do not specify the shape of returned objects (e.g., for calculate: local_price object structure, duties object fields, shipping object fields). LLMs cannot plan downstream operations or know what fields to extract without documented return types.
No error handling guidance. Tool descriptions do not explain what happens if an invalid country code is passed (e.g., 'ZZ'), an unsupported product_category is used, or an invalid shipping_method is provided. Error responses should guide the LLM to valid options, but the tool interface provides no recovery hints.
Descriptions are generic and lack LLM-selection context. 'Calculate full landed cost for an international order' does not explain WHEN to use this tool vs compare_countries, what prerequisites exist (valid country codes?), or what use cases drive selection. Compare to a production-grade description: 'Calculate total cost including duties, VAT, and shipping for a single destination. Use this for precise cost estimation; use compare_countries to find the cheapest route.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Parameter constraints not enforced in descriptions. The 'shipping_method' parameter accepts only 'economy', 'standard', or 'express', but the description does not list valid enums, it just says 'e.g.' with a free-form string. Similarly, product_category accepts specific values (beauty, electronics, clothing, etc.) but the description does not enumerate them. LLMs will hallucinate invalid values.
Missing dependency hints. 'destination_country' expects ISO 2-letter codes, but the description does not say this explicitly or link to a list of supported countries. Similarly, product_category has implicit valid options (drawn from DUTY_RATES.keys()) that are not documented. An LLM without prior knowledge will guess.
No de minimis or edge-case behavior documented. The calculate tool applies de minimis exemptions (duty_exempt logic), but this is not mentioned in the tool description. An LLM calling calculate with a $100 order to the UK expects duty, but instead receives duty_usd=0 with no explanation. The tool should document: 'Duties are waived for orders below the country's de minimis threshold (e.g., $150 for GB). Returned object includes duty_exempt flag.'