Briefflink – Briefe mit KI versenden
Server Details
Send real paper letters from AI chat: print, envelope, postage, delivery. Pay per letter.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: upload link creation, price calculation, status check, and order submission. There is no functional overlap; send_letter and create_upload_link are related but sequentially distinct.
All names follow a consistent verb_noun snake_case pattern (create_upload_link, get_letter_price, get_letter_status, send_letter). Minor variation in noun length does not break predictability.
Four tools precisely cover the core letter-sending workflow without redundancy. Each tool is necessary and the count is well-scoped for the service.
The set covers upload, pricing, ordering, and status tracking, which is the essential lifecycle. However, it lacks tools for canceling an unpaid order or listing past orders, leaving minor gaps.
Available Tools
4 toolscreate_upload_linkUpload-Link erstellenAInspect
Erstellt einen Link (24 h gültig), über den der Nutzer sein PDF selbst hochlädt. Die upload_id danach an send_letter übergeben.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-destructive, closed-world operation. The description adds real value beyond that: the link expires after 24 hours, the upload is performed by the user, and an upload_id is produced for downstream use. It does not mention authentication or whether links can be revoked, so not 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 with no filler, and the core action and its 24-hour constraint come first, followed by the hand-off instruction.
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, the description carries the burden of explaining the return value, and it does identify the upload_id. It does not describe the link format or what the upload experience returns, but the essential contract for a zero-parameter tool is present.
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?
The tool has zero parameters, so the baseline is 4. The description correctly frames upload_id as an output to be forwarded to send_letter rather than an input, which prevents confusion.
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 ('Erstellt einen Link') plus the object it targets (the user's PDF upload), and names the sibling tool send_letter as the next step. An agent can distinguish it from get_letter_price/get_letter_status/send_letter 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?
The description tells the agent the scenario (the user uploads the PDF themselves) and the exact follow-up action (pass the upload_id to send_letter). It does not spell out when NOT to use it, e.g. when the caller already has a document, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_letter_priceBriefpreis berechnenARead-onlyInspect
Berechnet den Endpreis eines Briefes (Druck, Kuvert, Porto) aus Seitenzahl, Einschreiben-Wahl und Zielland. Kein Auftrag, keine Kosten.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | Yes | Anzahl PDF-Seiten (1–20). 1–3 Standardbrief, 4–9 Kompaktbrief, 10–20 Großbrief | |
| country | No | ISO-Ländercode des Empfängers, z. B. DE, AT, CH, US | DE |
| einschreiben | No | nein = Standardbrief, einwurf = Einwurf-Einschreiben mit Sendungsnummer (+5,49 € national, +7,49 € Ausland) | nein |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description usefully reinforces this with 'Kein Auftrag, keine Kosten', confirming no side effects. It still says nothing about what the response contains (total only or itemized, currency), which matters since there is no output schema.
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, no filler. The core purpose with its price components is front-loaded, and the no-side-effects caveat follows immediately.
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?
Low-complexity read-only calculator with fully documented parameters and annotations covering safety, so the description is nearly complete. The one gap is the return shape — no output schema exists and the description never says whether the agent gets a single total or a breakdown per component.
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% and each parameter carries a rich in-schema description including page-to-letter-class mapping and Einschreiben surcharges. The description merely names the same three inputs (Seitenzahl, Einschreiben-Wahl, Zielland) and adds no semantics 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 (berechnet) and resource (Endpreis eines Briefes) and enumerates the price components (Druck, Kuvert, Porto) plus the three driving inputs. It does not name the sibling send_letter explicitly, but 'Kein Auftrag, keine Kosten' makes the boundary clear enough that an agent won't confuse it with an ordering 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?
'Kein Auftrag, keine Kosten' implies preview-only usage, which hints that this is the tool to call before committing to send_letter. However, it never explicitly says when to use it vs. send_letter or whether a quote is required before ordering, so the routing guidance stays implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_letter_statusBriefstatus abfragenARead-onlyInspect
Zeigt, ob ein Auftrag noch auf Zahlung wartet, bezahlt, versendet oder fehlgeschlagen ist.
| Name | Required | Description | Default |
|---|---|---|---|
| letter_id | Yes | letter_id aus send_letter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety behavior is covered. The description adds useful status-state context (awaiting payment, paid, shipped, failed), but it does not describe freshness, auth needs, or response shape.
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?
It is a single front-loaded sentence with no wasted words, and the enumerated status states directly serve the purpose of the tool.
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 simple read-only getter with one fully documented parameter and no output schema, the description supplies the key conceptual return categories. A minor gap remains around exact response shape or whether the status labels are literal strings.
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%, and the single letter_id parameter is already documented in the schema as coming from send_letter. The description adds no further parameter semantics, so the baseline 3 is appropriate.
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 states a clear verb and resource: it shows whether a letter order is awaiting payment, paid, shipped, or failed. This is specific and distinguishable in practice, though it does not explicitly contrast itself with siblings such as get_letter_price or send_letter.
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?
Usage is implied: an agent would call this to check a letter's lifecycle status, likely after send_letter. However, there is no explicit when-to-use guidance, no exclusions, and no named alternative for price or sending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_letterBrief beauftragen (Bezahllink)AInspect
Legt einen Briefauftrag an und gibt einen Stripe-Bezahllink zurück. Der Brief wird erst gedruckt und versendet, wenn der Nutzer bezahlt hat. Dokument per upload_id (aus create_upload_link) oder pdf_base64.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | E-Mail des Nutzers für Versandbeleg und Rechnung | ||
| country | No | ISO-Ländercode des Empfängers, z. B. DE, AT, CH, US | DE |
| upload_id | No | ID aus create_upload_link | |
| pdf_base64 | No | Alternativ: PDF als Base64 (max. 10 MB) | |
| sender_name | Yes | Absender: Name / Firma (Pflicht, erscheint als Rücksendeadresse) | |
| einschreiben | No | nein = Standardbrief, einwurf = Einwurf-Einschreiben mit Sendungsnummer (+5,49 € national, +7,49 € Ausland) | nein |
| sender_street | Yes | Absender: Straße und Hausnummer (Pflicht) | |
| recipient_name | Yes | Name / Firma des Empfängers | |
| sender_zip_city | Yes | Absender: PLZ und Ort (Pflicht) | |
| recipient_street | Yes | Straße und Hausnummer | |
| recipient_zip_city | Yes | PLZ und Ort, z. B. "10115 Berlin" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false) and open-world behavior. The description adds the non-obvious deferred side effect (letter is only printed and sent after payment) and that the immediate return is a payment link, both of which matter for planning a multi-step flow.
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 short sentences, front-loaded with the action and its return value, followed by the payment-gating behavior and the document source. No filler or repetition.
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, the description correctly discloses the key return (a Stripe payment link) and the payment-gated fulfillment, which is the essential mental model for an 11-parameter mutation tool. It omits edge cases such as link expiry or payment failure, but nothing critical for correct invocation 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 upload_id's origin and the pdf_base64 alternative. The description restates the same upload_id/pdf_base64 choice without adding format, size, or precedence detail, so it earns only 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?
States a specific verb+resource (legt einen Briefauftrag an) and the distinctive return value (Stripe-Bezahllink), which separates it from the sibling pricing/status/upload tools. The description also names create_upload_link as the source of upload_id, tying it into the tool family.
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 operational context: an order is created now but printing/sending only happens after the user pays, which tells the agent this is the commitment step rather than a price check or status lookup. It does not explicitly say when not to use it or compare against get_letter_price/get_letter_status.
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.
4 tool updates
- First observed
create_upload_link - First observed
get_letter_price - First observed
get_letter_status - First observed
send_letter
Related MCP Connectors
Let AI agents prepare, review, pay for, and send real letters and postcards.
Let AI agents prepare, review, pay for, and send real letters and postcards.
Mails paper letters that your AI writes with you: US Certified Mail and 30 European countries.
Mail one-off USPS letters from ChatGPT or Claude after you approve the preview and price. US only.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to prepare, price, review, pay for, and send real physical letters and postcards via a hosted MCP server.-
- AlicenseAqualityDmaintenanceSend real physical postcards worldwide via AI agents. Supports single and bulk send (up to 500 recipients), balance checking, delivery tracking, and volume pricing from $0.72/card.514 npm5MIT
- AlicenseNot gradedqualityBmaintenanceHosted remote MCP server that lets AI agents compose, price, send, and track real physical letters worldwide.1MIT
- AlicenseAqualityDmaintenanceEnables AI agents to send physical letters and postcards to over 200 countries using Solana cryptocurrency for payment. It provides tools for generating mail quotes, managing wallet balances, and automating physical correspondence directly through the Model Context Protocol.448 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.