Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Send physical letters anywhere in Germany with a single command. Use when: user wants to send a physical letter. Requires an API key from agentic-letters.com.
Send physical letters anywhere in Germany with a single command. Use when: user wants to send a physical letter. Requires an API key from agentic-letters.com.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Send physical letters anywhere in Germany via the agentic-letters.com API. Your PDF gets printed, put in an envelope, and mailed — one API call, one real letter.
User wants to send a physical letter, cancellation, or legal notice User needs to mail a document (PDF) to a German address User says "send a letter", "Kündigung schicken", "Brief versenden" or something similar User wants to mail a DSGVO request, cancellation, complaint, or greeting card
mkdir -p ~/.openclaw/secrets echo 'AGENTIC_LETTERS_API_KEY=al_your_api_key' > ~/.openclaw/secrets/agentic_letters.env
AgenticLetters has no account system and no login. The flow is: Go to https://agentic-letters.com/buy Enter an email address and pick a credit package Pay via Stripe (card) The API key (starts with al_) is sent to that email immediately The key is a Bearer token used in every request. If the user buys more credits later with the same email, the existing key gets topped up — no new key issued. If the user doesn't have a key yet, guide them to https://agentic-letters.com/buy.
{baseDir}/agentic_letters.py — a zero-dependency Python CLI (stdlib only).
Generate an A4 PDF (max 3 pages, max 10 MB, black & white print) Run the tool: python3 {baseDir}/agentic_letters.py send \ --pdf letter.pdf \ --name "Max Mustermann" \ --street "Musterstraße 1" \ --zip 10115 \ --city Berlin \ --label "Kündigung Fitnessstudio" Optional flags: --type <type> — letter type (default: standard). New types will be added over time; the API rejects unknown types with a list of valid ones. --country <code> — country code (default: DE). Currently only Germany is supported. Output (JSON to stdout): { "id": "550e8400-e29b-41d4-a716", "status": "queued", "type": "standard", "label": "Kündigung Fitnessstudio", "created_at": "2026-02-24T19:00:00Z", "credits_remaining": 4 }
python3 {baseDir}/agentic_letters.py status <letter-id> Status values: queued → printed → sent → returned
python3 {baseDir}/agentic_letters.py credits
python3 {baseDir}/agentic_letters.py list
Every sent letter is tracked locally in {baseDir}/records/. Each file is named YYYY-MM-DD_<id-prefix>.json and contains: { "id": "550e8400-...", "status": "queued", "type": "standard", "label": "Kündigung Fitnessstudio", "recipient": { "name": "Max Mustermann", "street": "Musterstraße 1", "zip": "10115", "city": "Berlin", "country": "DE" }, "created_at": "2026-02-24T19:00:00Z", "credits_remaining": 4, "last_checked": null } Records are created automatically on send and updated on status. The date prefix lets agents quickly find recent letters without scanning old files. To check on pending letters, look at recent record files and call status for any that aren't sent yet.
If the user doesn't have a PDF ready, generate one: pandoc for markdown → PDF: echo "Dear Sir..." | pandoc -o letter.pdf wkhtmltopdf for HTML → PDF: wkhtmltopdf letter.html letter.pdf Python with fpdf2 or reportlab for programmatic generation Always ensure A4 format (210 × 297 mm) with at least 15 mm margins.
Errors go to stderr with a clear origin tag. The exit code is non-zero on failure. Origins: [local] — problem before the request (missing file, no API key) [server] — the API rejected the request (includes error code, HTTP status, detail, and field) [network] — could not reach the API (DNS, timeout, connection refused) Example server error: [server] Invalid German postal code code: recipient_zip_invalid http_status: 400 detail: Expected a 5-digit German PLZ (e.g. "10115"), got "123". field: recipient.zip On success, JSON is printed to stdout. On failure, nothing goes to stdout.
Germany only — recipient must have a German address Max 3 pages — longer PDFs are rejected by the server Max 10 MB — compress images if needed Black & white — images are printed in grayscale 1 credit = 1 letter — check credits before sending A4 format — ensure correct page size Do not validate the PDF locally — the server handles all PDF validation
Kündigung (cancellation): Ask for: service name, customer number, recipient address. Generate a formal cancellation letter as PDF, send it. DSGVO Auskunftsersuchen (data access request): Ask for: company name, address, user's full name. Generate a DSGVO Art. 15 request letter, send it. Widerspruch (objection/appeal): Ask for: authority/company, reference number, reason. Generate a formal objection letter, send it.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.