Mail real paper letters (standard, registered, registered with receipt) worldwide. No account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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).
ISO 3166-1 alpha-2 code, e.g. "DE"; omit for every country
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http courio https://api.courio.si/mcp
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).
| Argument | Type | Description |
|---|---|---|
| country | string | ISO 3166-1 alpha-2 code, e.g. "DE"; omit for every country |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 code, e.g. \"DE\"; omit for every country"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| letter_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"letter_id"
],
"properties": {
"letter_id": {
"type": "string",
"pattern": "^ltr_[0-9A-Za-z]{24}$"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| sender* | object | |
| options | object | |
| service* | string | |
| currency | string | |
| document* | any | |
| recipient* | object |
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.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string | |
| webhook_url | string | Public https URL notified on each status change |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"pattern": "^qt_[0-9A-Za-z]{24}$"
},
"webhook_url": {
"type": "string",
"format": "uri",
"description": "Public https URL notified on each status change"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"service",
"sender",
"recipient",
"document"
],
"properties": {
"sender": {
"type": "object",
"required": [
"name",
"address_lines",
"postal_code",
"city",
"country"
],
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"company": {
"type": "string",
"maxLength": 80
},
"country": {
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 16
},
"address_lines": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 3,
"minItems": 1
}
}
},
"options": {
"type": "object",
"default": {
"color": false,
"duplex": true
},
"properties": {
"color": {
"type": "boolean",
"default": false
},
"duplex": {
"type": "boolean",
"default": true
}
}
},
"service": {
"enum": [
"standard",
"tracked",
"registered",
"registered_ar"
],
"type": "string"
},
"currency": {
"enum": [
"EUR",
"USD"
],
"type": "string",
"default": "EUR"
},
"document": {
"anyOf": [
{
"type": "object",
"required": [
"pdf_base64"
],
"properties": {
"pdf_base64": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"pdf_url"
],
"properties": {
"pdf_url": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 1
},
"format": {
"enum": [
"plain",
"markdown"
],
"type": "string",
"default": "plain"
}
},
"additionalProperties": false
}
]
},
"recipient": {
"type": "object",
"required": [
"name",
"address_lines",
"postal_code",
"city",
"country"
],
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"company": {
"type": "string",
"maxLength": 80
},
"country": {
"type": "string"
},
"postal_code": {
"type": "string",
"maxLength": 16
},
"address_lines": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 3,
"minItems": 1
}
}
}
}
}