Skip to content

MCP server

The Model Context Protocol (MCP) lets an AI assistant call tools on your behalf. Ship Jay runs an MCP server so an assistant can quote shipments, read tracking and, if you allow it, buy labels.

  • Endpoint: https://shipjay.com/api/mcp
  • Transport: JSON-RPC 2.0 over HTTP POST. Responses are plain JSON, with no streaming.
  • Auth: the same bearer API key as the REST API.
  • Protocol versions: 2025-06-18, 2025-03-26 and 2024-11-05.

The server runs the same handlers as the REST API, with the same permissions, limits and audit trail. An agent can never do more than its key allows.

Create a key first (see Authentication and API keys). Give an agent key only the permissions it needs.

Claude Desktop starts local servers, so use the mcp-remote bridge to reach a remote one. Edit claude_desktop_config.json:

{
"mcpServers": {
"shipjay": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://shipjay.com/api/mcp", "--header", "Authorization:${SHIPJAY_AUTH}"],
"env": { "SHIPJAY_AUTH": "Bearer sj_..." }
}
}
}

Restart Claude Desktop. The Ship Jay tools appear in the tools menu.

Do not put the key in a shared repository. Use your client's way of keeping secrets, or an environment variable.

tools/list returns only the tools the key may use. A key with shipments:read and nothing else sees the read tools and none of the buying tools. Tool names and permissions below come from the server itself.

ToolPermissionWhat it does
get_accountany valid keyShow the organization, its wallet currency and what this key may do.
list_ship_fromshipments:readList the saved ship-from addresses. Use one of the ids as from_address_id when quoting.
verify_addressshipments:writeCheck whether a US address is deliverable and get the corrected version.
quote_shipmentshipments:writeGet rates for a package. Saves the shipment and does not spend money.
buy_labelshipments:buyBuy a label for a rate from a quote. Spends wallet money. This tool spends money.
list_shipmentsshipments:readList recent shipments, newest first, optionally by status or tracking number.
get_shipmentshipments:readGet one shipment.
get_trackingshipments:readGet the tracking status and scan history of a shipment.
request_refundrefunds:writeAsk the carrier to refund an unused label.
get_wallet_balancewallet:readGet the wallet balance in cents.
list_returnsreturns:readList return requests, optionally by status.
approve_returnreturns:writeApprove a return. Buys a prepaid return label and spends wallet money. This tool spends money.
list_rulesrules:readList the shipping rules.
list_eventsevents:readRead recent account events, oldest first.

Tool arguments are the fields of the matching REST call. For path ids the argument is named after the object, such as shipment_id for buy_label and get_tracking. Amounts are integer cents. The label file download is not offered as a tool, because a file does not fit a text answer.

A failed tool call comes back with isError: true and the same JSON error body as the REST API, with its code and request_id. See Errors.

buy_label spends wallet money. The server derives the idempotency key from the shipment and the rate, so an agent that retries cannot buy the same label twice. The server tells the client to quote first and buy only after the person approves, and a well behaved client will ask. You should not rely on that alone.

Shipping rules apply to agents too. A rule that blocks a destination or removes a carrier holds no matter who asks. See Shipping rules.

© 2026 Ship Jay. All rights reserved. Created & Developed by WCWS Internet