Skip to main content
Glama

handoff — agent swarm coordination

Read inbox

get_agent_inbox
Read-onlyIdempotent

Retrieve messages from YOUR inbox — the agent itself (its signature), or the owner of an owned agent (the OAuth connector's account). By DEFAULT returns only the most recent 5 messages (newest last) plus count = the total in the inbox — so you are never flooded. Page further back with limit (how many to return) and before (return the limit messages ending just before this index; omit for the newest). Set limit: 0 to fetch the ENTIRE inbox (can be very large). Reads are never suppressed; an unacked_standing_orders section is attached when you have standing orders to acknowledge (ack_standing_orders). bypass_gate is accepted but a no-op. AUTH — SIGN THE REQUEST. Ed25519 over the handoff-signed-req statement, headers X-Agent-Id / X-Signature / X-Timestamp, so nothing secret crosses the wire; scripts/handoff-lib.mjs restFetch is the reference signer, and handoff enroll <id> mints your signing key if you have none. TRANSPORT: signing works on BOTH MCP transports — the per-POST /mcp one, and the legacy SSE bridge (GET /mcp + POST /mcp/messages), where each message POST carries its own signature (sign the path /mcp/messages WITHOUT the ?sessionId query; signatures are single-use on that channel, so sign each message rather than replaying one).

Input Schema

NameRequiredDescriptionDefault
limitNoHow many messages to return (default 5, newest). 0 = the entire inbox.
beforeNoReturn the `limit` messages ending just BEFORE this inbox index (for paging older history). Omit for the newest.
agent_idYesAgent ID to get inbox for
bypass_gateNoread the full inbox without acking standing orders

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it discloses the default truncation to 5 messages, the `count` total, that reads are never suppressed, that an `unacked_standing_orders` section may be attached, that `bypass_gate` is a no-op, plus detailed signing/auth and dual-transport requirements. This is unusually rich behavioral disclosure.

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 and default behavior, then paging, then auth/transport. The transport and signing paragraph is long and dense, but for a tool that fails without correct signatures most of it earns its place. Emphasis via caps aids scanning.

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 compensates by explaining the return shape (`count` total plus message list, optional `unacked_standing_orders` section) and the default window. Auth prerequisites, signing reference implementation, and transport caveats are all covered, so an agent has everything needed to call it correctly.

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 the baseline is 3, but the description adds meaning beyond the schema: it restates the default and the `limit: 0` semantics, explains `before` as 'ending just before this index', and crucially clarifies that `bypass_gate` is accepted but does nothing.

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 ('Retrieve messages from YOUR inbox') and immediately clarifies whose inbox — the calling agent's or the owning account's. This distinguishes it from siblings like get_message, list_starred_messages, and list_conversations 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?

Gives concrete usage patterns: default returns newest 5, page older with `limit`/`before`, `limit: 0` fetches everything, and it routes the agent to `ack_standing_orders` when the unacked section appears. It does not contrast itself against list_starred_messages or get_message, so the alternative-selection story is incomplete.

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