Skip to main content
Glama

USA Logistics MCP πŸ‡ΊπŸ‡Έ β€” How can my AI agent buy a USPS / UPS / FedEx shipping label?

Use it in 60 seconds

Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):

{
  "mcpServers": {
    "usa-logistics": {
      "type": "http",
      "url": "https://logi-us.wishpool.app/mcp"
    }
  }
}

Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored β€” see the threat model.

Or run it yourself

Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:

Deploy with Vercel

git clone https://github.com/junter1989k-ai/usa-logistics-mcp && cd usa-logistics-mcp && npx vercel --prod

MIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.


Remote MCP server that lets any AI agent buy US shipping labels β€” USPS, UPS, FedEx and more β€” with automatic cheapest-rate selection, track parcels, and refund unused labels via the EasyPost shipping API. Stateless, bring-your-own API key, never stores anything. Free EasyPost test keys give zero-cost end-to-end labels.

Live endpoint: https://logi-us.wishpool.app/mcp Β· Registry: app.wishpool/usa-logistics-mcp

Quick start

{
  "mcpServers": {
    "usa-logistics": {
      "type": "http",
      "url": "https://logi-us.wishpool.app/mcp",
      "headers": {
        "x-easypost-api-key": "EZTK_your_test_or_EZAK_prod_key"
      }
    }
  }
}

No shared demo β€” but test keys are free. EasyPost issues free TEST keys (prefix EZTK…) that buy real USPS test labels end-to-end at no cost: sign up at easypost.com β†’ API Keys. Production keys (prefix EZAK…) buy real postage. The same server auto-selects the environment from the key prefix.

Tools

Tool

What it does

create_shipment

Buy a US label. to_* + from_* address fields, parcel weight (ounces, required) and either length/width/height (inches) or predefined_package. Optional carrier/service restrict the choice β€” default is the cheapest rate across all enabled carriers. Fetches rates, buys the chosen rate, returns shipment_id, tracking_code, printable label_url, carrier, service and the rate (USD).

query_tracking

Track by tracking_code (+ optional carrier hint). Returns status from the EasyPost enum β€” unknown / pre_transit / in_transit / out_for_delivery / delivered / available_for_pickup / return_to_sender / failure / cancelled / error β€” plus a plain-English hint; non-terminal statuses carry next_steps. Raw carrier scans always included.

refund_label

Refund an unused label by shipment_id (preferred) or tracking_code (+carrier, default USPS). Returns refund_status: submitted / refunded / rejected / not_applicable. USPS: within 30 days of creation and only if never scanned β€” an already-shipped label cannot be refunded.

Owner policy guardrails ride optional headers (x-agentpay-max-amount, x-agentpay-approval-above, x-agentpay-allowed-tools) β€” set by the human owner in client config; the agent cannot relax them. The label price is gated before any purchase: approval-above returns an unsigned draft with the shipment/rates prepared but no label bought.

Develop

node test/serve.js   # local server on :3236 (/mcp)
node test/e2e.js     # protocol + validation + policy/easypost units + fake-key live probe to api.easypost.com (expects native 401)

How it talks to EasyPost

create_shipment is two server-to-server REST calls: POST /v2/shipments (to/from address + parcel β†’ rates[]) then POST /v2/shipments/{id}/buy (chosen rate β†’ postage_label.label_url + tracking_code). query_tracking is POST /v2/trackers (by tracking_code). refund_label is POST /v2/shipments/{id}/refund (or POST /v2/refunds by carrier + tracking_codes). Auth is HTTP Basic with the API key as username and an empty password; the key prefix (EZTK… / EZAK…) selects test vs production on the same base URL https://api.easypost.com.

Safety

Pure stateless translation layer. The label is generated and served by EasyPost/the carrier; the EasyPost API key travels per-request in a header, nothing is stored. Parcels flow sender ↔ carrier ↔ recipient directly. Privacy policy.

Sister servers

Taiwan CVS pickup + home delivery live in taiwan-logistics-mcp. One family of stateless BYO local-commerce MCP servers: local payments in 81 countries at mcp.wishpool.app, plus electronic-invoice servers across nine countries including Mexico CFDI, Brazil NF-e, Chile DTE, Peru CPE and India GST.

MIT licensed.