Skip to main content
Glama

message_body

Read-only

Retrieve the full text of a Messages app message by ID, decoding typedstream data when the text field is NULL and returning an empty string for messages without text.

Instructions

Full text of one Message by id (chat.db, read-only). Decodes the attributedBody typedstream when message.text is NULL (the modern norm); returns "" for a message with no text. Needs Full Disk Access. id is a message guid from messages_search or messages_with.

Input Schema

NameRequiredDescriptionDefault
idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.15.1

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses that it reads chat.db, decodes attributedBody typedstream when message.text is NULL, returns an empty string for a message with no text, and requires Full Disk Access. These are meaningful behavioral and operational details an agent would not get from annotations alone.

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 purpose is front-loaded in the first clause, followed by the decoding edge case, auth requirement, and parameter source. Every sentence adds useful information with no repetition or filler.

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?

Given a single required parameter and an output schema, the description covers the key gaps: parameter provenance, NULL-text decoding behavior, empty-string return, and Full Disk Access. Nothing essential for correctly calling and interpreting this tool 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 description coverage is 0%, so the description must carry the parameter explanation. It does so by defining `id` as a message guid obtained from messages_search or messages_with, which is sufficient for correct invocation, though it omits format details such as guid shape.

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?

The description states a specific verb and resource: retrieve the full text of one Message by id from chat.db. It clearly distinguishes this from messages_search and messages_with by identifying them as the source of the guid rather than the tools that return the body.

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?

It tells the agent where the `id` comes from, naming messages_search and messages_with as the upstream tools, which implies this is a follow-up lookup. It does not explicitly state when not to use it or name alternatives for retrieving message text, so it stops short of full routing guidance.

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