Skip to main content
Glama
Carbon Voice

Carbon Voice

by PhononX

get_messages

Read-only

Retrieve up to 100 messages and transcripts by ID in one call, in the given order. Use when you have multiple message IDs and need their content without fetching each separately.

Instructions

Get up to 100 messages by ID in one call, in the order given. USE WHEN: You already have several message IDs (from search_transcripts, search_message_ids, an AI action) and need their transcripts. One call instead of one get_message per ID. USE INSTEAD: get_message for one ID or to expand conversation/creator/labels; list_messages to browse a conversation without IDs. FIRST: message_ids comes from search_transcripts (field results[].message_id, or workspaces[].results[].message_id) — call it first if you don't have one. EXAMPLE: {"message_ids":["msg-abc","msg-def"]} RETURNS: By default {results: [{id, conversation_id, creator_id, created_at, status, content.transcript, content.ai_summary}], missing_ids}; response_fields: ["results"] for whole messages (content.time_codes has one entry per word). status not active (e.g. processing): not ready, call again later. missing_ids: not found, no access, or deleted; do not retry them.

Input Schema

NameRequiredDescriptionDefault
languageNoLanguage of transcript and summary (e.g. `es`). Original when omitted.
message_idsYesMessage ids to fetch, 1-100. Results keep this order.
response_fieldsNoDot-path allowlist. Omit for the default fields in RETURNS; ["results"] for whole messages.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.14.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and non-destructive, and the description goes well beyond them: it documents the default return shape, the response_fields escape hatch, how non-active status values mean 'not ready, retry later', and that missing_ids should not be retried. This is exactly the kind of post-call behavior an agent needs.

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?

Labeled sections (USE WHEN, USE INSTEAD, FIRST, EXAMPLE, RETURNS) front-load the decision-relevant information, and every line carries actionable content. The density is high without being padded.

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?

With no output schema, the description carries the return-value burden itself and does so thoroughly, covering default fields, whole-message expansion via time_codes, status handling, and missing_ids semantics. Nothing needed to call or interpret the result 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 3 is the baseline, but the description adds real meaning: it tells the agent where message_ids should originate (search_transcripts result paths) and gives a concrete example payload. response_fields is only lightly elaborated beyond the schema's own dot-path description, keeping it short of a 5.

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 first sentence names the exact operation (fetch messages by ID), the batch size limit (up to 100), and the ordering guarantee in one call. It is immediately distinguishable from get_message (single ID) and list_messages (browse by conversation).

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?

Explicit USE WHEN / USE INSTEAD / FIRST sections name the sibling alternatives and the exact conditions that select them, including the provenance of message_ids from search_transcripts with the field path. There is essentially no routing ambiguity left for the agent.

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