Skip to main content
Glama
alexstockman1

autoMessage MCP Server

list_conversations

Read-only

Find and filter iMessage conversations by participant, name, group, or unread status, ordered by recent activity; each returns a GUID for use with other tools.

Instructions

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.

Input Schema

NameRequiredDescriptionDefault
nameNoCase-insensitive substring of the contact or group display name (e.g. "sam" matches "Sam Rivera"). Searches your most recent conversations.
groupNotrue: group chats only. false: 1:1 conversations only. Omit for both.
limitNoMax number of conversations to return (1-200). Default 50.
cursorNoPagination cursor from a previous response's pagination.nextCursor. Omit for the first page.
handleNoExact recipient handle (E.164 phone like +14125551234, or email) — returns only the 1:1 conversation with that contact. Prefer `participant` unless you specifically want the 1:1 thread.
unreadNotrue: only conversations with unread messages.
participantNoPhone number or email that appears in the conversation — returns every thread (1:1 AND group) that includes this contact. Accepts loose formats like "(415) 555-1234"; normalized to E.164 automatically. Best way to find "conversations with this number".
active_sinceNoISO-8601 timestamp — only conversations active at or after this time.
active_beforeNoISO-8601 timestamp — only conversations last active before this time.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.2

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true/destructiveHint=false, so the safety profile is covered; the description adds ordering semantics, loose-format number normalization, and the fact that participant matches 1:1 AND group threads while handle returns only the 1:1 thread. It does not mention rate limits or result-size behavior beyond the schema's limit default.

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?

Four sentences, zero filler, and the core purpose plus ordering lead the description before any parameter guidance. The dense final sentence is compact but carries two distinct, non-redundant rules.

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

Completeness4/5

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

For a 9-parameter, zero-required list tool with annotations and no output schema, this covers ordering, GUID reuse, filter routing, and mutual exclusion. It leaves unstated what an unfiltered call returns (the most recent conversations up to the default limit) and how pagination terminates, though the cursor param documents the mechanics.

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?

Schema coverage is 100%, so the baseline would be 3, but the description adds a constraint that exists nowhere in the schema: at most ONE of participant, handle, name, group, or unread may be passed. It also clarifies that active_since/active_before/limit/cursor apply across all filter modes and disambiguates participant vs handle by intent.

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 and resource ("Find the user's iMessage conversations") plus a meaningful default ordering ("most recently active"). It also flags the return value's key affordance ("Each has a GUID you pass to other tools"), which orients the agent toward the downstream siblings without naming them.

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

Usage Guidelines4/5

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

Gives explicit routing rules among the filter parameters: use `participant` to find conversations with a phone number, `name` for contact/group name search, and it states the mutual-exclusion constraint "Pass at most ONE of participant, handle, name, group, or unread." What's absent is any statement of when to choose this tool over siblings like list_recent_messages or get_conversation_history.

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