{
  "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",
      "dns": "easypost.grade.anchorterminal.com",
      "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": null,
        "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-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.4,
        "grade": "C",
        "agentReady": false,
        "rank": 707,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 85,
          "payments": 22,
          "reliability": 68,
          "schema": 55,
          "security": 47,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": 0,
        "verdict": "Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs updated in late October 2026 and free test keys make the REST API easy to start on. No OpenAPI spec or REST idempotency keys were found, and every key has full account access. The MCP server now buys labels, with retry-safe buys.",
        "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), each with a release on 27 or 29 October 2026",
          "Dated release notes almost every week, 8 entries between 8 August and 29 October 2026",
          "The hosted MCP server's `buy_shipment` refuses a price other than the approved one, and a retried buy returns the label already bought"
        ],
        "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",
          "The REST API has no idempotency keys, 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",
          "The load-based limiter on buying and rating publishes no number, and the 429 guidance gives no Retry-After header",
          "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 the REST API has no idempotency key",
          "Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer production key on the MCP server",
          "On the MCP server, pass the approved price to `buy_shipment` and keep client approval on for buy, insure and refund; it runs in production mode only",
          "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.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57.4
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 85,
          "payments": 22,
          "reliability": 68,
          "schema": 55,
          "security": 47,
          "transparency": 53
        },
        "provenanceScore": 89,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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"
        },
        {
          "item": "Amazon label",
          "unit": "tx",
          "usd": 0.2,
          "note": "API Addendum 4.3, effective 30 October 2026; per label bought"
        },
        {
          "item": "Pay-On-Delivery label",
          "unit": "tx",
          "usd": 0.15,
          "note": "API Addendum 4.3, effective 30 October 2026; per label bought"
        }
      ],
      "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": 89
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/easypost.json",
      "live": {
        "slug": "easypost",
        "probe": {
          "target": "https://api.easypost.com/v2",
          "method": "get",
          "lastAt": "2026-11-04T20:46:42.444954164Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 792,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 648,
          "p95ms24h": 771,
          "samples24h": 246,
          "samples30d": 6818,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 214,
              "ok": 214
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.easypoststatus.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T20:39:07.480917354Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "EasyPost/easypost-node",
            "version": "v9.1.0",
            "released": "2026-10-29",
            "seenAt": "2026-11-04T20:13:49.302577506Z"
          },
          {
            "registry": "npm",
            "name": "@easypost/api",
            "version": "9.1.0",
            "seenAt": "2026-11-04T20:13:48.282245877Z"
          },
          {
            "registry": "pypi",
            "name": "easypost",
            "version": "10.8.0",
            "released": "2026-10-27",
            "seenAt": "2026-11-04T20:13:49.112256676Z"
          }
        ],
        "githubStars": 149,
        "npmWeekly": 104343,
        "pypiWeekly": 53724,
        "securityTxt": {
          "url": "https://easypost.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:21.956161617Z"
        },
        "llmsTxt": {
          "url": "https://docs.easypost.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:22:49.44812974Z"
        },
        "domain": {
          "domain": "easypost.com",
          "registered": "1998-01-18",
          "source": "https://rdap.verisign.com/com/v1/domain/easypost.com",
          "checkedAt": "2026-11-01T14:19:24.344804688Z"
        },
        "pages": [
          {
            "url": "https://docs.easypost.com/releases",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-04T08:20:58.004418749Z",
            "changedAt": "2026-10-30T05:37:17.396564341Z",
            "fingerprint": "4d4d10092075"
          },
          {
            "url": "https://legal.easypost.com/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-04T08:26:45.625164124Z",
            "changedAt": "2026-10-31T06:15:06.468473081Z",
            "fingerprint": "64ee0b96e376"
          }
        ],
        "github": {
          "repo": "easypost/easypost-node",
          "checkedAt": "2026-11-02T08:45:46.426816178Z",
          "stars": 149,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-29T21:40:19Z",
          "openIssues": 0,
          "openPRs": 2,
          "issuesOpened90d": 0,
          "issuesClosed90d": 2,
          "prsMerged90d": 35,
          "ci": {
            "branch": "master",
            "runs": 42,
            "success": 36,
            "failure": 6,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-29T21:35:40Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 0,
            "medianDays": 0.9
          }
        },
        "updatedAt": "2026-11-04T20:46:42.444954164Z"
      }
    },
    "answer": "EasyPost scores 57.4 (C) on agent readiness against TrackingMore's 41.8 (E), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "trackingmore",
      "name": "TrackingMore",
      "vendor": "CHANNELWILL CO., LIMITED",
      "vendorUrl": "https://www.trackingmore.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "TrackingMore is a multi-carrier parcel tracking service run by CHANNELWILL CO., LIMITED under the CWILL brand. Its REST API v4 detects couriers, creates and reads trackings, retracks expired ones and tracks air waybills, with webhooks for status changes.",
      "url": "https://www.anchorterminal.com/tools/trackingmore",
      "markdownUrl": "https://www.anchorterminal.com/tools/trackingmore.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/trackingmore.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/trackingmore.json",
      "dns": "trackingmore.grade.anchorterminal.com",
      "repo": "https://github.com/TrackingMore-API/trackingmore-sdk-nodejs",
      "license": "Proprietary hosted service under the CWILL Terms of Service. The seven official SDKs on GitHub are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.trackingmore.com/v4",
      "packages": [
        {
          "registry": "npm",
          "name": "trackingmore-sdk-nodejs"
        },
        {
          "registry": "pypi",
          "name": "trackingmore-sdk-python"
        },
        {
          "registry": "go",
          "name": "github.com/TrackingMore-API/trackingmore-sdk-go"
        }
      ],
      "auth": "api-key",
      "authNotes": "An API key sent in the Tracking-Api-Key header, generated in the web app under Developer, API key, and shown once. At most four keys per account, deleted from the same page. Every key has full account access and no scopes were found. Access is self-serve after a browser signup; the pricing page gives two keys on Basic, five on Pro and eight on Enterprise.",
      "pricing": "freemium",
      "pricingNotes": "Plans are priced in credits a month with a Free plan, Basic, Pro and a custom Enterprise plan, and a 14-day free trial. The plan prices on the pricing page render by script and were not read; the API page says tracking starts from $0.03 a tracked order and shows figures of $0.0318, $0.036 and $0.037. SMS notifications and translation cost extra credits. Enterprise adds custom rate limits and invoice payment (https://www.trackingmore.com/pricing and https://www.trackingmore.com/tracking-api, checked 2026-11-03).",
      "priceSummary": "$0.03 / tx",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the SDK READMEs, the support centre or the pricing page (checked 2026-11-03). Plans are paid by card in the web app, or by invoice on Enterprise.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 6,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://www.trackingmore.com/docs/trackingmore/",
      "capabilities": [
        "shipping.tracking"
      ],
      "tags": [
        "official",
        "hosted",
        "closed-source",
        "api-key",
        "webhooks",
        "free-tier",
        "free-trial",
        "freemium",
        "status-page",
        "python",
        "typescript",
        "go",
        "java",
        "php",
        "ruby",
        "dotnet"
      ],
      "lastRelease": "2024-12-25",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.8,
        "grade": "E",
        "agentReady": false,
        "rank": 1187,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 54,
          "maintenance": 19,
          "payments": 23,
          "reliability": 65,
          "schema": 31,
          "security": 31,
          "transparency": 57
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A small tracking API with published per-endpoint rate limits, meta error codes, a free courier detection call and SDKs in seven languages. The reference docs render by script with no OpenAPI file, plan prices weren't readable, one key has full access, the SDKs date from 2024 and the legal documents belong to the CWILL group.",
        "bestFor": "An agent that reports where a parcel is across many carriers from a tracking number, with a cheap per-tracking price.",
        "strengths": [
          "Nine v4 calls cover detect, create, batch create of 40, get, update, delete, retrack and air waybills, with webhooks for status changes",
          "Rate limits published per endpoint, 3 requests a second on create and 10 a second elsewhere, with a stated 120-second wait after a 429",
          "HTTP and meta codes with messages, including 4101 for a duplicate tracking, so a retried create is rejected rather than doubled",
          "Official SDKs in PHP, Python, Node, Java, Go, Ruby and .NET, MIT, plus a Postman collection",
          "Free plan and a 14-day trial, with courier detection free on v4"
        ],
        "weaknesses": [
          "The API reference renders by script and no OpenAPI file, llms.txt or Markdown docs were found",
          "One API key with full access, at most four per account, no scopes and no read-only key",
          "No idempotency key, no Retry-After, and no SLA beyond a 99.99 per cent uptime line on the Enterprise plan",
          "The SDKs were last updated between February and December 2024, and no dated API changelog was found",
          "Plan prices render by script and were not read; the terms and privacy policy are CWILL group documents that name different entities per product"
        ],
        "agentNotes": [
          "Send the key as `Tracking-Api-Key` to https://api.trackingmore.com/v4; the v2 header name `Trackingmore-Api-Key` and the v3 path are the older versions",
          "Call `POST /v4/couriers/detect` first when the carrier is unknown (free on v4), then `POST /v4/trackings/create` with `tracking_number` and `courier_code`; the create response already carries the tracking result",
          "Create up to 40 shipments at once with `POST /v4/trackings/batch` and read them with `GET /v4/trackings/get`, which filters by tracking numbers, courier and created date",
          "Treat meta code 4101 as an existing tracking rather than a failure, and 4190 as a plan quota to raise with the person; after a 429 wait 120 seconds",
          "Stay under 3 creates a second and 10 requests a second on other calls per account, and prefer a webhook (same version as the API) to polling"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.8
          }
        ],
        "editorialScores": {
          "ergonomics": 54,
          "maintenance": 19,
          "payments": 23,
          "reliability": 65,
          "schema": 31,
          "security": 31,
          "transparency": 39
        },
        "provenanceScore": 74,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install trackingmore-sdk-nodejs",
        "http": "curl -H \"Tracking-Api-Key: $TRACKINGMORE_API_KEY\" https://api.trackingmore.com/v4/couriers/all"
      },
      "letme": {
        "capability": "https://letme.dev/shipping.tracking",
        "tool": "https://letme.dev/trackingmore"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Tracked order",
          "unit": "tx",
          "usd": 0.03,
          "note": "the from price on the API page; plan prices render by script and were not read"
        }
      ],
      "provenance": {
        "legalEntity": "CHANNELWILL CO., LIMITED",
        "domain": "trackingmore.com",
        "domainRegistered": "2014-10-27",
        "endpointOnVendorDomain": true,
        "terms": "https://www.cwill.com/terms-of-service/",
        "privacy": "https://www.cwill.com/privacy-policy/",
        "statusPage": "https://status.trackingmore.com/",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "trackingmore.com's legal links redirect to cwill.com. The CWILL privacy policy (effective 8 August 2026) names CHANNELWILL CO., LIMITED, Workspace B15, 2/F, Wing Cheung Industrial Building, 58-70 Kwai Cheong Road, Hong Kong, as data controller for TrackingMore, and CWILL INC of Dover, Delaware, for the CWILL Order Tracking and other products. The CWILL Terms of Service (effective 9 January 2026) cover the whole product family and say the contracting entity depends on the product.",
          "The CWILL terms refer to an Acceptable Use Policy and a DPA at cwill.com/legal/dpa/, and a sub-processor list at trust.cwill.com/subprocessors, none of which was read.",
          "www.trackingmore.com/robots.txt disallows nothing. support.trackingmore.com/robots.txt disallows nothing. www.cwill.com/robots.txt allows named AI crawlers and disallows search and admin paths for others, with a crawl delay of 5 seconds. status.trackingmore.com was read without a robots.txt check of its own.",
          "The API answers at api.trackingmore.com, a vendor subdomain.",
          "www.trackingmore.com/.well-known/security.txt returns 404, and no security page was found on trackingmore.com (the /security path returns 404).",
          "RDAP gives trackingmore.com a registration date of 27 October 2014."
        ],
        "score": 74
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/trackingmore.json",
      "live": {
        "slug": "trackingmore",
        "probe": {
          "target": "https://api.trackingmore.com/v4",
          "method": "get",
          "lastAt": "2026-11-04T20:47:20.612787952Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 630,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 599,
          "p95ms24h": 1041,
          "samples24h": 55,
          "samples30d": 55,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 55,
              "ok": 55
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.trackingmore.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T15:32:39.655302878Z"
        },
        "securityTxt": {
          "url": "https://trackingmore.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:27.177236947Z"
        },
        "updatedAt": "2026-11-04T20:47:20.612787952Z"
      }
    },
    "edges": [
      {
        "by": 66,
        "category": "maintenance",
        "leads": "easypost",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The releases page has an entry dated 29 October 2026, six days before this check, and the Node, Go, Java and C# libraries were tagged the same day (30). Eight dated release notes fall in the 90 days from 6 August (8, 15, 22 and 29 August, 25 and 28 September, 8 and 29 October), and every library had a release on 27 or 29 October (20). A closed service with public release notes, support@easypost.com, a help centre, ai@easypost.com for the MCP server and a published four-hour response target on the Base support tier. We didn't read GitHub issues or test response times (11 of 15). Seven official SDKs, each with a release on 27 or 29 October 2026: Node 9.1.0, Python 10.8.0, Go 5.12.0, Java 8.10.0, C# 7.12.0, PHP 8.9.0 and Ruby 7.8.0 (15). The Python library's CI lints and runs tests, per the 7 October check, and Node 9.0.0 moved to TypeScript and fetch (9 of 10, partly met). 30 + 20 + 11 + 15 + 9 = 85.",
          "b": "Read as a closed service. No dated API change was found. The SDKs were last pushed between February and December 2024, the support articles are dated 2023 and 2024, and the reference is undated (0 of 30). No releases or dated entries in the last 90 days were found (0). Support by email and chat with a help centre; GitHub issues were not read (6 of 15). Seven official SDKs exist but none has changed since December 2024 (10 of 15). The Node SDK has tests and no CI workflow (3 of 10). 0 + 0 + 6 + 10 + 3 = 19."
        },
        "scores": {
          "a": 85,
          "b": 19
        }
      },
      {
        "by": 24,
        "category": "schema",
        "leads": "easypost",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI or similar spec was found in the docs, llms.txt, the page index or the 56 public repositories of the EasyPost GitHub organisation. A Postman workspace is listed, which we didn't read (0 of 25). llms.txt, a Markdown copy of almost every page and doc-index.json with audience and usage notes for each page (10). Each object has a property table with a type and description, and the index says when each page applies. Endpoint pages are mostly examples, with little on when not to use a call (12 of 20). Types and allowed values are given in prose tables, such as the ten tracker statuses, with no schema to validate against, and the Markdown copies omit some parameter lists that the HTML pages render (8 of 15). Every endpoint has examples in cURL and seven SDK languages, plus an error object and 13 general error codes. The full error code list is on a part of the page the Markdown copy omits (13 of 15). The path carries v2 and the releases page has dated notes almost every week. No written versioning policy was found, and some calls sit under /beta (12 of 15). 0 + 10 + 12 + 8 + 13 + 12 = 55.",
          "b": "No OpenAPI or similar file was found in the docs, the SDK repositories or a search, and the reference at trackingmore.com/docs renders by script so its schemas were not read (0 of 25). No llms.txt or Markdown docs (0). The official SDK READMEs give one line per call, and the support centre explains when to pair create with get or a webhook and that the create response carries the result (8 of 20). Field names and the required tracking_number and courier_code appear in the SDK examples, with no types, enums or constraints readable (5 of 15). Examples in seven SDK languages and a table of HTTP and meta codes with messages (12 of 15). v4 in the path with v2 and v3 still served, and the support centre says there is no changelog for switching versions. No dated API changelog was found (6 of 15). 0 + 0 + 8 + 5 + 12 + 6 = 31."
        },
        "scores": {
          "a": 55,
          "b": 31
        }
      },
      {
        "by": 16,
        "category": "security",
        "leads": "easypost",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "API keys go in the HTTP Basic username over TLS 1.2. Keys can be created, disabled, enabled and deleted through the API or the dashboard, and the docs say a key allows full account access. Plain revocable keys, with no secret in a query string. The MCP server also takes a sign-in with an EasyPost account from the ChatGPT and Claude apps (20 of 30). Test keys buy no postage and child users hold separate keys. The REST API has no read-only or scoped key and no confirmation step before a purchase. Since 29 October 2026 the MCP server buys labels too (20 tools, 7 of them writes); `buy_shipment` refuses a price that differs from the one the user approved, and the guide asks users to keep client approval on for the three paid or destructive writes (8 of 20, held). Responses carry addresses and carrier tracking text. The MCP guide advises connecting only to trusted clients and servers, and no injection guidance was found (4 of 15). Events and their payloads can be retrieved and each shipment lists its fees, but no audit log of API calls or key use was found in the reviewed documentation (5 of 15). A Responsible Disclosure Policy with a safe-harbour commitment and the contact security-abuse@easypost.com, with no acknowledgement time, HMAC-signed webhooks, and a SOC 2 Type 2 report referred to in the data processing addendum. No security.txt (per the 7 October check) and no bug bounty were found, and OSV lists no advisory for EasyPost packages (10 of 20). 20 + 8 + 4 + 5 + 10 = 47.",
          "b": "One API key in the Tracking-Api-Key header, shown once, at most four per account, deleted in the web app. No scopes or expiry (20 of 30). No read-only key or least-privilege mode, and delete is one call (4 of 20). Tracking checkpoints are carrier text returned to the model, and no guidance was found (3 of 15). A webhook notification log exists in the web app; no log of API calls or key use was found (4 of 15). No security.txt (404), no security page on trackingmore.com, no certification, bug bounty or disclosure policy found. The CWILL privacy policy points to a trust site that was not read (0 of 20). 20 + 4 + 3 + 4 + 0 = 31."
        },
        "scores": {
          "a": 47,
          "b": 31
        }
      },
      {
        "by": 14,
        "category": "transparency",
        "leads": "easypost",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "The service is closed, under a Master Customer Agreement (version 6.1, effective 25 August 2026) and seven addenda in a legal centre that keeps every past version. The SDKs are MIT or ISC (15). The privacy policy (18 August 2025) gives no retention period. The agreement points to a Data Retention Policy in the help centre, which refused our reader, and it grants EasyPost a licence to use customer data to improve its services and develop new products during and after the term. A data processing addendum with EU and UK standard clauses is public (15 of 30). The agreement says EasyPost will use reasonable efforts to notify customers before API changes that aren't backwards compatible, with no notice period, and allows termination with a refund within 15 days if functionality is materially reduced. No deprecation policy with dates was found (6 of 20). Annex D of the addendum lists 12 subprocessors with purpose and country, all in the USA, and customers have 10 days to object to a new one (17 of 20). The legal centre was re-read on 4 November; the MCA is still version 6.1. 15 + 15 + 6 + 17 = 53.",
          "b": "Closed service. The terms are the CWILL group's (effective 9 January 2026), which say the contracting entity depends on the product, and the privacy policy names CHANNELWILL CO., LIMITED for TrackingMore. The SDKs are MIT (15 of 30). The privacy policy (8 August 2026) distinguishes controller and processor roles and links a DPA and a sub-processor list, neither read; no retention periods were read (12 of 30). v2 and v3 are still served with no notice policy or dates (4 of 20). A sub-processor list exists at trust.cwill.com and was not read; no data location is stated on the pages read (8 of 20). 15 + 12 + 4 + 8 = 39."
        },
        "scores": {
          "a": 71,
          "b": 57
        }
      },
      {
        "by": 9,
        "category": "ergonomics",
        "leads": "easypost",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "List calls take `page_size` up to 100 with a default of 20 on most endpoints. No field selection was found, and a shipment response nests addresses, parcel, rates and tracker (12 of 25). Cursor pagination by `before_id` and `after_id`, date ranges and a `has_more` flag, with support that varies by endpoint (16 of 20). Errors carry a machine-readable `code`, a message and per-field entries with an occasional suggestion. The `errors` array arrives as objects or as strings, so a client has to handle both (15 of 20). The REST API has no idempotency keys. Trackers are deduplicated by tracking code and carrier for three months, but `reference` on a shipment isn't unique and nothing guards a repeated buy. Since 29 October 2026 the MCP server's `buy_shipment` returns the label already bought when a timed-out buy is retried, and the guide says three write tools are marked destructive; the tool definitions weren't read (5 of 20, partly met, held). One-call buy creates and purchases in one request, addresses and parcels can be nested or reused by id, and official SDKs cover seven languages (15). 12 + 16 + 15 + 5 + 15 = 63.",
          "b": "trackings/get filters by tracking numbers, courier and created date range, and batch create takes 40 at once. No field selection was found, and the unread reference may document more (10 of 25). Date and courier filters exist; pagination parameters were not found in what was read (8 of 20). Every response carries an HTTP code and a meta code with a message, such as 4121 for an undetected courier and 4190 for a reached quota (14 of 20). No idempotency key. A repeated create is rejected with 4101, so the write is safe to retry, and delete and retrack take ids (10 of 20). Create needs only tracking_number and courier_code, detect is free, and official SDKs cover seven languages (12 of 15). 10 + 8 + 14 + 10 + 12 = 54."
        },
        "scores": {
          "a": 63,
          "b": 54
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Simpler Postage, Inc. (d/b/a EasyPost)",
        "b": "CHANNELWILL CO., LIMITED",
        "name": "Vendor"
      },
      {
        "a": "https://api.easypost.com/v2",
        "b": "https://api.trackingmore.com/v4",
        "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.03 per transaction",
        "name": "Price for shipment 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 hosted service under the CWILL Terms of Service. The seven official SDKs on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-29",
        "b": "2024-12-25",
        "name": "Last release"
      },
      {
        "a": "2026-08-25",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-25",
        "b": "2026-08-08",
        "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": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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",
        "b": "6 stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "EasyPost scores 57.4 (C) on agent readiness against TrackingMore's 41.8 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, EasyPost or TrackingMore?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do EasyPost and TrackingMore need an API key?"
      },
      {
        "answer": "Yes. EasyPost has a hosted endpoint at https://api.easypost.com/v2 and TrackingMore at https://api.trackingmore.com/v4.",
        "question": "Can an agent call EasyPost and TrackingMore without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 55 against 31",
          "Agent ergonomics, 63 against 54",
          "Security \u0026 auth, 47 against 31",
          "Maintenance \u0026 community, 85 against 19",
          "Transparency \u0026 trust, 71 against 57"
        ],
        "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": null,
        "also": null,
        "goodFor": "An agent that reports where a parcel is across many carriers from a tracking number, with a cheap per-tracking price.",
        "slug": "trackingmore",
        "watchFor": "The API reference renders by script and no OpenAPI file, llms.txt or Markdown docs were found"
      }
    ],
    "history": {
      "easypost": [
        {
          "causes": [
            "time"
          ],
          "date": "2026-11-04",
          "delta": 3,
          "from": 54.4,
          "fromGrade": "C",
          "to": 57.4,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 54.3,
          "fromGrade": "C",
          "to": 54.4,
          "toGrade": "C"
        }
      ],
      "trackingmore": null
    },
    "job": {
      "capability": "shipping.tracking",
      "name": "Shipment 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-shippypro.json",
        "title": "EasyPost vs ShippyPro",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shippypro"
      },
      {
        "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/easypost-vs-ship24.json",
        "title": "EasyPost vs Ship24",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-ship24"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-trackingmore.json",
        "title": "Easyship vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/karrio-vs-trackingmore.json",
        "title": "Karrio vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/karrio-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sendcloud-vs-trackingmore.json",
        "title": "Sendcloud vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/sendcloud-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ship24-vs-trackingmore.json",
        "title": "Ship24 vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/ship24-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shipbob-vs-trackingmore.json",
        "title": "ShipBob vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/shipbob-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shippo-vs-trackingmore.json",
        "title": "Shippo vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/shippo-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shippypro-vs-trackingmore.json",
        "title": "ShippyPro vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/shippypro-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shipstation-vs-trackingmore.json",
        "title": "ShipStation API vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/shipstation-vs-trackingmore"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 3,
        "easypost": 68,
        "edge": "easypost",
        "key": "reliability",
        "name": "Reliability",
        "trackingmore": 65,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 24,
        "easypost": 55,
        "edge": "easypost",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "trackingmore": 31,
        "weight": 13
      },
      {
        "by": 9,
        "easypost": 63,
        "edge": "easypost",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "trackingmore": 54,
        "weight": 13
      },
      {
        "by": 16,
        "easypost": 47,
        "edge": "easypost",
        "key": "security",
        "name": "Security \u0026 auth",
        "trackingmore": 31,
        "weight": 14
      },
      {
        "by": 1,
        "easypost": 22,
        "edge": "trackingmore",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "trackingmore": 23,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 66,
        "easypost": 85,
        "edge": "easypost",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "trackingmore": 19,
        "weight": 7
      },
      {
        "by": 14,
        "easypost": 71,
        "edge": "easypost",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "trackingmore": 57,
        "weight": 7
      }
    ],
    "summary": "EasyPost scores 57.4 (C) on agent readiness against TrackingMore's 41.8 (E), and leads in 6 of 7 scored categories. Both do shipment tracking.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "easypost": "Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs updated in late October 2026 and free test keys make the REST API easy to start on. No OpenAPI spec or REST idempotency keys were found, and every key has full account access. The MCP server now buys labels, with retry-safe buys.",
      "trackingmore": "A small tracking API with published per-endpoint rate limits, meta error codes, a free courier detection call and SDKs in seven languages. The reference docs render by script with no OpenAPI file, plan prices weren't readable, one key has full access, the SDKs date from 2024 and the legal documents belong to the CWILL group."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore",
    "json": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore.min.md"
  },
  "markdown": "EasyPost scores 57.4 (C) on agent readiness against TrackingMore's 41.8 (E), and leads in 6 of 7 scored categories. Both do shipment tracking.\n\n- EasyPost: grade C, 57.4/100, rank #707 of 1349. Markdown https://www.anchorterminal.com/tools/easypost.md · JSON https://www.anchorterminal.com/api/v1/tools/easypost.json\n- TrackingMore: grade E, 41.8/100, rank #1187 of 1349. Markdown https://www.anchorterminal.com/tools/trackingmore.md · JSON https://www.anchorterminal.com/api/v1/tools/trackingmore.json\n- Best shipping and fulfilment APIs for AI agents: https://www.anchorterminal.com/best/shipping/index.md\n- All 45 shipping comparisons: https://www.anchorterminal.com/compare/shipping/index.md\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- Schema \u0026 documentation, 55 against 31\n- Agent ergonomics, 63 against 54\n- Security \u0026 auth, 47 against 31\n- Maintenance \u0026 community, 85 against 19\n- Transparency \u0026 trust, 71 against 57\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### TrackingMore (E)\n\nGood for: An agent that reports where a parcel is across many carriers from a tracking number, with a cheap per-tracking price.\n\nWatch for: The API reference renders by script and no OpenAPI file, llms.txt or Markdown docs were found\n\n\n## Why the edge\n\n### Maintenance \u0026 community: EasyPost +66\n\n- EasyPost (85): The releases page has an entry dated 29 October 2026, six days before this check, and the Node, Go, Java and C# libraries were tagged the same day (30). Eight dated release notes fall in the 90 days from 6 August (8, 15, 22 and 29 August, 25 and 28 September, 8 and 29 October), and every library had a release on 27 or 29 October (20). A closed service with public release notes, support@easypost.com, a help centre, ai@easypost.com for the MCP server and a published four-hour response target on the Base support tier. We didn't read GitHub issues or test response times (11 of 15). Seven official SDKs, each with a release on 27 or 29 October 2026: Node 9.1.0, Python 10.8.0, Go 5.12.0, Java 8.10.0, C# 7.12.0, PHP 8.9.0 and Ruby 7.8.0 (15). The Python library's CI lints and runs tests, per the 7 October check, and Node 9.0.0 moved to TypeScript and fetch (9 of 10, partly met). 30 + 20 + 11 + 15 + 9 = 85.\n- TrackingMore (19): Read as a closed service. No dated API change was found. The SDKs were last pushed between February and December 2024, the support articles are dated 2023 and 2024, and the reference is undated (0 of 30). No releases or dated entries in the last 90 days were found (0). Support by email and chat with a help centre; GitHub issues were not read (6 of 15). Seven official SDKs exist but none has changed since December 2024 (10 of 15). The Node SDK has tests and no CI workflow (3 of 10). 0 + 0 + 6 + 10 + 3 = 19.\n\n### Schema \u0026 documentation: EasyPost +24\n\n- EasyPost (55): No OpenAPI or similar spec was found in the docs, llms.txt, the page index or the 56 public repositories of the EasyPost GitHub organisation. A Postman workspace is listed, which we didn't read (0 of 25). llms.txt, a Markdown copy of almost every page and doc-index.json with audience and usage notes for each page (10). Each object has a property table with a type and description, and the index says when each page applies. Endpoint pages are mostly examples, with little on when not to use a call (12 of 20). Types and allowed values are given in prose tables, such as the ten tracker statuses, with no schema to validate against, and the Markdown copies omit some parameter lists that the HTML pages render (8 of 15). Every endpoint has examples in cURL and seven SDK languages, plus an error object and 13 general error codes. The full error code list is on a part of the page the Markdown copy omits (13 of 15). The path carries v2 and the releases page has dated notes almost every week. No written versioning policy was found, and some calls sit under /beta (12 of 15). 0 + 10 + 12 + 8 + 13 + 12 = 55.\n- TrackingMore (31): No OpenAPI or similar file was found in the docs, the SDK repositories or a search, and the reference at trackingmore.com/docs renders by script so its schemas were not read (0 of 25). No llms.txt or Markdown docs (0). The official SDK READMEs give one line per call, and the support centre explains when to pair create with get or a webhook and that the create response carries the result (8 of 20). Field names and the required tracking_number and courier_code appear in the SDK examples, with no types, enums or constraints readable (5 of 15). Examples in seven SDK languages and a table of HTTP and meta codes with messages (12 of 15). v4 in the path with v2 and v3 still served, and the support centre says there is no changelog for switching versions. No dated API changelog was found (6 of 15). 0 + 0 + 8 + 5 + 12 + 6 = 31.\n\n### Security \u0026 auth: EasyPost +16\n\n- EasyPost (47): API keys go in the HTTP Basic username over TLS 1.2. Keys can be created, disabled, enabled and deleted through the API or the dashboard, and the docs say a key allows full account access. Plain revocable keys, with no secret in a query string. The MCP server also takes a sign-in with an EasyPost account from the ChatGPT and Claude apps (20 of 30). Test keys buy no postage and child users hold separate keys. The REST API has no read-only or scoped key and no confirmation step before a purchase. Since 29 October 2026 the MCP server buys labels too (20 tools, 7 of them writes); `buy_shipment` refuses a price that differs from the one the user approved, and the guide asks users to keep client approval on for the three paid or destructive writes (8 of 20, held). Responses carry addresses and carrier tracking text. The MCP guide advises connecting only to trusted clients and servers, and no injection guidance was found (4 of 15). Events and their payloads can be retrieved and each shipment lists its fees, but no audit log of API calls or key use was found in the reviewed documentation (5 of 15). A Responsible Disclosure Policy with a safe-harbour commitment and the contact security-abuse@easypost.com, with no acknowledgement time, HMAC-signed webhooks, and a SOC 2 Type 2 report referred to in the data processing addendum. No security.txt (per the 7 October check) and no bug bounty were found, and OSV lists no advisory for EasyPost packages (10 of 20). 20 + 8 + 4 + 5 + 10 = 47.\n- TrackingMore (31): One API key in the Tracking-Api-Key header, shown once, at most four per account, deleted in the web app. No scopes or expiry (20 of 30). No read-only key or least-privilege mode, and delete is one call (4 of 20). Tracking checkpoints are carrier text returned to the model, and no guidance was found (3 of 15). A webhook notification log exists in the web app; no log of API calls or key use was found (4 of 15). No security.txt (404), no security page on trackingmore.com, no certification, bug bounty or disclosure policy found. The CWILL privacy policy points to a trust site that was not read (0 of 20). 20 + 4 + 3 + 4 + 0 = 31.\n\n### Transparency \u0026 trust: EasyPost +14\n\n- EasyPost (71): The service is closed, under a Master Customer Agreement (version 6.1, effective 25 August 2026) and seven addenda in a legal centre that keeps every past version. The SDKs are MIT or ISC (15). The privacy policy (18 August 2025) gives no retention period. The agreement points to a Data Retention Policy in the help centre, which refused our reader, and it grants EasyPost a licence to use customer data to improve its services and develop new products during and after the term. A data processing addendum with EU and UK standard clauses is public (15 of 30). The agreement says EasyPost will use reasonable efforts to notify customers before API changes that aren't backwards compatible, with no notice period, and allows termination with a refund within 15 days if functionality is materially reduced. No deprecation policy with dates was found (6 of 20). Annex D of the addendum lists 12 subprocessors with purpose and country, all in the USA, and customers have 10 days to object to a new one (17 of 20). The legal centre was re-read on 4 November; the MCA is still version 6.1. 15 + 15 + 6 + 17 = 53.\n- TrackingMore (57): Closed service. The terms are the CWILL group's (effective 9 January 2026), which say the contracting entity depends on the product, and the privacy policy names CHANNELWILL CO., LIMITED for TrackingMore. The SDKs are MIT (15 of 30). The privacy policy (8 August 2026) distinguishes controller and processor roles and links a DPA and a sub-processor list, neither read; no retention periods were read (12 of 30). v2 and v3 are still served with no notice policy or dates (4 of 20). A sub-processor list exists at trust.cwill.com and was not read; no data location is stated on the pages read (8 of 20). 15 + 12 + 4 + 8 = 39.\n\n### Agent ergonomics: EasyPost +9\n\n- EasyPost (63): List calls take `page_size` up to 100 with a default of 20 on most endpoints. No field selection was found, and a shipment response nests addresses, parcel, rates and tracker (12 of 25). Cursor pagination by `before_id` and `after_id`, date ranges and a `has_more` flag, with support that varies by endpoint (16 of 20). Errors carry a machine-readable `code`, a message and per-field entries with an occasional suggestion. The `errors` array arrives as objects or as strings, so a client has to handle both (15 of 20). The REST API has no idempotency keys. Trackers are deduplicated by tracking code and carrier for three months, but `reference` on a shipment isn't unique and nothing guards a repeated buy. Since 29 October 2026 the MCP server's `buy_shipment` returns the label already bought when a timed-out buy is retried, and the guide says three write tools are marked destructive; the tool definitions weren't read (5 of 20, partly met, held). One-call buy creates and purchases in one request, addresses and parcels can be nested or reused by id, and official SDKs cover seven languages (15). 12 + 16 + 15 + 5 + 15 = 63.\n- TrackingMore (54): trackings/get filters by tracking numbers, courier and created date range, and batch create takes 40 at once. No field selection was found, and the unread reference may document more (10 of 25). Date and courier filters exist; pagination parameters were not found in what was read (8 of 20). Every response carries an HTTP code and a meta code with a message, such as 4121 for an undetected courier and 4190 for a reached quota (14 of 20). No idempotency key. A repeated create is rejected with 4101, so the write is safe to retry, and delete and retrack take ids (10 of 20). Create needs only tracking_number and courier_code, detect is free, and official SDKs cover seven languages (12 of 15). 10 + 8 + 14 + 10 + 12 = 54.\n\n## Score by category\n\n| Category | Weight | EasyPost | TrackingMore | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 65 | EasyPost +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 55 | 31 | EasyPost +24 |\n| Agent ergonomics | 13% (16.2 this run) | 63 | 54 | EasyPost +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 47 | 31 | EasyPost +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 22 | 23 | TrackingMore +1 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 19 | EasyPost +66 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 71 | 57 | EasyPost +14 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **57.4 · C** | **41.8 · E** | |\n\n## Facts side by side\n\n| Fact | EasyPost | TrackingMore |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Simpler Postage, Inc. (d/b/a EasyPost) | CHANNELWILL CO., LIMITED |\n| Hosted endpoint | `https://api.easypost.com/v2` | `https://api.trackingmore.com/v4` |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Freemium |\n| Price for shipment tracking | not published | $0.03 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 hosted service under the CWILL Terms of Service. The seven official SDKs on GitHub are MIT |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-10-29 | 2024-12-25 |\n| Terms last updated | 2026-08-25 | no date given |\n| Privacy policy last updated | 2026-08-25 | 2026-08-08 |\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 | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 149 stars, 100k npm/wk | 6 stars |\n\n## How the scores have moved\n\n### EasyPost\n\n- +3.0 on 4 November 2026: time\n- +0.1 on 27 October 2026: checklist\n\n### TrackingMore\n\nNo score change since it was listed.\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 updated in late October 2026 and free test keys make the REST API easy to start on. No OpenAPI spec or REST idempotency keys were found, and every key has full account access. The MCP server now buys labels, with retry-safe buys.\n\n**TrackingMore.** A small tracking API with published per-endpoint rate limits, meta error codes, a free courier detection call and SDKs in seven languages. The reference docs render by script with no OpenAPI file, plan prices weren't readable, one key has full access, the SDKs date from 2024 and the legal documents belong to the CWILL group.\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 the REST API has no idempotency key\n3. Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer production key on the MCP server\n4. On the MCP server, pass the approved price to `buy_shipment` and keep client approval on for buy, insure and refund; it runs in production mode only\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### TrackingMore\n\n1. Send the key as `Tracking-Api-Key` to https://api.trackingmore.com/v4; the v2 header name `Trackingmore-Api-Key` and the v3 path are the older versions\n2. Call `POST /v4/couriers/detect` first when the carrier is unknown (free on v4), then `POST /v4/trackings/create` with `tracking_number` and `courier_code`; the create response already carries the tracking result\n3. Create up to 40 shipments at once with `POST /v4/trackings/batch` and read them with `GET /v4/trackings/get`, which filters by tracking numbers, courier and created date\n4. Treat meta code 4101 as an existing tracking rather than a failure, and 4190 as a plan quota to raise with the person; after a 429 wait 120 seconds\n5. Stay under 3 creates a second and 10 requests a second on other calls per account, and prefer a webhook (same version as the API) to polling\n\n## Questions\n\n### Which is better for AI agents, EasyPost or TrackingMore?\n\nEasyPost scores 57.4 (C) on agent readiness against TrackingMore's 41.8 (E), and leads in 6 of 7 scored categories.\n\n### Do EasyPost and TrackingMore need an API key?\n\nBoth need an API key.\n\n### Can an agent call EasyPost and TrackingMore without installing anything?\n\nYes. EasyPost has a hosted endpoint at https://api.easypost.com/v2 and TrackingMore at https://api.trackingmore.com/v4.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/easypost-vs-trackingmore.json, and with the fewest tokens: https://www.anchorterminal.com/compare/easypost-vs-trackingmore.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"easypost\", \"b\": \"trackingmore\"}`. From a terminal: `anchor compare easypost trackingmore`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/easypost.json and https://www.anchorterminal.com/api/v1/tools/trackingmore.json\n\n## Other comparisons with EasyPost or TrackingMore\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 ShippyPro](https://www.anchorterminal.com/compare/easypost-vs-shippypro.md)\n- [EasyPost vs ShipStation API](https://www.anchorterminal.com/compare/easypost-vs-shipstation.md)\n- [EasyPost vs Ship24](https://www.anchorterminal.com/compare/easypost-vs-ship24.md)\n- [Easyship vs TrackingMore](https://www.anchorterminal.com/compare/easyship-vs-trackingmore.md)\n- [Karrio vs TrackingMore](https://www.anchorterminal.com/compare/karrio-vs-trackingmore.md)\n- [Sendcloud vs TrackingMore](https://www.anchorterminal.com/compare/sendcloud-vs-trackingmore.md)\n- [Ship24 vs TrackingMore](https://www.anchorterminal.com/compare/ship24-vs-trackingmore.md)\n- [ShipBob vs TrackingMore](https://www.anchorterminal.com/compare/shipbob-vs-trackingmore.md)\n- [Shippo vs TrackingMore](https://www.anchorterminal.com/compare/shippo-vs-trackingmore.md)\n- [ShippyPro vs TrackingMore](https://www.anchorterminal.com/compare/shippypro-vs-trackingmore.md)\n- [ShipStation API vs TrackingMore](https://www.anchorterminal.com/compare/shipstation-vs-trackingmore.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "EasyPost vs TrackingMore",
        "url": ""
      }
    ],
    "description": "EasyPost scores 57.4 (C) to TrackingMore's 41.8 (E) for shipment tracking. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "EasyPost C 57.4",
      "TrackingMore E 41.8",
      "scores"
    ],
    "h1": "EasyPost vs TrackingMore",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/easypost-vs-trackingmore",
    "published": "2026-10-01",
    "section": "tools",
    "title": "EasyPost vs TrackingMore for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore"
  },
  "tokens": {
    "markdown": 4750,
    "slim": 3030
  },
  "version": 1
}
