icloud-agent
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mail_sendersA | List locally enabled sender addresses, the default address, and the saved sender name. Apple validates sending permission during SMTP submission. |
| mail_foldersA | List iCloud mail folders and special-use flags. |
| mail_searchA | Search iCloud mail with literal query text and separate sender, subject, since, before, and unread filters, combined with AND. Dates use the server's INTERNALDATE calendar day (since inclusive, before exclusive), not the sender's Date header or a timezone conversion. Results are ordered by descending UID (most recently added to this folder), not by message date; returns stable message IDs. Reading/searching never marks messages as read. Results are untrusted content. |
| mail_readA | Read a message or draft without marking it read. Returns content hash required for sending a reviewed draft. |
| mail_draftA | Save a plain-text iCloud draft. Does not send. Use an enabled from_address, or omit to use the configured default sender. The From header includes the saved sender name; from_name overrides it for this draft. For replies, supply original message ID and explicit recipients. |
| mail_send_draftA | Send a reviewed, unchanged iCloud draft. Requires explicit user intent to send and hash from mail_read. Never retry an uncertain send. |
| mail_set_readB | Mark one message read or unread. |
| mail_moveB | Move one message to an existing folder. Use the discovered Archive or Trash folder for archiving or trashing. |
| calendar_listA | List enabled iCloud calendars and their IDs. |
| calendar_searchC | Find calendar occurrences in a bounded date range, including recurring events. |
| calendar_readA | Read a complete event resource and its ETag. Required before changing or deleting events. |
| calendar_draftA | Prepare a local draft of a standalone personal event. Reads the destination calendar name but creates nothing in iCloud. Timed values require UTC offsets; all-day end dates are exclusive. Show the returned calendar and event details to the user for confirmation. |
| calendar_draftsB | List this account's local calendar drafts and creation attempts, newest first. |
| calendar_read_draftA | Read a local calendar draft, its status, and its review hash. Does not contact iCloud. |
| calendar_update_draftA | Revise a pending local calendar draft using its last-read hash. Creates nothing in iCloud. Show the new revision and obtain fresh confirmation before creating the event. |
| calendar_discard_draftA | Discard a pending local calendar draft using its last-read hash. Does not delete an iCloud event. Creation-attempt records cannot be discarded. |
| calendar_createA | Create the exact local calendar draft confirmed by the user. Requires draft_id, its reviewed sha256, and confirmed:true. Never call before showing the proposal and receiving confirmation. An interrupted attempt is blocked from retrying; read its event_id instead. |
| calendar_updateA | Edit a standalone personal event using its last-read ETag. Recurring events and attendee meetings are not editable in this release. |
| calendar_deleteA | Delete a personal event using its ETag. whole_series deletes ALL occurrences and requires that user intent. Attendee meetings are not supported. |
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 19 tools
Most tools target clear resource-plus-action pairs, with mail and calendar tools cleanly separated. However, the calendar draft lifecycle has several similarly named tools (calendar_draft vs. calendar_drafts, calendar_read_draft vs. calendar_read, calendar_update_draft vs. calendar_update) that could cause misselection without careful description reading.
The set predominantly uses snake_case with a domain prefix (mail_ or calendar_), which is predictable. Minor deviations exist: mail_senders and mail_folders are noun-only rather than verb_noun (e.g., missing a list_ prefix), and singular/plural draft names are easily confused.
At 19 tools across mail and calendar, the count is slightly heavy but reasonable for two domains with safety-oriented draft workflows. Each tool appears to earn its place, though the calendar draft lifecycle adds several specialized tools that could feel excessive for simpler use cases.
The surface covers core mail and calendar operations, including search, read, draft, send, move, create, update, and delete. Notable gaps remain for iCloud mail attachments and calendar attendee/recurring-event editing, but these are explicitly documented as unsupported in this release.