Skip to main content
Glama
alexstockman1

autoMessage MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoPort for the locally run HTTP transport (e.g. PORT=8090 npm run dev:http).
MCP_MAX_SESSIONSNoOverrides the default 500-session cap for the HTTP transport.
AUTOMESSAGE_API_KEYYesYour 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_ONLYNoSet 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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 participant (matches 1:1 AND group chats; loosely-formatted numbers are normalized). Use name to search by contact/group name. Pass at most ONE of participant, handle, name, group, or unread; all accept active_since/active_before, limit, and cursor.

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 status — queued (waiting for the Mac), sending, held (parked by the new-outreach limit — rolling 24h window; resumes automatically as earlier sends age out or when the user raises the limit — NOT a failure), blocked (hold.reason: subscription_required or recipient_opted_out; never auto-retried), sent, cancelled, failed — plus hold (reason/since/message), sent, sendError (failed/cancelled only), and sentMessage (Firestore doc path of the dispatched message).

cancel_pending_draftA

Soft-cancel a pending draft before the Mac agent dispatches it. Only works while the draft is still sent: false. Once sent, this returns 409 Conflict.

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 online: false, any send_imessage call will queue the draft but it won't dispatch until the Mac comes back online.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 11 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues