Shippo
Let your AI handle shipping through Shippo: validate addresses, compare live rates from your carriers, buy and refund labels, track parcels, prepare customs paperwork and create scan forms. Test mode is free.
7-day free trial · No credit card · EU-hosted
Ask Shippo anything
Try a real prompt against Shippo via AnythingMCP — Claude calls the tools, returns the answer. Press Enter on your own message to install on Cloud.
Install Shippo on CloudClaude is AI and can make mistakes. Please double-check responses.
Setup in 2 minutes
- 1Start a free trial on cloud.anythingmcp.com.
- 2Click Shippo in the connector store. Paste credentials when prompted.
- 3Mint an MCP API key and point your AI client at the generated MCP URL.
Guides for Shippo
Step-by-step setup for the most popular AI clients.
Setting up Shippo
From the connector definition itself: where to find the credentials, what they need to be allowed to do, and which API this adapter talks to.
Shippo
This connector works with one Shippo account through the Shippo API (https://api.goshippo.com): addresses and validation, parcels, shipments with live rates from your carriers, buying labels, tracking, carrier accounts, customs declarations, label refunds and manifests (scan forms).
Setup (about 3 minutes)
- Sign up at https://apps.goshippo.com/join (free) and open the API portal: https://portal.goshippo.com/api-config/api → API Configuration → Developer keys.
- Click Create new test key (or Create new live key) and copy it at once; it is shown only once. Test keys start with
shippo_test_, live keys withshippo_live_. - Paste it into
SHIPPO_API_TOKENand install.shippo_list_carrier_accountsshould list Shippo's own carrier accounts (for example USPS), which are ready to use in the US.
Test or live: the key decides. With a test key labels are free, watermarked "SAMPLE - DO NOT MAIL", tracking numbers never update, refunds always succeed, and manifests and batches are not available. A test key sees only test data and a live key only live data. Carrier accounts you connect with your own carrier credentials work only in the mode in which they were added.
Buying a label costs money: confirm first. With a live key shippo_buy_label charges the label price (plus any insurance) to the Shippo account at once. Before calling it, state carrier, service, price and both addresses and wait for the user's yes. shippo_request_refund voids a label (it can no longer be used) and asks the carrier for the money back; only unused labels up to 90 days old qualify, and the refund itself takes days to weeks.
Typical flow
shippo_create_shipmentwithaddress_from,address_toandparcels(objects or saved object_ids) returnsrates[]: each withobject_id,amount,currency,provider,servicelevel.name,estimated_days.- Pick a rate with the user, then
shippo_buy_labelwith itsobject_id. The answer hastracking_number,tracking_url_providerandlabel_url(a signed link to the PDF that expires; read the label again withshippo_get_labelfor a fresh one). - Follow the parcel with
shippo_get_tracking(the carrier token as Shippo names it, such asusps,ups,fedexordhl_express;shippo_list_carrier_accountsshows the tokens, plus the tracking number). In test mode use carriershippowith tracking numberSHIPPO_TRANSIT,SHIPPO_DELIVERED,SHIPPO_RETURNEDorSHIPPO_FAILURE.
International shipments need a customs declaration: create items with shippo_create_customs_item (description, quantity, net weight, value, origin country, tariff number), then shippo_create_customs_declaration with those items, contents_type, non_delivery_option, certify: true and certify_signer, and pass its object_id as customs_declaration to shippo_create_shipment.
Units and formats: dimensions and weights are strings with their units ("length": "30", "distance_unit": "cm", "weight": "1.2", "mass_unit": "kg"). Countries are ISO 2 codes (DE, US). Dates are ISO 8601 (2026-10-12T09:00:00Z).
Waiting for results: the shipment, label, refund and manifest tools wait for the result by default (async: false). If Shippo answers with status QUEUED or WAITING, read the object again a few seconds later. A label with status ERROR explains why in messages[].
Address validation: shippo_create_address with validate: true (or shippo_validate_address on a saved address) returns validation_results.is_valid and messages. shippo_validate_address saves the checked, standardized address as a new object with its own object_id and leaves the original untouched, so ship to the new id. With a test key, addresses outside the US are echoed back without being checked; with a live key, validating them is charged.
API version: no SHIPPO-API-VERSION header is sent, so the account's default version applies. Sending one would also change the version for later calls of the whole account.
Rate limits per minute: 500 creates and 4,000 reads of single objects, but only 50 list calls (10 with a test key); prefer reading single objects by id over paging through lists.
Common errors
- 401
Token does not exist: wrong or deleted key; create a new one in the API portal. - 400: a field is missing or invalid; the body names it (for example an address that the carrier rejects).
- 422 /
status: ERRORwithmessages[]: the carrier refused, for example an unsupported service for that route or missing customs data. - 429: over the rate limit; wait a minute.
Out of scope here: batches, orders, pickups, webhooks other than tracking registration, connecting carrier accounts and the v2 address API.
Your AI is two clicks away from Shippo.
Install the connector, paste your credentials, ask your AI a question. 7-day free trial, no credit card.