Meu Ecommerce
Server Details
Brazil's Correios for AI agents: shipping quotes (frete), tracking (rastreio) and labels (etiqueta).
- Status
- Healthy
- Uptime
- 99.2% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- meuecommerce/meuecommerce-mcp
- GitHub Stars
- 0
TDQS
Scored across 9 tools
The three diagnose_* tools clearly split by domain (contract config, label attempts, quotes) and their descriptions explicitly cross-reference each other with 'use X instead' guidance. The only real overlap risk is get_label_pdf vs recover_label_pdf, which differ mainly by identifier type (prepostagemId vs supportCode); the descriptions disambiguate this, but an agent holding both identifiers could still hesitate.
All names are verb-first snake_case (diagnose_*, generate_label, get_label_pdf, get_shipping_rates, link_label_support_ticket, recover_label_pdf, track_shipment). The diagnose_*/label/quote grouping is predictable and readable, with no camelCase or style mixing.
Nine tools is well within the ideal range and each one maps to a concrete step in the shipping workflow (rate, emit, retrieve PDF, recover, track, diagnose, link ticket). Nothing appears redundant or padded.
The quote → label → PDF → track → diagnose lifecycle is covered, including recovery paths and support-code threading. However, there is no cancel/void pré-postagem operation, no listing of labels, and contract issues can only be diagnosed—not remediated—which leaves a few workflow dead ends.
Available Tools
9 toolsdiagnose_contract_issueInvestigar configuração do contratoARead-onlyInspect
Consulta somente leitura das etapas de configuração do contrato dos Correios desta loja (entrada, autenticação, leitura de configurações, validação por cotação e gravação), para investigar por que o contrato não foi aceito. Com supportCode, filtra uma tentativa; sem ele, lista até 100 eventos dos últimos 90 dias. Não reautentica nem salva o contrato. Autenticação recusada não prova restrição contratual.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | ||
| supportCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces rather than contradicts them ('consulta somente leitura', 'Não reautentica nem salva o contrato'). It adds behavior the annotations cannot carry: a 100-event / 90-day retrieval cap and the explicit caution that an authentication refusal is not evidence of a contract restriction.
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?
Three sentences, no filler: scope first, then parameter behavior, then the two negative constraints. The parenthetical stage list is long but earns its place by telling the agent what the event stream contains.
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?
No output schema exists, yet the description compensates by enumerating the stages the events cover (entry, authentication, config read, quote validation, persistence) plus the volume and time window. Combined with the read-only guarantees and the interpretation caveat, an agent has enough to call the tool and read the result correctly; only the 'source' enum remains unexplained.
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 description coverage is 0%, so the description must carry the load. It does this well for supportCode (filters a single attempt; omitting it triggers the 100-event/90-day listing), but the 'source' enum (wix | mcp) is never mentioned, leaving one of two parameters entirely undefined for the caller.
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?
States a specific operation (read-only consultation of contract configuration stages) on a specific resource (the Correios contract of this store), with the enumerated stages spelling out exactly what is inspected. The framing 'investigar por que o contrato não foi aceito' cleanly separates it from the label- and quote-level siblings (diagnose_label_issue, diagnose_quote_issue) without needing to name them.
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?
Gives concrete usage routing on the parameter axis: with supportCode it narrows to a single attempt, without it returns up to 100 events from the last 90 days. It also sets an interpretation rule ('authentication refused does not prove a contractual restriction'), which steers the agent away from a wrong conclusion. It stops short of explicitly contrasting with the sibling diagnostic tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_label_issueInvestigar falha de etiquetaARead-onlyInspect
Consulta tentativas deste MCP na loja autenticada pelo código de atendimento ou lista as 10 mais recentes. Inclui Wix/Shopify somente por vínculo configurado no servidor; use source e orderId. Não trate ausência de registro como ausência de emissão. Não crie outra etiqueta para resolver um PDF pendente.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Origem da emissão. Apps exigem vínculo explícito configurado pelo operador. | |
| orderId | No | ID interno do pedido para filtrar tentativas dos apps. | |
| instanceId | No | Ignorado no servidor autenticado; a credencial determina a loja. | |
| supportCode | No | Código de atendimento. Sem código, lista até 10 tentativas recentes para identificar a correta. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false and openWorld=false, but the description adds meaningful behavioral context beyond them: results are scoped to the authenticated store, Wix/Shopify data appears only when a server-side link is configured, and knowledge is limited to this MCP's own attempts. The caveats about interpreting empty results and not creating duplicate labels are exactly the kind of operational nuance annotations cannot convey.
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?
Four short sentences, front-loaded with the primary lookup behavior and followed by important constraints. Every sentence carries actionable information; none is filler or tautological.
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?
With annotations covering safety and no output schema, the description still explains lookup modes, scoping constraints and interpretation caveats. It does not describe what an attempt record contains or how results are formatted, which is a minor gap for a diagnostic listing tool but not enough to prevent correct invocation.
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%, so the schema already documents all four parameters, including the default of listing 10 recent attempts when supportCode is omitted and that instanceId is ignored server-side. The description reinforces source and orderId usage but adds little syntax or format detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource: querying label-issuance attempts for the authenticated store, either by support code or by listing the 10 most recent. It distinguishes itself from generate_label and recover_label_pdf through the explicit warning not to create another label, though it does not name the sibling tools directly.
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?
Gives clear operational routing: use supportCode to look up by service code, otherwise list up to 10 recent attempts, and use source plus orderId for Wix/Shopify. It also states when not to act — do not interpret an absent record as an absent issuance and do not create another label to fix a pending PDF — which explicitly steers agents away from generate_label and related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_quote_issueInvestigar cotaçãoARead-onlyInspect
Consulta somente leitura das cotações recentes desta loja, para investigar preço inesperado, serviço ausente ou cotação vazia. Com o supportCode devolvido por get_shipping_rates, mostra aquela cotação; sem ele, lista até 20 cotações dos últimos 30 dias. Cada registro traz serviços e preços devolvidos, serviços excluídos com o motivo e, quando disponível, a memória de cálculo. Não refaz a cotação nem confirma o preço exibido no checkout; ausência de registro não prova que a cotação não ocorreu. source=wix exige vínculo do app configurado pelo operador.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | ||
| supportCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint=true and adds context annotations cannot carry: the 20-record / 30-day cap, the contents of each record (returned services and prices, excluded services with reason, calculation memory when available), and the operator-configured app link prerequisite for source=wix. The epistemic caveat about absent records is exactly the kind of behavioral nuance an agent needs.
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?
Four dense sentences, front-loaded with the read-only scope and purpose, then branching logic, then record contents, then limits and caveats. No filler and nothing repeated from the schema or annotations.
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?
With no output schema and two optional parameters, the description supplies everything needed: what is returned per record, how many records, over what window, what the tool will not do, and the auth precondition. An agent can decide and call correctly from this text alone.
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 description coverage is 0%, so the description must carry the load; it explains supportCode's provenance, format role (identifies one quote) and default behavior when omitted, plus the source=wix prerequisite. The other enum value (mcp) and the default for source are left implicit, which is the only remaining gap.
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?
States a specific verb and resource (read-only lookup of this store's recent quotes) and names the concrete investigation goals it serves: unexpected price, missing service, empty quote. It is clearly separable from sibling diagnose_contract_issue / diagnose_label_issue and from get_shipping_rates, which is referenced as the origin of supportCode.
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?
Gives explicit routing: with a supportCode from get_shipping_rates it shows that single quote; without one it lists up to 20 quotes from the last 30 days. It also states the exclusion conditions – it does not re-run the quote or confirm the checkout price, and a missing record does not prove the quote never happened.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_labelGerar etiqueta (Correios)ADestructiveInspect
Create a Correios pré-postagem and generate its shipping label (etiqueta) as a PDF. Returns the tracking code and a clickable link to the label PDF — share that link with the merchant/customer in chat so they can open/print it (it works even if Correios is still rendering). Supply invoiceKey for NF-e or declaredItems for DC-e. Requires the store's own authenticated Correios contract. Never use this tool to retry an uncertain emission or recover a PDF; use diagnose_label_issue and recover_label_pdf when available.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Remetente (sender / store). | |
| recipient | Yes | Destinatário (recipient / customer). | |
| dimensions | No | Package dimensions in centimeters. Optional: when omitted, the store's own registered packaging box is used if it has exactly one; ask the merchant for dimensions when the store has none or more than one box registered (the call fails with reason dimensions_required_no_box / dimensions_required_multiple_boxes). | |
| instanceId | No | Merchant/store id. Ignored on authenticated servers (the merchant comes from the API key); used only on local/unauthenticated servers. | |
| invoiceKey | No | Complete NF-e access key (44 digits). Spaces, dots, hyphens and slashes are ignored. When supplied, emits with NF-e instead of DC-e; never invent or complete missing digits. | |
| serviceCode | Yes | Correios product code, e.g. '03220' (SEDEX) or '03298' (PAC). | |
| weightGrams | Yes | Package weight in grams. | |
| objectFormat | No | Object format: '1' envelope, '2' package/box (default), '3' roll. | |
| declaredItems | No | Declaração de conteúdo — required when invoiceKey is omitted (at least one item). Ignored when a valid NF-e is supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Why the label wasn't (fully) produced. |
| status | No | Correios pré-postagem status. |
| actionUrl | No | When set (e.g. reason=subscription_required), send the merchant here to finish setup. |
| labelPdfUrl | No | Clickable link to download the label PDF — share this with the merchant/customer in chat. Works even before the PDF finishes rendering (it waits and streams it once ready). |
| supportCode | No | Código de atendimento para diagnose_label_issue. |
| trackingCode | No | Código de rastreamento, once the pré-postagem exists. |
| prepostagemId | No | Correios pré-postagem id. Pass it to get_label_pdf to fetch the PDF later if it wasn't ready. |
| labelPdfBase64 | No | Base64-encoded label PDF, once ready. |
| recoveryAction | No | |
| journalUnavailable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/openWorld/non-idempotent, and the description adds materially: the label link works even while Correios is still rendering (so the agent should share it rather than poll), and the store must have its own authenticated contract. The anti-retry warning is exactly the kind of safety context annotations cannot express.
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?
Four sentences, front-loaded with what it creates and what it returns, then the sharing instruction, then the conditional params, then the anti-pattern. No sentence is filler.
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?
For a destructive, non-idempotent, open-world mutation with 9 params, nested objects and an output schema, the description covers purpose, return contract, sharing behavior, prerequisites and failure alternatives. Nothing an agent needs to invoke it correctly is missing.
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 description coverage is 100%, so the schema already documents every parameter including the dimensions-fallback and NF-e/DC-e rules. The description's 'Supply invoiceKey for NF-e or declaredItems for DC-e' restates what the schema already states, so it adds little beyond the baseline.
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?
Specific verb+resource ('Create a Correios pré-postagem and generate its shipping label as a PDF') plus the concrete artifact returned (tracking code + PDF link). It explicitly names the sibling tools it is not (diagnose_label_issue, recover_label_pdf), so an agent can distinguish it without opening any schema.
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?
Explicit when-not guidance: 'Never use this tool to retry an uncertain emission or recover a PDF; use diagnose_label_issue and recover_label_pdf when available.' It also gives a conditional branch for invoiceKey vs declaredItems and a prerequisite (store's authenticated Correios contract).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_label_pdfBaixar etiqueta (Correios)AInspect
Get a fresh download link for the PDF of an already-created Correios pré-postagem by its id. Use it when generate_label's link reason was label_pdf_timeout and you want a new link to hand the merchant/customer, or to re-check status later. Requires the prepostagemId returned by generate_label; if you only have the supportCode of a label attempt, use recover_label_pdf instead. Never creates a new pré-postagem. Requires the store's own authenticated Correios contract.
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | No | Merchant/store id. Ignored on authenticated servers (the merchant comes from the API key); used only on local/unauthenticated servers. | |
| prepostagemId | Yes | Correios pré-postagem id, as returned by generate_label in the `prepostagemId` field. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Why the PDF wasn't returned. |
| status | No | Correios status/business message, when the label isn't printable. |
| actionUrl | No | When set (e.g. reason=subscription_required), send the merchant here to finish setup. |
| labelPdfUrl | No | Clickable link to download the label PDF — share this with the merchant/customer in chat. |
| prepostagemId | No | The pré-postagem id the PDF belongs to. |
| labelPdfBase64 | No | Base64-encoded label PDF, once ready. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the non-destructive/no-creation guarantee, the authentication prerequisite ('Requires the store's own authenticated Correios contract'), and the provenance requirement for prepostagemId. Minor gaps remain around link expiry and failure modes (e.g. what error is returned if the pré-postagem exists but the PDF is not yet ready).
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?
Front-loaded with the action, then trigger conditions, then the alternative route, then the constraint. Every sentence carries either a use case, an exclusion, or a prerequisite; nothing is restated from the title or schema.
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?
Output schema exists so return values need no explanation, and parameters are fully covered by the schema. The description covers usage routing and prerequisites for a simple 2-param read tool. Only link lifetime/short-lived-ness of a 'fresh' download link is left implicit.
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%, so the baseline is 3, but the description adds real routing semantics: prepostagemId is the id returned by generate_label and must not be confused with the supportCode of a label attempt. That cross-field disambiguation is value beyond the schema text.
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?
States a specific verb+resource: 'Get a fresh download link for the PDF of an already-created Correios pré-postagem by its id.' It also distinguishes itself from siblings by name, explicitly excluding creation ('Never creates a new pré-postagem') and pointing to recover_label_pdf and generate_label for other cases.
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?
Gives concrete when-to-use triggers ('when generate_label's link reason was label_pdf_timeout', 'to re-check status later') and an explicit alternative with its selecting condition ('if you only have the supportCode ... use recover_label_pdf instead'). The negative case is stated too: it never creates a new pré-postagem.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipping_ratesCalcular frete (Correios)AInspect
Calculate Brazilian Correios shipping rates (SEDEX, PAC, ...) for a cart, from the authenticated store's origin CEP and enabled services. Returns each enabled service with price (BRL) and delivery estimate, plus free shipping when eligible. Every call returns a supportCode: pass it to diagnose_quote_issue to investigate that quote later instead of quoting again. Calls are subject to the store's plan limits; when setup or the plan is missing, reason and actionUrl say what the merchant must finish.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Cart line items. | |
| requestId | No | Idempotency/correlation id. Auto-generated when omitted. | |
| instanceId | No | Merchant/store id. Ignored on authenticated servers (the merchant comes from the API key); used only on local/unauthenticated servers. | |
| destinationCep | Yes | Destination Brazilian postal code (CEP). 8 digits; dashes/spaces are ignored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rates | Yes | |
| reason | No | Why no rates were returned, when the list is empty. |
| actionUrl | No | When set (e.g. reason=subscription_required), send the merchant here to finish setup. |
| supportCode | No | |
| excludedServices | No | Services the store has enabled but that didn't come back in `rates` for this cart (e.g. the package exceeds that service's size/weight limit). Share this with the merchant/customer instead of silently omitting the service. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the safety/behavior burden and does well: it discloses that calls are subject to plan limits, that a missing setup/plan yields `reason` and `actionUrl`, and that every call returns a `supportCode`. Some of the return description (price in BRL, delivery estimate) duplicates what the output schema already carries, which keeps it from a 5.
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?
Four sentences, front-loaded with purpose, then return shape, then the supportCode workflow, then failure/limits behavior. Every sentence carries information; only the return-value clause slightly overlaps the output schema.
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?
For a no-annotation, output-schema-backed quoting tool with full schema coverage, this covers purpose, implicit inputs, return contents, plan/quota constraints, degraded-setup behavior, and the correct follow-up tool. An agent has everything needed to call it and to handle the failure path.
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%, so the baseline is 3. The description still adds genuine meaning beyond per-field docs: origin CEP and service selection are implicit (store config + enabled services, not parameters), and pricing is tied to cart line items with BRL unit prices. It doesn't restate `destinationCep` format or `requestId`/`instanceId` semantics, but the schema covers those.
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?
States a specific verb and resource ('Calculate Brazilian Correios shipping rates (SEDEX, PAC...) for a cart') and pins the scope to the authenticated store's origin CEP and enabled services. That verb+resource pairing cleanly separates it from every sibling (generate_label, diagnose_*, track_shipment) without needing to open a schema.
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?
It explicitly routes a follow-up case to a sibling: 'pass it to diagnose_quote_issue to investigate that quote later instead of quoting again', which tells the agent when not to re-quote. What's missing are boundaries for the primary call itself (e.g., when to skip a quote in favor of an existing one, or whether it can be called before label generation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_label_support_ticketVincular referência de atendimentoAInspect
Associa uma referência de chamado à tentativa da loja autorizada. Não cria chamado nem envia mensagens externas.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Origem da emissão. Apps exigem vínculo explícito configurado pelo operador. | |
| ticketRef | Yes | Referência do chamado, sem texto livre ou dados pessoais. Não envia mensagem ao sistema de atendimento. | |
| instanceId | No | Ignorado no servidor autenticado; a credencial determina a loja. | |
| supportCode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description adds genuinely useful behavioral context that the annotations cannot express, namely that this does not open a ticket nor send anything to an external support system. It does not say what happens if the reference is already linked (idempotency) or what the response contains, which keeps it from a 5.
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?
Two short sentences, front-loaded with the action and followed by the constraints; no filler. It is perhaps overly terse given the mutation semantics, but nothing is wasted.
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?
For a write-ish link operation with no output schema, the description covers safety and non-side-effects but says nothing about the success result, duplicate-link behavior, or failure modes (invalid supportCode, unconfigured source). Adequate but with clear gaps.
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 75%, so most parameters are documented in the schema (source, ticketRef, instanceId semantics are all explained there). The description adds no parameter-level meaning, and supportCode has no schema description at all — the description does not compensate for that gap. Baseline 3 applies.
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?
States a specific verb + resource: associates a ticket reference with the authorized store's attempt, and clarifies the scope with two negative statements (does not create a ticket, does not send external messages). It does not name or contrast any sibling tool, but the action is distinct enough from diagnose_*/generate_label/track_shipment that confusion is unlikely.
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 exclusions ('Não cria chamado nem envia mensagens externas') implicitly tell the agent this is a non-dispatch bookkeeping step, but there is no explicit 'use this when...' condition and no reference to alternatives (e.g. diagnose_label_issue). Usage must be inferred from the negatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recover_label_pdfRecuperar PDF de etiqueta existenteAInspect
Recupera o PDF de uma pré-postagem já confirmada, a partir do supportCode da tentativa devolvido por generate_label. Use quando não tiver o prepostagemId ou não souber se a emissão terminou; com o prepostagemId em mãos, use get_label_pdf. Não cria etiqueta nem refaz emissão e cobre só emissões feitas por este MCP. Mantém controles de acesso e limites do download existente.
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | No | Ignorado no servidor autenticado; a credencial determina a loja. | |
| supportCode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Why the PDF wasn't returned. |
| status | No | Correios status/business message, when the label isn't printable. |
| actionUrl | No | When set (e.g. reason=subscription_required), send the merchant here to finish setup. |
| labelPdfUrl | No | Clickable link to download the label PDF — share this with the merchant/customer in chat. |
| supportCode | No | |
| prepostagemId | No | The pré-postagem id the PDF belongs to. |
| labelPdfBase64 | No | Base64-encoded label PDF, once ready. |
| journalUnavailable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say non-destructive, open-world, non-read-only; the description adds real substance on top — it discloses that access controls and existing download rate limits apply, and that only emissions produced through this MCP are covered. It does not explain failure behavior when emission is still pending or the supportCode is unknown, but nothing it claims conflicts with the 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?
Dense but zero filler: purpose and exclusion come first, then the routing rule to the sibling, then scope and limits. Every clause carries a distinct, actionable constraint.
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?
With an output schema present, return values need no explanation, and the definition covers scope, credentials-based store resolution, and rate limits. The main remaining gap is what an agent should do on failure (e.g., emission not yet finished), which is implied but not spelled out.
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 50%: instanceId is documented as ignored server-side, but supportCode has only format/pattern, no prose. The description compensates by explaining that supportCode is the attempt identifier returned by generate_label, which is exactly the semantic an agent needs to source the value correctly.
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?
States a specific verb and resource (recover the PDF of an already-confirmed pre-postage) keyed on supportCode, and immediately distinguishes itself from get_label_pdf and generate_label. An agent can tell which of the three siblings applies without opening any schema.
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?
Gives an explicit selection rule: use this when you lack prepostagemId or don't know whether emission finished; use get_label_pdf when you have prepostagemId. It also rules out two adjacent intents (creating a label, re-running emission).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_shipmentRastrear objeto (Correios)AInspect
Track Brazilian Correios objects by tracking code (e.g. AA123456789BR). Returns each code's full event history plus its current status and whether it was delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | Correios tracking codes, e.g. "AA123456789BR". Spaces are ignored; up to 50 per call. | |
| instanceId | No | Merchant/store id. Ignored on authenticated servers (the merchant comes from the API key); used only on local/unauthenticated servers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Why no lookup could be performed, when results is empty. |
| results | Yes | |
| actionUrl | No | When set (e.g. reason=subscription_required), send the merchant here to finish setup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose that it returns full event history, current status, and delivered status. It does not mention authentication behavior, rate limits, error handling for invalid codes, or whether partial results are possible.
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 two front-loaded sentences with no wasted text. It states the action first and then what is returned, making it easy for an agent to parse.
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 two-parameter read-only nature of the tool, full schema coverage, and the existence of an output schema, the description is nearly complete. It omits only secondary behavioral details such as auth context and error/rate-limit behavior.
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%, so both parameters are already documented in the input schema, including example format and the 50-code limit. The description repeats the tracking-code example but adds no meaning beyond the schema for the codes or instanceId parameters.
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 gives a specific verb and resource: 'Track Brazilian Correios objects by tracking code,' with an example code. This clearly distinguishes it from sibling tools such as generate_label, get_shipping_rates, and diagnose_* tools.
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 intended use is clear from 'Track ... by tracking code,' and no alternative tracking tool exists among the siblings. However, it does not explicitly state when not to use it or whether there are prerequisites such as having generated a label first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- Changed
diagnose_contract_issue2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
diagnose_label_issue2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
diagnose_quote_issue2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
generate_label24 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / declaredItems / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / declaredItems / items / properties / quantidade / maximumAdded value: +9007199254740991 - removed
Input schema / properties / dimensions / additionalPropertiesRemoved value: -false - removed
Input schema / properties / recipient / additionalPropertiesRemoved value: -false - removed
Input schema / properties / recipient / properties / cpfCnpj / $refRemoved value: -"#/properties/sender/properties/cpfCnpj" - added
Input schema / properties / recipient / properties / cpfCnpj / descriptionAdded value: +"CPF or CNPJ, digits only." - added
Input schema / properties / recipient / properties / cpfCnpj / typeAdded value: +"string" - removed
Input schema / properties / recipient / properties / email / $refRemoved value: -"#/properties/sender/properties/email" - added
Input schema / properties / recipient / properties / email / descriptionAdded value: +"Email address." - added
Input schema / properties / recipient / properties / email / typeAdded value: +"string" - removed
Input schema / properties / recipient / properties / endereco / $refRemoved value: -"#/properties/sender/properties/endereco" - added
Input schema / properties / recipient / properties / endereco / propertiesAdded value: +{ + "bairro": { + "description": "Neighborhood.", + "type": "string" + }, + "cep": { + "description": "CEP (8 digits; dashes/spaces ignored).", + "type": "string" + }, + "cidade": { + "description": "City.", + "type": "string" + }, + "complemento": { + "description": "Address complement (apt, etc.).", + "type": "string" + }, + "logradouro": { + "description": "Street name.", + "type": "string" + }, + "numero": { + "description": "Street number.", + "type": "string" + }, + "uf": { + "description": "Two-letter state, e.g. 'SP'.", + "maxLength": 2, + "minLength": 2, + "type": "string" + } +} - added
Input schema / properties / recipient / properties / endereco / requiredAdded value: +[ + "cep", + "logradouro", + "numero", + "bairro", + "cidade", + "uf" +] - added
Input schema / properties / recipient / properties / endereco / typeAdded value: +"object" - removed
Input schema / properties / recipient / properties / nome / $refRemoved value: -"#/properties/sender/properties/nome" - added
Input schema / properties / recipient / properties / nome / descriptionAdded value: +"Full name or company name." - added
Input schema / properties / recipient / properties / nome / typeAdded value: +"string" - removed
Input schema / properties / recipient / properties / telefone / $refRemoved value: -"#/properties/sender/properties/telefone" - added
Input schema / properties / recipient / properties / telefone / descriptionAdded value: +"Phone number." - added
Input schema / properties / recipient / properties / telefone / typeAdded value: +"string" - removed
Input schema / properties / sender / additionalPropertiesRemoved value: -false - removed
Input schema / properties / sender / properties / endereco / additionalPropertiesRemoved value: -false - added
Output schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
get_label_pdf1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_shipping_rates5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / items / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / items / items / properties / dimensionsCm / additionalPropertiesRemoved value: -false - added
Input schema / properties / items / items / properties / quantity / maximumAdded value: +9007199254740991 - added
Output schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
link_label_support_ticket2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
recover_label_pdf3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Output schema / properties / supportCode / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
track_shipment1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
9 tool updates
- First observed
diagnose_contract_issue - First observed
diagnose_label_issue - First observed
diagnose_quote_issue - First observed
generate_label - First observed
get_label_pdf - First observed
get_shipping_rates - First observed
link_label_support_ticket - First observed
recover_label_pdf - First observed
track_shipment
Publisher details
- Operator
- Meu Ecommerce
- Operator website
- https://www.meuecommerce.com.br
- Vendor relationship
- First-party
- Documentation
- https://dev.meuecommerce.com.br/docs/mcp
- Trust center
- Not available
- Restrictions
- Requires a Meu Ecommerce store with an active plan; shipping labels require the merchant's own Correios contract; Brazil only.
Related MCP Connectors
Latin America shipping for AI agents via Envia: compare carriers, buy labels, track, cancel.
Multi-carrier shipping for AI agents: compare rates, buy labels, track packages, validate addresses
Correios: Rastreamento, official-source lookup. Platform-hosted, pay per query with prepaid credit.
India shipping for AI agents: Shiprocket courier serviceability, create orders, track AWB.
Related MCP Servers
- FlicenseBqualityDmaintenanceQuery a variety of data from Brasil resources seamlessly. Access information on postal codes, area codes, banks, holidays, taxes, and more through a unified interface. Enhance your AI agents and applications with rich and updated data from BrasilAPI effortlessly.67-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to track packages, rate and create shipments, manage pickups and customs documentation, and perform international shipping logistics checks through natural language.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to buy US shipping labels (USPS, UPS, FedEx) with automatic cheapest-rate selection, track parcels, and refund unused labels via the EasyPost API. Stateless, bring-your-own API key, free test keys available.MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to look up Brazilian postal codes and standardized Correios addresses from a given address through natural language, with read-only access and no credentials required.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.