{
  "data": {
    "a": {
      "slug": "easypost",
      "name": "EasyPost",
      "vendor": "Simpler Postage, Inc. (d/b/a EasyPost)",
      "vendorUrl": "https://www.easypost.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "EasyPost is a multi-carrier shipping API from Simpler Postage, Inc. Its REST API quotes carrier rates, buys labels, verifies addresses, tracks parcels and files refunds and insurance claims, with a hosted read-only MCP server in early release.",
      "url": "https://www.anchorterminal.com/tools/easypost",
      "markdownUrl": "https://www.anchorterminal.com/tools/easypost.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/easypost.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/easypost.json",
      "repo": "https://github.com/EasyPost/easypost-node",
      "license": "Proprietary service under the EasyPost Master Customer Agreement. The official client libraries on GitHub are MIT, with the Go library under ISC",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.easypost.com/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "@easypost/api"
        },
        {
          "registry": "pypi",
          "name": "easypost"
        },
        {
          "registry": "go",
          "name": "github.com/EasyPost/easypost-go/v5"
        }
      ],
      "auth": "api-key",
      "authNotes": "A self-serve API key, sent as the HTTP Basic username with an empty password. The docs say a wallet and a ship-from address must be set up before keys can be seen or generated. Test and production keys exist, both with full account access, and they can be created, disabled, enabled and deleted through /api_keys or the dashboard. The hosted MCP server takes a production key as a Bearer token. No OAuth, partner review or sales approval is needed for the core API.",
      "pricing": "freemium",
      "pricingNotes": "Free for up to 3,000 labels on wallet carriers, with postage charged separately and a per-label fee after that which the pricing page doesn't state. Bringing your own carrier accounts costs $20 a month plus a per-label fee. Tracking is listed at $0.01 to $0.03 a shipment and insurance at 1 per cent of value, minimum $1.00. Test keys cost nothing, so an agent can build without a contract. Forge, GlobalShip and Luma are priced by sales (checked 2026-10-07).",
      "priceSummary": "$0.02 / call",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the pricing page or the legal centre (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 149,
        "npmWeekly": 99736,
        "pypiWeekly": 41831,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://docs.easypost.com",
      "llmsTxt": "https://docs.easypost.com/llms.txt",
      "capabilities": [
        "shipping.rates",
        "shipping.labels",
        "shipping.tracking",
        "shipping.address-validation",
        "shipping.returns"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "api-key",
        "llms-txt",
        "mcp",
        "webhooks",
        "sandbox",
        "free-tier",
        "python",
        "typescript",
        "go",
        "java",
        "php",
        "ruby",
        "dotnet",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.3,
        "grade": "C",
        "agentReady": false,
        "rank": 531,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 85,
          "payments": 22,
          "reliability": 53,
          "schema": 55,
          "security": 47,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-07"
        },
        "negative": 0,
        "verdict": "Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs and free test keys make the REST API easy to start on. No OpenAPI spec or idempotency keys were found, every key has full account access, and the status page shows a connectivity outage on 23 July 2026 that affected all operations.",
        "bestFor": "An agent that quotes rates across carriers, buys a label, verifies an address, follows tracking by webhook and requests a refund from one merchant account, mainly on US carriers.",
        "strengths": [
          "llms.txt, a Markdown copy of almost every docs page and a JSON page index with a note on when to read each page",
          "Test API keys run the rate, buy, track and webhook flow at no cost, with no postage bought and no carrier contacted",
          "Seven official SDKs (C#, Go, Java, Node, PHP, Python, Ruby), with Go 5.10.1 on 29 September 2026 and PHP 8.8.3 on 8 September",
          "Dated release notes almost every week, 10 entries between 12 July and 28 September 2026",
          "The data processing addendum names 12 subprocessors with purpose and country, and the legal centre keeps every past version of each agreement"
        ],
        "weaknesses": [
          "No OpenAPI spec was found in the docs or in the EasyPost GitHub organisation. The reference is prose and tables, with a Postman workspace",
          "No idempotency keys were found, and `reference` on a shipment isn't unique, so a retried buy can purchase a second label",
          "API keys allow full account access. Test and production modes and child users are the only separation, with no read-only or scoped key",
          "An outage on 23 July 2026 at the hosting provider affected all operations for about four and a half hours. Two carrier-side incidents were marked major in the same 90 days",
          "The Master Customer Agreement supplies the service as is, with no uptime commitment, and the per-label fee after 3,000 free labels isn't on the pricing page"
        ],
        "agentNotes": [
          "Use a test API key while building. It buys no postage and contacts no carrier, and test tracking codes simulate each tracking status",
          "Don't blind-retry `POST /shipments/:id/buy` after a timeout. Retrieve the shipment first and check for `postage_label`, since no idempotency key exists",
          "Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer token on the MCP server",
          "Handle `errors` as either an array of objects or an array of strings. The docs say both shapes occur",
          "Pass a scoped `carrier_accounts` list when rating. Only the first 60 accounts are rated and the call doesn't fail when more are enabled"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.3
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 85,
          "payments": 22,
          "reliability": 53,
          "schema": 55,
          "security": 47,
          "transparency": 53
        },
        "provenanceScore": 87
      },
      "connect": {
        "install": "npm install @easypost/api",
        "http": "curl -u \"$EASYPOST_API_KEY\": https://api.easypost.com/v2/shipments",
        "claudeCode": "claude mcp add --scope project --transport http easypost \\\n  https://app-api.easypost.com/mcp \\\n  --header 'Authorization: Bearer ${EASYPOST_API_KEY}'",
        "config": {
          "mcpServers": {
            "easypost": {
              "headers": {
                "Authorization": "Bearer ${EASYPOST_API_KEY}"
              },
              "type": "http",
              "url": "https://app-api.easypost.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/shipping.rates",
        "tool": "https://letme.dev/easypost"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Extra tracker call",
          "unit": "call",
          "usd": 0.02,
          "note": "one included with each label bought"
        },
        {
          "item": "Extra US address verification",
          "unit": "call",
          "usd": 0.02,
          "note": "one included with each label bought; $0.06 outside the US"
        },
        {
          "item": "Extra rating call",
          "unit": "call",
          "usd": 0.02,
          "note": "three included with each label bought"
        },
        {
          "item": "SmartRate call",
          "unit": "call",
          "usd": 0.03
        },
        {
          "item": "Bring your own carrier accounts",
          "unit": "month",
          "usd": 20,
          "note": "plus a per-label fee not stated on the pricing page"
        }
      ],
      "provenance": {
        "legalEntity": "Simpler Postage, Inc. (d/b/a EasyPost)",
        "domain": "easypost.com",
        "domainRegistered": "1998-01-18",
        "endpointOnVendorDomain": true,
        "terms": "https://legal.easypost.com/#mca",
        "privacy": "https://legal.easypost.com/#privacy-policy",
        "statusPage": "https://www.easypoststatus.com",
        "changelog": "https://docs.easypost.com/releases",
        "securityTxt": "none",
        "checked": "2026-10-07",
        "notes": [
          "The Master Customer Agreement (version 6.1, effective 25 August 2026) names Simpler Postage, Inc. (d/b/a EasyPost), 2600 N. Ashton Blvd., Suite 300A, Lehi, UT 84043.",
          "www.easypost.com/.well-known/security.txt and api.easypost.com/.well-known/security.txt return 404. The legal centre carries a Responsible Disclosure Policy with the contact security-abuse@easypost.com.",
          "The privacy policy and the Data Protection Addendum are both version 1.0, effective 18 August 2025. The addendum's Annex D lists 12 subprocessors, all in the USA.",
          "The MCP server is on app-api.easypost.com and the REST API on api.easypost.com. The status page is on a separate domain, easypoststatus.com.",
          "trust.easypost.com answered 403 to our reader, so certifications are taken only from the addendum, which refers to a SOC 2 Type 2 report."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/easypost.json",
      "live": {
        "slug": "easypost",
        "probe": {
          "target": "https://api.easypost.com/v2",
          "method": "get",
          "lastAt": "2026-10-08T21:12:09.305691307Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 597,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 620,
          "p95ms24h": 709,
          "samples24h": 64,
          "samples30d": 64,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 64,
              "ok": 64
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.easypoststatus.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:01.128471326Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "EasyPost/easypost-node",
            "version": "v8.9.0",
            "released": "2026-06-25",
            "seenAt": "2026-10-08T16:09:51.321427764Z"
          },
          {
            "registry": "npm",
            "name": "@easypost/api",
            "version": "8.9.0",
            "seenAt": "2026-10-08T16:09:46.909448157Z"
          },
          {
            "registry": "pypi",
            "name": "easypost",
            "version": "10.7.0",
            "released": "2026-06-25",
            "seenAt": "2026-10-08T16:09:51.109480743Z"
          }
        ],
        "githubStars": 149,
        "npmWeekly": 99736,
        "pypiWeekly": 43392,
        "securityTxt": {
          "url": "https://easypost.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:46.376321685Z"
        },
        "pages": [
          {
            "url": "https://docs.easypost.com/releases",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:43.380604863Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdf82a55e910"
          },
          {
            "url": "https://legal.easypost.com/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:21:24.366175945Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c3f1c1d70fd7"
          }
        ],
        "updatedAt": "2026-10-08T21:12:09.305691307Z"
      }
    },
    "answer": "EasyPost scores 54.3 (C) on agent readiness against Karrio's 48.7 (D), and leads in 4 of 7 scored categories. Karrio leads on reliability, schema \u0026 documentation and payments \u0026 pricing.",
    "b": {
      "slug": "karrio",
      "name": "Karrio",
      "vendor": "Karrio, Inc.",
      "vendorUrl": "https://www.karrio.io",
      "kind": "http-api",
      "category": "shipping",
      "summary": "Karrio is an open-source multi-carrier shipping server from Karrio, Inc. Its REST API quotes rates, buys labels, tracks parcels and books pickups through the owner's own carrier accounts, self-hosted with Docker or run by Karrio as a paid platform.",
      "url": "https://www.anchorterminal.com/tools/karrio",
      "markdownUrl": "https://www.anchorterminal.com/tools/karrio.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/karrio.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/karrio.json",
      "repo": "https://github.com/karrioapi/karrio",
      "license": "LGPL-3.0 for the server, SDK and modules. Code under `ee/` is under the Karrio Enterprise licence and needs a subscription for production use. The MCP package in `packages/mcp` is Apache-2.0",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "karrio"
        },
        {
          "registry": "pypi",
          "name": "karrio-server"
        },
        {
          "registry": "oci",
          "name": "karrio/server"
        }
      ],
      "auth": "api-key",
      "authNotes": "A private API key from the instance's dashboard, sent as the HTTP Basic username with no password or as `Authorization: Token key_...`. Keys carry a label and are bound to test or live mode, and the docs say a private key can perform any request without restriction. A JWT pair is also issued by `POST /api/token` for an email and password. On a self-hosted instance the owner creates the first account, so no approval from Karrio is involved. The managed platform is reached through a demo booking.",
      "pricing": "freemium",
      "pricingNotes": "Free when self-hosted under LGPL-3.0, with carrier postage billed by the owner's own carrier accounts. The platform page says the managed Scale platform starts at $499 a month with pay-as-you-go pricing and a commercial licence for embedding starts at $50,000 a year, with no unit prices published. An agent can start on a self-hosted instance in test mode with no contract. The managed platform has no self-serve signup, only a demo booking (checked 2026-10-08).",
      "priceSummary": "$499 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the repository, the OpenAPI file, the docs or the platform page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 799,
        "npmWeekly": null,
        "pypiWeekly": 338,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.karrio.io/docs",
      "openapi": "https://raw.githubusercontent.com/karrioapi/karrio/main/schemas/openapi.yml",
      "capabilities": [
        "shipping.rates",
        "shipping.labels",
        "shipping.tracking",
        "shipping.returns"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "api-key",
        "openapi",
        "graphql",
        "webhooks",
        "sandbox",
        "docker",
        "python",
        "mcp"
      ],
      "lastRelease": "2026-06-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 48.7,
        "grade": "D",
        "agentReady": false,
        "rank": 617,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 29,
          "payments": 40,
          "reliability": 76,
          "schema": 68,
          "security": 44,
          "transparency": 56
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -7,
        "negativeNotes": [
          "12 March to 23 June 2026. Versions 2026.1.22 to 2026.1.31 applied an MD5 `PASSWORD_HASHERS` override outside the test runner, so production instances stored MD5 password hashes. Fixed in 2026.1.32 and described in the changelog, with no published advisory, so 4 of a possible 15 (https://github.com/karrioapi/karrio/blob/main/CHANGELOG.md).",
          "8 October 2026. The README and the MCP guide tell users to run `npx karrio-mcp` and `npx -y @karrio/mcp`, and the npm registry answers 404 for both. The examples' API host `api.karrio.io` didn't resolve the same day. 3 for a claim the listing can't meet (https://registry.npmjs.org/@karrio%2fmcp, https://www.karrio.io/docs/developing/mcp-server)."
        ],
        "verdict": "A current OpenAPI 3.0.3 contract with 65 paths, a free LGPL-3.0 server and 30 carrier connectors suit a team that hosts it. The last release was 23 June 2026, the `@karrio/mcp` package the docs install is absent from npm, and `api.karrio.io` didn't resolve on 8 October 2026.",
        "bestFor": "A team that wants to host its own multi-carrier API with its own carrier contracts and can maintain a Django and PostgreSQL stack.",
        "strengths": [
          "OpenAPI 3.0.3 contract in the repository at version 2026.1.32, with 65 paths covering rates, shipments, trackers, pickups, manifests, orders, documents and webhooks",
          "The core server and SDK are LGPL-3.0 and run on the owner's infrastructure with Docker Compose, with no fee to Karrio",
          "30 carrier connectors in `modules/connectors`, among them UPS, FedEx, USPS, DHL Express, Canada Post, DPD and Australia Post, used with the owner's own carrier accounts",
          "API keys are bound to test or live mode, and test mode runs rates, labels, trackers and pickups against carrier sandboxes",
          "Default throttles are in the settings file with numbers (600 requests a minute per user, 300 for carrier calls) and can be changed by environment variable"
        ],
        "weaknesses": [
          "No release since 2026.1.32 on 23 June 2026, 107 days before this check, and fix pull requests opened in September 2026 were still open",
          "Neither `@karrio/mcp` nor `karrio-mcp` exists on npm, though the README and the MCP guide give `npx` commands for them",
          "`api.karrio.io` didn't resolve and `app.karrio.io` answered 503 with a paused deployment on 8 October 2026, and the managed platform starts with a demo booking",
          "Versions 2026.1.22 to 2026.1.31 stored passwords as MD5 hashes in production, fixed in 2026.1.32 with a changelog line and no published advisory",
          "No idempotency keys were found, and a private API key can perform any request. Team permissions and audit logging sit in the paid `ee/` code"
        ],
        "agentNotes": [
          "Run your own instance with Docker Compose and call it at `http://localhost:5002`. Don't rely on `api.karrio.io`, which didn't resolve on 8 October 2026",
          "Don't run `npx karrio-mcp` or `npx -y @karrio/mcp`. Neither name is published on npm, so build the server from `packages/mcp` in the repository",
          "Change the default `admin@example.com` and `demo` login before the instance is reachable, and upgrade to 2026.1.32 or later so passwords aren't stored as MD5",
          "Don't blind-retry `POST /v1/shipments` with a `service` set or `POST /v1/shipments/{id}/purchase`. Fetch the shipment and check its status first, since no idempotency key exists",
          "Use a test-mode API key while building. Send it as the HTTP Basic username or as `Authorization: Token key_...`"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 48.7
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 29,
          "payments": 40,
          "reliability": 76,
          "schema": 68,
          "security": 44,
          "transparency": 59
        },
        "provenanceScore": 53
      },
      "connect": {
        "install": "git clone --depth 1 https://github.com/karrioapi/karrio\ncd karrio\ngit submodule update --init community\ncd docker\ndocker compose up",
        "http": "curl http://localhost:5002/v1/shipments \\\n  -u key_xxxxxx:"
      },
      "letme": {
        "capability": "https://letme.dev/shipping.rates",
        "tool": "https://letme.dev/karrio"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Open-source edition, self-hosted",
          "unit": "month",
          "usd": 0,
          "note": "LGPL-3.0, you pay for your own hosting and carrier postage"
        },
        {
          "item": "Scale managed platform, starting price",
          "unit": "month",
          "usd": 499,
          "note": "plus pay-as-you-go usage with no published unit price, by demo booking"
        }
      ],
      "provenance": {
        "legalEntity": "Karrio, Inc.",
        "domain": "karrio.io",
        "domainRegistered": "2022-01-20",
        "endpointOnVendorDomain": false,
        "terms": "https://www.karrio.io/terms-of-service",
        "privacy": "https://www.karrio.io/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/karrioapi/karrio/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Customer Terms and Conditions (last modified 8 April 2025) name Karrio, Inc., a Delaware corporation at 760 Chemin Marie-Le Ber, Verdun, Quebec, Canada, and govern the hosted platform. The self-hosted open-source edition is governed by LGPL-3.0, and `LICENSE_EE` points `ee/` users to the subscription terms at docs.karrio.io/product/resources/terms, an older copy dated 19 April 2022.",
          "The privacy policy (last modified 8 April 2025) covers karrio.io and associated services and excludes customer data processed on a customer's behalf. No data processing addendum was found.",
          "The graded surface is an instance on the owner's own host, so the endpoint isn't on the vendor's domain. `api.karrio.io` didn't resolve and `app.karrio.io` returned 503 on 8 October 2026.",
          "No status page was found. `status.karrio.io` didn't resolve and the site links none.",
          "www.karrio.io/.well-known/security.txt returns 404. `SECURITY.md` in the repository sends reports to hello@karrio.io.",
          "The changelog page on www.karrio.io stops at 2024.12.6. `CHANGELOG.md` in the repository is current to 2026.1.32.",
          "RDAP for karrio.io gives a registration date of 2022-01-20."
        ],
        "score": 53
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/karrio.json"
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Simpler Postage, Inc. (d/b/a EasyPost)",
        "b": "Karrio, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.easypost.com/v2",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "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": "LGPL-3.0 for the server, SDK and modules. Code under `ee/` is under the Karrio Enterprise licence and needs a subscription for production use. The MCP package in `packages/mcp` is Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-28",
        "b": "2026-06-23",
        "name": "Last release"
      },
      {
        "a": "2026-08-25",
        "b": "2025-04-08",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-25",
        "b": "2025-04-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": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "149 stars, 100k npm/wk, 42k PyPI/wk",
        "b": "799 stars, 338 PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "EasyPost scores 54.3 (C) on agent readiness against Karrio's 48.7 (D), and leads in 4 of 7 scored categories. Karrio leads on reliability, schema \u0026 documentation and payments \u0026 pricing.",
        "question": "Which is better for AI agents, EasyPost or Karrio?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do EasyPost and Karrio need an API key?"
      },
      {
        "answer": "EasyPost has a hosted endpoint at https://api.easypost.com/v2. No hosted endpoint is listed for Karrio.",
        "question": "Can an agent call EasyPost and Karrio without installing anything?"
      },
      {
        "answer": "No open-source release is listed for EasyPost. Karrio is open source (LGPL-3.0 for the server, SDK and modules. Code under `ee/` is under the Karrio Enterprise licence and needs a subscription for production use. The MCP package in `packages/mcp` is Apache-2.0).",
        "question": "Are EasyPost and Karrio open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 63 against 57",
          "Maintenance \u0026 community, 85 against 29",
          "Transparency \u0026 trust, 70 against 56"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "No incidents deducted, where Karrio loses 7 points for them"
        ],
        "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": [
          "Reliability, 76 against 53",
          "Schema \u0026 documentation, 68 against 55",
          "Payments \u0026 pricing, 40 against 22"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "A team that wants to host its own multi-carrier API with its own carrier contracts and can maintain a Django and PostgreSQL stack.",
        "slug": "karrio",
        "watchFor": "No release since 2026.1.32 on 23 June 2026, 107 days before this check, and fix pull requests opened in September 2026 were still open"
      }
    ],
    "job": {
      "capability": "shipping.rates",
      "name": "Shipping rates"
    },
    "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-sendcloud.json",
        "title": "EasyPost vs Sendcloud",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-sendcloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-shipbob.json",
        "title": "EasyPost vs ShipBob",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shipbob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-shippo.json",
        "title": "EasyPost vs Shippo",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shippo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-shipstation.json",
        "title": "EasyPost vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easyship-vs-karrio.json",
        "title": "Easyship vs Karrio",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-karrio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/karrio-vs-sendcloud.json",
        "title": "Karrio vs Sendcloud",
        "url": "https://www.anchorterminal.com/compare/karrio-vs-sendcloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/karrio-vs-shipbob.json",
        "title": "Karrio vs ShipBob",
        "url": "https://www.anchorterminal.com/compare/karrio-vs-shipbob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/karrio-vs-shippo.json",
        "title": "Karrio vs Shippo",
        "url": "https://www.anchorterminal.com/compare/karrio-vs-shippo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/karrio-vs-shipstation.json",
        "title": "Karrio vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/karrio-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/karrio-vs-ship24.json",
        "title": "Karrio vs Ship24",
        "url": "https://www.anchorterminal.com/compare/karrio-vs-ship24"
      }
    ],
    "scores": [
      {
        "by": 23,
        "easypost": 53,
        "edge": "karrio",
        "karrio": 76,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "easypost": 55,
        "edge": "karrio",
        "karrio": 68,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 6,
        "easypost": 63,
        "edge": "easypost",
        "karrio": 57,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 3,
        "easypost": 47,
        "edge": "easypost",
        "karrio": 44,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 18,
        "easypost": 22,
        "edge": "karrio",
        "karrio": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 56,
        "easypost": 85,
        "edge": "easypost",
        "karrio": 29,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 14,
        "easypost": 70,
        "edge": "easypost",
        "karrio": 56,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "EasyPost scores 54.3 (C) on agent readiness against Karrio's 48.7 (D), and leads in 4 of 7 scored categories. Karrio leads on reliability, schema \u0026 documentation and payments \u0026 pricing. Both do shipping rates.",
    "verdicts": {
      "easypost": "Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs and free test keys make the REST API easy to start on. No OpenAPI spec or idempotency keys were found, every key has full account access, and the status page shows a connectivity outage on 23 July 2026 that affected all operations.",
      "karrio": "A current OpenAPI 3.0.3 contract with 65 paths, a free LGPL-3.0 server and 30 carrier connectors suit a team that hosts it. The last release was 23 June 2026, the `@karrio/mcp` package the docs install is absent from npm, and `api.karrio.io` didn't resolve on 8 October 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/easypost-vs-karrio",
    "json": "https://www.anchorterminal.com/compare/easypost-vs-karrio.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/easypost-vs-karrio.md",
    "slim": "https://www.anchorterminal.com/compare/easypost-vs-karrio.min.md"
  },
  "markdown": "EasyPost scores 54.3 (C) on agent readiness against Karrio's 48.7 (D), and leads in 4 of 7 scored categories. Karrio leads on reliability, schema \u0026 documentation and payments \u0026 pricing. Both do shipping rates.\n\n- EasyPost: grade C, 54.3/100, rank #531 of 722. Markdown https://www.anchorterminal.com/tools/easypost.md · JSON https://www.anchorterminal.com/api/v1/tools/easypost.json\n- Karrio: grade D, 48.7/100, rank #617 of 722. Markdown https://www.anchorterminal.com/tools/karrio.md · JSON https://www.anchorterminal.com/api/v1/tools/karrio.json\n\n## Which one, for what\n\n### EasyPost (C)\n\nGood for: An agent that quotes rates across carriers, buys a label, verifies an address, follows tracking by webhook and requests a refund from one merchant account, mainly on US carriers.\n\nAhead on:\n- Agent ergonomics, 63 against 57\n- Maintenance \u0026 community, 85 against 29\n- Transparency \u0026 trust, 70 against 56\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- No incidents deducted, where Karrio loses 7 points for them\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### Karrio (D)\n\nGood for: A team that wants to host its own multi-carrier API with its own carrier contracts and can maintain a Django and PostgreSQL stack.\n\nAhead on:\n- Reliability, 76 against 53\n- Schema \u0026 documentation, 68 against 55\n- Payments \u0026 pricing, 40 against 22\n\nAlso in its favour:\n- Open source\n\nWatch for: No release since 2026.1.32 on 23 June 2026, 107 days before this check, and fix pull requests opened in September 2026 were still open\n\n\n## Score by category\n\n| Category | Weight | EasyPost | Karrio | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 53 | 76 | Karrio +23 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 55 | 68 | Karrio +13 |\n| Agent ergonomics | 13% (16.2 this run) | 63 | 57 | EasyPost +6 |\n| Security \u0026 auth | 14% (17.5 this run) | 47 | 44 | EasyPost +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 22 | 40 | Karrio +18 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 29 | EasyPost +56 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 70 | 56 | EasyPost +14 |\n| Negative events | ≤15 | 0 | -7 | |\n| **Total** | | **54.3 · C** | **48.7 · D** | |\n\n## Facts side by side\n\n| Fact | EasyPost | Karrio |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Simpler Postage, Inc. (d/b/a EasyPost) | Karrio, Inc. |\n| Hosted endpoint | `https://api.easypost.com/v2` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Freemium |\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 | LGPL-3.0 for the server, SDK and modules. Code under `ee/` is under the Karrio Enterprise licence and needs a subscription for production use. The MCP package in `packages/mcp` is Apache-2.0 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-09-28 | 2026-06-23 |\n| Terms last updated | 2026-08-25 | 2025-04-08 |\n| Privacy policy last updated | 2026-08-25 | 2025-04-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 | not found in the text |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 149 stars, 100k npm/wk, 42k PyPI/wk | 799 stars, 338 PyPI/wk |\n\n## Verdicts\n\n**EasyPost.** Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs and free test keys make the REST API easy to start on. No OpenAPI spec or idempotency keys were found, every key has full account access, and the status page shows a connectivity outage on 23 July 2026 that affected all operations.\n\n**Karrio.** A current OpenAPI 3.0.3 contract with 65 paths, a free LGPL-3.0 server and 30 carrier connectors suit a team that hosts it. The last release was 23 June 2026, the `@karrio/mcp` package the docs install is absent from npm, and `api.karrio.io` didn't resolve on 8 October 2026.\n\n## Before you call either\n\n### EasyPost\n\n1. Use a test API key while building. It buys no postage and contacts no carrier, and test tracking codes simulate each tracking status\n2. Don't blind-retry `POST /shipments/:id/buy` after a timeout. Retrieve the shipment first and check for `postage_label`, since no idempotency key exists\n3. Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer token on the MCP server\n4. Handle `errors` as either an array of objects or an array of strings. The docs say both shapes occur\n5. Pass a scoped `carrier_accounts` list when rating. Only the first 60 accounts are rated and the call doesn't fail when more are enabled\n\n### Karrio\n\n1. Run your own instance with Docker Compose and call it at `http://localhost:5002`. Don't rely on `api.karrio.io`, which didn't resolve on 8 October 2026\n2. Don't run `npx karrio-mcp` or `npx -y @karrio/mcp`. Neither name is published on npm, so build the server from `packages/mcp` in the repository\n3. Change the default `admin@example.com` and `demo` login before the instance is reachable, and upgrade to 2026.1.32 or later so passwords aren't stored as MD5\n4. Don't blind-retry `POST /v1/shipments` with a `service` set or `POST /v1/shipments/{id}/purchase`. Fetch the shipment and check its status first, since no idempotency key exists\n5. Use a test-mode API key while building. Send it as the HTTP Basic username or as `Authorization: Token key_...`\n\n## Questions\n\n### Which is better for AI agents, EasyPost or Karrio?\n\nEasyPost scores 54.3 (C) on agent readiness against Karrio's 48.7 (D), and leads in 4 of 7 scored categories. Karrio leads on reliability, schema \u0026 documentation and payments \u0026 pricing.\n\n### Do EasyPost and Karrio need an API key?\n\nBoth need an API key.\n\n### Can an agent call EasyPost and Karrio without installing anything?\n\nEasyPost has a hosted endpoint at https://api.easypost.com/v2. No hosted endpoint is listed for Karrio.\n\n### Are EasyPost and Karrio open source?\n\nNo open-source release is listed for EasyPost. Karrio is open source (LGPL-3.0 for the server, SDK and modules. Code under `ee/` is under the Karrio Enterprise licence and needs a subscription for production use. The MCP package in `packages/mcp` is Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/easypost-vs-karrio.json, and with the fewest tokens: https://www.anchorterminal.com/compare/easypost-vs-karrio.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"easypost\", \"b\": \"karrio\"}`. From a terminal: `anchor compare easypost karrio`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/easypost.json and https://www.anchorterminal.com/api/v1/tools/karrio.json\n\n## Other comparisons with EasyPost or Karrio\n\n- [EasyPost vs Easyship](https://www.anchorterminal.com/compare/easypost-vs-easyship.md)\n- [EasyPost vs Sendcloud](https://www.anchorterminal.com/compare/easypost-vs-sendcloud.md)\n- [EasyPost vs ShipBob](https://www.anchorterminal.com/compare/easypost-vs-shipbob.md)\n- [EasyPost vs Shippo](https://www.anchorterminal.com/compare/easypost-vs-shippo.md)\n- [EasyPost vs ShipStation API](https://www.anchorterminal.com/compare/easypost-vs-shipstation.md)\n- [Easyship vs Karrio](https://www.anchorterminal.com/compare/easyship-vs-karrio.md)\n- [Karrio vs Sendcloud](https://www.anchorterminal.com/compare/karrio-vs-sendcloud.md)\n- [Karrio vs ShipBob](https://www.anchorterminal.com/compare/karrio-vs-shipbob.md)\n- [Karrio vs Shippo](https://www.anchorterminal.com/compare/karrio-vs-shippo.md)\n- [Karrio vs ShipStation API](https://www.anchorterminal.com/compare/karrio-vs-shipstation.md)\n- [EasyPost vs Ship24](https://www.anchorterminal.com/compare/easypost-vs-ship24.md)\n- [Karrio vs Ship24](https://www.anchorterminal.com/compare/karrio-vs-ship24.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "EasyPost vs Karrio",
        "url": ""
      }
    ],
    "description": "EasyPost scores 54.3 (C) on agent readiness against Karrio's 48.7 (D), and leads in 4 of 7 scored categories. Karrio leads on reliability, schema \u0026 documentation and payments \u0026 pricing. Both do shipping rates. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "EasyPost C 54.3",
      "Karrio D 48.7",
      "scores"
    ],
    "h1": "EasyPost vs Karrio",
    "image": "https://www.anchorterminal.com/assets/og/compare-easypost-vs-karrio.png",
    "path": "/compare/easypost-vs-karrio",
    "published": "2026-10-01",
    "section": "tools",
    "title": "EasyPost vs Karrio for AI agents, C 54.3 vs D 48.7 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/easypost-vs-karrio"
  },
  "tokens": {
    "markdown": 2250,
    "slim": 680
  },
  "version": 1
}
