Live USPS, UPS, FedEx and DHL rates from the US: domestic, Canada, UK, Germany, Australia. No scale.
One address for any MCP client. No sign-in needed on this server.
3 read1 act1 other
Grouped by tool name. At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Live USPS, UPS, FedEx and DHL Express rates for a parcel sent from the US — domestic, or to Canada, the UK, Germany or Australia — described in plain words.
No scale. No account. No API key.
https://quote-api.smklog.com/mcp · streamable-http · MCP 2026-07-28, 2025-06-18, 2025-03-26
Most shipping APIs want a box: length, width, height, weight. People don't have that — they have a thing on the table and a ZIP code to send it to. This server takes the thing.
Describe "a full-size acoustic guitar in its hard case" and it estimates the packed carton, prices it live across three carriers, and hands back services you can actually buy — with the checkout total and, where the carrier publishes one, its own counter price for the same parcel side by side, so you can always show a person both numbers.
| Tool | What it does |
|---|---|
get_parcel_quote | Live rates for one parcel from a US origin, domestic or to Canada, the UK, Germany or Australia, across USPS, UPS and FedEx, plus DHL Express to Germany and Australia. Plain-words description → estimated packed box; or pass exact dimensions and weight to skip the estimate. Returns up to five purchasable services with the checkout total (SMKlog fee inside), the carrier's counter price beside it where one is published, and the delivery window. |
create_checkout_link | Prices the shipment and returns a payment session: the amount, a handoff URL that opens the SMKlog checkout prefilled with this shipment, and a session_id. The human confirms the contents certification and the carrier-adjustment consent there and pays on Stripe. |
get_checkout_status | Where a payment session stands: awaiting_checkout, checkout_started, paid, label_ready (with the tracking number), delivered or refunded. Read from the order record, so it costs no carrier call and never carries names, addresses or emails. Sessions answer for 30 days. |
track_parcel | Delivery status, scan events and the carrier's estimated delivery date for a shipment whose label was bought on smklog.com. Not a universal tracker for arbitrary numbers. |
get_price_index | The monthly SMKlog parcel price index: six common boxes (1–20 lb) from Newark, NJ to five US cities, repriced through the same live pipeline that prices real shipments. Reading it spends no quote allowance. |
A quote is a real carrier call and costs real money to produce. Call
get_parcel_quote once per shipment, not once per variation you are curious
about. The server is rate limited per client and will say so plainly rather than
silently degrading.
Origin is the United States. Domestic lanes and US-origin exports. A lane that starts somewhere else is out of scope, and the server will tell you instead of inventing a number.
Prices are checkout totals with the SMKlog fee inside. The fee is itemized only on the checkout receipt; what comes back beside a rate is the carrier's own counter price for the same parcel, where one is published — what the person would pay walking into the carrier's counter instead. The total is what they pay.
Parcels only, one label per box. A shipment past parcel limits or described
as a pallet or freight load comes back as mode: not_a_parcel with no rates:
SMKlog sells parcel labels and does not arrange pallet or freight shipments.
quantity counts units of the item: units that fit one box are priced as that
box, while units that need more than one box — or a quantity above 1 sent with
exact dimensions, which describe one box — come back as mode: multiple_boxes
with no rates, so quote each box on its own.
Nothing here buys a label on its own. create_checkout_link produces a URL;
a human completes the purchase, certifies the contents and consents to carrier
adjustments. An agent cannot spend someone's money through this server.
{
"mcpServers": {
"smklog": {
"type": "http",
"url": "https://quote-api.smklog.com/mcp"
}
}
}
No key, no OAuth, no signup. Quoting, tracking and the price index are all open.
For a client that only launches local commands — Claude Desktop, Cursor, an MCP inspector, a Docker-based runner — this repository is a thin stdio bridge to the same endpoint. No dependencies, no build step, no keys:
{
"mcpServers": {
"smklog": {
"command": "npx",
"args": ["-y", "github:smklog/parcel-shipping-rates-mcp"]
}
}
}
Or with Docker:
docker build -t smklog-parcel-shipping-rates-mcp https://github.com/smklog/parcel-shipping-rates-mcp.git
docker run -i --rm smklog-parcel-shipping-rates-mcp
The bridge forwards every JSON-RPC message to https://quote-api.smklog.com/mcp
and writes the answer back, one JSON object per line. It also mirrors the
2026-07-28 routing envelope into HTTP headers (MCP-Protocol-Version,
Mcp-Method, Mcp-Name) and, on the legacy path, sends the version
initialize negotiated, so both protocol eras work through it. If the endpoint cannot be
reached it still answers initialize and tools/list from the snapshot shipped
here (initialize.json, tools.json), so you can see what is offered; tool
calls need the network. npm test drives it end to end.
Also installable from Smithery
and listed in the official MCP registry
as com.smklog/parcel-shipping-rates.
Other ways in, if MCP is not your transport: OpenAPI · A2A agent card · API docs · llms.txt
SMKlog sells US shipping labels. The same pricing pipeline that answers this server answers the website — there is no separate "API rate". Questions, bugs and odd results: info@smklog.com.