{
  "data": {
    "a": {
      "slug": "envia",
      "name": "Envia",
      "vendor": "Envia Shipping",
      "vendorUrl": "https://envia.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "Envia is a multi-carrier shipping platform, strongest in Latin America, with REST APIs for rates, labels, tracking, pickups, commercial invoices and address data. An official stdio MCP server exposes ten of those operations to agents.",
      "url": "https://www.anchorterminal.com/tools/envia",
      "markdownUrl": "https://www.anchorterminal.com/tools/envia.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/envia.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/envia.json",
      "dns": "envia.grade.anchorterminal.com",
      "transports": [
        "stdio"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@envia/envia-mcp"
        }
      ],
      "auth": "api-key",
      "authNotes": "Bearer API tokens created in the dashboard under `Desarrolladores \u003e Acceso de API`, one environment each: sandbox tokens work only against api-test.envia.com and production tokens only against api.envia.com. Several tokens can exist and each can be deleted to revoke it. No scopes were found. The MCP server reads the token from `ENVIA_API_KEY` and defaults to sandbox.",
      "pricing": "usage",
      "pricingNotes": "Prepaid balance: labels, notifications, insurance and add-ons draw on money added to the Envia account, and each price is shown when quoting. There is no public price list; volume plans go through sales. A free sandbox account returns simulated rates and creates test labels with no charges.",
      "priceSummary": "Pay per use",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the MCP package or the pricing page (checked 2026-11-06). Charges come from a prepaid balance.",
        "endpoints": []
      },
      "toolCount": 10,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.envia.com/docs/getting-started",
      "llmsTxt": "https://docs.envia.com/llms.txt",
      "openapi": "https://docs.envia.com/reference/shipping-rates.md",
      "capabilities": [
        "shipping.rates",
        "shipping.labels",
        "shipping.tracking",
        "shipping.address-validation"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "llms-txt",
        "openapi",
        "sandbox",
        "prepaid",
        "webhooks",
        "latam",
        "typescript"
      ],
      "lastRelease": "2026-03-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 36.5,
        "grade": "F",
        "agentReady": false,
        "rank": 1384,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 53,
          "maintenance": 10,
          "payments": 20,
          "reliability": 20,
          "schema": 80,
          "security": 35,
          "transparency": 16
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Envia's shipping APIs are documented for agents, with llms.txt, OpenAPI definitions on every reference page, a free sandbox and a compact ten-tool MCP server that defaults to test mode. No status page, rate limits, public price list or readable terms were found, and the MCP package has had one release.",
        "bestFor": "Shops and platforms shipping in Mexico and Latin America that want rates and labels from many local carriers.",
        "strengths": [
          "Free sandbox with simulated rates and test labels, kept apart from production by separate tokens",
          "OpenAPI definitions embedded in every reference page, plus llms.txt and Markdown docs",
          "Ten MCP tools that default to the sandbox environment",
          "Labels cancelled before the first carrier scan are refunded to the balance automatically",
          "Postal code and address-structure lookups work without a token"
        ],
        "weaknesses": [
          "No status page or rate limits found",
          "No public price list; costs appear only when quoting",
          "Terms and privacy text could not be read, and no legal entity was found",
          "MCP tools carry no readOnly or destructive annotations, and the package has one release, 0.1.0",
          "The docs changelog stops at March 2026"
        ],
        "agentNotes": [
          "Leave `ENVIA_ENVIRONMENT` unset until the user confirms live shipping; the default is sandbox",
          "Ask the user before `envia_create_label` in production, since it spends the account balance",
          "Validate the postal code at geocodes.envia.com before quoting to avoid no-coverage errors",
          "Cancel an unwanted label before the carrier scans it to get the automatic refund",
          "Use a sandbox token with sandbox hosts and a production token with production hosts; they are not interchangeable"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 36.5
          }
        ],
        "editorialScores": {
          "ergonomics": 53,
          "maintenance": 10,
          "payments": 20,
          "reliability": 20,
          "schema": 80,
          "security": 35,
          "transparency": 0
        },
        "provenanceScore": 32,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npx -y @envia/envia-mcp@latest",
        "config": {
          "mcpServers": {
            "envia": {
              "args": [
                "-y",
                "@envia/envia-mcp@latest"
              ],
              "command": "npx",
              "env": {
                "ENVIA_API_KEY": "your_api_key_here"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/shipping.rates",
        "tool": "https://letme.dev/envia"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "",
        "domain": "envia.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "",
        "privacy": "https://envia.com/en-US/legal/privacy-policy?n=privacy_policy",
        "statusPage": "",
        "changelog": "https://docs.envia.com/docs/changelog",
        "securityTxt": "unknown",
        "checked": "2026-11-06",
        "notes": [
          "envia.com/robots.txt allows all but language-change paths; docs.envia.com disallows edit, login and api-next paths and links llms.txt.",
          "The privacy policy page renders only a heading without script, and every terms URL tried answered 500, so neither text was read.",
          "status.envia.com did not connect and no status page is linked. security.txt was not checked."
        ],
        "score": 32
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/envia.json",
      "live": {
        "slug": "envia",
        "versions": [
          {
            "registry": "npm",
            "name": "@envia/envia-mcp",
            "version": "0.1.0",
            "seenAt": "2026-11-06T23:24:27.893485506Z"
          }
        ],
        "npmWeekly": 81,
        "securityTxt": {
          "url": "https://envia.com/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-11-07T16:01:23.154161694Z"
        },
        "llmsTxt": {
          "url": "https://docs.envia.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:25.501362093Z"
        },
        "pages": [
          {
            "url": "https://docs.envia.com/docs/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:06:16.542743112Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b3c01b7da2e7"
          },
          {
            "url": "https://envia.com/en-US/legal/privacy-policy?n=privacy_policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:20.480053366Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "52e5d34d2a62"
          }
        ],
        "updatedAt": "2026-11-07T16:01:23.154161694Z"
      }
    },
    "answer": "ShipStation API scores 51 (D) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "shipstation",
      "name": "ShipStation API",
      "vendor": "Auctane LLC d/b/a ShipStation",
      "vendorUrl": "https://www.shipstation.com",
      "kind": "http-api",
      "category": "shipping",
      "summary": "Multi-carrier shipping API from ShipStation, an Auctane brand. API v2 at api.shipstation.com/v2 quotes rates, buys and voids labels, validates addresses, tracks parcels and creates return labels, with batches, manifests, pickups and inventory.",
      "url": "https://www.anchorterminal.com/tools/shipstation",
      "markdownUrl": "https://www.anchorterminal.com/tools/shipstation.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/shipstation.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/shipstation.json",
      "dns": "shipstation.grade.anchorterminal.com",
      "repo": "https://github.com/ShipEngine/shipengine-openapi",
      "license": "Proprietary service under ShipStation's terms of service. The v2 OpenAPI file is marked MIT and the SDKs on GitHub are Apache 2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.shipstation.com/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "shipengine"
        },
        {
          "registry": "pypi",
          "name": "shipengine"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve API key sent in an `API-Key` header, with no partner or sales approval. Two routes lead to a v2 key. A ShipStation API account (formerly ShipEngine) gets production keys and `TEST_` sandbox keys from api-portal.shipstation.com on every plan, Free included. A ShipStation platform account needs the Standard or Premium plan and generates one v2 key at a time in API Settings, shown once. The docs say the key gives full access to the account. No OAuth, scopes or read-only keys were found.",
      "pricing": "freemium",
      "pricingNotes": "ShipStation API (formerly ShipEngine) has a Free plan at $0 with a sandbox and, by the pricing page, no card. Advanced is $75 a month for 1,000 labels ($0.075 a label over), $325 for 5,000 ($0.065) or $600 for 10,000 ($0.060), and Enterprise is by quote from 25,000 shipments a month. On the ShipStation platform the API comes with Standard (from $29.99 a month for 50 shipments) and Premium (from $349.99), after a 30-day trial with no card, and has no sandbox. Postage is charged separately at carrier rates (checked 2026-10-07).",
      "priceSummary": "$75 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the v2 docs, the OpenAPI spec or the pricing pages (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 6835,
        "pypiWeekly": null,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://docs.shipstation.com/api-overview",
      "llmsTxt": "https://docs.shipstation.com/llms.txt",
      "openapi": "https://docs.shipstation.com/_bundle/apis/@shipstation-v2/openapi.yaml",
      "capabilities": [
        "shipping.rates",
        "shipping.labels",
        "shipping.tracking",
        "shipping.address-validation",
        "shipping.returns"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "sandbox",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "python",
        "javascript",
        "dotnet",
        "status-page"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51,
        "grade": "D",
        "agentReady": false,
        "rank": 1046,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 7,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 33,
          "payments": 40,
          "reliability": 70,
          "schema": 83,
          "security": 32,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -6,
        "negativeNotes": [
          "2026-10-27. A status notice posted on 27 October says that from 23 October GlobalPost and GAP DDU services can no longer be used for shipments to Germany and that labels created with them return an error. The change came from German customs, but requests that worked before 23 October failed with notice posted four days after it took effect (-3) (https://status.shipstation.com/incidents/72gds1yvrc52)",
          "2026-10-27. Commits 796387c and 2f2808e in the JavaScript SDK (`shipengine` on npm) fix tracking calls that interpolated the carrier code, tracking number and label ID into the request unencoded, so `\u0026`, `=` or `#` in a value could add or cut query parameters. The fixes are merged but in no release, and no advisory was found (-3 until released) (https://github.com/ShipEngine/shipengine-js)"
        ],
        "verdict": "A public OpenAPI 3.1 contract with 173 operations, Markdown docs for agents and a free ShipStation API plan with a sandbox make a first rate quote or test label reachable without a contract. One API key carries full account access, with no scopes or idempotency keys on label purchases, and API release notes carry month-only dates.",
        "bestFor": "An agent working inside a merchant's existing ShipStation account (orders, batches, inventory, labels), or a developer who wants a free sandbox through the ShipStation API plans.",
        "strengths": [
          "Public OpenAPI 3.1 spec for v2 with 173 operations and 372 schemas, plus llms.txt and a Markdown copy of every docs page",
          "ShipStation API Free plan at $0 with no card stated, and a sandbox on every ShipStation API plan through `TEST_` keys",
          "200 requests a minute by default, with `Retry-After` on 429 responses",
          "Errors carry `error_source`, `error_type`, `error_code` and a `request_id`, and separate carrier faults from ShipStation's own",
          "A Statuspage history in which every incident from 6 August to 4 November 2026 was labelled minor or touched one or two carriers"
        ],
        "weaknesses": [
          "One API key with full account access. No scopes, read-only keys or approval step before a label is bought",
          "No idempotency key on label purchase, so a retry after a timeout can buy a second label",
          "Release notes are dated by month only, and no SDK has a release since 27 May 2026",
          "The official SDKs call api.shipengine.com/v1, and JavaScript fixes for unencoded tracking parameters from 27 October are unreleased",
          "No security.txt, certification, disclosure policy, DPA or named subprocessor list found on the pages read on 7 October"
        ],
        "agentNotes": [
          "Send the key in an `API-Key` header to https://api.shipstation.com/v2. A key that starts `TEST_` runs in the sandbox on the same host",
          "Call GET /v2/carriers first. Rate and label calls need `carrier_ids` or a `carrier_id` and a `service_code` from that account",
          "Don't blindly retry POST /v2/labels after a timeout. List labels first, then void a duplicate with PUT /v2/labels/{label_id}/void",
          "Check the `errors` array on 2XX responses too, and read `error_source` to tell a carrier fault from a ShipStation one",
          "On a platform (Standard or Premium) key every label is real and charged. Ask the owner before buying, and void test labels at once"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 33,
          "payments": 40,
          "reliability": 70,
          "schema": 83,
          "security": 32,
          "transparency": 42
        },
        "provenanceScore": 86,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -iX GET https://api.shipstation.com/v2/carriers \\\n-H 'API-Key: __YOUR_API_KEY_HERE__'",
        "claudeCode": "claude mcp add --transport http shipstation-api https://docs.shipstation.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/shipping.rates",
        "tool": "https://letme.dev/shipstation"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "ShipStation API Free",
          "unit": "month",
          "usd": 0,
          "note": "sandbox included, postage extra"
        },
        {
          "item": "ShipStation API Advanced, 1,000 labels",
          "unit": "month",
          "usd": 75,
          "note": "$325 for 5,000 labels, $600 for 10,000"
        },
        {
          "item": "Label over the Advanced 1,000 allowance",
          "unit": "tx",
          "usd": 0.075,
          "note": "$0.065 on the 5,000 tier, $0.060 on the 10,000 tier"
        },
        {
          "item": "ShipStation platform Standard, 50 shipments",
          "unit": "month",
          "usd": 29.99,
          "note": "lowest platform plan with API access"
        }
      ],
      "provenance": {
        "legalEntity": "Auctane LLC d/b/a ShipStation",
        "domain": "shipstation.com",
        "domainRegistered": "2005-04-14",
        "endpointOnVendorDomain": true,
        "terms": "https://www.shipstation.com/terms-of-service/",
        "privacy": "https://www.shipstationglobal.com/legal/privacy-policy/",
        "statusPage": "https://status.shipstation.com",
        "changelog": "https://docs.shipstation.com/apis/release-notes",
        "securityTxt": "none",
        "checked": "2026-10-07",
        "notes": [
          "The terms of service, effective 16 July 2026, name Auctane LLC d/b/a ShipStation and its affiliates, with Auctane, Inc. as parent.",
          "www.shipstation.com/privacy-policy/ redirects through auctane.com to www.shipstationglobal.com/legal/privacy-policy/, Auctane, Inc.'s policy for ShipStation, ShipEngine, Stamps.com and its other brands, effective 18 March 2026.",
          "/.well-known/security.txt returns 404 on www.shipstation.com, api.shipstation.com, docs.shipstation.com and www.shipstationglobal.com.",
          "The v2 API answers at api.shipstation.com. Webhook signing keys and the older v1 endpoints sit on api.shipengine.com, and the docs link a dashboard at dashboard.shipengine.com.",
          "RDAP for shipstation.com gives a registration date of 2005-04-14."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/shipstation.json",
      "live": {
        "slug": "shipstation",
        "probe": {
          "target": "https://api.shipstation.com/v2",
          "method": "get",
          "lastAt": "2026-11-07T19:22:32.796408888Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 394,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 366,
          "p95ms24h": 481,
          "samples24h": 238,
          "samples30d": 7473,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.shipstation.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:23:42.419897626Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "shipengine",
            "version": "1.0.7",
            "seenAt": "2026-11-07T00:05:15.955061494Z"
          },
          {
            "registry": "pypi",
            "name": "shipengine",
            "version": "2.1.1",
            "released": "2026-05-06",
            "seenAt": "2026-11-07T00:05:16.754957301Z"
          }
        ],
        "githubStars": 29,
        "npmWeekly": 10199,
        "pypiWeekly": 3731,
        "securityTxt": {
          "url": "https://shipstation.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:33.155091512Z"
        },
        "llmsTxt": {
          "url": "https://docs.shipstation.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:54.817166778Z"
        },
        "domain": {
          "domain": "shipstation.com",
          "registered": "2005-04-14",
          "source": "https://rdap.verisign.com/com/v1/domain/shipstation.com",
          "checkedAt": "2026-11-01T14:24:35.892205169Z"
        },
        "pages": [
          {
            "url": "https://docs.shipstation.com/apis/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:07:56.360848869Z",
            "changedAt": "2026-11-06T13:30:16.233233024Z",
            "fingerprint": "0b48047cda4e"
          },
          {
            "url": "https://status.shipstation.com/incidents/72gds1yvrc52",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:54.784523035Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "205c26ccca63"
          },
          {
            "url": "https://www.shipstationglobal.com/legal/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:34:29.079653473Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6fef845000ca"
          },
          {
            "url": "https://www.shipstation.com/terms-of-service/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:34:26.231730101Z",
            "changedAt": "2026-11-07T14:34:26.231730101Z",
            "fingerprint": "bffb70807a62"
          }
        ],
        "mcpTools": {
          "url": "https://docs.shipstation.com/mcp",
          "checkedAt": "2026-11-07T01:47:54.877871222Z",
          "status": "ok",
          "protocol": "2025-06-18",
          "tools": [
            {
              "name": "list-apis",
              "description": "Lists available APIs with their context and purpose",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "filter": {
                    "description": "API name (or part of it)",
                    "minLength": 1,
                    "nullable": true,
                    "type": "string"
                  },
                  "limit": {
                    "default": 300,
                    "description": "Number of APIs per page. Default is 300",
                    "minimum": 1,
                    "nullable": true,
                    "type": "number"
                  },
                  "page": {
                    "default": 1,
                    "description": "Page number",
                    "minimum": 1,
                    "nullable": true,
                    "type": "number"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            {
              "name": "get-endpoints",
              "description": "Get all endpoints for a specific API",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "description": "API name",
                    "minLength": 1,
                    "type": "string"
                  },
                  "version": {
                    "description": "API version (required when multiple APIs share the same name but differ by version)",
                    "nullable": true,
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            },
            {
              "name": "get-endpoint-info",
              "description": "Get comprehensive information about specific endpoint including parameters, security, and examples",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "method": {
                    "description": "HTTP method (GET, POST, PUT, DELETE, etc.)",
                    "enum": [
                      "GET",
                      "POST",
                      "PUT",
                      "DELETE",
                      "PATCH",
                      "OPTIONS",
                      "HEAD",
                      "TRACE",
                      "get",
                      "post",
                      "put",
                      "delete",
                      "patch",
                      "options",
                      "head",
                      "trace"
                    ],
                    "minLength": 1,
                    "type": "string"
                  },
                  "name": {
                    "description": "API name",
                    "minLength": 1,
                    "type": "string"
                  },
                  "path": {
                    "description": "Endpoint path (e.g. /api/v1/users)",
                    "minLength": 1,
                    "type": "string"
                  },
                  "version": {
                    "description": "API version (required when multiple APIs share the same name but differ by version)",
                    "nullable": true,
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "path",
                  "method"
                ],
                "type": "object"
              }
            },
            {
              "name": "get-security-schemes",
              "description": "Get the security schemes for a specific API",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "description": "API name",
                    "minLength": 1,
                    "type": "string"
                  },
                  "version": {
                    "description": "API version (required when multiple APIs share the same name but differ by version)",
                    "nullable": true,
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            },
            {
              "name": "get-full-api-description",
              "description": "Get the complete OpenAPI description",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "description": "API name",
                    "minLength": 1,
                    "type": "string"
                  },
                  "version": {
                    "description": "API version (required when multiple APIs share the same name but differ by version)",
                    "nullable": true,
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            },
            {
              "name": "search",
              "description": "Search across the documentation to fetch relevant content for a given query",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "query": {
                    "description": "Search query. Should be a single word or that phrase that is presented in a documentation.",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          ],
          "schemaTokens": 700,
          "changedAt": "2026-11-07T01:47:54.877871222Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 700,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 6
            },
            "findings": [
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get-endpoint-info",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get-endpoints",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get-full-api-description",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "get-security-schemes",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "list-apis",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "search",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "6 of 6 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "github": {
          "repo": "shipengine/shipengine-openapi",
          "checkedAt": "2026-11-02T09:25:15.871990048Z",
          "stars": 29,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-06-11T19:38:15Z",
          "openIssues": 10,
          "openPRs": 4,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "ci": {
            "branch": "master",
            "runs": 50,
            "success": 9,
            "failure": 41,
            "other": 0,
            "latest": "failure",
            "latestAt": "2026-06-11T19:38:36Z"
          },
          "replies": {
            "sampled": 12,
            "unanswered": 10,
            "medianDays": 8.2
          }
        },
        "updatedAt": "2026-11-07T19:23:42.419897626Z"
      }
    },
    "edges": [
      {
        "by": 50,
        "category": "reliability",
        "leads": "shipstation",
        "name": "Reliability",
        "reasons": {
          "a": "Graded as a hosted service on Envia's REST APIs, with the local MCP server noted. No status page is linked and status.envia.com did not connect (0). No readable incident history (5). No rate limits found in the docs index, FAQs, integration guide or production checklist (0). The production checklist asks for 5xx retry logic and webhook deduplication, with no 429 or idempotency guidance for label creation (5 of 15). No SLA found (0). Neither the APIs nor the MCP server is labelled beta (10). 0 + 5 + 0 + 5 + 0 + 10 = 20.",
          "b": "Graded on ShipStation API v2 at api.shipstation.com/v2, with the hosted lines. Statuspage at status.shipstation.com with components for Companion API V1 and V2, carriers and marketplaces (20). The history pages and feed, read on 4 November, list 13 incidents and one scheduled maintenance between 6 August and 4 November. The four labelled major each touch one or two carriers (DPD Local and DX on 11 September, Evri on 24 and 25 September, DPD on 20 October, Evri shipments to the EU on 29 and 30 October), and the rest are minor or notices, so all are partial and read as minor (20). 200 requests a minute by default, per the 7 October check, not re-read on 4 November (15). 429 responses carry `Retry-After` and the docs ask for retries handled globally, with no idempotency key or safe-retry guidance for label purchases, per the 7 October check, not re-read on 4 November (10). No SLA found (0). The getting-started page says v2 \"is currently in an early release stage\" while calling it tested and stable, per the 7 October check, not re-read on 4 November (5)."
        },
        "scores": {
          "a": 20,
          "b": 70
        }
      },
      {
        "by": 48,
        "category": "transparency",
        "leads": "shipstation",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Every terms URL tried answered 500 and the privacy policy is drawn by script, so no terms, entity or data-handling statement was read (0 of 30, 0 of 30). No deprecation policy or dated notices (0). No subprocessors or data locations found (0). 0 + 0 + 0 + 0 = 0, as unread rather than absent where the pages exist.",
          "b": "Closed service under terms of service effective 16 July 2026 that name Auctane LLC d/b/a ShipStation. The v2 OpenAPI file is marked MIT and the SDKs are Apache 2.0 (16). The privacy policy, effective 18 March 2026, is Auctane, Inc.'s for all its brands. It keeps data \"as long as necessary\" with no periods, and says third parties may not train AI models on personal information. No public DPA was found (12). The legacy V1 API is described as deprecated with removal \"in the future\" and no date, and the terms let ShipStation withdraw API access at its discretion (6). US persons' data stays in the United States and EEA and UK data may move there under the Data Privacy Framework. Service providers are named by type, with no subprocessor list (8). Docs, pricing and legal pages per the 7 October check, not re-read on 4 November."
        },
        "scores": {
          "a": 16,
          "b": 64
        }
      },
      {
        "by": 23,
        "category": "maintenance",
        "leads": "shipstation",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The latest dated change found is the docs changelog for March 2026 and @envia/envia-mcp 0.1.0 on 4 March 2026, more than 180 days ago; doc pages show later `updatedAt` stamps (28 October for the FAQ) that record no change (0). No dated entries in the 90 days from 8 August (0). Support through the dashboard and docs, with no public tracker; the MCP repository named on npm could not be cloned (5 of 15). The MCP package is official, with no API SDK and no registry entry (5 of 15). No public CI to read (0). 0 + 0 + 5 + 5 + 0 = 10.",
          "b": "Release notes on docs.shipstation.com are dated by month only, with entries for August, September and October 2026 on the 7 October reading, so they don't set recency. The newest dated change from ShipStation's own sources is the shipengine-openapi repository commit of 11 June 2026, after .NET SDK v3.2.1 on 27 May and Python 2.1.1 on 6 May (146 days, 10). No dated release in the 90 days from 6 August. Month-dated entries counted at half come to fewer than three, and commits on 27 October in the JavaScript and .NET SDK repositories are in no release (0). Closed service with monthly release notes, an API support address (apisupport@shipstation.com) and a community forum. We couldn't measure reply times (10). Official SDKs exist in six languages, and all call the v1 ShipEngine host. JavaScript's newest tag is v1.0.7 of 31 January 2024 (8). SDK repositories have CI workflows, and the JavaScript SDK's CI was rebuilt on 27 October. The OpenAPI repository was last changed on 11 June 2026 (5)."
        },
        "scores": {
          "a": 10,
          "b": 33
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "shipstation",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). No public price list: each cost is shown when quoting, and volume plans go through sales (0). A free sandbox account creates test labels with no charges (20). A person signs up in a browser and tops up a balance for live labels (0). 0 + 0 + 20 + 0 = 20.",
          "b": "No x402, MPP or L402 (0). ShipStation API prices are public without a login. Free at $0, Advanced at $75 a month for 1,000 labels with $0.075 per label over, $325 for 5,000 and $600 for 10,000, Enterprise by quote. Platform plans are public too, with API access from Standard at $29.99 a month for 50 shipments (20). The Free plan and its sandbox need no card according to the pricing page (20). A person signs up in a browser to get a key (0). Docs, pricing and legal pages per the 7 October check, not re-read on 4 November."
        },
        "scores": {
          "a": 20,
          "b": 40
        }
      },
      {
        "by": 11,
        "category": "ergonomics",
        "leads": "shipstation",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Ten compact MCP tools (25). Rates take one carrier per request, and the Queries API filters carriers by country and shipment type; no paging or field selection was found (10 of 20). The FAQ maps common errors to fixes, but the changelog says the three APIs return different error formats that need a normalisation helper (10 of 20). No idempotency key for labels; an unscanned label can be cancelled for an automatic refund, and the MCP tools carry no annotations (3 of 20). The MCP server defaults to sandbox, with no official API SDK (5 of 15). 25 + 10 + 10 + 3 + 5 = 53.",
          "b": "No MCP server that performs shipping operations. The MCP server at docs.shipstation.com/mcp reads documentation only. List endpoints take `page_size`. No field selection was found (12). `page`, `page_size`, `sort_by`, `sort_dir` and filters by status, tag, dates, store and external id on list calls (20). Errors carry `error_source`, `error_type`, `error_code`, `message`, field names and a `request_id` (18). No idempotency keys. `external_shipment_id` is unique per shipment, labels can be voided and `test_label` exists, which we counted as partial safe-retry support (6). Official SDKs in six languages call api.shipengine.com/v1, not v2, and a label needs a `carrier_id` and `service_code` looked up first (8). Docs, pricing and legal pages per the 7 October check, not re-read on 4 November."
        },
        "scores": {
          "a": 53,
          "b": 64
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Envia Shipping",
        "b": "Auctane LLC d/b/a ShipStation",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.shipstation.com/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary service under ShipStation's terms of service. The v2 OpenAPI file is marked MIT and the SDKs on GitHub are Apache 2.0",
        "name": "Licence"
      },
      {
        "a": "10",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-03-06",
        "b": "2026-10-01",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-03-18",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "6.8k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "ShipStation API scores 51 (D) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Envia or ShipStation API?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Envia and ShipStation API need an API key?"
      },
      {
        "answer": "Envia runs on your own machine, with no hosted endpoint listed. ShipStation API has a hosted endpoint at https://api.shipstation.com/v2.",
        "question": "Can an agent call Envia and ShipStation API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "Runs on your own machine",
          "No incidents deducted, where ShipStation API loses 6 points for them"
        ],
        "goodFor": "Shops and platforms shipping in Mexico and Latin America that want rates and labels from many local carriers.",
        "slug": "envia",
        "watchFor": "No status page or rate limits found"
      },
      {
        "aheadOn": [
          "Reliability, 70 against 20",
          "Agent ergonomics, 64 against 53",
          "Payments \u0026 pricing, 40 against 20",
          "Maintenance \u0026 community, 33 against 10",
          "Transparency \u0026 trust, 64 against 16"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "An agent working inside a merchant's existing ShipStation account (orders, batches, inventory, labels), or a developer who wants a free sandbox through the ShipStation API plans.",
        "slug": "shipstation",
        "watchFor": "One API key with full account access. No scopes, read-only keys or approval step before a label is bought"
      }
    ],
    "history": {
      "envia": null,
      "shipstation": [
        {
          "causes": [
            "correction",
            "event"
          ],
          "date": "2026-11-04",
          "delta": -8.3,
          "from": 59.3,
          "fromGrade": "C",
          "to": 51,
          "toGrade": "D"
        }
      ]
    },
    "job": {
      "capability": "shipping.rates",
      "name": "Shipping rates"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/atoship-vs-envia.json",
        "title": "atoship vs Envia",
        "url": "https://www.anchorterminal.com/compare/atoship-vs-envia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/atoship-vs-shipstation.json",
        "title": "atoship vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/atoship-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/easypost-vs-envia.json",
        "title": "EasyPost vs Envia",
        "url": "https://www.anchorterminal.com/compare/easypost-vs-envia"
      },
      {
        "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-envia.json",
        "title": "Easyship vs Envia",
        "url": "https://www.anchorterminal.com/compare/easyship-vs-envia"
      },
      {
        "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/envia-vs-karrio.json",
        "title": "Envia vs Karrio",
        "url": "https://www.anchorterminal.com/compare/envia-vs-karrio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/envia-vs-sendcloud.json",
        "title": "Envia vs Sendcloud",
        "url": "https://www.anchorterminal.com/compare/envia-vs-sendcloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/envia-vs-shipbob.json",
        "title": "Envia vs ShipBob",
        "url": "https://www.anchorterminal.com/compare/envia-vs-shipbob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/envia-vs-shippo.json",
        "title": "Envia vs Shippo",
        "url": "https://www.anchorterminal.com/compare/envia-vs-shippo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/envia-vs-shippypro.json",
        "title": "Envia vs ShippyPro",
        "url": "https://www.anchorterminal.com/compare/envia-vs-shippypro"
      },
      {
        "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/sendcloud-vs-shipstation.json",
        "title": "Sendcloud vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/sendcloud-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shipbob-vs-shipstation.json",
        "title": "ShipBob vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/shipbob-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shippo-vs-shipstation.json",
        "title": "Shippo vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/shippo-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shippypro-vs-shipstation.json",
        "title": "ShippyPro vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/shippypro-vs-shipstation"
      },
      {
        "json": "https://www.anchorterminal.com/compare/envia-vs-ship24.json",
        "title": "Envia vs Ship24",
        "url": "https://www.anchorterminal.com/compare/envia-vs-ship24"
      },
      {
        "json": "https://www.anchorterminal.com/compare/envia-vs-trackingmore.json",
        "title": "Envia vs TrackingMore",
        "url": "https://www.anchorterminal.com/compare/envia-vs-trackingmore"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ship24-vs-shipstation.json",
        "title": "Ship24 vs ShipStation API",
        "url": "https://www.anchorterminal.com/compare/ship24-vs-shipstation"
      },
      {
        "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": 50,
        "edge": "shipstation",
        "envia": 20,
        "key": "reliability",
        "name": "Reliability",
        "shipstation": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 3,
        "edge": "shipstation",
        "envia": 80,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "shipstation": 83,
        "weight": 13
      },
      {
        "by": 11,
        "edge": "shipstation",
        "envia": 53,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "shipstation": 64,
        "weight": 13
      },
      {
        "by": 3,
        "edge": "envia",
        "envia": 35,
        "key": "security",
        "name": "Security \u0026 auth",
        "shipstation": 32,
        "weight": 14
      },
      {
        "by": 20,
        "edge": "shipstation",
        "envia": 20,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "shipstation": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 23,
        "edge": "shipstation",
        "envia": 10,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "shipstation": 33,
        "weight": 7
      },
      {
        "by": 48,
        "edge": "shipstation",
        "envia": 16,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "shipstation": 64,
        "weight": 7
      }
    ],
    "summary": "ShipStation API scores 51 (D) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories. Both do shipping rates.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "envia": "Envia's shipping APIs are documented for agents, with llms.txt, OpenAPI definitions on every reference page, a free sandbox and a compact ten-tool MCP server that defaults to test mode. No status page, rate limits, public price list or readable terms were found, and the MCP package has had one release.",
      "shipstation": "A public OpenAPI 3.1 contract with 173 operations, Markdown docs for agents and a free ShipStation API plan with a sandbox make a first rate quote or test label reachable without a contract. One API key carries full account access, with no scopes or idempotency keys on label purchases, and API release notes carry month-only dates."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/envia-vs-shipstation",
    "json": "https://www.anchorterminal.com/compare/envia-vs-shipstation.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/envia-vs-shipstation.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/envia-vs-shipstation.min.md"
  },
  "markdown": "ShipStation API scores 51 (D) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories. Both do shipping rates.\n\n- Envia: grade F, 36.5/100, rank #1384 of 1510. Markdown https://www.anchorterminal.com/tools/envia.md · JSON https://www.anchorterminal.com/api/v1/tools/envia.json\n- ShipStation API: grade D, 51/100, rank #1046 of 1510. Markdown https://www.anchorterminal.com/tools/shipstation.md · JSON https://www.anchorterminal.com/api/v1/tools/shipstation.json\n- Best shipping and fulfilment APIs for AI agents: https://www.anchorterminal.com/best/shipping/index.md\n- All 66 shipping comparisons: https://www.anchorterminal.com/compare/shipping/index.md\n\n## Which one, for what\n\n### Envia (F)\n\nGood for: Shops and platforms shipping in Mexico and Latin America that want rates and labels from many local carriers.\n\nAlso in its favour:\n- Runs on your own machine\n- No incidents deducted, where ShipStation API loses 6 points for them\n\nWatch for: No status page or rate limits found\n\n### ShipStation API (D)\n\nGood for: An agent working inside a merchant's existing ShipStation account (orders, batches, inventory, labels), or a developer who wants a free sandbox through the ShipStation API plans.\n\nAhead on:\n- Reliability, 70 against 20\n- Agent ergonomics, 64 against 53\n- Payments \u0026 pricing, 40 against 20\n- Maintenance \u0026 community, 33 against 10\n- Transparency \u0026 trust, 64 against 16\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: One API key with full account access. No scopes, read-only keys or approval step before a label is bought\n\n\n## Why the edge\n\n### Reliability: ShipStation API +50\n\n- Envia (20): Graded as a hosted service on Envia's REST APIs, with the local MCP server noted. No status page is linked and status.envia.com did not connect (0). No readable incident history (5). No rate limits found in the docs index, FAQs, integration guide or production checklist (0). The production checklist asks for 5xx retry logic and webhook deduplication, with no 429 or idempotency guidance for label creation (5 of 15). No SLA found (0). Neither the APIs nor the MCP server is labelled beta (10). 0 + 5 + 0 + 5 + 0 + 10 = 20.\n- ShipStation API (70): Graded on ShipStation API v2 at api.shipstation.com/v2, with the hosted lines. Statuspage at status.shipstation.com with components for Companion API V1 and V2, carriers and marketplaces (20). The history pages and feed, read on 4 November, list 13 incidents and one scheduled maintenance between 6 August and 4 November. The four labelled major each touch one or two carriers (DPD Local and DX on 11 September, Evri on 24 and 25 September, DPD on 20 October, Evri shipments to the EU on 29 and 30 October), and the rest are minor or notices, so all are partial and read as minor (20). 200 requests a minute by default, per the 7 October check, not re-read on 4 November (15). 429 responses carry `Retry-After` and the docs ask for retries handled globally, with no idempotency key or safe-retry guidance for label purchases, per the 7 October check, not re-read on 4 November (10). No SLA found (0). The getting-started page says v2 \"is currently in an early release stage\" while calling it tested and stable, per the 7 October check, not re-read on 4 November (5).\n\n### Transparency \u0026 trust: ShipStation API +48\n\n- Envia (16): Every terms URL tried answered 500 and the privacy policy is drawn by script, so no terms, entity or data-handling statement was read (0 of 30, 0 of 30). No deprecation policy or dated notices (0). No subprocessors or data locations found (0). 0 + 0 + 0 + 0 = 0, as unread rather than absent where the pages exist.\n- ShipStation API (64): Closed service under terms of service effective 16 July 2026 that name Auctane LLC d/b/a ShipStation. The v2 OpenAPI file is marked MIT and the SDKs are Apache 2.0 (16). The privacy policy, effective 18 March 2026, is Auctane, Inc.'s for all its brands. It keeps data \"as long as necessary\" with no periods, and says third parties may not train AI models on personal information. No public DPA was found (12). The legacy V1 API is described as deprecated with removal \"in the future\" and no date, and the terms let ShipStation withdraw API access at its discretion (6). US persons' data stays in the United States and EEA and UK data may move there under the Data Privacy Framework. Service providers are named by type, with no subprocessor list (8). Docs, pricing and legal pages per the 7 October check, not re-read on 4 November.\n\n### Maintenance \u0026 community: ShipStation API +23\n\n- Envia (10): The latest dated change found is the docs changelog for March 2026 and @envia/envia-mcp 0.1.0 on 4 March 2026, more than 180 days ago; doc pages show later `updatedAt` stamps (28 October for the FAQ) that record no change (0). No dated entries in the 90 days from 8 August (0). Support through the dashboard and docs, with no public tracker; the MCP repository named on npm could not be cloned (5 of 15). The MCP package is official, with no API SDK and no registry entry (5 of 15). No public CI to read (0). 0 + 0 + 5 + 5 + 0 = 10.\n- ShipStation API (33): Release notes on docs.shipstation.com are dated by month only, with entries for August, September and October 2026 on the 7 October reading, so they don't set recency. The newest dated change from ShipStation's own sources is the shipengine-openapi repository commit of 11 June 2026, after .NET SDK v3.2.1 on 27 May and Python 2.1.1 on 6 May (146 days, 10). No dated release in the 90 days from 6 August. Month-dated entries counted at half come to fewer than three, and commits on 27 October in the JavaScript and .NET SDK repositories are in no release (0). Closed service with monthly release notes, an API support address (apisupport@shipstation.com) and a community forum. We couldn't measure reply times (10). Official SDKs exist in six languages, and all call the v1 ShipEngine host. JavaScript's newest tag is v1.0.7 of 31 January 2024 (8). SDK repositories have CI workflows, and the JavaScript SDK's CI was rebuilt on 27 October. The OpenAPI repository was last changed on 11 June 2026 (5).\n\n### Payments \u0026 pricing: ShipStation API +20\n\n- Envia (20): No x402, MPP or L402 (0). No public price list: each cost is shown when quoting, and volume plans go through sales (0). A free sandbox account creates test labels with no charges (20). A person signs up in a browser and tops up a balance for live labels (0). 0 + 0 + 20 + 0 = 20.\n- ShipStation API (40): No x402, MPP or L402 (0). ShipStation API prices are public without a login. Free at $0, Advanced at $75 a month for 1,000 labels with $0.075 per label over, $325 for 5,000 and $600 for 10,000, Enterprise by quote. Platform plans are public too, with API access from Standard at $29.99 a month for 50 shipments (20). The Free plan and its sandbox need no card according to the pricing page (20). A person signs up in a browser to get a key (0). Docs, pricing and legal pages per the 7 October check, not re-read on 4 November.\n\n### Agent ergonomics: ShipStation API +11\n\n- Envia (53): Ten compact MCP tools (25). Rates take one carrier per request, and the Queries API filters carriers by country and shipment type; no paging or field selection was found (10 of 20). The FAQ maps common errors to fixes, but the changelog says the three APIs return different error formats that need a normalisation helper (10 of 20). No idempotency key for labels; an unscanned label can be cancelled for an automatic refund, and the MCP tools carry no annotations (3 of 20). The MCP server defaults to sandbox, with no official API SDK (5 of 15). 25 + 10 + 10 + 3 + 5 = 53.\n- ShipStation API (64): No MCP server that performs shipping operations. The MCP server at docs.shipstation.com/mcp reads documentation only. List endpoints take `page_size`. No field selection was found (12). `page`, `page_size`, `sort_by`, `sort_dir` and filters by status, tag, dates, store and external id on list calls (20). Errors carry `error_source`, `error_type`, `error_code`, `message`, field names and a `request_id` (18). No idempotency keys. `external_shipment_id` is unique per shipment, labels can be voided and `test_label` exists, which we counted as partial safe-retry support (6). Official SDKs in six languages call api.shipengine.com/v1, not v2, and a label needs a `carrier_id` and `service_code` looked up first (8). Docs, pricing and legal pages per the 7 October check, not re-read on 4 November.\n\n## Score by category\n\n| Category | Weight | Envia | ShipStation API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 20 | 70 | ShipStation API +50 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 80 | 83 | ShipStation API +3 |\n| Agent ergonomics | 13% (16.2 this run) | 53 | 64 | ShipStation API +11 |\n| Security \u0026 auth | 14% (17.5 this run) | 35 | 32 | Envia +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 40 | ShipStation API +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 10 | 33 | ShipStation API +23 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 16 | 64 | ShipStation API +48 |\n| Negative events | ≤15 | 0 | -6 | |\n| **Total** | | **36.5 · F** | **51 · D** | |\n\n## Facts side by side\n\n| Fact | Envia | ShipStation API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Envia Shipping | Auctane LLC d/b/a ShipStation |\n| Hosted endpoint | no (local only) | `https://api.shipstation.com/v2` |\n| Transports | stdio | HTTP |\n| Auth | API key | API key |\n| Pricing | Pay per use | Freemium |\n| x402 | no | no |\n| Licence | none | Proprietary service under ShipStation's terms of service. The v2 OpenAPI file is marked MIT and the SDKs on GitHub are Apache 2.0 |\n| Tools exposed | 10 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-03-06 | 2026-10-01 |\n| Terms last updated | no document linked | no date given |\n| Privacy policy last updated | no date given | 2026-03-18 |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | yes |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | yes |\n| Arbitration or class-action waiver | not read yet | yes |\n| Popularity | none | 6.8k npm/wk |\n\n## How the scores have moved\n\n### Envia\n\nNo score change since it was listed.\n\n### ShipStation API\n\n- -8.3 on 4 November 2026 (C to D): correction, negative event\n\n## Verdicts\n\n**Envia.** Envia's shipping APIs are documented for agents, with llms.txt, OpenAPI definitions on every reference page, a free sandbox and a compact ten-tool MCP server that defaults to test mode. No status page, rate limits, public price list or readable terms were found, and the MCP package has had one release.\n\n**ShipStation API.** A public OpenAPI 3.1 contract with 173 operations, Markdown docs for agents and a free ShipStation API plan with a sandbox make a first rate quote or test label reachable without a contract. One API key carries full account access, with no scopes or idempotency keys on label purchases, and API release notes carry month-only dates.\n\n## Before you call either\n\n### Envia\n\n1. Leave `ENVIA_ENVIRONMENT` unset until the user confirms live shipping; the default is sandbox\n2. Ask the user before `envia_create_label` in production, since it spends the account balance\n3. Validate the postal code at geocodes.envia.com before quoting to avoid no-coverage errors\n4. Cancel an unwanted label before the carrier scans it to get the automatic refund\n5. Use a sandbox token with sandbox hosts and a production token with production hosts; they are not interchangeable\n\n### ShipStation API\n\n1. Send the key in an `API-Key` header to https://api.shipstation.com/v2. A key that starts `TEST_` runs in the sandbox on the same host\n2. Call GET /v2/carriers first. Rate and label calls need `carrier_ids` or a `carrier_id` and a `service_code` from that account\n3. Don't blindly retry POST /v2/labels after a timeout. List labels first, then void a duplicate with PUT /v2/labels/{label_id}/void\n4. Check the `errors` array on 2XX responses too, and read `error_source` to tell a carrier fault from a ShipStation one\n5. On a platform (Standard or Premium) key every label is real and charged. Ask the owner before buying, and void test labels at once\n\n## Questions\n\n### Which is better for AI agents, Envia or ShipStation API?\n\nShipStation API scores 51 (D) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories.\n\n### Do Envia and ShipStation API need an API key?\n\nBoth need an API key.\n\n### Can an agent call Envia and ShipStation API without installing anything?\n\nEnvia runs on your own machine, with no hosted endpoint listed. ShipStation API has a hosted endpoint at https://api.shipstation.com/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/envia-vs-shipstation.json, and with the fewest tokens: https://www.anchorterminal.com/compare/envia-vs-shipstation.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"envia\", \"b\": \"shipstation\"}`. From a terminal: `anchor compare envia shipstation`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/envia.json and https://www.anchorterminal.com/api/v1/tools/shipstation.json\n\n## Other comparisons with Envia or ShipStation API\n\n- [atoship vs Envia](https://www.anchorterminal.com/compare/atoship-vs-envia.md)\n- [atoship vs ShipStation API](https://www.anchorterminal.com/compare/atoship-vs-shipstation.md)\n- [EasyPost vs Envia](https://www.anchorterminal.com/compare/easypost-vs-envia.md)\n- [EasyPost vs ShipStation API](https://www.anchorterminal.com/compare/easypost-vs-shipstation.md)\n- [Easyship vs Envia](https://www.anchorterminal.com/compare/easyship-vs-envia.md)\n- [Easyship vs ShipStation API](https://www.anchorterminal.com/compare/easyship-vs-shipstation.md)\n- [Envia vs Karrio](https://www.anchorterminal.com/compare/envia-vs-karrio.md)\n- [Envia vs Sendcloud](https://www.anchorterminal.com/compare/envia-vs-sendcloud.md)\n- [Envia vs ShipBob](https://www.anchorterminal.com/compare/envia-vs-shipbob.md)\n- [Envia vs Shippo](https://www.anchorterminal.com/compare/envia-vs-shippo.md)\n- [Envia vs ShippyPro](https://www.anchorterminal.com/compare/envia-vs-shippypro.md)\n- [Karrio vs ShipStation API](https://www.anchorterminal.com/compare/karrio-vs-shipstation.md)\n- [Sendcloud vs ShipStation API](https://www.anchorterminal.com/compare/sendcloud-vs-shipstation.md)\n- [ShipBob vs ShipStation API](https://www.anchorterminal.com/compare/shipbob-vs-shipstation.md)\n- [Shippo vs ShipStation API](https://www.anchorterminal.com/compare/shippo-vs-shipstation.md)\n- [ShippyPro vs ShipStation API](https://www.anchorterminal.com/compare/shippypro-vs-shipstation.md)\n- [Envia vs Ship24](https://www.anchorterminal.com/compare/envia-vs-ship24.md)\n- [Envia vs TrackingMore](https://www.anchorterminal.com/compare/envia-vs-trackingmore.md)\n- [Ship24 vs ShipStation API](https://www.anchorterminal.com/compare/ship24-vs-shipstation.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-07",
    "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": "Envia vs ShipStation API",
        "url": ""
      }
    ],
    "description": "ShipStation scores 51 (D) to Envia's 36.5 (F) for shipping rates. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Envia F 36.5",
      "ShipStation API D 51",
      "scores"
    ],
    "h1": "Envia vs ShipStation API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/envia-vs-shipstation",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Envia vs ShipStation for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/envia-vs-shipstation"
  },
  "tokens": {
    "markdown": 4050,
    "slim": 2430
  },
  "version": 1
}
