Telep IO · ShipLabel

API & MCP documentation

Draft a USPS shipping label, review the rate, and pay postage plus a service fee.

Demo mode returns stub USPS rates and a stub label. It does not call EasyPost or Stripe, and a stub label is not postage. Test and live rate-shop USPS through EasyPost before payment (that does not buy postage). EasyPost buys the label only after the shared billing webhook reports payment_status paid.

Connecting

MCP endpoint
https://api.muse.telep.io/mcp/ship-label — streamable HTTP, JSON-RPC 2.0. Methods: initialize, tools/list, tools/call.
REST base
https://api.muse.telep.io/v1/ship-label
OpenAPI
https://api.muse.telep.io/v1/ship-label/openapi.json — exact request/response shapes for every REST route.
Auth
Authorization: Bearer <api-key> on every call. Calls are scoped to the key.

MCP tools

check_credentials

Validate ShipLabel EasyPost credentials with a read-only shipment list. Does not buy postage. Demo mode skips EasyPost and Stripe.

Takes no parameters.

get_shipment_rates

Re-list USPS rates for a shipment draft. Does not buy postage.

ParameterTypeRequiredDescription
draft_idstringyes

buy_shipping_label

Open one Stripe checkout for a draft and a USPS rate. Does not buy postage. A second checkout for the same draft returns 409. EasyPost buy runs only after the shared billing webhook reports payment_status paid.

ParameterTypeRequiredDescription
draft_idstringyes
rate_idstringyesA USPS rate id from the draft

get_label

Return label_url, tracking_code, and status for a label.

ParameterTypeRequiredDescription
label_idstringyes

cancel_label

Void a label through EasyPost in test or live mode. Demo mode does not call EasyPost.

ParameterTypeRequiredDescription
label_idstringyes

create_shipment_draft

Draft a USPS shipping label from sender, recipient, and parcel details. Returns USPS rates and a quote (postage plus service fee). Rate shopping does not buy postage. Demo mode returns a stub rate and does not call EasyPost.

ParameterTypeRequiredDescription
fromobjectyes
toobjectyes
parcelobjectyes
carrier_hintstringnoOptional. Only USPS is accepted.

list_shipments

List shipment drafts created with this API key.

Takes no parameters.

Example: list tools over MCP

curl -X POST https://api.muse.telep.io/mcp/ship-label   -H "Authorization: Bearer $TELEP_API_KEY"   -H "Content-Type: application/json"   -H "Accept: application/json, text/event-stream"   -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}'

REST example

Create via POST https://api.muse.telep.io/v1/ship-label/shipments:

curl -X POST https://api.muse.telep.io/v1/ship-label/shipments   -H "Authorization: Bearer $TELEP_API_KEY"   -H "Content-Type: application/json"   -d '{"from":{"name":"Ada Sender","address_line1":"185 Berry St","address_city":"San Francisco","address_state":"CA","address_zip":"94107"},"to":{"name":"Grace Recipient","address_line1":"1 Telegraph Hill Blvd","address_city":"San Francisco","address_state":"CA","address_zip":"94133"},"parcel":{"weight_oz":16,"length_in":10,"width_in":6,"height_in":4}}'

Every REST route is described exactly in the OpenAPI document.

Demo status

Demo mode returns stub USPS rates and a stub label. It does not call EasyPost or Stripe, and a stub label is not postage. Test and live rate-shop USPS through EasyPost before payment (that does not buy postage). EasyPost buys the label only after the shared billing webhook reports payment_status paid.

Pricing: USPS postage at the EasyPost rate plus a $1.99 service fee. USPS only. Customer total = EasyPost USPS postage for the selected rate + a $1.99 service fee (SERVICE_FEE_CENTS, default 199). Postage is a pass-through. Demo mode does not bill.

What ShipLabel does

ShipLabel lets Muse draft a USPS shipping label from sender, recipient, and parcel details. You review the carrier rate, pay postage plus a service fee through Stripe, and EasyPost purchases and issues the label with tracking.

Tools: create_shipment_draft, get_shipment_rates, buy_shipping_label, get_label, cancel_label, list_shipments, and check_credentials. buy_shipping_label opens checkout. It does not buy postage.

Modes

demo: offline stubs. Zero HTTP to EasyPost, its sandbox, or Stripe.

test: EasyPost test key and Stripe test key. The shared /v1/billing/webhook buys only when payment_status is paid.

live: Forge production credentials. Live mode does not boot on the fulfillment service until EASYPOST_ORDER_FORM_REFERENCE is set. A self-serve Developer Plan key is not live-ready. Forge enrollment with EasyPost sales is still required.

Pricing

total = postage from the selected EasyPost USPS rate, read at runtime, plus the configured service fee. The default fee is $1.99. The Forge per-label platform fee is a separate config value from the Order Form and is not hardcoded.

USPS only

CARRIER_ALLOWLIST is USPS at both the gateway and the fulfillment service. UPS is excluded because UPS DAP §4.2 does not permit marking up UPS rates to resell labels to another entity or End User, and UPS DAP §4.5 requires a direct UPS agreement plus UPS written consent before a platform enrolls end users. FedEx is excluded because FedEx by Default §3.2 does not permit selling, assigning, or transferring the benefit of pricing to any other party.

Void and refunds

cancel_label asks EasyPost to refund the shipment. USPS decides whether unused postage comes back. A label that has already been scanned is generally not voidable. The ShipLabel service fee is not refunded once the label has been purchased. Demo cancels do not contact EasyPost.

EasyPost

Labels are purchased through EasyPost (Forge for live resale). ShipLabel is not EasyPost and not USPS. Tracking codes are the carrier codes EasyPost returns. EasyPost API reference: https://docs.easypost.com. Forge overview: https://support.easypost.com/hc/en-us/articles/34176670288013-Introduction-to-Forge.

Related