Skip to main content
Glama
Apple Mail MCP

Apple Mail MCP

by cyberprive

mark_read

Idempotent

Marks a single Apple Mail message as read using its account, mailbox, and message ID returned from search results.

Instructions

Mark a single message as read.

Args: account, mailbox, id: As returned by search_messages.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "account": "<account>",
      "mailbox": "<mailbox>",
      "id": "<id>"
    },
    "name": "mark_read"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYes
accountYes
mailboxYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds the useful scope detail that only a single message is affected, but says nothing about what happens if the message is already read, whether the change is reversible, or any permission requirements.

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

Conciseness4/5

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

The definition is short and front-loads the action in a single sentence with no filler. The trailing Args block largely restates schema property names, adding little beyond the provenance line, which is minor redundancy rather than a real cost.

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

Completeness3/5

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

For a simple three-parameter mutation with no output schema, the definition covers the core action and value provenance but omits outcome behavior and edge cases such as already-read messages. Adequate to call correctly, thin on what to expect afterward.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate; it partially does by telling the agent that account, mailbox, and id all originate from search_messages output. It adds no format details (e.g., whether mailbox is a name or an ID, or the expected id shape), so compensation is incomplete.

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

Purpose4/5

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

"Mark a single message as read" gives a specific verb (mark) plus resource (single message) and explicitly scopes it to one message rather than a batch or thread. It is clearly distinguishable from the sibling mark_unread, though the description never names that counterpart to reinforce the contrast.

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

Usage Guidelines2/5

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

There is no explicit statement of when to use this versus alternatives; the only usage signal is the parenthetical that the identifiers come "As returned by search_messages," which describes a prerequisite workflow rather than when/when-not guidance. An agent must infer that mark_unread is the inverse operation.

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