MCP server for retrieving dynamic shipping carrier options based on destination ZIP code and package weight
Single tool with minimal definition quality. The tool 'get_carriers' has a reasonable name and basic schema, but critically lacks comprehensive description, parameter descriptions, output documentation, and error handling guidance. The description (71 chars) is below the rubric baseline (194 chars avg), and parameter descriptions are entirely absent. No output schema is documented. The implementation returns a hardcoded dict with no validation, error handling, or actual carrier lookup logic. This appears to be a skeleton/stub rather than a production-ready tool.
Retrieve available shipping carriers for a destination ZIP code and package weight
Tool description is too short (71 chars) and lacks context for LLM selection. Does not explain WHEN to use this tool, what 'carriers' means, or prerequisites.
Input parameters 'dest_zip' and 'weight_lbs' lack descriptions. LLMs cannot infer whether 'dest_zip' is a 5-digit US ZIP code, a ZIP+4, or accepts international postal codes. No format constraints provided.
Output schema is not documented. LLMs do not know what fields the response contains beyond 'carriers'. Is it a list of carrier objects with names and IDs? Just strings? Are there rates, delivery times, or restrictions?
No error handling or recovery guidance. What happens if the ZIP code is invalid? If the weight exceeds carrier limits? If no carriers service that ZIP? LLM receives no actionable error message.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
Implementation is hardcoded and returns fake data ('FedEx Home', 'USPS Ground') regardless of input. No actual carrier lookup, no validation, no business logic. Not fit for production.
No pagination or result limiting documented. If a ZIP code can be served by many carriers, will all be returned? The rubric baseline expects 20-50 items max with pagination metadata.
No parameter constraints (enums, regex, ranges). 'dest_zip' could be any string. 'weight_lbs' could be negative, zero, or absurdly large (1,000,000 lbs). No validation guidance for the LLM.