VX Agents

OpenAPI Marketplace · Commerce & Payments

ShipEngine Rates, Labels & Tracking

v1.0.0 · 13 endpoints · 0 connections · shared by vx.ai

Validate an address, compare rates across your connected carriers, buy the label from the rate you pick, and track the parcel until it lands. Built on ShipEngine's rate_id flow, with label voids for the shipments that never leave the warehouse.

Connect this API to an AI agent Browse all specs

What you can do with ShipEngine Rates, Labels & Tracking via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /v1/carriers listCarriers List connected carrier accounts and their carrier_id
GET /v1/carriers/{carrier_id}/services listCarrierServices List a carrier's shipping services (service codes)
GET /v1/carriers/{carrier_id}/packages listCarrierPackageTypes List a carrier's package types
POST /v1/addresses/validate validateAddresses Validate and normalise one or more addresses
POST /v1/rates getRates Get rate quotes for a shipment from selected carriers
POST /v1/rates/estimate estimateRates Quick price estimate from postal codes and weight
GET /v1/rates/{rate_id} getRate Get one rate quote by id
POST /v1/labels/rates/{rate_id} purchaseLabelFromRate Buy a shipping label for a chosen rate
GET /v1/labels listLabels List labels by status, carrier, date or tracking number
GET /v1/labels/{label_id} getLabel Get a label with its tracking number, cost and download links
GET /v1/labels/{label_id}/track trackLabel Track the package of a label bought in ShipEngine
GET /v1/tracking trackPackage Track any package by carrier code and tracking number
PUT /v1/labels/{label_id}/void voidLabel Void an unused label to request a refund

Authentication

api_key

API key — sent as the API-Key header

ShipEngine API key, sent in the API-Key header.

How to get a credential

  1. Sign up or sign in at the ShipEngine dashboard (dashboard.shipengine.com).
  2. Open API Management.
  3. Copy a key: TEST_... keys work in the sandbox and buy free test labels; production keys buy real labels billed to your carrier accounts.
  4. Connect carriers (or use the included ShipEngine carrier accounts) under Carriers so rates come back.

Permissions used

Access Operations
Read carriers listCarriers, listCarrierServices, listCarrierPackageTypes
Validate addresses validateAddresses
Quote rates getRates, estimateRates, getRate
Buy and void labels purchaseLabelFromRate, voidLabel
Read labels and tracking listLabels, getLabel, trackLabel, trackPackage

ShipEngine keys are not scoped; any key can buy labels, so start with a TEST_ key.

Common errors

Status Meaning Fix
401 Key missing, revoked or mistyped Copy the key again from API Management
403 The account or carrier does not allow the action (e.g. insufficient carrier balance) Add funds or connect the carrier in the dashboard
400 Invalid request, e.g. missing weight, bad postal code or an expired rate_id Validate the address and request fresh rates
404 Unknown carrier_id, rate_id or label_id Take ids from listCarriers, getRates or listLabels
429 Too many requests for your account's rate limit Wait and retry with backoff

Store the key as a VX Agents credential (API key in header) so it is never pasted into chats or prompts.

Usage guide

Setup

  • Credential: a ShipEngine API key (dashboard > API Management), stored as a VX Agents API-key credential. Start with a TEST_ key: sandbox labels are free.
  • Worth pinning: your default carrier_ids (from listCarriers) and your ship-from address.

Quote, buy and track a label

  1. listCarriers for the connected carrier accounts (carrier_id, carrier_code); listCarrierServices / listCarrierPackageTypes for valid service_code and package_code values.
  2. validateAddresses with an array of addresses (address_line1, city_locality, state_province, postal_code, country_code). Use the matched_address it returns.
  3. Price it:
    • rough number: estimateRates with from/to country and postal code, city, state and weight;
    • real quote: getRates with rate_options.carrier_ids and a shipment holding ship_from, ship_to and packages (each with weight {value, unit} and optional dimensions).
  4. Show the user the carrier, service, delivery days and total (shipping_amount + other_amount) and get an explicit yes, then purchaseLabelFromRate with the rate_id (optional label_format pdf/png/zpl, label_layout 4x6 or letter).
  5. getLabel for the tracking number and label_download links; listLabels to find earlier labels by status, date or tracking number.
  6. Track: trackLabel with the label_id, or trackPackage with carrier_code + tracking_number for any parcel.
  7. Not shipping after all? Confirm, then voidLabel to request the refund.

Good to know

  • Rates expire: buy soon after quoting, or quote again if purchaseLabelFromRate returns 400 or 404 for the rate_id.
  • Weights are {value, unit} with pound, ounce, gram or kilogram; dimensions use inch or centimeter. Country codes are ISO 3166-1 alpha-2 (US, CA).
  • getRates here covers domestic parcels: customs, advanced options and return addresses were left out to keep the tool small, so quote international shipments in the ShipEngine dashboard.
  • Ids are prefixed strings: se-123456 for carriers, rates and labels.
  • Buying a label spends money on your carrier account and voiding changes it: always confirm with the user first. getRates, estimateRates and validateAddresses are POST requests but do not buy anything.

Source: ShipEngine API reference (https://www.shipengine.com/docs/reference/), checked 2026-10-16.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “ShipEngine Rates, Labels & Tracking” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs