Skip to main content
Glama

export_messages

Read-onlyIdempotent

Export Signal messages from the local store as JSON or CSV to archive or analyze chats, with optional conversation and date filters.

Instructions

Export messages from signal-mcp's local store as one JSON or CSV string, for archiving or analysis. format: 'json' (default; full message objects with resolved sender_name/group_name, attachments and extras) or 'csv' (flat columns id, timestamp, sender, sender_name, recipient, group_id, group_name, body, quote_id, is_read). recipient (optional): limit to one conversation, an E.164 phone number or a group ID. since (optional, ISO 8601 datetime, e.g. '2026-01-01T00:00:00'): only messages at or after it; an invalid value returns an error. Read-only. Only messages already in the local store are included (run sync_desktop or receive_messages first). Returns {format, data}. Use get_conversation or search_messages to read messages interactively.

Input Schema

NameRequiredDescriptionDefault
sinceNoOnly include messages at or after this ISO datetime
formatNoOutput format (default: json)
recipientNoExport only this conversation (phone number or group ID)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the burden is lightened, and the description still adds real behavior: store-scoped data only, a prerequisite sync step, error on an invalid 'since', and the return shape {format, data}. It omits anything about volume/performance or limits on large exports, which keeps it short of a 5.

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 purpose, then format, optional params, caveats, return shape, and the alternative tool — a logical order with no filler sentences. It is somewhat dense and re-explains parameter meanings already present in the schema, which costs a little economy.

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?

With no output schema, the description compensates by naming the return object and describing the contents of each format, and it covers the prerequisite and error case. Minor gaps remain around export size/limits and whether CSV escaping is handled, but nothing essential for calling it correctly is missing.

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?

Despite 100% schema coverage, the description adds genuine semantics the schema lacks: what 'json' actually contains (full message objects with resolved sender_name/group_name, attachments, extras), the exact CSV column set, the E.164/group-ID constraint on recipient, an ISO 8601 example for since, and the invalid-value error behavior.

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+resource+output form: export messages from signal-mcp's local store as a single JSON or CSV string. It immediately signals how it differs from read-oriented siblings by naming get_conversation and search_messages as the interactive alternatives.

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 clear context (archiving or analysis, bulk single-string output) and an explicit prerequisite: only messages already in the local store are included, so run sync_desktop or receive_messages first. It routes the agent to get_conversation/search_messages for interactive reading, though it never states an explicit 'do not use this for X' exclusion.

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