{
  "data": {
    "a": {
      "slug": "easypost",
      "name": "EasyPost",
      "vendor": "Simpler Postage, Inc. (d/b/a EasyPost)",
      "vendorUrl": "https://www.easypost.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "EasyPost is a multi-carrier shipping API from Simpler Postage, Inc. Its REST API quotes carrier rates, buys labels, verifies addresses, tracks parcels and files refunds and insurance claims, with a hosted read-only MCP server in early release.",
      "url": "https://www.anchorterminal.com/tools/easypost",
      "markdownUrl": "https://www.anchorterminal.com/tools/easypost.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/easypost.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/easypost.json",
      "repo": "https://github.com/EasyPost/easypost-node",
      "license": "Proprietary service under the EasyPost Master Customer Agreement. The official client libraries on GitHub are MIT, with the Go library under ISC",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.easypost.com/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "@easypost/api"
        },
        {
          "registry": "pypi",
          "name": "easypost"
        },
        {
          "registry": "go",
          "name": "github.com/EasyPost/easypost-go/v5"
        }
      ],
      "auth": "api-key",
      "authNotes": "A self-serve API key, sent as the HTTP Basic username with an empty password. The docs say a wallet and a ship-from address must be set up before keys can be seen or generated. Test and production keys exist, both with full account access, and they can be created, disabled, enabled and deleted through /api_keys or the dashboard. The hosted MCP server takes a production key as a Bearer token. No OAuth, partner review or sales approval is needed for the core API.",
      "pricing": "freemium",
      "pricingNotes": "Free for up to 3,000 labels on wallet carriers, with postage charged separately and a per-label fee after that which the pricing page doesn't state. Bringing your own carrier accounts costs $20 a month plus a per-label fee. Tracking is listed at $0.01 to $0.03 a shipment and insurance at 1 per cent of value, minimum $1.00. Test keys cost nothing, so an agent can build without a contract. Forge, GlobalShip and Luma are priced by sales (checked 2026-10-07).",
      "priceSummary": "$0.02 / call",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the pricing page or the legal centre (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 149,
        "npmWeekly": 99736,
        "pypiWeekly": 41831,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://docs.easypost.com",
      "llmsTxt": "https://docs.easypost.com/llms.txt",
      "capabilities": [
        "shipping.rates",
        "shipping.labels",
        "shipping.tracking",
        "shipping.address-validation",
        "shipping.returns"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "api-key",
        "llms-txt",
        "mcp",
        "webhooks",
        "sandbox",
        "free-tier",
        "python",
        "typescript",
        "go",
        "java",
        "php",
        "ruby",
        "dotnet",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.3,
        "grade": "C",
        "agentReady": false,
        "rank": 531,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 85,
          "payments": 22,
          "reliability": 53,
          "schema": 55,
          "security": 47,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-07"
        },
        "negative": 0,
        "verdict": "Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs and free test keys make the REST API easy to start on. No OpenAPI spec or idempotency keys were found, every key has full account access, and the status page shows a connectivity outage on 23 July 2026 that affected all operations.",
        "bestFor": "An agent that quotes rates across carriers, buys a label, verifies an address, follows tracking by webhook and requests a refund from one merchant account, mainly on US carriers.",
        "strengths": [
          "llms.txt, a Markdown copy of almost every docs page and a JSON page index with a note on when to read each page",
          "Test API keys run the rate, buy, track and webhook flow at no cost, with no postage bought and no carrier contacted",
          "Seven official SDKs (C#, Go, Java, Node, PHP, Python, Ruby), with Go 5.10.1 on 29 September 2026 and PHP 8.8.3 on 8 September",
          "Dated release notes almost every week, 10 entries between 12 July and 28 September 2026",
          "The data processing addendum names 12 subprocessors with purpose and country, and the legal centre keeps every past version of each agreement"
        ],
        "weaknesses": [
          "No OpenAPI spec was found in the docs or in the EasyPost GitHub organisation. The reference is prose and tables, with a Postman workspace",
          "No idempotency keys were found, and `reference` on a shipment isn't unique, so a retried buy can purchase a second label",
          "API keys allow full account access. Test and production modes and child users are the only separation, with no read-only or scoped key",
          "An outage on 23 July 2026 at the hosting provider affected all operations for about four and a half hours. Two carrier-side incidents were marked major in the same 90 days",
          "The Master Customer Agreement supplies the service as is, with no uptime commitment, and the per-label fee after 3,000 free labels isn't on the pricing page"
        ],
        "agentNotes": [
          "Use a test API key while building. It buys no postage and contacts no carrier, and test tracking codes simulate each tracking status",
          "Don't blind-retry `POST /shipments/:id/buy` after a timeout. Retrieve the shipment first and check for `postage_label`, since no idempotency key exists",
          "Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer token on the MCP server",
          "Handle `errors` as either an array of objects or an array of strings. The docs say both shapes occur",
          "Pass a scoped `carrier_accounts` list when rating. Only the first 60 accounts are rated and the call doesn't fail when more are enabled"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.3
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 85,
          "payments": 22,
          "reliability": 53,
          "schema": 55,
          "security": 47,
          "transparency": 53
        },
        "provenanceScore": 87
      },
      "connect": {
        "install": "npm install @easypost/api",
        "http": "curl -u \"$EASYPOST_API_KEY\": https://api.easypost.com/v2/shipments",
        "claudeCode": "claude mcp add --scope project --transport http easypost \\\n  https://app-api.easypost.com/mcp \\\n  --header 'Authorization: Bearer ${EASYPOST_API_KEY}'",
        "config": {
          "mcpServers": {
            "easypost": {
              "headers": {
                "Authorization": "Bearer ${EASYPOST_API_KEY}"
              },
              "type": "http",
              "url": "https://app-api.easypost.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/shipping.rates",
        "tool": "https://letme.dev/easypost"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Extra tracker call",
          "unit": "call",
          "usd": 0.02,
          "note": "one included with each label bought"
        },
        {
          "item": "Extra US address verification",
          "unit": "call",
          "usd": 0.02,
          "note": "one included with each label bought; $0.06 outside the US"
        },
        {
          "item": "Extra rating call",
          "unit": "call",
          "usd": 0.02,
          "note": "three included with each label bought"
        },
        {
          "item": "SmartRate call",
          "unit": "call",
          "usd": 0.03
        },
        {
          "item": "Bring your own carrier accounts",
          "unit": "month",
          "usd": 20,
          "note": "plus a per-label fee not stated on the pricing page"
        }
      ],
      "provenance": {
        "legalEntity": "Simpler Postage, Inc. (d/b/a EasyPost)",
        "domain": "easypost.com",
        "domainRegistered": "1998-01-18",
        "endpointOnVendorDomain": true,
        "terms": "https://legal.easypost.com/#mca",
        "privacy": "https://legal.easypost.com/#privacy-policy",
        "statusPage": "https://www.easypoststatus.com",
        "changelog": "https://docs.easypost.com/releases",
        "securityTxt": "none",
        "checked": "2026-10-07",
        "notes": [
          "The Master Customer Agreement (version 6.1, effective 25 August 2026) names Simpler Postage, Inc. (d/b/a EasyPost), 2600 N. Ashton Blvd., Suite 300A, Lehi, UT 84043.",
          "www.easypost.com/.well-known/security.txt and api.easypost.com/.well-known/security.txt return 404. The legal centre carries a Responsible Disclosure Policy with the contact security-abuse@easypost.com.",
          "The privacy policy and the Data Protection Addendum are both version 1.0, effective 18 August 2025. The addendum's Annex D lists 12 subprocessors, all in the USA.",
          "The MCP server is on app-api.easypost.com and the REST API on api.easypost.com. The status page is on a separate domain, easypoststatus.com.",
          "trust.easypost.com answered 403 to our reader, so certifications are taken only from the addendum, which refers to a SOC 2 Type 2 report."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/easypost.json",
      "live": {
        "slug": "easypost",
        "probe": {
          "target": "https://api.easypost.com/v2",
          "method": "get",
          "lastAt": "2026-10-08T21:53:21.144318387Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 607,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 620,
          "p95ms24h": 709,
          "samples24h": 71,
          "samples30d": 71,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 71,
              "ok": 71
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.easypoststatus.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:57:51.544137305Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "EasyPost/easypost-node",
            "version": "v8.9.0",
            "released": "2026-06-25",
            "seenAt": "2026-10-08T16:09:51.321427764Z"
          },
          {
            "registry": "npm",
            "name": "@easypost/api",
            "version": "8.9.0",
            "seenAt": "2026-10-08T16:09:46.909448157Z"
          },
          {
            "registry": "pypi",
            "name": "easypost",
            "version": "10.7.0",
            "released": "2026-06-25",
            "seenAt": "2026-10-08T16:09:51.109480743Z"
          }
        ],
        "githubStars": 149,
        "npmWeekly": 99736,
        "pypiWeekly": 43392,
        "securityTxt": {
          "url": "https://easypost.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:46.376321685Z"
        },
        "pages": [
          {
            "url": "https://docs.easypost.com/releases",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:43.380604863Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdf82a55e910"
          },
          {
            "url": "https://legal.easypost.com/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:21:24.366175945Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c3f1c1d70fd7"
          }
        ],
        "updatedAt": "2026-10-08T21:57:51.544137305Z"
      }
    },
    "answer": "Ship24 and EasyPost score within a point of each other on agent readiness, 55 (C) and 54.3 (C). EasyPost leads on reliability, security \u0026 auth, maintenance \u0026 community and transparency \u0026 trust.",
    "b": {
      "slug": "ship24",
      "name": "Ship24",
      "vendor": "Ship24 Limited",
      "vendorUrl": "https://www.ship24.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "Ship24 is a parcel tracking API from Ship24 Limited in Hong Kong. Its REST API and hosted MCP server create trackers, return normalised tracking events across couriers and push updates by webhook.",
      "url": "https://www.anchorterminal.com/tools/ship24",
      "markdownUrl": "https://www.anchorterminal.com/tools/ship24.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/ship24.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/ship24.json",
      "repo": "https://github.com/ship24/ship24-node",
      "license": "Proprietary service under Ship24's Terms and Conditions. The Node SDK and the AI plugin on GitHub are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.ship24.com/public/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "ship24"
        }
      ],
      "auth": "api-key",
      "authNotes": "A self-serve API key, sent as `Authorization: Bearer apik_...`. A default key is created once a plan (free or paid) is chosen in the dashboard, and an account can hold up to 20 active keys. Keys have no scopes. The hosted MCP server takes the same key in the same header. No OAuth, partner review or sales approval is needed for the listed plans.",
      "pricing": "freemium",
      "pricingNotes": "Free for 10 shipments a month on the Tracking API, blocked at the limit, so an agent can start without a contract. Paid per-shipment plans start at $39 a month for 1,000 shipments with $0.045 for each extra. Per-call plans start at $99 a month for 10,000 calls with $0.015 for each extra. Above 1,000,000 shipments a month pricing is by sales. Whether the free plan needs a card wasn't established (checked 2026-10-08).",
      "priceSummary": "$39 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 12,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 79,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.ship24.com",
      "llmsTxt": "https://docs.ship24.com/llms.txt",
      "openapi": "https://docs.ship24.com/assets/openapi/ship24-tracking-api.yaml",
      "registryName": "com.ship24/tracking-mcp",
      "capabilities": [
        "shipping.tracking"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "api-key",
        "openapi",
        "llms-txt",
        "mcp",
        "webhooks",
        "free-tier",
        "typescript",
        "tracking"
      ],
      "lastRelease": "2026-10-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55,
        "grade": "C",
        "agentReady": false,
        "rank": 522,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 80,
          "payments": 30,
          "reliability": 45,
          "schema": 81,
          "security": 37,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The REST API and the hosted MCP server share one public OpenAPI 3.1 spec, numbered rate limits with Retry-After, and tracker creation that is idempotent by payload. No status page, SLA or security certification was found, API keys carry no scopes, and the API agreement and data processing agreement named in the terms aren't published.",
        "bestFor": "An agent that only needs tracking events across many couriers, by webhook or by lookup, from a tracking number alone.",
        "strengths": [
          "Public OpenAPI 3.1 spec with 12 operations and two webhook definitions, plus llms.txt and a hosted `SKILL.md` integration guide",
          "Hosted MCP server at `https://api.ship24.com/mcp` with 12 tools, each carrying read-only, destructive and idempotent annotations and an output schema",
          "Rate limits are published per endpoint (1 to 10 requests a second) with `RateLimit-*`, `X-RateLimit-*` and `Retry-After` headers",
          "`POST /trackers` and `POST /trackers/track` are idempotent for an identical payload, and `clientTrackerId` is checked for uniqueness",
          "Prices are public for both billing models, with a free API plan of 10 shipments a month and sample tracking numbers for each status"
        ],
        "weaknesses": [
          "No status page was found. `status.ship24.com` doesn't resolve, and neither the site nor the docs link to one",
          "The terms supply the service as is, with no uptime commitment, and allow account termination and data deletion without notice",
          "API keys have no scopes or read-only mode. The docs describe up to 20 keys an account, managed in the dashboard",
          "Webhooks are authenticated by a static secret in the `Authorization` header, with no payload signature",
          "The API agreement and the data processing agreement named in the terms, and a subprocessor list, were not found on the site"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer apik_...` to `https://api.ship24.com/public/v1`. The same key works on the MCP server, which lists tools without a key but answers 401 on calls",
          "Store the `trackerId` or set a unique `clientTrackerId`. Tracking numbers aren't unique, and any changed field on a repeat `POST /trackers` creates a second tracker that uses quota",
          "Allow up to 60 seconds for the first `POST /trackers/track` or `POST /tracking/search` call, since results are fetched from the courier synchronously",
          "Cache `GET /couriers`. It is limited to one request a second and returns the whole courier list, and courier auto-detection usually makes `courierCode` unnecessary",
          "Check for `quota_limit_reached` and `no_active_subscription`. `POST /tracking/search` needs a separate per-call plan, and the free plan blocks at 10 shipments a month"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 55
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 80,
          "payments": 30,
          "reliability": 45,
          "schema": 81,
          "security": 37,
          "transparency": 38
        },
        "provenanceScore": 65
      },
      "connect": {
        "install": "npm install ship24",
        "http": "curl -sS -X POST https://api.ship24.com/public/v1/trackers/track \\\n  -H \"Authorization: Bearer $SHIP24_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"trackingNumber\": \"SHIP24_SAMPLE_DELIVERED_000\" }'",
        "claudeCode": "claude mcp add --transport http ship24-tracking https://api.ship24.com/mcp -H \"Authorization: Bearer apik_your_key_here\"",
        "config": {
          "mcpServers": {
            "ship24-tracking": {
              "headers": {
                "Authorization": "Bearer apik_your_key_here"
              },
              "type": "http",
              "url": "https://api.ship24.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/shipping.tracking",
        "tool": "https://letme.dev/ship24"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Tracking API Pro, 1,000 shipments",
          "unit": "month",
          "usd": 39,
          "note": "$0.039 a shipment; tiers up to 1,000,000 a month"
        },
        {
          "item": "Extra tracked shipment",
          "unit": "tx",
          "usd": 0.045,
          "note": "on the 1,000 tier; $0.010 on the 1,000,000 tier"
        },
        {
          "item": "Per-call plan, 10,000 calls",
          "unit": "month",
          "usd": 99,
          "note": "separate subscription for `POST /tracking/search`"
        },
        {
          "item": "Extra per-call lookup",
          "unit": "call",
          "usd": 0.015,
          "note": "on the 10,000 tier; $0.007 on the 1.5 million tier"
        }
      ],
      "provenance": {
        "legalEntity": "Ship24 Limited",
        "domain": "ship24.com",
        "domainRegistered": "2005-09-18",
        "endpointOnVendorDomain": true,
        "terms": "https://www.ship24.com/terms",
        "privacy": "https://www.ship24.com/privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms and Conditions say Ship24 Limited, a company registered in Hong Kong, is the party called Ship24, and place disputes with the courts of Hong Kong. They carry no date or version.",
          "The terms govern accounts, fees and the API, and say an Application developer and API agreement and a Data Processing Agreement also apply. Neither document was found on the site.",
          "The privacy policy was last updated in August 2026 and has a section on the MCP integration. It names UAB Clefino of Lithuania as a group company for the IOSS service.",
          "The about page lists offices in Hong Kong, Tremblay-en-France and Vilnius.",
          "www.ship24.com, docs.ship24.com and api.ship24.com have no security.txt. SECURITY.md in ship24-ai-plugin gives contact@ship24.com for reports.",
          "No status page and no API changelog were found. The Node SDK and the plugin each keep a CHANGELOG.md on GitHub.",
          "RDAP for ship24.com gives a registration date of 2005-09-18."
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/ship24.json",
      "live": {
        "slug": "ship24",
        "probe": {
          "target": "https://api.ship24.com/public/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:53:33.635238493Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 252,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 252,
          "p95ms24h": 369,
          "samples24h": 28,
          "samples30d": 28,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 28,
              "ok": 28
            }
          ]
        },
        "updatedAt": "2026-10-08T21:53:33.635238493Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Simpler Postage, Inc. (d/b/a EasyPost)",
        "b": "Ship24 Limited",
        "name": "Vendor"
      },
      {
        "a": "https://api.easypost.com/v2",
        "b": "https://api.ship24.com/public/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "not published",
        "b": "$0.045 per transaction",
        "name": "Price for shipping tracking"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the EasyPost Master Customer Agreement. The official client libraries on GitHub are MIT, with the Go library under ISC",
        "b": "Proprietary service under Ship24's Terms and Conditions. The Node SDK and the AI plugin on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "12",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "com.ship24/tracking-mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-28",
        "b": "2026-10-06",
        "name": "Last release"
      },
      {
        "a": "2026-08-25",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-25",
        "b": "2026-08-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "149 stars, 100k npm/wk, 42k PyPI/wk",
        "b": "0 stars, 79 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Ship24 and EasyPost score within a point of each other on agent readiness, 55 (C) and 54.3 (C). EasyPost leads on reliability, security \u0026 auth, maintenance \u0026 community and transparency \u0026 trust.",
        "question": "Which is better for AI agents, EasyPost or Ship24?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do EasyPost and Ship24 need an API key?"
      },
      {
        "answer": "Yes. EasyPost has a hosted endpoint at https://api.easypost.com/v2 and Ship24 at https://api.ship24.com/public/v1.",
        "question": "Can an agent call EasyPost and Ship24 without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 53 against 45",
          "Security \u0026 auth, 47 against 37",
          "Maintenance \u0026 community, 85 against 80",
          "Transparency \u0026 trust, 70 against 52"
        ],
        "also": null,
        "goodFor": "An agent that quotes rates across carriers, buys a label, verifies an address, follows tracking by webhook and requests a refund from one merchant account, mainly on US carriers.",
        "slug": "easypost",
        "watchFor": "No OpenAPI spec was found in the docs or in the EasyPost GitHub organisation. The reference is prose and tables, with a Postman workspace"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 81 against 55",
          "Agent ergonomics, 68 against 63",
          "Payments \u0026 pricing, 30 against 22"
        ],
        "also": null,
        "goodFor": "An agent that only needs tracking events across many couriers, by webhook or by lookup, from a tracking number alone.",
        "slug": "ship24",
        "watchFor": "No status page was found. `status.ship24.com` doesn't resolve, and neither the site nor the docs link to one"
      }
    ],
    "job": {
      "capability": "shipping.tracking",
      "name": "Shipping tracking"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-easyship.json",
        "title": "EasyPost vs Easyship",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-easyship"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-karrio.json",
        "title": "EasyPost vs Karrio",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-karrio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-sendcloud.json",
        "title": "EasyPost vs Sendcloud",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-sendcloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-shipbob.json",
        "title": "EasyPost vs ShipBob",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shipbob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-shippo.json",
        "title": "EasyPost vs Shippo",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shippo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-shipstation.json",
        "title": "EasyPost vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-ship24.json",
        "title": "Easyship vs Ship24",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-ship24"
      },
      {
        "json": "https://www.anchorterminal.com/compare/karrio-vs-ship24.json",
        "title": "Karrio vs Ship24",
        "url": "https://www.anchorterminal.com/compare/karrio-vs-ship24"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sendcloud-vs-ship24.json",
        "title": "Sendcloud vs Ship24",
        "url": "https://www.anchorterminal.com/compare/sendcloud-vs-ship24"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ship24-vs-shipbob.json",
        "title": "Ship24 vs ShipBob",
        "url": "https://www.anchorterminal.com/compare/ship24-vs-shipbob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ship24-vs-shippo.json",
        "title": "Ship24 vs Shippo",
        "url": "https://www.anchorterminal.com/compare/ship24-vs-shippo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ship24-vs-shipstation.json",
        "title": "Ship24 vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/ship24-vs-shipstation"
      }
    ],
    "scores": [
      {
        "by": 8,
        "easypost": 53,
        "edge": "easypost",
        "key": "reliability",
        "name": "Reliability",
        "ship24": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "easypost": 55,
        "edge": "ship24",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "ship24": 81,
        "weight": 13
      },
      {
        "by": 5,
        "easypost": 63,
        "edge": "ship24",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "ship24": 68,
        "weight": 13
      },
      {
        "by": 10,
        "easypost": 47,
        "edge": "easypost",
        "key": "security",
        "name": "Security \u0026 auth",
        "ship24": 37,
        "weight": 14
      },
      {
        "by": 8,
        "easypost": 22,
        "edge": "ship24",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "ship24": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "easypost": 85,
        "edge": "easypost",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "ship24": 80,
        "weight": 7
      },
      {
        "by": 18,
        "easypost": 70,
        "edge": "easypost",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "ship24": 52,
        "weight": 7
      }
    ],
    "summary": "Ship24 and EasyPost score within a point of each other on agent readiness, 55 (C) and 54.3 (C). EasyPost leads on reliability, security \u0026 auth, maintenance \u0026 community and transparency \u0026 trust. Both do shipping tracking.",
    "verdicts": {
      "easypost": "Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs and free test keys make the REST API easy to start on. No OpenAPI spec or idempotency keys were found, every key has full account access, and the status page shows a connectivity outage on 23 July 2026 that affected all operations.",
      "ship24": "The REST API and the hosted MCP server share one public OpenAPI 3.1 spec, numbered rate limits with Retry-After, and tracker creation that is idempotent by payload. No status page, SLA or security certification was found, API keys carry no scopes, and the API agreement and data processing agreement named in the terms aren't published."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/easypost-vs-ship24",
    "json": "https://www.anchorterminal.com/compare/easypost-vs-ship24.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/easypost-vs-ship24.md",
    "slim": "https://www.anchorterminal.com/compare/easypost-vs-ship24.min.md"
  },
  "markdown": "Ship24 and EasyPost score within a point of each other on agent readiness, 55 (C) and 54.3 (C). EasyPost leads on reliability, security \u0026 auth, maintenance \u0026 community and transparency \u0026 trust. Both do shipping tracking.\n\n- EasyPost: grade C, 54.3/100, rank #531 of 722. Markdown https://www.anchorterminal.com/tools/easypost.md · JSON https://www.anchorterminal.com/api/v1/tools/easypost.json\n- Ship24: grade C, 55/100, rank #522 of 722. Markdown https://www.anchorterminal.com/tools/ship24.md · JSON https://www.anchorterminal.com/api/v1/tools/ship24.json\n\n## Which one, for what\n\n### EasyPost (C)\n\nGood for: An agent that quotes rates across carriers, buys a label, verifies an address, follows tracking by webhook and requests a refund from one merchant account, mainly on US carriers.\n\nAhead on:\n- Reliability, 53 against 45\n- Security \u0026 auth, 47 against 37\n- Maintenance \u0026 community, 85 against 80\n- Transparency \u0026 trust, 70 against 52\n\nWatch for: No OpenAPI spec was found in the docs or in the EasyPost GitHub organisation. The reference is prose and tables, with a Postman workspace\n\n### Ship24 (C)\n\nGood for: An agent that only needs tracking events across many couriers, by webhook or by lookup, from a tracking number alone.\n\nAhead on:\n- Schema \u0026 documentation, 81 against 55\n- Agent ergonomics, 68 against 63\n- Payments \u0026 pricing, 30 against 22\n\nWatch for: No status page was found. `status.ship24.com` doesn't resolve, and neither the site nor the docs link to one\n\n\n## Score by category\n\n| Category | Weight | EasyPost | Ship24 | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 53 | 45 | EasyPost +8 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 55 | 81 | Ship24 +26 |\n| Agent ergonomics | 13% (16.2 this run) | 63 | 68 | Ship24 +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 47 | 37 | EasyPost +10 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 22 | 30 | Ship24 +8 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 80 | EasyPost +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 70 | 52 | EasyPost +18 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **54.3 · C** | **55 · C** | |\n\n## Facts side by side\n\n| Fact | EasyPost | Ship24 |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Simpler Postage, Inc. (d/b/a EasyPost) | Ship24 Limited |\n| Hosted endpoint | `https://api.easypost.com/v2` | `https://api.ship24.com/public/v1` |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Freemium |\n| Price for shipping tracking | not published | $0.045 per transaction |\n| x402 | no | no |\n| Licence | Proprietary service under the EasyPost Master Customer Agreement. The official client libraries on GitHub are MIT, with the Go library under ISC | Proprietary service under Ship24's Terms and Conditions. The Node SDK and the AI plugin on GitHub are MIT |\n| Tools exposed | none | 12 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `com.ship24/tracking-mcp` |\n| Last release | 2026-09-28 | 2026-10-06 |\n| Terms last updated | 2026-08-25 | no date given |\n| Privacy policy last updated | 2026-08-25 | 2026-08-01 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 149 stars, 100k npm/wk, 42k PyPI/wk | 0 stars, 79 npm/wk |\n\n## Verdicts\n\n**EasyPost.** Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs and free test keys make the REST API easy to start on. No OpenAPI spec or idempotency keys were found, every key has full account access, and the status page shows a connectivity outage on 23 July 2026 that affected all operations.\n\n**Ship24.** The REST API and the hosted MCP server share one public OpenAPI 3.1 spec, numbered rate limits with Retry-After, and tracker creation that is idempotent by payload. No status page, SLA or security certification was found, API keys carry no scopes, and the API agreement and data processing agreement named in the terms aren't published.\n\n## Before you call either\n\n### EasyPost\n\n1. Use a test API key while building. It buys no postage and contacts no carrier, and test tracking codes simulate each tracking status\n2. Don't blind-retry `POST /shipments/:id/buy` after a timeout. Retrieve the shipment first and check for `postage_label`, since no idempotency key exists\n3. Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer token on the MCP server\n4. Handle `errors` as either an array of objects or an array of strings. The docs say both shapes occur\n5. Pass a scoped `carrier_accounts` list when rating. Only the first 60 accounts are rated and the call doesn't fail when more are enabled\n\n### Ship24\n\n1. Send `Authorization: Bearer apik_...` to `https://api.ship24.com/public/v1`. The same key works on the MCP server, which lists tools without a key but answers 401 on calls\n2. Store the `trackerId` or set a unique `clientTrackerId`. Tracking numbers aren't unique, and any changed field on a repeat `POST /trackers` creates a second tracker that uses quota\n3. Allow up to 60 seconds for the first `POST /trackers/track` or `POST /tracking/search` call, since results are fetched from the courier synchronously\n4. Cache `GET /couriers`. It is limited to one request a second and returns the whole courier list, and courier auto-detection usually makes `courierCode` unnecessary\n5. Check for `quota_limit_reached` and `no_active_subscription`. `POST /tracking/search` needs a separate per-call plan, and the free plan blocks at 10 shipments a month\n\n## Questions\n\n### Which is better for AI agents, EasyPost or Ship24?\n\nShip24 and EasyPost score within a point of each other on agent readiness, 55 (C) and 54.3 (C). EasyPost leads on reliability, security \u0026 auth, maintenance \u0026 community and transparency \u0026 trust.\n\n### Do EasyPost and Ship24 need an API key?\n\nBoth need an API key.\n\n### Can an agent call EasyPost and Ship24 without installing anything?\n\nYes. EasyPost has a hosted endpoint at https://api.easypost.com/v2 and Ship24 at https://api.ship24.com/public/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/easypost-vs-ship24.json, and with the fewest tokens: https://www.anchorterminal.com/compare/easypost-vs-ship24.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"easypost\", \"b\": \"ship24\"}`. From a terminal: `anchor compare easypost ship24`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/easypost.json and https://www.anchorterminal.com/api/v1/tools/ship24.json\n\n## Other comparisons with EasyPost or Ship24\n\n- [EasyPost vs Easyship](https://www.anchorterminal.com/compare/easypost-vs-easyship.md)\n- [EasyPost vs Karrio](https://www.anchorterminal.com/compare/easypost-vs-karrio.md)\n- [EasyPost vs Sendcloud](https://www.anchorterminal.com/compare/easypost-vs-sendcloud.md)\n- [EasyPost vs ShipBob](https://www.anchorterminal.com/compare/easypost-vs-shipbob.md)\n- [EasyPost vs Shippo](https://www.anchorterminal.com/compare/easypost-vs-shippo.md)\n- [EasyPost vs ShipStation API](https://www.anchorterminal.com/compare/easypost-vs-shipstation.md)\n- [Easyship vs Ship24](https://www.anchorterminal.com/compare/easyship-vs-ship24.md)\n- [Karrio vs Ship24](https://www.anchorterminal.com/compare/karrio-vs-ship24.md)\n- [Sendcloud vs Ship24](https://www.anchorterminal.com/compare/sendcloud-vs-ship24.md)\n- [Ship24 vs ShipBob](https://www.anchorterminal.com/compare/ship24-vs-shipbob.md)\n- [Ship24 vs Shippo](https://www.anchorterminal.com/compare/ship24-vs-shippo.md)\n- [Ship24 vs ShipStation API](https://www.anchorterminal.com/compare/ship24-vs-shipstation.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "EasyPost vs Ship24",
        "url": ""
      }
    ],
    "description": "Ship24 and EasyPost score within a point of each other on agent readiness, 55 (C) and 54.3 (C). EasyPost leads on reliability, security \u0026 auth, maintenance \u0026 community and transparency \u0026 trust. Both do shipping tracking. Category scores, facts, verdicts and agent notes side by…",
    "facts": [
      "EasyPost C 54.3",
      "Ship24 C 55",
      "scores"
    ],
    "h1": "EasyPost vs Ship24",
    "image": "https://www.anchorterminal.com/assets/og/compare-easypost-vs-ship24.png",
    "path": "/compare/easypost-vs-ship24",
    "published": "2026-10-01",
    "section": "tools",
    "title": "EasyPost vs Ship24 for AI agents, C 54.3 vs C 55 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/easypost-vs-ship24"
  },
  "tokens": {
    "markdown": 2200,
    "slim": 730
  },
  "version": 1
}
