Skip to main content
Glama

Mark Email Read

mark_email_read
Destructive

Use this when the user wants emails in the Mac's Apple Mail (Mail.app) marked as read, or as unread with unread=true: to note what was already handled, or to come back to a message later. Name the messages with message_id (one) or message_ids (up to 20), from list_emails, search_emails or read_email, and pass account= so they are found in the right account. A message counts as marked only when a second read shows the new state. Nothing is sent, moved or deleted, so it asks for no confirmation. For mail of a Microsoft 365 account, use m365_mark_email_read.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "mark_email_read"
  }
}

Input Schema

NameRequiredDescriptionDefault
unreadNotrue marks them as unread (default false: as read).
accountNoMail.app account the messages live in (returned alongside the id).
mailboxNoFolder the messages are in. Passing it skips searching the other folders.
message_idNoThe ID of one message to mark.
message_idsNoIDs of up to 20 messages to mark.

Output Schema

NameRequiredDescriptionDefault
countNo
unreadNo
messageNo
resultsNo
marked_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Adds real context beyond the annotations: the verification rule ('A message counts as marked only when a second read shows the new state'), the 20-message batch cap, and the account-scoping requirement. It also claims nothing is sent, moved, or deleted and that no confirmation is needed, which sits in mild tension with destructiveHint=true — the description implies a reversible state toggle while the annotation signals possible destructive change, so an agent should still treat this as a mutating call.

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?

Front-loaded with the trigger ('Use this when...'), followed by argument sourcing, verification semantics, and the sibling alternative — no filler sentences. It is dense and runs as one block, so an agent skimming may miss the 20-item cap buried mid-paragraph, but every clause carries operational information.

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?

For a mutating email tool with five optional parameters and a declared output schema, the description covers the trigger, identifier sources, account scoping, batch limit, verification semantics, and the platform-specific alternative. Return values are already defined by the output schema, so nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description still adds meaning: message_id is the single-message form, message_ids the batch form capped at 20, and account is framed as necessary for lookup even though the schema marks nothing required. That resolves an ambiguity the schema alone leaves open (all five parameters are optional yet the prose treats account as needed).

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?

States a specific verb (marked as read/unread) on a specific resource (emails in the Mac's Apple Mail / Mail.app), and explicitly delimits itself from the sibling m365_mark_email_read for Microsoft 365 mail. An agent can distinguish it from flag_email, move_email, and the M365 variant without opening any schema.

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?

Gives the trigger condition (user wants handled messages noted, or wants to come back later via unread=true), names the upstream tools that produce the identifiers (list_emails, search_emails, read_email), and routes to the alternative m365_mark_email_read for Microsoft 365 accounts. When-to-use, prerequisites, and the alternative path are all explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.