Skip to main content
Glama

Brief verfolgen

get_letter_status
Read-onlyIdempotent

Use this when the user asks if a letter was mailed, handed to the post or delivered. Returns the status of one letter: ready, sending, unknown, sent, failed, unresolved, expired, cancelled or not_mailed. A prepared letter: the preview link, the enclosures and the page count. A sent letter: the stage at the print partner, the tracking number, the events, their dates (handed_over_at, delivered_at, returned_at) and a record of the send. Also a greeting card. For a batch, give batch_id: the result shows each item with its status, stage and tracking number.

Input Schema

NameRequiredDescriptionDefault
batch_idNoThe batch_id from prepare_letter with recipients. Returns the status of every letter of the batch. Then do not give letter_id.
letter_idNoThe letter_id from prepare_letter, for one letter. For a whole batch, give batch_id instead.

Output Schema

NameRequiredDescriptionDefault
statusYes
lettersNo
batch_idNo
letter_idNo
returned_atNoWhen the post reported the letter undeliverable or returned. Null otherwise.
delivered_atNoWhen the post recorded the delivery. Null without a delivery record.
handed_over_atNoWhen the post had the letter: the first event at or after the handover. Null until the post's event exists. May be later than the real handover if that event is missing.
recipient_nameNo
transaction_stateYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered and the description is consistent with it. Beyond that it discloses the status vocabulary and which tracking fields appear per state (handed_over_at, delivered_at, returned_at), which is useful, but it duplicates return-value content the output schema already carries rather than adding behavioral context such as refresh/polling timing or what an 'unknown'/'unresolved' status implies for retries.

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?

The usage trigger is front-loaded and the mode split (single vs batch) is clear, with no filler sentences. It is somewhat long because it enumerates return fields that the output schema already defines, which is the only real waste.

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 read-only status tool with an output schema and fully documented parameters, the description covers the intent, the status vocabulary, the two modes and the conditional fields. The remaining gap is that both parameters are optional, so the definition never says what the tool returns or whether it errors when neither letter_id nor batch_id is given.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already document themselves, including the 'then do not give letter_id' exclusivity note. The description reinforces only batch_id ('For a batch, give batch_id') and never mentions letter_id in prose, nor does it explain what happens when neither optional parameter is supplied. Baseline 3 is appropriate where the schema does the heavy lifting.

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 (returns the status of one letter, or a whole batch) and anchors it to the user intent ('asks if a letter was mailed, handed to the post or delivered'). It also enumerates the possible statuses and the returned payload shape, so an agent can tell it apart from list_letters or get_card_view 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 Guidelines4/5

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

The opening sentence gives a concrete when-to-use trigger, and the closing sentence explains the routing between the single-letter mode (letter_id) and the batch mode ('For a batch, give batch_id'). It never names an alternative sibling such as list_letters for bulk listing without status, so there is no explicit exclusion rule.

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.

Resources