epost-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EPOST_PROFILE | No | Browser profile directory (holds the session — treat as secret) | ~/.epost-mcp/profile |
| EPOST_CHROMIUM | No | Chromium executable override | auto-detect |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| epost_statusA | Check whether the ePost session is alive (ok) or an interactive SwissID login is needed (login_required). |
| epost_loginA | Open a VISIBLE browser window and drive the whole SwissID login except the biometric prompt: it goes to SwissID, fills the account e-mail and requests the passkey, so you only confirm with Touch ID. Falls back to a normal manual login. Caches the session afterwards. |
| epost_settingsA | Show the resolved configuration: which browser is driven and why, whether it can use Touch ID passkeys, the profile/state paths, and whether the SwissID account e-mail is configured. |
| epost_list_lettersA | List the letters currently in the digital letterbox (index, id, sender, title, date, read). Over the API at most |
| epost_download_letterA | Download one letter to output_dir, addressed by list index or by letter_id. Returns the saved path, written 0600: YYYY-MM-DD_ePost_.pdf over the API (.eml for a letter that came through IncaMail, which is an e-mail), and _.pdf over the portal fallback, which has no id to name it by — an index is a position in a list that renumbers itself after every store, so two calls a day apart can mean two different letters. |
| epost_letter_textA | The text of one letter, in the inbox or already filed in Storage, by letter_id, over the public API: the scan's OCR text layer as pdftotext -layout lays it out, so a letter can be read without saving it anywhere. |
| epost_letter_pdfA | The document of one letter, in the inbox or filed in Storage, by letter_id, as base64 in the answer: for a client that decodes the payment QR code or keeps a backup without a shared disk. A scan is a PDF (format pdf, also as pdf_base64); a letter that came through IncaMail is the e-mail itself (format eml, message/rfc822). content_base64 holds either. Nothing is written where this server runs. At most 10 MB (EPOST_PDF_MAX_BYTES). |
| epost_download_allB | Download every letter in the letterbox to output_dir. Returns the saved paths. |
| epost_store_letterA | Archive a letter into a Storage folder (the "Store" action): keeps the document, this is not a delete. A target folder is REQUIRED — Store opens a "Select a folder" sheet and will not commit without one. Address the letter by index in the inbox list, or by a text substring such as a date; indices shift after each store, so re-list between calls. A substring is matched against the first 200 letters and is refused when the inbox is longer than that, because a substring naming one letter in that window may name others past it. |
| epost_searchA | Full-text search across your letters — keywords are matched inside the letter content, not just the metadata. Optionally limit to the inbox or to Storage. API only; there is no equivalent in the portal automation. |
| epost_get_letterB | Get one letter by its id, with the sender description, document types, dates and read status. |
| epost_unread_countB | How many unread letters are in the inbox. |
| epost_set_read_statusC | Mark letters READ or UNREAD by id. |
| epost_list_deletedB | Letters in the trash, with the days remaining before they are permanently removed. |
| epost_restore_letterC | Restore a deleted letter back to the inbox. |
| epost_delete_letterA | DESTRUCTIVE: move a letter to the trash. Requires confirm:true. Prefer epost_store_letter to archive something — deleting is not how you tidy an inbox. |
| epost_download_thumbnailB | Save the thumbnail image of a letter — useful to eyeball a document without fetching the whole PDF. |
| epost_list_storageA | List the user's custom folders (name + document count) in the ePost Storage area plus the unsorted My-Documents count. |
| epost_list_storage_documentsB | List the documents in Storage. Over the API each carries a real description ("Invoice from ...") and documentTypes; over the browser fallback only a date and the folder tag. Pass folder_id to list one folder, scroll_all for the browser path. |
| epost_read_storage_documentA | Open one Storage document and report what the portal knows about it: the real sender/subject line, document type, date, amount and current folder. The card list only ever shows "Gescannter Brief", so this is the only way to classify an archived document. Pass output_dir to also save the document: the PDF, or the e-mail (.eml) for a letter that came through IncaMail. Over the API the document is resolved against a listing of at most |
| epost_create_folderC | Create a new custom folder in the ePost Storage area. |
| epost_unfile_from_folderA | Remove a Storage document from a folder. NOTE: the portal will not commit an empty folder set, so this only works when the document is in more than one folder; to empty a folder that holds the document's only membership, use epost_move_to_folder with remove_from instead. |
| epost_move_to_folderA | File a Storage document into a custom folder (addressed by index in the loaded My-Documents list, or by a text substring such as a date). Pass remove_from to re-file: the old folder is unticked in the same sheet, which is the only way to empty a folder that holds the document's only membership. ePost documents can belong to several folders, so this ADDS the folder membership: it is idempotent (no-op if already filed there) and removes nothing unless remove_from says which. Note: filing a document bumps it to the top of the "Last used" order, so re-list before addressing the next one by index. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Most tools map to a clearly distinct resource+action (list/get/delete/store/restore/search). The main overlap is the four retrieval variants of a single letter — download_letter (writes a file), letter_pdf (base64), letter_text (OCR), download_thumbnail — which target the same document in different forms and could be misselected, though descriptions differentiate them. login/status/settings are also adjacent but distinct in purpose.
Every tool uses the same epost_ prefix with a consistent snake_case verb_noun pattern (list_letters, get_letter, download_letter, set_read_status, create_folder, move_to_folder). No camelCase or style drift, making the set highly predictable.
At 23 tools the surface is on the heavy side for a letterbox client, spanning inbox, trash, storage, folders, downloads, auth and config. Each tool is arguably justified by a distinct feature, but it sits at the borderline-heavy end rather than feeling tightly scoped.
Coverage is strong: inbox/trash/storage listing, single-letter read, search, read-status, delete/restore, archiving, folder creation and re-filing, plus multiple content-fetch formats. Minor gaps remain — no folder rename/delete and no bulk mark-read operation — but core lifecycles are covered.