{
  "data": {
    "a": {
      "slug": "easyship",
      "name": "Easyship",
      "vendor": "Easyship Inc.",
      "vendorUrl": "https://www.easyship.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "Multi-carrier shipping platform from Easyship. Its public API and hosted MCP server quote courier rates, create shipments, buy labels, validate addresses, track parcels and book pickups across what Easyship says are 550+ courier services.",
      "url": "https://www.anchorterminal.com/tools/easyship",
      "markdownUrl": "https://www.anchorterminal.com/tools/easyship.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/easyship.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/easyship.json",
      "dns": "easyship.grade.anchorterminal.com",
      "repo": "https://github.com/easyship/easyship-mcp-plugin",
      "license": "Proprietary service under Easyship's terms of service. The easyship-mcp server on PyPI and the plugin repository are MIT",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://public-api.easyship.com",
      "packages": [
        {
          "registry": "pypi",
          "name": "easyship-mcp"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A person signs up, opens Connect in the dashboard, creates an API Integration and copies a Bearer token. On v2024-09 the token carries scopes of the form `public.\u003cresource\u003e:read` or `:write`, editable later, and some scopes (advanced or beta functions) are granted by Easyship on request. Sandbox tokens start `sand_` and production tokens `prod_`. Partner apps that connect other Easyship users register through a form and use OAuth 2.0 authorisation code. The MCP server accepts the same Bearer token, and also publishes OAuth metadata with PKCE and dynamic client registration.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with no card, 50 shipments a month in the US, and a sandbox, so an agent's owner can start without a contract. Plus is US$29 a month and Premier US$69, with Scale tiers from US$99 and Enterprise on request. Labels are charged at the courier rate the API quotes. Rates, address validation, tax and duty, HS code and off-platform tracking calls are metered, pay-as-you-go on Free and with monthly quotas on paid plans. Prices vary by country (https://www.easyship.com/plans, US figures, checked 2026-10-07).",
      "priceSummary": "$29 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI spec or the plans page (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": null,
        "pypiWeekly": 79,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://developers.easyship.com",
      "llmsTxt": "https://developers.easyship.com/llms.txt",
      "openapi": "https://developers.easyship.com/reference/rates_request.md",
      "registryName": "com.easyship/mcp",
      "capabilities": [
        "shipping.rates",
        "shipping.labels",
        "shipping.tracking",
        "shipping.address-validation",
        "shipping.returns"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "sandbox",
        "webhooks",
        "python",
        "status-page"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 173,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 1,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 76,
          "payments": 40,
          "reliability": 80,
          "schema": 87,
          "security": 61,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "Per-resource read and write scopes, separate sandbox tokens, a 132-operation OpenAPI contract and a 25-tool hosted MCP server with read-only and destructive annotations on every tool. No idempotency keys or Retry-After were found, the MCP server has no test mode, and the API changelog's last entry is dated 30 October 2025.",
        "bestFor": "An agent that ships parcels for a small or mid-sized merchant, mostly cross-border, and wants rates, labels, duties and pickups from one account without carrier contracts.",
        "strengths": [
          "Tokens carry per-resource read and write scopes, with separate sandbox (sand_) and production (prod_) tokens",
          "Hosted MCP server at mcp.easyship.com with 25 tools, each carrying readOnlyHint, destructiveHint and openWorldHint",
          "llms.txt and a Markdown twin of every reference page, each with its OpenAPI 3.0.3 definition",
          "Free plan with no card and 50 shipments a month in the US, and per-call prices for the metered endpoints",
          "status.easyship.com lists no incident since 5 December 2025, only scheduled maintenance"
        ],
        "weaknesses": [
          "No idempotency keys in the 132-operation spec, and no Retry-After or backoff guidance for 429",
          "The MCP server has no test mode, so a label bought through it is charged",
          "API changelog's last entry is 30 October 2025, and no deprecation policy was found",
          "security.txt expired on 5 October 2025, and the sub-processor list is dated 15 October 2020",
          "No official SDKs found, and the published limit is 60 requests a minute"
        ],
        "agentNotes": [
          "Use a sand_ token against https://public-api-sandbox.easyship.com for API tests. Production rejects sandbox tokens, and sandbox allows 6 requests a minute",
          "The MCP server calls production only. Create the shipment without buy_label first, then call create_label once the user confirms the courier and price",
          "Don't retry a timed-out label purchase blindly. There's no idempotency key, so read the shipment's label_state first",
          "Give every item a category or an hs_code. The API rejects shipments and rates requests that have neither",
          "Stay under 60 requests a minute and 10 a second, and wait for the next window on 429"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.6
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 76,
          "payments": 40,
          "reliability": 80,
          "schema": 87,
          "security": 61,
          "transparency": 51
        },
        "provenanceScore": 92,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST https://public-api.easyship.com/2024-09/rates \\\n  -H \"Authorization: Bearer $EASYSHIP_API_ACCESS_TOKEN\" -H \"Content-Type: application/json\" \\\n  -d @rates-request.json",
        "claudeCode": "claude mcp add --transport http easyship \\\n  https://mcp.easyship.com/mcp \\\n  --header 'Authorization: Bearer YOUR_TOKEN'",
        "config": {
          "mcpServers": {
            "easyship": {
              "headers": {
                "Authorization": "Bearer YOUR_TOKEN"
              },
              "url": "https://mcp.easyship.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/shipping.rates",
        "tool": "https://letme.dev/easyship"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Free plan",
          "unit": "month",
          "usd": 0,
          "note": "US, 50 shipments a month, 1 team member"
        },
        {
          "item": "Plus plan",
          "unit": "month",
          "usd": 29,
          "note": "US, billed monthly; $23 billed annually; 500 shipments, 2,000 rates calls included"
        },
        {
          "item": "Premier plan",
          "unit": "month",
          "usd": 69,
          "note": "US, billed monthly; $55 billed annually; 2,500 shipments, 10,000 rates calls included"
        },
        {
          "item": "Rates API call",
          "unit": "call",
          "usd": 0.01,
          "note": "Free plan pay-as-you-go; $0.008 on Plus and $0.007 on Premier beyond the included quota"
        },
        {
          "item": "US address validation",
          "unit": "call",
          "usd": 0.02,
          "note": "Free and Plus; $0.01 on Premier"
        },
        {
          "item": "International address validation",
          "unit": "call",
          "usd": 0.08,
          "note": "Free plan; $0.07 on Plus, $0.06 on Premier"
        },
        {
          "item": "Tax and duty calculation",
          "unit": "call",
          "usd": 0.11,
          "note": "Free and Plus; $0.10 on Premier"
        },
        {
          "item": "Off-platform tracking",
          "unit": "call",
          "usd": 0.05,
          "note": "Free plan; $0.04 on Plus and Premier. Tracking of Easyship's own shipments is free"
        }
      ],
      "provenance": {
        "legalEntity": "Easyship Inc.",
        "domain": "easyship.com",
        "domainRegistered": "2001-02-22",
        "endpointOnVendorDomain": true,
        "terms": "https://www.easyship.com/legal/terms/us",
        "privacy": "https://www.easyship.com/legal/privacy-policy",
        "statusPage": "https://status.easyship.com",
        "changelog": "https://developers.easyship.com/reference/changelog",
        "securityTxt": "expired",
        "checked": "2026-11-01",
        "notes": [
          "The terms overview (last updated 12 August 2022) names a contracting entity by origin country. Easyship Inc., 61 Broadway, Suite 1705, New York for the United States, Easyship Fulfillment Services Ltd. in Hong Kong for countries not listed, and others for Australia, Canada, the Netherlands, Singapore and the United Kingdom.",
          "The US terms were last updated on 28 July 2026 and promise 30 days' notice of material changes.",
          "The API answers at public-api.easyship.com and the MCP server at mcp.easyship.com, both on the vendor's domain.",
          "www.easyship.com/.well-known/security.txt carries Expires 2025-10-05 and a Policy link to https://vdp.easyship.com (re-read 1 November 2026).",
          "RDAP for easyship.com gives a registration date of 2001-02-22."
        ],
        "score": 92
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/easyship.json",
      "live": {
        "slug": "easyship",
        "probe": {
          "target": "https://public-api.easyship.com",
          "method": "get",
          "lastAt": "2026-11-04T20:46:42.460126105Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 942,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.88,
          "p50ms24h": 796,
          "p95ms24h": 2377,
          "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": 246
            },
            {
              "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": 251
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 252
            },
            {
              "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": 252
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 247
            },
            {
              "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": 250
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 248
            },
            {
              "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": 247
            },
            {
              "date": "2026-11-04",
              "probes": 214,
              "ok": 214
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.easyship.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T20:39:07.492026786Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "com.easyship/mcp",
            "version": "0.6.7",
            "seenAt": "2026-11-04T17:11:44.552009456Z"
          },
          {
            "registry": "pypi",
            "name": "easyship-mcp",
            "version": "0.6.7",
            "released": "2026-10-28",
            "seenAt": "2026-11-04T20:13:53.381321156Z"
          }
        ],
        "githubStars": 0,
        "pypiWeekly": 204,
        "securityTxt": {
          "url": "https://easyship.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:42.990344851Z"
        },
        "llmsTxt": {
          "url": "https://developers.easyship.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:22:49.089476165Z"
        },
        "domain": {
          "domain": "easyship.com",
          "registered": "2001-02-22",
          "source": "https://rdap.verisign.com/com/v1/domain/easyship.com",
          "checkedAt": "2026-11-01T14:22:21.377546745Z"
        },
        "pages": [
          {
            "url": "https://developers.easyship.com/reference/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-04T08:18:47.482280608Z",
            "changedAt": "2026-11-03T07:45:16.976705385Z",
            "fingerprint": "f0c55fc8b53b"
          },
          {
            "url": "https://www.easyship.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-04T08:39:37.832124446Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e83631b37fda"
          },
          {
            "url": "https://www.easyship.com/legal/terms/us",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-04T08:39:40.16941219Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "040fb19e8b62"
          }
        ],
        "github": {
          "repo": "easyship/easyship-mcp-plugin",
          "checkedAt": "2026-11-02T08:45:52.27098177Z",
          "stars": 0,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-06-23T07:57:00Z",
          "openIssues": 1,
          "openPRs": 1,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 1,
            "unanswered": 1
          }
        },
        "updatedAt": "2026-11-04T20:46:42.460126105Z"
      }
    },
    "answer": "Easyship scores 70.6 (BB) on agent readiness against TrackingMore's 41.8 (E), and leads in every scored category.",
    "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": 57,
        "category": "maintenance",
        "leads": "easyship",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "easyship-mcp 0.6.7 was published on 28 October 2026, 4 days before the check, after 0.6.6 on 19 October, both on PyPI and in the MCP registry. Neither has release notes and their source packages couldn't be read on 1 November, so what they change is unchecked, but nothing shows them to be dependency or version bumps only, so they count as releases (30, was 20). The API changelog's last entry is still 30 October 2025. Five releases in the 90 days on three dates, 0.6.3 to 0.6.5 on 21 August, 0.6.6 and 0.6.7 (20, was 10). Closed service with a support desk and a bug report form. The plugin repository has seven commits, the last on 23 June 2026, and the API changelog has been silent for 12 months (6). Listed in the official MCP registry as com.easyship/mcp, a domain-verified namespace, with 0.6.7 as latest (15). The package pins fastmcp below 4 with a uv.lock and has version-check and deploy workflows. No tests ship in the 0.6.5 source package (5). 30 + 20 + 6 + 15 + 5 = 76.",
          "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": 76,
          "b": 19
        }
      },
      {
        "by": 56,
        "category": "schema",
        "leads": "easyship",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Every reference page has a Markdown twin with its OpenAPI 3.0.3 definition, and the full v2024-09 spec (132 operations on 98 paths) ships in the easyship-mcp source package. No single spec URL was found on the docs site. MCP inputs are typed with Pydantic (25). llms.txt at developers.easyship.com lists 240 lines of Markdown pages (10). MCP descriptions state what to collect before calling, when to buy a label or only draft a shipment, and which tool to use for detail. Not every tool says when not to use it (17). The spec has 177 enum declarations and required fields. In the MCP, incoterms, currency and item category are free strings (12). Twelve error codes are documented with HTTP status and a worked example, and endpoints list 402 and 422 responses (13). Versions are dated in the path (2023-01, 2024-09) with migration guides. The changelog's last entry is 30 October 2025, and the MCP server has no changelog (10).",
          "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": 87,
          "b": 31
        }
      },
      {
        "by": 30,
        "category": "security",
        "leads": "easyship",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "API tokens are created in the dashboard with per-resource scopes such as `public.shipment:read` and `public.label:write` on v2024-09, are revocable, and are separate for sandbox and production. The MCP server also publishes OAuth metadata with PKCE S256 and dynamic client registration. No token expiry was found (26). Read-only scopes make a read-only agent possible. Confirmation before delete and cancel exists only as a rule file in the plugin repository, not in the server (14). The MCP server strips tax identifiers from every response and withholds contact details and document links by default. No guidance on untrusted text in tracking or address fields was found (7). Transaction records and a request_id on errors are available. No API call log for the operator was found (4). security.txt is present but still expired on 5 October 2025, re-read on 1 November. It points to a disclosure policy at vdp.easyship.com, which needs JavaScript and went unread. The developers page claims SOC certification with no report or trust page found (10).",
          "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": 61,
          "b": 31
        }
      },
      {
        "by": 19,
        "category": "ergonomics",
        "leads": "easyship",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The MCP server loads 25 tools with no toolsets. List tools return allow-listed summaries, and documents and contact details come back only when asked for (18). List endpoints take page and per_page (default 20) and filters by state, date, country and order number (20). Errors carry a code, type, details array, documentation links and a request_id (18). No idempotency keys, so a retried label purchase isn't protected. All 25 MCP tools set readOnlyHint, destructiveHint and openWorldHint (10). create_shipment picks a courier when none is given and get_rates needs six fields. No official SDK was found among the 15 public repositories in Easyship's GitHub organisation, though the developers page mentions SDKs (7).",
          "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": 73,
          "b": 54
        }
      },
      {
        "by": 17,
        "category": "payments",
        "leads": "easyship",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Plan prices and per-call prices for the metered endpoints are public in the data file the plans page loads, for example US$0.01 a rates call on Free and US$29 a month for Plus. Label prices depend on the courier and come back from the rates call (20). The Free plan needs no card and covers 50 shipments a month in the US, and paid plans have a 14-day trial (20). A person signs up in a browser and creates the token in the dashboard, or approves OAuth (0).",
          "b": "Read with the hosted rubric. No x402, MPP or L402 (0). The API page gives a from price of $0.03 a tracked order and three unlabelled figures, and the pricing page's plan prices render by script, so per-unit pricing is partly public (8 of 20). A Free plan and a 14-day trial are offered, and whether a card is asked for was not established (15 of 20). A person signs up in a browser and generates the key there (0). 0 + 8 + 15 + 0 = 23."
        },
        "scores": {
          "a": 40,
          "b": 23
        }
      },
      {
        "by": 15,
        "category": "reliability",
        "leads": "easyship",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the public API v2024-09, which the hosted MCP server calls. Statuspage at status.easyship.com with nine Easyship components, among them Core API, Open API and Rates API (20). Re-read on 1 November from the history feed (history.atom), because status.easyship.com's robots.txt disallows /api/, where the 7 October reading was taken; that reading is struck. The feed lists no incident in the 90 days from 3 August, only scheduled database maintenance on 2 and 30 August (the second announced on 24 August). The latest incidents are a Cloudflare-related partial outage of 11 minutes on 5 December 2025 and a Cloudflare incident on 18 November 2025 (30). Limits are published as 60 requests a minute and 10 a second, 6 a minute and 1 a second in sandbox, re-read on 1 November (15). The 429 `too_many_requests` code is documented with the advice to wait for the next window. No Retry-After header, backoff guidance or idempotency key was found in the docs or the spec (5). The developers page claims both 99.9% and 99.99% uptime, the US terms disclaim uninterrupted access, and no SLA was found (0). Version 2024-09 is described as the latest stable version. The MCP package is classified beta on PyPI (10). 20 + 30 + 15 + 5 + 0 + 10 = 80.",
          "b": "Read with the hosted lines and scored on the REST API v4 at api.trackingmore.com. status.trackingmore.com is a hosted status page with uptime and a status update history (20). Its figures and history render by script, so the 90 days could not be read; the static text says there were no updates in the last 7 days (5). Rate limits are published per endpoint, 3 requests a second on trackings/create and 10 a second elsewhere, per account (15). The support centre says a 429 means the application should stop and wait 120 seconds, and a repeated create answers meta code 4101 rather than creating a duplicate. No Retry-After and no idempotency key (10 of 15). No SLA document was found. The Enterprise plan lists 99.99 per cent API uptime as a feature and the API page claims 99.9 per cent uptime, which is marketing rather than a published SLA (5 of 10). v4 is the current version and not marked beta (10). 20 + 5 + 15 + 10 + 5 + 10 = 65."
        },
        "scores": {
          "a": 80,
          "b": 65
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Easyship Inc.",
        "b": "CHANNELWILL CO., LIMITED",
        "name": "Vendor"
      },
      {
        "a": "https://public-api.easyship.com",
        "b": "https://api.trackingmore.com/v4",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP, stdio",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "$0.05 per call",
        "b": "$0.03 per transaction",
        "name": "Price for shipment tracking"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Easyship's terms of service. The easyship-mcp server on PyPI and the plugin repository are MIT",
        "b": "Proprietary hosted service under the CWILL Terms of Service. The seven official SDKs on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "25",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "com.easyship/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-28",
        "b": "2024-12-25",
        "name": "Last release"
      },
      {
        "a": "2026-07-28",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-07-28",
        "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": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "0 stars, 79 PyPI/wk",
        "b": "6 stars",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Easyship scores 70.6 (BB) on agent readiness against TrackingMore's 41.8 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, Easyship or TrackingMore?"
      },
      {
        "answer": "Easyship takes an API key or an OAuth sign-in. TrackingMore needs an API key.",
        "question": "Do Easyship and TrackingMore need an API key?"
      },
      {
        "answer": "Yes. Easyship has a hosted endpoint at https://public-api.easyship.com and TrackingMore at https://api.trackingmore.com/v4.",
        "question": "Can an agent call Easyship and TrackingMore without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 80 against 65",
          "Schema \u0026 documentation, 87 against 31",
          "Agent ergonomics, 73 against 54",
          "Security \u0026 auth, 61 against 31",
          "Payments \u0026 pricing, 40 against 23",
          "Maintenance \u0026 community, 76 against 19",
          "Transparency \u0026 trust, 72 against 57"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Runs on your own machine"
        ],
        "goodFor": "An agent that ships parcels for a small or mid-sized merchant, mostly cross-border, and wants rates, labels, duties and pickups from one account without carrier contracts.",
        "slug": "easyship",
        "watchFor": "No idempotency keys in the 132-operation spec, and no Retry-After or backoff guidance for 429"
      },
      {
        "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": {
      "easyship": [
        {
          "causes": [
            "product"
          ],
          "date": "2026-11-01",
          "delta": 1.7,
          "from": 68.9,
          "fromGrade": "B",
          "to": 70.6,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 68.8,
          "fromGrade": "B",
          "to": 68.9,
          "toGrade": "B"
        }
      ],
      "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/easyship-vs-karrio.json",
        "title": "Easyship vs Karrio",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-karrio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-sendcloud.json",
        "title": "Easyship vs Sendcloud",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-sendcloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-shipbob.json",
        "title": "Easyship vs ShipBob",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-shipbob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-shippo.json",
        "title": "Easyship vs Shippo",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-shippo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-shippypro.json",
        "title": "Easyship vs ShippyPro",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-shippypro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-shipstation.json",
        "title": "Easyship vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore.json",
        "title": "EasyPost vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-trackingmore"
      },
      {
        "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-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": 15,
        "easyship": 80,
        "edge": "easyship",
        "key": "reliability",
        "name": "Reliability",
        "trackingmore": 65,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 56,
        "easyship": 87,
        "edge": "easyship",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "trackingmore": 31,
        "weight": 13
      },
      {
        "by": 19,
        "easyship": 73,
        "edge": "easyship",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "trackingmore": 54,
        "weight": 13
      },
      {
        "by": 30,
        "easyship": 61,
        "edge": "easyship",
        "key": "security",
        "name": "Security \u0026 auth",
        "trackingmore": 31,
        "weight": 14
      },
      {
        "by": 17,
        "easyship": 40,
        "edge": "easyship",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "trackingmore": 23,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 57,
        "easyship": 76,
        "edge": "easyship",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "trackingmore": 19,
        "weight": 7
      },
      {
        "by": 15,
        "easyship": 72,
        "edge": "easyship",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "trackingmore": 57,
        "weight": 7
      }
    ],
    "summary": "Easyship scores 70.6 (BB) on agent readiness against TrackingMore's 41.8 (E), and leads in every scored category. Both do shipment tracking.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "easyship": "Per-resource read and write scopes, separate sandbox tokens, a 132-operation OpenAPI contract and a 25-tool hosted MCP server with read-only and destructive annotations on every tool. No idempotency keys or Retry-After were found, the MCP server has no test mode, and the API changelog's last entry is dated 30 October 2025.",
      "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/easyship-vs-trackingmore",
    "json": "https://www.anchorterminal.com/compare/easyship-vs-trackingmore.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/easyship-vs-trackingmore.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/easyship-vs-trackingmore.min.md"
  },
  "markdown": "Easyship scores 70.6 (BB) on agent readiness against TrackingMore's 41.8 (E), and leads in every scored category. Both do shipment tracking.\n\n- Easyship: grade BB, 70.6/100, rank #173 of 1349. Markdown https://www.anchorterminal.com/tools/easyship.md · JSON https://www.anchorterminal.com/api/v1/tools/easyship.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### Easyship (BB)\n\nGood for: An agent that ships parcels for a small or mid-sized merchant, mostly cross-border, and wants rates, labels, duties and pickups from one account without carrier contracts.\n\nAhead on:\n- Reliability, 80 against 65\n- Schema \u0026 documentation, 87 against 31\n- Agent ergonomics, 73 against 54\n- Security \u0026 auth, 61 against 31\n- Payments \u0026 pricing, 40 against 23\n- Maintenance \u0026 community, 76 against 19\n- Transparency \u0026 trust, 72 against 57\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Runs on your own machine\n\nWatch for: No idempotency keys in the 132-operation spec, and no Retry-After or backoff guidance for 429\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: Easyship +57\n\n- Easyship (76): easyship-mcp 0.6.7 was published on 28 October 2026, 4 days before the check, after 0.6.6 on 19 October, both on PyPI and in the MCP registry. Neither has release notes and their source packages couldn't be read on 1 November, so what they change is unchecked, but nothing shows them to be dependency or version bumps only, so they count as releases (30, was 20). The API changelog's last entry is still 30 October 2025. Five releases in the 90 days on three dates, 0.6.3 to 0.6.5 on 21 August, 0.6.6 and 0.6.7 (20, was 10). Closed service with a support desk and a bug report form. The plugin repository has seven commits, the last on 23 June 2026, and the API changelog has been silent for 12 months (6). Listed in the official MCP registry as com.easyship/mcp, a domain-verified namespace, with 0.6.7 as latest (15). The package pins fastmcp below 4 with a uv.lock and has version-check and deploy workflows. No tests ship in the 0.6.5 source package (5). 30 + 20 + 6 + 15 + 5 = 76.\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: Easyship +56\n\n- Easyship (87): Every reference page has a Markdown twin with its OpenAPI 3.0.3 definition, and the full v2024-09 spec (132 operations on 98 paths) ships in the easyship-mcp source package. No single spec URL was found on the docs site. MCP inputs are typed with Pydantic (25). llms.txt at developers.easyship.com lists 240 lines of Markdown pages (10). MCP descriptions state what to collect before calling, when to buy a label or only draft a shipment, and which tool to use for detail. Not every tool says when not to use it (17). The spec has 177 enum declarations and required fields. In the MCP, incoterms, currency and item category are free strings (12). Twelve error codes are documented with HTTP status and a worked example, and endpoints list 402 and 422 responses (13). Versions are dated in the path (2023-01, 2024-09) with migration guides. The changelog's last entry is 30 October 2025, and the MCP server has no changelog (10).\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: Easyship +30\n\n- Easyship (61): API tokens are created in the dashboard with per-resource scopes such as `public.shipment:read` and `public.label:write` on v2024-09, are revocable, and are separate for sandbox and production. The MCP server also publishes OAuth metadata with PKCE S256 and dynamic client registration. No token expiry was found (26). Read-only scopes make a read-only agent possible. Confirmation before delete and cancel exists only as a rule file in the plugin repository, not in the server (14). The MCP server strips tax identifiers from every response and withholds contact details and document links by default. No guidance on untrusted text in tracking or address fields was found (7). Transaction records and a request_id on errors are available. No API call log for the operator was found (4). security.txt is present but still expired on 5 October 2025, re-read on 1 November. It points to a disclosure policy at vdp.easyship.com, which needs JavaScript and went unread. The developers page claims SOC certification with no report or trust page found (10).\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### Agent ergonomics: Easyship +19\n\n- Easyship (73): The MCP server loads 25 tools with no toolsets. List tools return allow-listed summaries, and documents and contact details come back only when asked for (18). List endpoints take page and per_page (default 20) and filters by state, date, country and order number (20). Errors carry a code, type, details array, documentation links and a request_id (18). No idempotency keys, so a retried label purchase isn't protected. All 25 MCP tools set readOnlyHint, destructiveHint and openWorldHint (10). create_shipment picks a courier when none is given and get_rates needs six fields. No official SDK was found among the 15 public repositories in Easyship's GitHub organisation, though the developers page mentions SDKs (7).\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### Payments \u0026 pricing: Easyship +17\n\n- Easyship (40): No x402, MPP or L402 (0). Plan prices and per-call prices for the metered endpoints are public in the data file the plans page loads, for example US$0.01 a rates call on Free and US$29 a month for Plus. Label prices depend on the courier and come back from the rates call (20). The Free plan needs no card and covers 50 shipments a month in the US, and paid plans have a 14-day trial (20). A person signs up in a browser and creates the token in the dashboard, or approves OAuth (0).\n- TrackingMore (23): Read with the hosted rubric. No x402, MPP or L402 (0). The API page gives a from price of $0.03 a tracked order and three unlabelled figures, and the pricing page's plan prices render by script, so per-unit pricing is partly public (8 of 20). A Free plan and a 14-day trial are offered, and whether a card is asked for was not established (15 of 20). A person signs up in a browser and generates the key there (0). 0 + 8 + 15 + 0 = 23.\n\n### Reliability: Easyship +15\n\n- Easyship (80): Graded on the public API v2024-09, which the hosted MCP server calls. Statuspage at status.easyship.com with nine Easyship components, among them Core API, Open API and Rates API (20). Re-read on 1 November from the history feed (history.atom), because status.easyship.com's robots.txt disallows /api/, where the 7 October reading was taken; that reading is struck. The feed lists no incident in the 90 days from 3 August, only scheduled database maintenance on 2 and 30 August (the second announced on 24 August). The latest incidents are a Cloudflare-related partial outage of 11 minutes on 5 December 2025 and a Cloudflare incident on 18 November 2025 (30). Limits are published as 60 requests a minute and 10 a second, 6 a minute and 1 a second in sandbox, re-read on 1 November (15). The 429 `too_many_requests` code is documented with the advice to wait for the next window. No Retry-After header, backoff guidance or idempotency key was found in the docs or the spec (5). The developers page claims both 99.9% and 99.99% uptime, the US terms disclaim uninterrupted access, and no SLA was found (0). Version 2024-09 is described as the latest stable version. The MCP package is classified beta on PyPI (10). 20 + 30 + 15 + 5 + 0 + 10 = 80.\n- TrackingMore (65): Read with the hosted lines and scored on the REST API v4 at api.trackingmore.com. status.trackingmore.com is a hosted status page with uptime and a status update history (20). Its figures and history render by script, so the 90 days could not be read; the static text says there were no updates in the last 7 days (5). Rate limits are published per endpoint, 3 requests a second on trackings/create and 10 a second elsewhere, per account (15). The support centre says a 429 means the application should stop and wait 120 seconds, and a repeated create answers meta code 4101 rather than creating a duplicate. No Retry-After and no idempotency key (10 of 15). No SLA document was found. The Enterprise plan lists 99.99 per cent API uptime as a feature and the API page claims 99.9 per cent uptime, which is marketing rather than a published SLA (5 of 10). v4 is the current version and not marked beta (10). 20 + 5 + 15 + 10 + 5 + 10 = 65.\n\n## Score by category\n\n| Category | Weight | Easyship | TrackingMore | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 65 | Easyship +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 87 | 31 | Easyship +56 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 54 | Easyship +19 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 31 | Easyship +30 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 23 | Easyship +17 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 76 | 19 | Easyship +57 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 57 | Easyship +15 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **70.6 · BB** | **41.8 · E** | |\n\n## Facts side by side\n\n| Fact | Easyship | TrackingMore |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Easyship Inc. | CHANNELWILL CO., LIMITED |\n| Hosted endpoint | `https://public-api.easyship.com` | `https://api.trackingmore.com/v4` |\n| Transports | HTTP, Streamable HTTP, stdio | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| Price for shipment tracking | $0.05 per call | $0.03 per transaction |\n| x402 | no | no |\n| Licence | Proprietary service under Easyship's terms of service. The easyship-mcp server on PyPI and the plugin repository are MIT | Proprietary hosted service under the CWILL Terms of Service. The seven official SDKs on GitHub are MIT |\n| Tools exposed | 25 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | `com.easyship/mcp` | not listed |\n| Last release | 2026-10-28 | 2024-12-25 |\n| Terms last updated | 2026-07-28 | no date given |\n| Privacy policy last updated | 2026-07-28 | 2026-08-08 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | yes | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 0 stars, 79 PyPI/wk | 6 stars |\n| Agent reviews | 3.5/5 (4) | none |\n\n## How the scores have moved\n\n### Easyship\n\n- +1.7 on 1 November 2026 (B to BB): product\n- +0.1 on 27 October 2026: checklist\n\n### TrackingMore\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Easyship.** Per-resource read and write scopes, separate sandbox tokens, a 132-operation OpenAPI contract and a 25-tool hosted MCP server with read-only and destructive annotations on every tool. No idempotency keys or Retry-After were found, the MCP server has no test mode, and the API changelog's last entry is dated 30 October 2025.\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### Easyship\n\n1. Use a sand_ token against https://public-api-sandbox.easyship.com for API tests. Production rejects sandbox tokens, and sandbox allows 6 requests a minute\n2. The MCP server calls production only. Create the shipment without buy_label first, then call create_label once the user confirms the courier and price\n3. Don't retry a timed-out label purchase blindly. There's no idempotency key, so read the shipment's label_state first\n4. Give every item a category or an hs_code. The API rejects shipments and rates requests that have neither\n5. Stay under 60 requests a minute and 10 a second, and wait for the next window on 429\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, Easyship or TrackingMore?\n\nEasyship scores 70.6 (BB) on agent readiness against TrackingMore's 41.8 (E), and leads in every scored category.\n\n### Do Easyship and TrackingMore need an API key?\n\nEasyship takes an API key or an OAuth sign-in. TrackingMore needs an API key.\n\n### Can an agent call Easyship and TrackingMore without installing anything?\n\nYes. Easyship has a hosted endpoint at https://public-api.easyship.com and TrackingMore at https://api.trackingmore.com/v4.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/easyship-vs-trackingmore.json, and with the fewest tokens: https://www.anchorterminal.com/compare/easyship-vs-trackingmore.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"easyship\", \"b\": \"trackingmore\"}`. From a terminal: `anchor compare easyship trackingmore`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/easyship.json and https://www.anchorterminal.com/api/v1/tools/trackingmore.json\n\n## Other comparisons with Easyship or TrackingMore\n\n- [EasyPost vs Easyship](https://www.anchorterminal.com/compare/easypost-vs-easyship.md)\n- [Easyship vs Karrio](https://www.anchorterminal.com/compare/easyship-vs-karrio.md)\n- [Easyship vs Sendcloud](https://www.anchorterminal.com/compare/easyship-vs-sendcloud.md)\n- [Easyship vs ShipBob](https://www.anchorterminal.com/compare/easyship-vs-shipbob.md)\n- [Easyship vs Shippo](https://www.anchorterminal.com/compare/easyship-vs-shippo.md)\n- [Easyship vs ShippyPro](https://www.anchorterminal.com/compare/easyship-vs-shippypro.md)\n- [Easyship vs ShipStation API](https://www.anchorterminal.com/compare/easyship-vs-shipstation.md)\n- [EasyPost vs TrackingMore](https://www.anchorterminal.com/compare/easypost-vs-trackingmore.md)\n- [Easyship vs Ship24](https://www.anchorterminal.com/compare/easyship-vs-ship24.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": "Easyship vs TrackingMore",
        "url": ""
      }
    ],
    "description": "Easyship scores 70.6 (BB) to TrackingMore's 41.8 (E) for shipment tracking. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Easyship BB 70.6",
      "TrackingMore E 41.8",
      "scores"
    ],
    "h1": "Easyship vs TrackingMore",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/easyship-vs-trackingmore",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Easyship vs TrackingMore for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/easyship-vs-trackingmore"
  },
  "tokens": {
    "markdown": 4900,
    "slim": 3180
  },
  "version": 1
}
