Skip to main content
Glama

Server Details

Mail real paper letters (standard, registered, registered with receipt) worldwide. No account.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool occupies a distinct stage of the mailing workflow: coverage lookup, quoting, sending/payment, and status tracking. The descriptions explicitly tell the agent to call get_coverage before quote_letter, and quote_letter vs send_letter is clearly separated by free/no-commitment versus creating a letter and payment link.

Naming Consistency5/5

All names use consistent snake_case with a leading verb and a noun target: get_coverage, get_letter_status, quote_letter, send_letter. The verbs vary appropriately by action while remaining predictable.

Tool Count5/5

Four tools is well-scoped for a narrow physical-letter mailing service: check coverage, get a quote, create/send the letter, and track status. No tool feels redundant or missing for the core workflow.

Completeness4/5

The surface covers the essential lifecycle from destination checking through quoting, sending, payment-link handoff, and status tracking. Minor gaps exist around listing or cancelling unpaid quotes/letters, but agents can work around them using quote_id reuse and status polling.

Available Tools

4 tools
get_coverageCheck coverage and indicative pricesA
Read-only
Inspect

Lists which destination countries and service levels Courio can mail a physical paper letter to, with an indicative "from" price (EUR including VAT, 1 black-and-white page), typical delivery time and the legal product name. No account or API key is needed. Call it before quote_letter to check a destination is served; pass a country (ISO 3166-1 alpha-2, e.g. "DE") to narrow the answer. Rest-of-world destinations may be handled manually, with a longer delay. Service levels: "standard" (ordinary mail, no proof), "tracked" (tracking only), "registered" (registered mail: proof of deposit), "registered_ar" (registered with acknowledgement of receipt: proof of delivery, the one to use for legal notices).

NameRequiredDescriptionDefault
countryNoISO 3166-1 alpha-2 code, e.g. "DE"; omit for every country

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so a 3 is the right bar. The description nonetheless adds real context beyond them: prices are indicative EUR including VAT for one black-and-white page, rest-of-world destinations may be handled manually with longer delay, and each service level has defined proof semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, then the service-level glossary; every clause carries information. It is on the long side and repeats the ISO code example already present in the schema, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema read tool this is complete: it describes what is returned (country, service level, from-price, delivery time, legal product name), the currency and VAT basis, and the caveat about manual rest-of-world handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents the ISO 3166-1 alpha-2 format, the "DE" example and the omit-for-everything behaviour. The description largely restates that, adding only the intent of narrowing the answer, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: lists destination countries and service levels Courio can mail a physical letter to, plus indicative price, delivery time and legal product name. This clearly distinguishes it from siblings quote_letter (pricing) and send_letter (dispatch) without needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to call it before quote_letter to check a destination is served, naming the alternative and the ordering. It also notes no account or API key is needed, removing a common precondition question.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_letter_statusFollow a letterA
Read-only
Inspect

Returns the current status of a letter (awaiting_payment, paid, submitted, in_transit, delivered, failed, expired, ...), its timeline and, once available, proof links (proof of deposit for "registered", proof of delivery for "registered_ar"). No account is needed; the letter_id is the credential. Recipient details are partially redacted unless the request carries the API key that created the letter.

NameRequiredDescriptionDefault
letter_idYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/openWorldHint, the description discloses the auth model ("the letter_id is the credential"), the redaction behavior that depends on whether the caller holds the originating API key, and the conditional nature of proof links by postage type. These are non-obvious behavioral traits an agent could not infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned before the operational caveats. The status enumeration and postage-type parentheticals are dense but each earns its place by removing ambiguity about return values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden and does so thoroughly: it names the return payload (status, timeline, proof links) and the redaction rule. For a single-parameter read tool, nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry the parameter meaning: it explains that letter_id is not just an identifier but the credential granting access, which is meaningful guidance beyond the regex pattern. It does not describe the format or how to obtain the id, keeping it just short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Returns the current status of a letter") and enumerates exactly what comes back: status values, timeline, and proof links. The sibling tools (quote_letter, send_letter, get_coverage) are clearly distinct activities, and this reads as a pure read/lookup operation, so an agent can route to it unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicit context is clear: use this to follow a letter after it has been sent, and no alternative tool competes for that job. It also states a useful precondition ("No account is needed"), but it never explicitly says when not to use it or names a sibling as the alternative for a related need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quote_letterGet a free quote for a letterAInspect

Prices a physical letter (printed, enveloped and posted by Courio) and returns a quote_id. Free and commits to nothing: no account, no payment, nothing is mailed. Give the service level, sender and recipient postal addresses, and the document (pdf_base64, pdf_url, or plain/markdown text). The price is in EUR including VAT (set currency to "USD" to also see a USD price), fixed for 24 hours. The document is checked and content-moderated; a problem comes back as an error with a hint. Quotes are capped per day (limit_exceeded with retry_after): reuse a quote_id rather than re-quoting. Service levels: "standard" (ordinary mail, no proof), "tracked" (tracking only), "registered" (registered mail: proof of deposit), "registered_ar" (registered with acknowledgement of receipt: proof of delivery, the one to use for legal notices). Rest-of-world letters may be handled manually, with a longer delay (see estimated_delivery_days and fulfillment). Next step: show the price, the legal product and the terms of sale (terms_url) to the human, then call send_letter if they agree.

NameRequiredDescriptionDefault
senderYes
optionsNo
serviceYes
currencyNoEUR
documentYes
recipientYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark it non-read-only, non-destructive, non-idempotent and closed-world; the description goes far beyond by disclosing that nothing is mailed or charged, the 24-hour price validity, per-day quote caps with limit_exceeded/retry_after, content moderation surfacing errors with hints, and manual handling for rest-of-world destinations. It also explains the output-derived fields (estimated_delivery_days, fulfillment, terms_url), which no annotation covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and cost-free framing, then requirements, pricing, failure modes, service levels, and the next step — a logical progression with no filler. It is long, but nearly every clause carries information an agent needs; the service-level list is the densest and most useful part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with nested addresses, 0% schema documentation and no output schema, the description supplies the missing layer: required inputs, price semantics (EUR incl. VAT, fixed 24h), error behaviors, and the fields returned so the agent can present the quote and proceed to send_letter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry parameter meaning; it explains the four service levels with their real-world implications (registered_ar for legal notices), the three document alternatives and their text formats, and the currency switch to USD. The optional 'options' object (color, duplex) is never mentioned, leaving that one gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Prices a physical letter (printed, enveloped and posted by Courio) and returns a quote_id.' The pricing-versus-mailing distinction against the sibling send_letter is made explicit in the final sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call it ('Free and commits to nothing: no account, no payment, nothing is mailed'), the workflow position ('Next step: show the price... then call send_letter if they agree'), and the anti-pattern ('reuse a quote_id rather than re-quoting' to avoid the daily cap).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_letterCreate the letter and get the payment linkA
Idempotent
Inspect

Creates the letter for a quote and returns a payment link (Stripe Checkout). No account is needed. YOU CANNOT PAY: show the price and the payment link to the human and ask them to open it and pay. The letter is mailed right after payment and cannot be cancelled or recalled once paid, so paying is the point of no return: make sure the human has seen the price, the recipient and the document first. Calling it again with the same quote_id returns the same letter and link (or its current status once it has been paid). The link expires after about 24 hours. Optionally pass webhook_url (public https) to be notified of status changes. Poll get_letter_status to follow the letter. Autonomous agents that can sign crypto payments can instead pay with x402 through the REST API (POST /v1/letters with payment_method "x402", which may be disabled on this deployment: 422 payment_method_unavailable); official x402 clients cap a payment at $1 by default, so raise the spend limit to cover the quoted price first.

NameRequiredDescriptionDefault
quote_idYes
webhook_urlNoPublic https URL notified on each status change

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: mailing happens immediately after payment, no cancellation or recall, the payment is the point of no return, the link expires in ~24 hours, and repeat calls with the same quote_id return the same letter or its current status. That last point corroborates idempotentHint=true rather than repeating it. Minor gap: it never states what the returned object contains beyond the link, and the irreversibility sits a bit awkwardly next to destructiveHint=false, though sending a new letter is not data destruction, so this is not a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the critical do-not-pay warning, then proceeds to consequences and edge cases. The x402 paragraph is long and only relevant to a subset of agents, but it is clearly demarcated and materially changes routing decisions, so it earns most of its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of the return value and does so (payment link, status after payment, expiry). For a mutation tool with open-world effects, the lifecycle, idempotency, and human-in-the-loop requirement are all covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, but the description compensates: it explains that quote_id acts as an idempotency key returning the same letter/link, and that webhook_url must be a public https URL notified on each status change. It does not spell out the qt_ prefix/format constraint, which the schema pattern already enforces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Creates the letter for a quote and returns a payment link (Stripe Checkout)'. It is clearly distinguished from the siblings quote_letter (pre-payment quoting) and get_letter_status (polling), so an agent can route without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it, what it must not be used for ('YOU CANNOT PAY' – hand the link to the human), the sibling to poll afterwards (get_letter_status), and a concrete alternative path (x402 via REST POST /v1/letters, including the 422 failure mode).

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.

  1. 4 tool updates
    • First observedget_coverage
    • First observedget_letter_status
    • First observedquote_letter
    • First observedsend_letter

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources