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.
| Parameter | Type | Required | Description |
|---|---|---|---|
draft_id | string | yes | — |
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.
| Parameter | Type | Required | Description |
|---|---|---|---|
draft_id | string | yes | — |
rate_id | string | yes | A USPS rate id from the draft |
get_label
Return label_url, tracking_code, and status for a label.
| Parameter | Type | Required | Description |
|---|---|---|---|
label_id | string | yes | — |
cancel_label
Void a label through EasyPost in test or live mode. Demo mode does not call EasyPost.
| Parameter | Type | Required | Description |
|---|---|---|---|
label_id | string | yes | — |
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.
| Parameter | Type | Required | Description |
|---|---|---|---|
from | object | yes | — |
to | object | yes | — |
parcel | object | yes | — |
carrier_hint | string | no | Optional. 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
- ShipLabel overview — https://muse.telep.io/connectors/ship-label
- Privacy policy
- Terms of service