easypost

MCP server for EasyPost — rate shipments, buy & refund labels, track packages, verify addresses.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,011Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.57% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "easypost": {
      "url": "https://easypost.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://easypost.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢easypost_list_shipments(page_size, before_id, after_id, start_datetime, end_datetime, ...)

List shipments on the account, most recent first, with pagination and optional filters. API: GET /shipments.

Input Schema

{
  "type": "object",
  "properties": {
    "page_size": {
      "description": "Results per page (max 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "before_id": {
      "description": "Return records created before this shipment id.",
      "type": "string"
    },
    "after_id": {
      "description": "Return records created after this shipment id.",
      "type": "string"
    },
    "start_datetime": {
      "description": "ISO 8601 lower bound on created_at.",
      "type": "string"
    },
    "end_datetime": {
      "description": "ISO 8601 upper bound on created_at.",
      "type": "string"
    },
    "purchased": {
      "description": "Filter to only purchased (true) or unpurchased (false) shipments.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢easypost_get_shipment(id)

Retrieve a single shipment by id, including its available rates, tracking_code, and postage_label (if purchased). API: GET /shipments/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Shipment id, e.g. shp_..."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢easypost_list_trackers(tracking_code, carrier, page_size)

List package trackers, optionally filtered by tracking_code or carrier. API: GET /trackers.

Input Schema

{
  "type": "object",
  "properties": {
    "tracking_code": {
      "description": "Filter by carrier tracking code.",
      "type": "string"
    },
    "carrier": {
      "description": "Filter by carrier name, e.g. USPS, UPS, FedEx.",
      "type": "string"
    },
    "page_size": {
      "description": "Results per page (max 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢easypost_get_tracker(id)

Retrieve a single tracker by id, including current status and tracking_details history. API: GET /trackers/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Tracker id, e.g. trk_..."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢easypost_list_addresses(page_size, before_id, after_id)

List saved addresses on the account, with pagination. API: GET /addresses.

Input Schema

{
  "type": "object",
  "properties": {
    "page_size": {
      "description": "Results per page (max 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "before_id": {
      "description": "Return records created before this address id.",
      "type": "string"
    },
    "after_id": {
      "description": "Return records created after this address id.",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢easypost_get_address(id)

Retrieve a single address by id, including verification details. API: GET /addresses/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Address id, e.g. adr_..."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡easypost_verify_address(name, company, street1, street2, city, ...)

Create and verify a US or international address, returning deliverability and normalized/corrected fields. No charge. API: POST /addresses (body { address, verify: ["delivery"] }).

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "company": {
      "type": "string"
    },
    "street1": {
      "type": "string",
      "description": "Street address line 1"
    },
    "street2": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "description": "2-letter state/province code",
      "type": "string"
    },
    "zip": {
      "type": "string",
      "description": "Postal/ZIP code"
    },
    "country": {
      "description": "2-letter ISO country code, default US",
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "email": {
      "type": "string"
    }
  },
  "required": [
    "street1",
    "zip"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡easypost_create_shipment(to_address, from_address, parcel, reference, carrier_accounts)

Create a shipment from a to_address, from_address, and parcel, returning the available RATES from all enabled carriers. This only RATES the shipment — it does NOT purchase a label and does NOT charge the account; buying is a separate step (easypost_buy_shipment). API: POST /shipments (body { shipment }).

Input Schema

{
  "type": "object",
  "properties": {
    "to_address": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "company": {
          "type": "string"
        },
        "street1": {
          "type": "string",
          "description": "Street address line 1"
        },
        "street2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "description": "2-letter state/province code",
          "type": "string"
        },
        "zip": {
          "type": "string",
          "description": "Postal/ZIP code"
        },
        "country": {
          "description": "2-letter ISO country code, default US",
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      },
      "required": [
        "street1",
        "zip"
      ],
      "description": "Destination address."
    },
    "from_address": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "company": {
          "type": "string"
        },
        "street1": {
          "type": "string",
          "description": "Street address line 1"
        },
        "street2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "description": "2-letter state/province code",
          "type": "string"
        },
        "zip": {
          "type": "string",
          "description": "Postal/ZIP code"
        },
        "country": {
          "description": "2-letter ISO country code, default US",
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      },
      "required": [
        "street1",
        "zip"
      ],
      "description": "Origin/return address."
    },
    "parcel": {
      "type": "object",
      "properties": {
        "length": {
          "description": "inches",
          "type": "number"
        },
        "width": {
          "description": "inches",
          "type": "number"
        },
        "height": {
          "description": "inches",
          "type": "number"
        },
        "weight": {
          "type": "number",
          "description": "weight in OUNCES (required)"
        },
        "predefined_package": {
          "description": "carrier predefined package name, e.g. FlatRateEnvelope",
          "type": "string"
        }
      },
      "required": [
        "weight"
      ],
      "description": "Package dimensions and weight."
    },
    "reference": {
      "description": "Your internal reference string for the shipment.",
      "type": "string"
    },
    "carrier_accounts": {
      "description": "Restrict rating to these carrier_account ids.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "to_address",
    "from_address",
    "parcel"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡easypost_create_tracker(tracking_code, carrier)

Start tracking a package by its carrier tracking code. Returns the tracker with current status. No charge. API: POST /trackers (body { tracker }).

Input Schema

{
  "type": "object",
  "properties": {
    "tracking_code": {
      "type": "string",
      "description": "The carrier tracking code to track."
    },
    "carrier": {
      "description": "Carrier name, e.g. USPS, UPS, FedEx (helps disambiguate).",
      "type": "string"
    }
  },
  "required": [
    "tracking_code"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴easypost_buy_shipment(shipment_id, rate_id, insurance)

PURCHASE a shipping label for a shipment at a chosen rate. WARNING: this CHARGES the EasyPost account balance and is irreversible except by requesting a refund (easypost_refund_shipment). Pick a rate_id from the rates returned by easypost_create_shipment or easypost_get_shipment. API: POST /shipments/{id}/buy (body { rate: { id }, insurance? }).

Input Schema

{
  "type": "object",
  "properties": {
    "shipment_id": {
      "type": "string",
      "description": "Shipment id to buy, e.g. shp_..."
    },
    "rate_id": {
      "type": "string",
      "description": "Rate id to purchase (from create_shipment / get_shipment rates)."
    },
    "insurance": {
      "description": "Dollar amount to insure the shipment for, e.g. \"249.99\".",
      "type": "string"
    }
  },
  "required": [
    "shipment_id",
    "rate_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴easypost_refund_shipment(id)

Request a refund (void) of a purchased shipping label. WARNING: reverses a purchase; approval depends on the carrier and label age. API: POST /shipments/{id}/refund.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Shipment id to refund, e.g. shp_..."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools