autoMessage MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the locally run HTTP transport (e.g. PORT=8090 npm run dev:http). | |
| MCP_MAX_SESSIONS | No | Overrides the default 500-session cap for the HTTP transport. | |
| AUTOMESSAGE_API_KEY | Yes | Your autoMessage API key, found in the autoMessage dashboard under Settings → API. Passed as an environment variable (and forwarded as the X-API-KEY header). Required to authenticate requests. | |
| AUTOMESSAGE_READ_ONLY | No | Set to 1 to enable read-only mode, which hides and blocks send_imessage, cancel_pending_draft and create_contact. Use it for any agent that reads messages but must never be able to send. |
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 |
|---|---|
| send_imessageA | Send an iMessage from the user's Mac. Creates a draft that the user's Mac agent picks up and dispatches via Messages.app. Returns the draft id; use get_draft_status to confirm delivery. The recipient must be a valid phone number in E.164 format (+14155551234) or an email address that the recipient uses for iMessage. If the user's new-outreach limit is reached (N unreplied conversations messaged in a rolling 24-hour window), the message is STILL ACCEPTED and queued: the response carries meta.queued (reason, limit, used, resumesAt = earliest moment a slot frees) and the draft's status is "held" until earlier sends age out of the window or the user raises the limit in Settings — tell the user it is queued, not failed. A 403 recipient_opted_out means the recipient texted STOP: do not retry. |
| list_conversationsA | Find the user's iMessage conversations, ordered by most recently active. Each has a GUID you pass to other tools. To find conversations with a phone number, use |
| get_conversation_historyA | Return the message history of a single conversation, ordered newest first. Useful for catching up on a thread, summarizing, or extracting context before drafting a reply. |
| list_recent_messagesA | Most recent messages ACROSS ALL conversations, newest first — ideal for "catch me up" or "what did I miss today". Filter by direction and time window; paginate with cursor. |
| list_draftsA | List outbound drafts. Useful for checking what's queued for the Mac agent, what is held by the new-outreach limit, what was recently sent, or what failed. By default returns drafts in any state; filter with status (preferred), or sent / send_error. |
| get_draft_statusA | Read a single draft. Use this after send_imessage to confirm the message was delivered. The response includes |
| cancel_pending_draftA | Soft-cancel a pending draft before the Mac agent dispatches it. Only works while the draft is still |
| list_contactsA | List the user's saved iMessage contacts. Contacts are auto-populated by the Mac agent from macOS Contacts as the user messages people, plus any manual additions. Useful for resolving "Sarah" to a phone number before sending. |
| find_contactA | Search the user's contacts by display name, phone, or email. Returns the closest matches by case-insensitive substring. Use this when the user references someone by name to resolve them to a sendable phone/email handle. |
| create_contactA | Create or upsert a contact. Use when the user asks to "save" a new person to their address book. Requires at least one of phone_number or email. Note: this is a one-way edit — changes here do not propagate to the user's native macOS/iOS Contacts. |
| agent_online_checkA | Check whether the user's Mac agent is currently running and able to dispatch iMessages. If |
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 11 tools
Most tools target clearly distinct resources: send_imessage, get_draft_status, list_drafts, and cancel_pending_draft form a coherent draft lifecycle with non-overlapping roles. Two mild overlap pairs exist (list_conversations vs list_recent_messages, list_contacts vs find_contact), but the descriptions explicitly differentiate them by scope and use case.
Names are uniformly snake_case with a predictable verb_noun pattern (send_imessage, list_conversations, get_conversation_history, cancel_pending_draft, create_contact). The only deviation is agent_online_check, which is noun-first and lacks a verb, but it remains readable and unambiguous.
Eleven tools is a well-scoped set for an iMessage sending/draft-management server, with each tool covering a necessary operation across sending, drafts, conversations, and contacts. No redundant or filler tools are present.
Core send/draft/read/contact flows are covered, but notable gaps remain: send_imessage addresses recipients rather than conversation GUIDs, so replying into an existing group thread is not clearly supported. Contacts support create but no update or delete, and there is no way to surface or manage read/unread state beyond a filter.