Skip to main content
Glama
carterlasalle

mac-messages-mcp

tool_send_message

Send outgoing messages through the macOS Messages app to a phone number, email, or contact. Use when you need to deliver an iMessage or SMS directly from the Mac.

Instructions

Send one outgoing message through the macOS Messages app.

This has an external side effect: it sends the provided text to the recipient
using Messages. It may use iMessage or SMS/RCS depending on recipient
availability and Messages configuration. Requires Automation permission for
Messages, and the signed-in Mac must be able to send to the recipient.

This server does not perform human confirmation. A boolean tool argument is
not human approval (an agent can set it). The MCP client must gate this
privileged side-effect before calling the tool. Returns a plain-text success
or error message; it does not delete or modify existing conversations. Use
tool_find_contact first when a name is ambiguous, and
tool_check_imessage_availability when delivery capability is uncertain.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
messageYesText body to send through Messages.
recipientYesE.164 phone number with leading '+', bare digits with country code, email address, contact name, contact:N selection, or Messages chat ID when group_chat is true.
group_chatNoSet true only when recipient is a chat ID from tool_get_chats; false sends to an individual buddy/contact.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.1.0
    • addedInput schema / properties / group_chat / description
      Added value: +"Set true only when recipient is a chat ID from tool_get_chats; false sends to an individual buddy/contact."
    • addedInput schema / properties / message / description
      Added value: +"Text body to send through Messages."
    • addedInput schema / properties / recipient / description
      Added value: +"E.164 phone number with leading '+', bare digits with country code, email address, contact name, contact:N selection, or Messages chat ID when group_chat is true."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "result": {
      +      "title": "Result",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "result"
      +  ],
      +  "title": "tool_send_messageOutput",
      +  "type": "object"
      +}
  2. First observed

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses external side effects, permission requirements (Automation), absence of human confirmation, and that it does not modify existing conversations. With no annotations, the description fully covers behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise, using short paragraphs to cover side effects, permissions, return type, and prerequisites without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides complete context for correct invocation, including return type, permission needs, and references to sibling tools for edge cases, making it self-sufficient despite the lack of an explicit output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have thorough descriptions, especially recipient with formats and group_chat with chat ID requirement. Schema coverage is 100% and descriptions add meaning beyond basic types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool sends one outgoing message via the macOS Messages app, distinguishing it from sibling tools that check availability or retrieve chats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use and when-not-to-use guidance, including prerequisites like using tool_find_contact for ambiguous names and tool_check_imessage_availability for delivery certainty.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.