MCP server for tracking deliveries via the Parcel API
Three tools with clear naming (verb_noun pattern) and documented schemas. All tools have descriptions (10 - 200 chars, within baseline). Input schemas use Zod with type constraints and descriptions. However, output schemas are undocumented, LLMs cannot predict response structure. Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors. parcel_add_delivery lacks idempotency guidance despite being a write operation. No pagination support despite list_deliveries potentially returning unbounded results.
Add a new delivery to track. Use parcel_supported_carriers to find valid carrier codes.
List tracked deliveries. Returns tracking info, status, and events for each delivery.
List all carriers supported by Parcel for tracking deliveries.
Output schemas undocumented. LLMs cannot predict response structure (Delivery[], Carrier[], AddDeliveryResult). Responses are returned as raw JSON text, not structured objects.
parcel_list_deliveries lacks pagination (limit, offset, cursor). No total count or next_cursor returned. Unbounded results risk context window exhaustion.
Error handling provides no recovery guidance. Thrown errors (HTTP errors, API errors) are not caught or transformed into actionable messages for LLMs.
parcel_add_delivery (write operation) lacks idempotency guidance. No confirmation step or dry-run mode. Agents cannot safely retry on ambiguous failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Tool descriptions lack dependency hints. parcel_add_delivery says 'Use parcel_supported_carriers to find valid codes' but does not explain when to call it or what to do if carrier lookup fails.