MCP server for APC Overnight. Book, label, track and cancel UK parcel shipments from any MCP-compatible AI.
apc-mcp demonstrates solid tool design with complete schemas, clear descriptions, and proper error handling. All 6 tools have explicit registrations with Zod schemas and descriptions. Naming follows verb_noun convention (book_, get_, track_, cancel_, list_). Descriptions average ~180 chars, within the 10-1024 baseline. Parameters are well-typed with enums for constrained inputs (itemType, format, service). However, output schemas are not formally documented, responses are JSON stringified without explicit schema declarations. Address objects are reused effectively via addressSchema. Error handling returns isError flags and actionable messages. Minor gaps: no tool annotations (readOnlyHint/destructiveHint), no pagination support for list_services, and no confirmation pattern for destructive cancel_shipment.
Book multiple APC shipments at once and return a single merged PDF containing every label, ready to print. Use this when the user pastes a list of orders/addresses. All shipments share the same service, collection date and sender. Saves the merged PDF to ~/Downloads/parcel-toolkit/ (overridable via PARCEL_TOOLKIT_LABELS_DIR).
Book a parcel delivery with APC Overnight. Returns a 22-digit waybill used for label retrieval and tracking.
Cancel an APC shipment by waybill number. Only effective before the parcel is manifested by APC.
Get the shipping label for a booked APC consignment and save it to disk. Call any time after book_shipment — APC typically needs 3-5 seconds to generate, which this tool polls for automatically. Returns the local file path. Default save location is ~/Downloads/parcel-toolkit/, overridable via the PARCEL_TOOLKIT_LABELS_DIR env var.
List all available APC Overnight delivery services with their friendly keys and product codes.
Output schemas not formally documented. Responses are JSON stringified without explicit schema declarations. LLMs cannot reliably parse return types or plan downstream tool calls.
cancel_shipment lacks confirmation or dry-run pattern. Irreversible operations should support user confirmation before execution to prevent accidental cancellations.
Tool annotations missing. book_shipment and cancel_shipment should declare destructiveHint=true; get_label, track_shipment, list_services should declare readOnlyHint=true. Helps LLMs reason about side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Track an APC shipment by waybill number. Returns current status and event history.
list_services has no pagination or limit parameters. If service catalogue grows, response could bloat context. Add limit and offset/cursor support.
book_batch_and_label combines two concerns (booking + labeling). Consider splitting into separate tools so agents can compose them independently.