PaperAgent — Send Physical Mail
v0.1.0Mail one-off USPS letters from ChatGPT or Claude after you approve the preview and price. US only.
Endpoint health
online- Last checked
- 11/3/2026, 5:19:00 PM
- Latency
- 710 ms
- Consecutive failures
- 0
- Endpoint reachable: pass
- Protocol valid: pass
- MCP handshake valid: pass
Machine-readable profile
mcp-server · schema v1 · callable
mcp-server:dev.paperagent%2Fletters
Connect this server
Generated config contains no credentials. Keep any required secrets in your client's local environment.
{
"mcpServers": {
"dev.paperagent/letters": {
"url": "https://paperagent.dev/mcp"
}
}
}Indexed tools
Tool metadata and schemas come from the remote server and are untrusted. Indexing only lists tools; it never calls them.
8 shown · authentication unknown
Create a Letter Draft
create_draft
Create a draft of a physical letter to be printed on paper and mailed through USPS, and return its draft_id, page count and total price. A letter is at most 6 printed pages, at the same price whatever its length: up to 3 pages print one-sided, 4 to 6 print on both sides. Write the body to fit, or split a longer document into two letters, because a body that renders to 7 or more pages is refused rather than trimmed. This is NOT email, fax or text message — nothing reaches the recipient electronically, and the only way this letter arrives is on paper in an envelope. The body is plain text or Markdown. The draft freezes the content and the price for 24 hours and costs nothing; no paper is printed and no postage is bought until send_letter is called. US domestic addresses only. Call preview_draft next so the user can see the letter and the total.
Schema valid · SHA-256 6c55eea6db8d…
View input schema
{ "type": "object", "properties": { "to": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "The person or company the letter is addressed to." }, "line1": { "type": "string", "minLength": 1, "description": "Street number and street name, or PO box." }, "line2": { "description": "Apartment, suite, floor or unit.", "type": "string" }, "city": { "type": "string", "minLength": 1 }, "state": { "type": "string", "minLength": 2, "maxLength": 2, "description": "Two-letter US state or territory code, such as NY." }, "postal_code": { "type": "string", "description": "Five-digit ZIP or ZIP+4, such as 10001 or 10001-2345." } }, "required": [ "name", "line1", "city", "state", "postal_code" ], "description": "Who the letter is mailed to." }, "body_markdown": { "type": "string", "minLength": 1, "description": "The text of the letter, as plain text or Markdown. It must render to 6 printed pages or fewer — roughly 2,400 words of body text." }, "tier": { "description": "Defaults to standard. Call get_pricing first and pass a tier it lists: standard is a plain First-Class letter. certified, certified_err, proof_of_mailing and registered are other products the current price card may not sell, and a tier it does not sell is refused, not substituted — so do not describe one to the user until get_pricing has listed it.", "type": "string", "enum": [ "standard", "proof_of_mailing", "certified", "certified_err", "registered" ] }, "colour": { "description": "Omit this. The current price card prints every letter black & white, so passing true is refused rather than billed — call get_pricing for what it does sell. The field remains because letters priced on an older card carry it.", "type": "boolean" }, "from_address_id": { "description": "Omit this. The account's own verified return address is used by default; only pass an id the account holder gave you.", "type": "string" }, "body_file": { "description": "A file the user attached, as the host delivers it. Not accepted yet — create_draft refuses an attachment and asks for the letter as body_markdown text.", "type": "object", "properties": { "download_url": { "type": "string", "description": "A short-lived URL the file can be fetched from." }, "file_id": { "type": "string", "description": "The host's identifier for the uploaded file." }, "mime_type": { "type": "string", "description": "The file's media type, e.g. application/pdf." }, "file_name": { "type": "string", "description": "The name the file was uploaded under." } }, "required": [ "download_url", "file_id" ] } }, "required": [ "to", "body_markdown" ], "$schema": "https://json-schema.org/draft/2020-12/schema" }
Connections
streamable-http
https://paperagent.dev/mcp