Cloud Mail MCP — usage manual (progressive disclosure)
In the LingTai host, root summarize defaults to true; specify what to retain
in reasoning. Proactively set summarize=false for verbatim manuals and
mandatory gates, exact names/paths or message ids, field presence, source,
diffs, or evidence. Summaries are lossy and noncanonical; raw results remain
preserved. This is result presentation, not action input or Context compression.
Cloud Mail is a REST client for a self-hosted Cloud Mail deployment, not IMAP or
SMTP. Inbound mail is polled automatically and delivered to the host agent's
inbox via LICC; you normally do not poll check just to receive notifications.
Each notification already carries the current message (sender, subject, body
preview, and an exact message_ref id) — do not call check, search, or
read again merely to reread that same content or to recover an id already
present in the notification; see reference/actions.md
for exactly when a read recovery call is warranted. This file is the
model-facing router. Load only the packaged reference that matches the
question:
| Need |
Read |
| Action inputs/results, compound ids, filters, content, and side effects |
reference/actions.md |
| Config shape, authentication, polling/watermarks, settings, and startup diagnosis |
reference/setup.md |
The references are packaged sidecars and are not embedded in the manual
action result. They contain operational depth without making every ordinary
call carry it.
HOW TO CALL IT — the envelope
cloud_mail is one strict LTP-v2 tool family. Every call has the closed root
{action, input, reasoning, summarize?}: action, input, and reasoning are
required; summarize is optional, root-level, and never nested under input.
input accepts only the branch for the selected action, and validation rejects
unknown or cross-action keys before manager I/O. The actions are exactly
check, search, read, send, accounts, add_user, settings, and
manual; settings is immediately before manual. Do not use a flat/legacy
shape, _reasoning, aliases, or a generic dispatcher.
cloud_mail(action="check", input={"limit": 10}, reasoning="check recent mail")
cloud_mail(action="read", input={"id": "cloudmail:1234"}, reasoning="read this mail")
cloud_mail(action="send", input={"address": "user@example.com", "message": "done"},
reasoning="report completion")
cloud_mail(action="settings", input={}, reasoning="inspect owner settings")
ACTIONS — first-call inventory
check lists recent inbound mail. Optional input is account, limit,
to_email, send_email, subject, time_sort, and type.
search filters the public email list. Optional input is account,
to_email, send_email, send_name, subject, content, time_sort,
num, size, type, and is_del. Use the returned ids; filters are LIKE
matches.
read returns one full email. Use a returned compound id in the form
<account>:<emailId>, or provide account with numeric/string email_id.
send requires address (a recipient string or list). Supply plain text
through message/text and/or HTML through html/content_html; optional
fields are account, subject, name, and send_account_id. User
credentials are required and attachments are not supported.
accounts returns redacted per-account status; it does not return
passwords or tokens.
add_user requires email and password, with optional account and
role_name; it is an admin operation that changes the Cloud Mail user set.
settings is a strict-empty, read-only startup inventory. manual
returns this packaged guide and its metadata on demand.
check, search, and read can return bulky listings or full bodies. Keep
exact ids and body text when a later action depends on them by explicitly
setting summarize=false. Read manual with the same explicit opt-out so its
procedure and constraints remain verbatim.
SETTINGS SHOW
settings accepts exactly input={} and returns exactly two rows, in order:
config_path, then accounts. Each successful row has only key, current,
default, configurable, and comment. Both rows are sensitive and render
<redacted> for current and default; there is no set/reset or other mutation operation.
configurable=true does not grant this action write authority. Follow reference/setup.md and the shared
mcp-manual curated-addon procedure for authorized owner changes, then perform
a full Cloud Mail relaunch and call SHOW again.
Config path
config_path is the exact resolved path successfully loaded at startup from
LINGTAI_CLOUD_MAIL_CONFIG. It is an applied snapshot, not a fresh environment
reread, and is fully redacted because it can reveal private machine layout.
Accounts document
accounts is only an opaque configured marker for the document selected by
config_path; the settings provider never traverses or projects account
records. It is fully redacted. Missing startup truth fails the whole inventory
with the fixed SETTINGS_UNAVAILABLE result; no partial rows or startup
exception are returned, and manual remains available.
SAFETY & RESULTS
send delivers real email to real recipients: confirm recipients and body
before this external, hard-to-undo side effect.
add_user mutates the Cloud Mail deployment's user set; double-check the
account, email, and role first.
- Successful business actions return
status: "ok"; provider or business
failures return status: "error" with an error message, while envelope,
settings, or dispatch validation failures use status: "failed". Inspect the
status and error fields; do not assume delivery.
- Setup fields, credential handling, watermark state, and retry/startup
diagnosis are intentionally in
reference/setup.md,
not repeated in this resident router.
1---2name: cloud-mail-mcp-manual3description: |4 Progressive-disclosure usage manual for Cloud Mail REST email actions. Read5 it when action filters/ids, setup/authentication, polling/settings, or6 side-effect detail is needed. Returned by action='manual'; nested references7 are packaged but not embedded. Calls use the strict LTP-v2 envelope.8version: 1.4.09last_changed_at: "2026-09-11T00:00:00Z"10related_files:11- src/lingtai/mcp_servers/ANATOMY.md12- src/lingtai/mcp_servers/cloud_mail/_family.py13- src/lingtai/mcp_servers/cloud_mail/client.py14- src/lingtai/mcp_servers/cloud_mail/manager.py15- src/lingtai/mcp_servers/cloud_mail/plugin.py16- src/lingtai/mcp_servers/cloud_mail/server.py17- src/lingtai/mcp_servers/cloud_mail/settings.py18- src/lingtai/mcp_servers/cloud_mail/reference/actions.md19- src/lingtai/mcp_servers/cloud_mail/reference/setup.md20maintenance: |21 Tracks the Cloud Mail MCP's resident action contract and its routed action and22 setup references. Update this router and the nested references when the23 manager, settings provider, launcher, or public action surface changes.24metadata:25 source: https://skillmd.com/skills/lingtai-ai/cloud-mail-mcp-manual26---2728# Cloud Mail MCP — usage manual (progressive disclosure)2930In the LingTai host, root `summarize` defaults to `true`; specify what to retain31in `reasoning`. Proactively set `summarize=false` for verbatim manuals and32mandatory gates, exact names/paths or message ids, field presence, source,33diffs, or evidence. Summaries are lossy and noncanonical; raw results remain34preserved. This is result presentation, not action input or Context compression.3536Cloud Mail is a REST client for a self-hosted Cloud Mail deployment, not IMAP or37SMTP. Inbound mail is polled automatically and delivered to the host agent's38inbox via LICC; you normally do not poll `check` just to receive notifications.39Each notification already carries the current message (sender, subject, body40preview, and an exact `message_ref` id) — do not call `check`, `search`, or41`read` again merely to reread that same content or to recover an id already42present in the notification; see [`reference/actions.md`](reference/actions.md)43for exactly when a `read` recovery call is warranted. This file is the44model-facing router. Load only the packaged reference that matches the45question:4647| Need | Read |48|---|---|49| Action inputs/results, compound ids, filters, content, and side effects | [`reference/actions.md`](reference/actions.md) |50| Config shape, authentication, polling/watermarks, settings, and startup diagnosis | [`reference/setup.md`](reference/setup.md) |5152The references are packaged sidecars and are not embedded in the `manual`53action result. They contain operational depth without making every ordinary54call carry it.5556## HOW TO CALL IT — the envelope5758`cloud_mail` is one strict LTP-v2 tool family. Every call has the closed root59`{action, input, reasoning, summarize?}`: `action`, `input`, and `reasoning` are60required; `summarize` is optional, root-level, and never nested under `input`.61`input` accepts only the branch for the selected action, and validation rejects62unknown or cross-action keys before manager I/O. The actions are exactly63`check`, `search`, `read`, `send`, `accounts`, `add_user`, `settings`, and64`manual`; `settings` is immediately before `manual`. Do not use a flat/legacy65shape, `_reasoning`, aliases, or a generic dispatcher.6667```python68cloud_mail(action="check", input={"limit": 10}, reasoning="check recent mail")69cloud_mail(action="read", input={"id": "cloudmail:1234"}, reasoning="read this mail")70cloud_mail(action="send", input={"address": "user@example.com", "message": "done"},71 reasoning="report completion")72cloud_mail(action="settings", input={}, reasoning="inspect owner settings")73```7475## ACTIONS — first-call inventory7677- **`check`** lists recent inbound mail. Optional input is `account`, `limit`,78 `to_email`, `send_email`, `subject`, `time_sort`, and `type`.79- **`search`** filters the public email list. Optional input is `account`,80 `to_email`, `send_email`, `send_name`, `subject`, `content`, `time_sort`,81 `num`, `size`, `type`, and `is_del`. Use the returned ids; filters are LIKE82 matches.83- **`read`** returns one full email. Use a returned compound `id` in the form84 `<account>:<emailId>`, or provide `account` with numeric/string `email_id`.85- **`send`** requires `address` (a recipient string or list). Supply plain text86 through `message`/`text` and/or HTML through `html`/`content_html`; optional87 fields are `account`, `subject`, `name`, and `send_account_id`. User88 credentials are required and attachments are not supported.89- **`accounts`** returns redacted per-account status; it does not return90 passwords or tokens.91- **`add_user`** requires `email` and `password`, with optional `account` and92 `role_name`; it is an admin operation that changes the Cloud Mail user set.93- **`settings`** is a strict-empty, read-only startup inventory. **`manual`**94 returns this packaged guide and its metadata on demand.9596`check`, `search`, and `read` can return bulky listings or full bodies. Keep97exact ids and body text when a later action depends on them by explicitly98setting `summarize=false`. Read `manual` with the same explicit opt-out so its99procedure and constraints remain verbatim.100101## SETTINGS SHOW102103`settings` accepts exactly `input={}` and returns exactly two rows, in order:104`config_path`, then `accounts`. Each successful row has only `key`, `current`,105`default`, `configurable`, and `comment`. Both rows are sensitive and render106`<redacted>` for `current` and `default`; there is no set/reset or other mutation operation.107`configurable=true` does not grant this action write authority. Follow [`reference/setup.md`](reference/setup.md) and the shared108`mcp-manual` curated-addon procedure for authorized owner changes, then perform109a full Cloud Mail relaunch and call SHOW again.110111### Config path112113`config_path` is the exact resolved path successfully loaded at startup from114`LINGTAI_CLOUD_MAIL_CONFIG`. It is an applied snapshot, not a fresh environment115reread, and is fully redacted because it can reveal private machine layout.116117### Accounts document118119`accounts` is only an opaque `configured` marker for the document selected by120`config_path`; the settings provider never traverses or projects account121records. It is fully redacted. Missing startup truth fails the whole inventory122with the fixed `SETTINGS_UNAVAILABLE` result; no partial rows or startup123exception are returned, and `manual` remains available.124125## SAFETY & RESULTS126127- `send` delivers real email to real recipients: confirm recipients and body128 before this external, hard-to-undo side effect.129- `add_user` mutates the Cloud Mail deployment's user set; double-check the130 account, email, and role first.131- Successful business actions return `status: "ok"`; provider or business132 failures return `status: "error"` with an error message, while envelope,133 settings, or dispatch validation failures use `status: "failed"`. Inspect the134 status and error fields; do not assume delivery.135- Setup fields, credential handling, watermark state, and retry/startup136 diagnosis are intentionally in [`reference/setup.md`](reference/setup.md),137 not repeated in this resident router.