Head to head · Shipping rates · October 2026 research run

EasyPost vs Envia

EasyPost scores 57.4 (C) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories. Envia leads on schema & documentation. Both do shipping rates.

Best shipping and fulfilment APIs for AI agents · All 66 shipping comparisons

Which one, for what

EasyPost C

Best 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.

Ahead on

  • Reliability, 68 against 20
  • Agent ergonomics, 63 against 53
  • Security & auth, 47 against 35
  • Maintenance & community, 85 against 10
  • Transparency & trust, 71 against 16

Also in its favour

  • A hosted endpoint, with nothing to install

Watch 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

Envia F

Best for Shops and platforms shipping in Mexico and Latin America that want rates and labels from many local carriers.

Ahead on

  • Schema & documentation, 80 against 55

Also in its favour

  • Runs on your own machine

Watch for

No status page or rate limits found

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Maintenance & community EasyPost +75

EasyPost 85

The releases page has an entry dated 29 October 2026, six days before this check, and the Node, Go, Java and C# libraries were tagged the same day (30). Eight dated release notes fall in the 90 days from 6 August (8, 15, 22 and 29 August, 25 and 28 September, 8 and 29 October), and every library had a release on 27 or 29 October (20). A closed service with public release notes, support@easypost.com, a help centre, ai@easypost.com for the MCP server and a published four-hour response target on the Base support tier. We didn't read GitHub issues or test response times (11 of 15). Seven official SDKs, each with a release on 27 or 29 October 2026: Node 9.1.0, Python 10.8.0, Go 5.12.0, Java 8.10.0, C# 7.12.0, PHP 8.9.0 and Ruby 7.8.0 (15). The Python library's CI lints and runs tests, per the 7 October check, and Node 9.0.0 moved to TypeScript and fetch (9 of 10, partly met). 30 + 20 + 11 + 15 + 9 = 85.

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.

Transparency & trust EasyPost +55

EasyPost 71

The service is closed, under a Master Customer Agreement (version 6.1, effective 25 August 2026) and seven addenda in a legal centre that keeps every past version. The SDKs are MIT or ISC (15). The privacy policy (18 August 2025) gives no retention period. The agreement points to a Data Retention Policy in the help centre, which refused our reader, and it grants EasyPost a licence to use customer data to improve its services and develop new products during and after the term. A data processing addendum with EU and UK standard clauses is public (15 of 30). The agreement says EasyPost will use reasonable efforts to notify customers before API changes that aren't backwards compatible, with no notice period, and allows termination with a refund within 15 days if functionality is materially reduced. No deprecation policy with dates was found (6 of 20). Annex D of the addendum lists 12 subprocessors with purpose and country, all in the USA, and customers have 10 days to object to a new one (17 of 20). The legal centre was re-read on 4 November; the MCA is still version 6.1. 15 + 15 + 6 + 17 = 53.

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.

Reliability EasyPost +48

EasyPost 68

Read with the hosted lines and scored on the REST API at api.easypost.com/v2, the surface an agent would use to rate, buy and track. www.easypoststatus.com on Statuspage lists 44 components on its page, re-read 4 November 2026 (20). Its history feed covers the whole 90 days from 6 August. Five incidents fall in that window, each partial. On 27 August the Core APIs degraded briefly during a deployment, resolved 14 minutes after it was identified. On 20 September USPS Ship requests failed most of the time for about five and a half hours (09:55 to 15:19 PDT) on a USPS-side fault, on 23 September a subset of USPS Ship buys failed, on 5 October UPS Mail Innovations returned elevated errors, and on 8 October some rating and tracking requests timed out for about 73 minutes at the hosting provider. Announced maintenance windows (14, 21 and 28 August, and the USPS windows in October and November) are maintenance, not incidents. Minor incidents only (20). The rate-limiting guide gives five requests a second on index endpoints and a 60-account cap on rating, but the load-based limiter on buying and rating has no published number (8 of 15, partly met). The guide asks for retry with growing backoff on 429 and gives a code sample that retries only GET and DELETE. No Retry-After header, no idempotency keys and no stated safe-retry rule for writes on the REST API (10). The Master Customer Agreement supplies the service as is and as available, and the support addendum sets response targets only (0). The v2 API is generally available (10). 20 + 20 + 8 + 10 + 0 + 10 = 68.

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.

Schema & documentation Envia +25

EasyPost 55

No OpenAPI or similar spec was found in the docs, llms.txt, the page index or the 56 public repositories of the EasyPost GitHub organisation. A Postman workspace is listed, which we didn't read (0 of 25). llms.txt, a Markdown copy of almost every page and doc-index.json with audience and usage notes for each page (10). Each object has a property table with a type and description, and the index says when each page applies. Endpoint pages are mostly examples, with little on when not to use a call (12 of 20). Types and allowed values are given in prose tables, such as the ten tracker statuses, with no schema to validate against, and the Markdown copies omit some parameter lists that the HTML pages render (8 of 15). Every endpoint has examples in cURL and seven SDK languages, plus an error object and 13 general error codes. The full error code list is on a part of the page the Markdown copy omits (13 of 15). The path carries v2 and the releases page has dated notes almost every week. No written versioning policy was found, and some calls sit under /beta (12 of 15). 0 + 10 + 12 + 8 + 13 + 12 = 55.

Envia 80

Each reference page's Markdown copy embeds an OpenAPI definition with sandbox and production servers (25). llms.txt and a Markdown copy of each page (10). Endpoint descriptions say what each is for and which call comes next in the workflow, and the rate tool warns that sandbox rates are simulated (15 of 20). The quote definition has 17 enums and required lists (11 of 15). Workflow examples and an error-formats guide named in the changelog, though its Markdown address answered 404 and the quote definition documents only 200 (9 of 15). A dated docs changelog by month, the latest March 2026 (10 of 15). 25 + 10 + 15 + 11 + 9 + 10 = 80.

Security & auth EasyPost +12

EasyPost 47

API keys go in the HTTP Basic username over TLS 1.2. Keys can be created, disabled, enabled and deleted through the API or the dashboard, and the docs say a key allows full account access. Plain revocable keys, with no secret in a query string. The MCP server also takes a sign-in with an EasyPost account from the ChatGPT and Claude apps (20 of 30). Test keys buy no postage and child users hold separate keys. The REST API has no read-only or scoped key and no confirmation step before a purchase. Since 29 October 2026 the MCP server buys labels too (20 tools, 7 of them writes); buy_shipment refuses a price that differs from the one the user approved, and the guide asks users to keep client approval on for the three paid or destructive writes (8 of 20, held). Responses carry addresses and carrier tracking text. The MCP guide advises connecting only to trusted clients and servers, and no injection guidance was found (4 of 15). Events and their payloads can be retrieved and each shipment lists its fees, but no audit log of API calls or key use was found in the reviewed documentation (5 of 15). A Responsible Disclosure Policy with a safe-harbour commitment and the contact security-abuse@easypost.com, with no acknowledgement time, HMAC-signed webhooks, and a SOC 2 Type 2 report referred to in the data processing addendum. No security.txt (per the 7 October check) and no bug bounty were found, and OSV lists no advisory for EasyPost packages (10 of 20). 20 + 8 + 4 + 5 + 10 = 47.

Envia 35

Bearer tokens bound to one environment, several per account, revocable by deleting them, with no scopes (20). No read-only token; the MCP server's sandbox default keeps test calls from spending money (5 of 20). Responses carry carrier and address data rather than free text from strangers (10). No audit log found (0). No security page, certification, security.txt or disclosure policy found (0). 20 + 5 + 10 + 0 + 0 = 35.

Agent ergonomics EasyPost +10

EasyPost 63

List calls take page_size up to 100 with a default of 20 on most endpoints. No field selection was found, and a shipment response nests addresses, parcel, rates and tracker (12 of 25). Cursor pagination by before_id and after_id, date ranges and a has_more flag, with support that varies by endpoint (16 of 20). Errors carry a machine-readable code, a message and per-field entries with an occasional suggestion. The errors array arrives as objects or as strings, so a client has to handle both (15 of 20). The REST API has no idempotency keys. Trackers are deduplicated by tracking code and carrier for three months, but reference on a shipment isn't unique and nothing guards a repeated buy. Since 29 October 2026 the MCP server's buy_shipment returns the label already bought when a timed-out buy is retried, and the guide says three write tools are marked destructive; the tool definitions weren't read (5 of 20, partly met, held). One-call buy creates and purchases in one request, addresses and parcels can be nested or reused by id, and official SDKs cover seven languages (15). 12 + 16 + 15 + 5 + 15 = 63.

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.

Score by category

CategoryWeight this runEasyPostEnviaEdge
Reliability16%206820EasyPost +48
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.25580Envia +25
Agent ergonomics13%16.26353EasyPost +10
Security & auth14%17.54735EasyPost +12
Payments & pricing10%12.52220EasyPost +2
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88510EasyPost +75
Transparency & trust7%8.87116EasyPost +55
Negative events≤1500
TotalC 57.4/100F 36.5/100

Facts side by side

FactEasyPostEnvia
KindHTTP APIHTTP API
VendorSimpler Postage, Inc. (d/b/a EasyPost)Envia Shipping
Hosted endpointhttps://api.easypost.com/v2no (local only)
TransportsHTTPstdio
AuthAPI keyAPI key
PricingFreemiumPay per use
x402nono
LicenceProprietary service under the EasyPost Master Customer Agreement. The official client libraries on GitHub are MIT, with the Go library under ISCnone
Tools exposednone10
Read-only variant documentednono
llms.txtyesyes
Last release2026-10-292026-03-06
Terms last updated2026-08-25no document linked
Privacy policy last updated2026-08-25no date given
Customer content may train modelsnot found in the textnot read yet
Terms restrict automated accessnot found in the textnot read yet
Terms restrict benchmarkingyesnot read yet
Terms or service can change without noticenot found in the textnot read yet
Arbitration or class-action waiveryesnot read yet
Popularity149 stars, 100k npm/wknone

How the scores have moved

Verdicts

EasyPost

Docs written for agents (llms.txt, a Markdown copy of each page, a JSON page index), seven official SDKs updated in late October 2026 and free test keys make the REST API easy to start on. No OpenAPI spec or REST idempotency keys were found, and every key has full account access. The MCP server now buys labels, with retry-safe buys.

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.

Before you call either

EasyPost

  1. Use a test API key while building. It buys no postage and contacts no carrier, and test tracking codes simulate each tracking status
  2. Don't blind-retry POST /shipments/:id/buy after a timeout. Retrieve the shipment first and check for postage_label, since the REST API has no idempotency key
  3. Send the API key as the HTTP Basic username with an empty password on the REST API, and as a Bearer production key on the MCP server
  4. On the MCP server, pass the approved price to buy_shipment and keep client approval on for buy, insure and refund; it runs in production mode only
  5. 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

Envia

  1. Leave ENVIA_ENVIRONMENT unset until the user confirms live shipping; the default is sandbox
  2. Ask the user before envia_create_label in production, since it spends the account balance
  3. Validate the postal code at geocodes.envia.com before quoting to avoid no-coverage errors
  4. Cancel an unwanted label before the carrier scans it to get the automatic refund
  5. Use a sandbox token with sandbox hosts and a production token with production hosts; they are not interchangeable

Questions

Which is better for AI agents, EasyPost or Envia?

EasyPost scores 57.4 (C) on agent readiness against Envia's 36.5 (F), and leads in 6 of 7 scored categories. Envia leads on schema & documentation.

Do EasyPost and Envia need an API key?

Both need an API key.

Can an agent call EasyPost and Envia without installing anything?

EasyPost has a hosted endpoint at https://api.easypost.com/v2. Envia runs on your own machine, with no hosted endpoint listed.

Other comparisons with EasyPost or Envia

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.