LATAM Logistics (Envia: rates, labels, tracking, cancel across MX/CO/CL/BR/GT/AR/US/CA/ES)
Server Details
Latin America shipping for AI agents via Envia: compare carriers, buy labels, track, cancel.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 4 of 4 tools scored.
Each tool has a clearly distinct purpose: quote_rates for rate comparison, create_shipment for label purchase, cancel_shipment for cancellation/refund, and query_tracking for status updates. No functional overlap.
All tool names follow the verb_noun pattern (cancel_shipment, create_shipment, query_tracking, quote_rates) with consistent snake_case, making the API predictable.
Four tools cover the core shipping workflow—rates, create, cancel, track—without unnecessary clutter. The scope is well-defined and appropriate for the domain.
The tool set provides complete lifecycle coverage for shipping labels: quoting, purchasing, canceling, and tracking. No obvious gaps for the stated purpose of a logistics API.
Available Tools
4 toolscancel_shipmentADestructiveIdempotentInspect
Cancel a shipment / label and request a carrier refund. Give the carrier code and the tracking number (from create_shipment). Only works while the parcel is unscanned and undelivered; refund timing depends on carrier policy. Returns whether the label balance was returned. Credential headers (set once in your MCP client, per-request, never stored): x-envia-token (your Envia API token; sandbox tokens are self-service at https://ship-test.envia.com, production tokens from your live Envia account — sandbox and production tokens are SEPARATE) + x-envia-env (sandbox = default, no real shipping / no charge; production = real labels & real money). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
| Name | Required | Description | Default |
|---|---|---|---|
| carrier | Yes | Carrier code of the label to cancel (e.g. "fedex", "dhl", "estafeta"). Required. | |
| tracking_number | Yes | The tracking number of the label to cancel (from create_shipment). Required. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds beyond annotations: notes that refund is conditional on carrier policy, returns whether label balance was returned, and requires parcel to be unscanned/undelivered. Annotations already mark destructiveHint=true, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with action first. Some length from credential headers, but necessary for setup. Not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, inputs, conditions, return value, and credentials. Lacks error handling or edge cases, but adequate for a simple tool with annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate parameter descriptions. Description restates inputs but adds little new beyond 'from create_shipment'. At baseline 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Cancel a shipment / label and request a carrier refund' with specific inputs (carrier code, tracking number). Distinct from siblings: create_shipment, query_tracking, quote_rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: works only while parcel is unscanned/undelivered, refund timing depends on carrier. Also includes credential setup. Lacks explicit exclusion of alternatives but is otherwise thorough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shipmentAInspect
Buy a shipping label for a specific carrier + service (from quote_rates) — returns the tracking number and a printable label URL (PDF). Give the same origin/destination addresses + country + packages as quote_rates, plus carrier and service chosen from a quote_rates option. delivery/customs handled by Envia. A production token (x-envia-env=production) buys a REAL label and charges your Envia balance; sandbox (default) does not. The owner policy gate checks the declared shipment value BEFORE buying. Credential headers (set once in your MCP client, per-request, never stored): x-envia-token (your Envia API token; sandbox tokens are self-service at https://ship-test.envia.com, production tokens from your live Envia account — sandbox and production tokens are SEPARATE) + x-envia-env (sandbox = default, no real shipping / no charge; production = real labels & real money). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
| Name | Required | Description | Default |
|---|---|---|---|
| carrier | Yes | Carrier code to buy, from a quote_rates result (its "carrier"), e.g. "fedex", "dhl", "estafeta", "chilexpress", "correios". Required. | |
| country | No | Convenience for a DOMESTIC shipment: sets both the origin and destination country. 2-letter ISO code. Supported: MX=Mexico, CO=Colombia, CL=Chile, BR=Brazil, GT=Guatemala, AR=Argentina, US=United States, CA=Canada, ES=Spain. For a cross-border shipment use origin_country + destination_country instead. | |
| service | Yes | Carrier service code to buy, from the same quote_rates option (its "service"). Required. | |
| currency | No | Label currency (ISO). Optional — defaults to the destination country currency. | |
| packages | Yes | Parcels to ship. At least one. Each: { weight (required, KG), length/width/height (cm — recommended for accurate rates), type? (box|envelope|pallet, default box), content? (what is inside), declaredValue? (goods value in the shipment currency — drives insurance/customs and the owner policy gate), amount? (number of identical packages, default 1) }. | |
| reference | No | Your own order reference (any string). Optional. | |
| origin_city | No | Origin (ship-from) city. Required. NOTE: for Colombia (CO) this must be the 8-digit DANE municipal code, not the city name. | |
| origin_name | No | Origin (ship-from) contact full name. Required. | |
| origin_email | No | Origin (ship-from) email. Optional. | |
| origin_phone | No | Origin (ship-from) contact phone. Required. | |
| origin_state | No | Origin (ship-from) state / province code (2-3 chars). Required. | |
| print_format | No | Label file format: PDF (default) | PNG | ZPL | ZPLII | EPL. | |
| origin_number | No | Origin (ship-from) street number (if not already in street). Optional. | |
| origin_street | No | Origin (ship-from) street address (street + number). Required. | |
| origin_country | No | Origin (ship-from) country ISO code. Provide this + destination_country for cross-border, or just `country` for domestic. | |
| origin_district | No | Origin (ship-from) district / neighbourhood (colonia / bairro). Optional. | |
| destination_city | No | Destination (ship-to) city. Required. NOTE: for Colombia (CO) this must be the 8-digit DANE municipal code, not the city name. | |
| destination_name | No | Destination (ship-to) contact full name. Required. | |
| origin_reference | No | Origin (ship-from) delivery reference / notes (landmark, floor). Optional. | |
| destination_email | No | Destination (ship-to) email. Optional. | |
| destination_phone | No | Destination (ship-to) contact phone. Required. | |
| destination_state | No | Destination (ship-to) state / province code (2-3 chars). Required. | |
| destination_number | No | Destination (ship-to) street number (if not already in street). Optional. | |
| destination_street | No | Destination (ship-to) street address (street + number). Required. | |
| origin_postal_code | No | Origin (ship-from) postal code. Required. Formats -> MX: 5-digit codigo postal, e.g. 01000 | CO: 6-digit postal code. IMPORTANT: for Colombia the address city field must be the 8-digit DANE municipal code (Envia requirement), not the city name. | CL: 7-digit postal code, e.g. 8320000 | BR: 8-digit CEP, format NNNNN-NNN, e.g. 01310-100 | GT: 5-digit postal code, e.g. 01001 | AR: 4-digit code or CPA (letter + 4 digits + 3 letters), e.g. C1425 / C1425DFA | US: 5-digit ZIP, e.g. 90001 | CA: 6-char postal code, format A1A1A1, e.g. M5V2T6 | ES: 5-digit postal code, e.g. 28001 | |
| destination_country | No | Destination (ship-to) country ISO code. Provide this + origin_country for cross-border, or just `country` for domestic. | |
| destination_district | No | Destination (ship-to) district / neighbourhood (colonia / bairro). Optional. | |
| destination_reference | No | Destination (ship-to) delivery reference / notes (landmark, floor). Optional. | |
| destination_postal_code | No | Destination (ship-to) postal code. Required. Formats -> MX: 5-digit codigo postal, e.g. 01000 | CO: 6-digit postal code. IMPORTANT: for Colombia the address city field must be the 8-digit DANE municipal code (Envia requirement), not the city name. | CL: 7-digit postal code, e.g. 8320000 | BR: 8-digit CEP, format NNNNN-NNN, e.g. 01310-100 | GT: 5-digit postal code, e.g. 01001 | AR: 4-digit code or CPA (letter + 4 digits + 3 letters), e.g. C1425 / C1425DFA | US: 5-digit ZIP, e.g. 90001 | CA: 6-char postal code, format A1A1A1, e.g. M5V2T6 | ES: 5-digit postal code, e.g. 28001 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, but the description adds important behavioral context: a production token buys a real label and charges your Envia balance, sandbox does not; the owner policy gate checks declared shipment value before buying; credential headers are set per-request and never stored. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise paragraph that front-loads the core purpose. No wasted sentences, though the credentials section could be slightly more structured. It is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (29 parameters, 3 required, no output schema), the description covers the tool's purpose, linkage to a sibling tool, environment differences, credential requirements, and policy gates. It does not detail error handling or response format beyond the initial sentence, but that is acceptable as the output is described succinctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 29 parameters described in the schema). The description adds cross-tool semantics by instructing to reuse parameters from quote_rates and provides format examples for postal codes. This linkage and the environment/credential context add value beyond the schema, justifying a score above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Buy a shipping label'), the resource ('for a specific carrier + service from quote_rates'), and the outputs ('tracking number and a printable label URL (PDF)'). It distinguishes from siblings like quote_rates (which provides rate options) and other tools like cancel_shipment or query_tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it tells the agent to use the same origin/destination addresses and packages as quote_rates, and to select carrier and service from a quote_rates option. It also explains environment differences (sandbox vs production) and mentions credential headers and owner policy gates. It does not explicitly state when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_trackingARead-onlyInspect
Track one or more shipments by their carrier tracking number(s). Returns, per tracking number, a UNIFIED status enum [CREATED | PICKED_UP | IN_TRANSIT | OUT_FOR_DELIVERY | DELIVERED | CANCELED | RETURNED | EXCEPTION | PENDING | UNKNOWN] with a plain-English hint, plus the raw Envia passthrough (status history / events). Non-terminal statuses carry next_steps. Batch supported. Safe to call anytime. NOTE: a tracking number not yet in Envia returns a readable "no shipments found" error. Credential headers (set once in your MCP client, per-request, never stored): x-envia-token (your Envia API token; sandbox tokens are self-service at https://ship-test.envia.com, production tokens from your live Envia account — sandbox and production tokens are SEPARATE) + x-envia-env (sandbox = default, no real shipping / no charge; production = real labels & real money). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
| Name | Required | Description | Default |
|---|---|---|---|
| tracking_number | No | A single carrier tracking number to track. | |
| tracking_numbers | No | Multiple tracking numbers to track in one call. Provide this OR tracking_number. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds rich behavioral details: returns unified status enum, plain-English hint, raw passthrough, next_steps, and error behavior for missing numbers. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy due to credential details, but it is well-structured: purpose first, then output format, then notes. The front-loaded purpose aids quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter schema and no output schema, the description adequately explains the return value and credential requirements. It covers error handling and batch support, making it sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description adds value by clarifying the mutual exclusivity of tracking_number and tracking_numbers and confirming batch support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Track one or more shipments by their carrier tracking number(s).' It distinguishes from sibling tools (cancel_shipment, create_shipment, quote_rates) as a read-only query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Safe to call anytime' and describes batch support and error handling. It does not explicitly state when not to use, but the context of siblings and the clear purpose imply appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_ratesARead-onlyInspect
Compare shipping rates across every available carrier for a route + parcels, in one call — the Envia killer feature (AI picks the cheapest carrier for the merchant). Give the origin and destination addresses, the country (domestic) or origin_country + destination_country (cross-border), and the packages (weight in KG, dimensions in cm). Returns each carrier + service with its total price, currency and delivery estimate, and flags the cheapest. Read-only: quotes only, buys nothing and spends nothing. Credential headers (set once in your MCP client, per-request, never stored): x-envia-token (your Envia API token; sandbox tokens are self-service at https://ship-test.envia.com, production tokens from your live Envia account — sandbox and production tokens are SEPARATE) + x-envia-env (sandbox = default, no real shipping / no charge; production = real labels & real money). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
| Name | Required | Description | Default |
|---|---|---|---|
| carrier | No | Restrict the quote to one carrier code (e.g. "fedex", "dhl", "estafeta"). Optional — omit to compare all available carriers. | |
| country | No | Convenience for a DOMESTIC shipment: sets both the origin and destination country. 2-letter ISO code. Supported: MX=Mexico, CO=Colombia, CL=Chile, BR=Brazil, GT=Guatemala, AR=Argentina, US=United States, CA=Canada, ES=Spain. For a cross-border shipment use origin_country + destination_country instead. | |
| currency | No | Quote currency (ISO, e.g. MXN, COP, CLP, BRL, ARS, GTQ, USD, CAD, EUR). Optional — defaults to the destination country currency. | |
| packages | Yes | Parcels to ship. At least one. Each: { weight (required, KG), length/width/height (cm — recommended for accurate rates), type? (box|envelope|pallet, default box), content? (what is inside), declaredValue? (goods value in the shipment currency — drives insurance/customs and the owner policy gate), amount? (number of identical packages, default 1) }. | |
| origin_city | No | Origin (ship-from) city. Required. NOTE: for Colombia (CO) this must be the 8-digit DANE municipal code, not the city name. | |
| origin_name | No | Origin (ship-from) contact full name. Required. | |
| origin_email | No | Origin (ship-from) email. Optional. | |
| origin_phone | No | Origin (ship-from) contact phone. Required. | |
| origin_state | No | Origin (ship-from) state / province code (2-3 chars). Required. | |
| origin_number | No | Origin (ship-from) street number (if not already in street). Optional. | |
| origin_street | No | Origin (ship-from) street address (street + number). Required. | |
| origin_country | No | Origin (ship-from) country ISO code. Provide this + destination_country for cross-border, or just `country` for domestic. | |
| origin_district | No | Origin (ship-from) district / neighbourhood (colonia / bairro). Optional. | |
| destination_city | No | Destination (ship-to) city. Required. NOTE: for Colombia (CO) this must be the 8-digit DANE municipal code, not the city name. | |
| destination_name | No | Destination (ship-to) contact full name. Required. | |
| origin_reference | No | Origin (ship-from) delivery reference / notes (landmark, floor). Optional. | |
| destination_email | No | Destination (ship-to) email. Optional. | |
| destination_phone | No | Destination (ship-to) contact phone. Required. | |
| destination_state | No | Destination (ship-to) state / province code (2-3 chars). Required. | |
| destination_number | No | Destination (ship-to) street number (if not already in street). Optional. | |
| destination_street | No | Destination (ship-to) street address (street + number). Required. | |
| origin_postal_code | No | Origin (ship-from) postal code. Required. Formats -> MX: 5-digit codigo postal, e.g. 01000 | CO: 6-digit postal code. IMPORTANT: for Colombia the address city field must be the 8-digit DANE municipal code (Envia requirement), not the city name. | CL: 7-digit postal code, e.g. 8320000 | BR: 8-digit CEP, format NNNNN-NNN, e.g. 01310-100 | GT: 5-digit postal code, e.g. 01001 | AR: 4-digit code or CPA (letter + 4 digits + 3 letters), e.g. C1425 / C1425DFA | US: 5-digit ZIP, e.g. 90001 | CA: 6-char postal code, format A1A1A1, e.g. M5V2T6 | ES: 5-digit postal code, e.g. 28001 | |
| destination_country | No | Destination (ship-to) country ISO code. Provide this + origin_country for cross-border, or just `country` for domestic. | |
| destination_district | No | Destination (ship-to) district / neighbourhood (colonia / bairro). Optional. | |
| destination_reference | No | Destination (ship-to) delivery reference / notes (landmark, floor). Optional. | |
| destination_postal_code | No | Destination (ship-to) postal code. Required. Formats -> MX: 5-digit codigo postal, e.g. 01000 | CO: 6-digit postal code. IMPORTANT: for Colombia the address city field must be the 8-digit DANE municipal code (Envia requirement), not the city name. | CL: 7-digit postal code, e.g. 8320000 | BR: 8-digit CEP, format NNNNN-NNN, e.g. 01310-100 | GT: 5-digit postal code, e.g. 01001 | AR: 4-digit code or CPA (letter + 4 digits + 3 letters), e.g. C1425 / C1425DFA | US: 5-digit ZIP, e.g. 90001 | CA: 6-char postal code, format A1A1A1, e.g. M5V2T6 | ES: 5-digit postal code, e.g. 28001 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint; the description reinforces that the tool is read-only, buys nothing, and spends no money. It also details credential headers and environment modes (sandbox vs. production), adding transparency beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that front-loads the main purpose but becomes somewhat lengthy with repeated credential details. It is well-structured but could be slightly more concise by avoiding redundancy (e.g., credential headers mentioned twice). Still, every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 26 parameters and no output schema, the description provides a comprehensive overview: it explains what the tool returns (carrier, service, price, currency, delivery estimate, cheapest flag), covers credential headers and environment settings, and gives essential usage hints. It is complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by summarizing parameter groups (origin/destination addresses, packages with units) and including critical notes like Colombian DANE codes and postal format examples, which are not in the schema descriptions. However, the schema already has detailed descriptions, so the marginal gain is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it compares shipping rates across carriers for a route, distinguishing it from siblings like create_shipment or query_tracking. It specifies the verb 'compare' and the resource 'rates', and highlights that it's read-only and buys nothing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool (comparing rates), what it returns (cheapest flagged), and that it does not make purchases. It also provides credential setup instructions and hints at the difference between domestic and cross-border usage, giving clear context for use vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!