Skip to main content
Glama

get_agent_inbox_sources

Read-onlyIdempotent

Deprecated: use get_inbound_item. Still served unchanged during the alias window. Primary OCR read after list_agent_inbox: GET /v1/agent-inbox/:id/sources. Requires assigned-inbox and indexed-source reads enabled for the account, plus agent.inbox.read + agent.read. After indexed-source rollout, read selected item_id pages: exterior, requested contents and original sample_letter. Group by item, then request_id/bundle_id; cite page_id, preserve source_sha256 and review flags. Derive sender/address only from returned evidence. Both read scopes required; no acknowledgment version or extraction is created. Field meanings and sort order are in outputSchema. Use narrow queries/date windows and fetch selected items, not every mailbox on every poll. Pages: limit 1–50 (default 25), offset 0–10000. Item lists use next_offset; sources/scans use has_more and offset + returned length. Stop before exceeding 10000; narrow item searches, or report incomplete source/scan history. Pagination is a current view, not a snapshot or durable queue. Bound concurrency and retries; honor Retry-After when present, back off with jitter on 429/transient failures, and stop on access errors or disabled rollout. Do not share private results across agents/environments. No ETag, change cursor or unbounded export is promised. No receipt, provider call, signed image URL, email or charge. Managed-PMB custody and forwarded email remain separate and excluded. Required scopes: agent.inbox.read, agent.read. Agent-scoped bearer key required; member/facility keys cannot impersonate an agent. Rollout switches, current member approval, assignment, credential environment and SQL authorization are shared with REST. Never substitute another key or mail API after denial.

Input Schema

NameRequiredDescriptionDefault
limitNoPage size, 1–50 (default 25).
offsetNoItems to skip, 0–10000 (default 0). Advance by the number returned while more remain; results are a current view, not a snapshot.
item_idYesInbound item id (UUID) from a list or search result.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / item_id / description
      Added value: +"Inbound item id (UUID) from a list or search result."
    • addedInput schema / properties / limit / description
      Added value: +"Page size, 1–50 (default 25)."
    • addedInput schema / properties / offset / description
      Added value: +"Items to skip, 0–10000 (default 0). Advance by the number returned while more remain; results are a current view, not a snapshot."
  2. Added

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already establish readOnly/idempotent/non-destructive, but the description adds substantial context beyond them: required scopes (agent.inbox.read + agent.read), agent-scoped bearer key with no member/facility impersonation, rollout/assignment gating, Retry-After and jitter guidance, and explicit side-effect boundaries (no acknowledgment version, receipt, provider call, signed image URL, or charge). It also clarifies that pagination is a current view, not a snapshot.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the critical deprecation notice, but at roughly 330 words for a three-parameter read tool it is heavily oversized and reads as a run-on of fragments covering custody models, rollout switches, and unrelated exclusions (managed-PMB, forwarded email) that the caller does not need. Scopes are stated twice ('plus agent.inbox.read + agent.read' and 'Required scopes: agent.inbox.read, agent.read; Both read scopes required'), which is pure redundancy.

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 an outputSchema present, field meanings and sort order are correctly delegated to it, and the description still covers everything else an agent needs: permissions, rollout prerequisites, pagination model, retry policy, and result-sharing constraints. Nothing required to call it correctly 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 the baseline is 3, but the description adds real semantics beyond the schema: item lists page via next_offset while sources/scans use has_more plus offset+returned length, and it states the hard 10000 cutoff that the schema only encodes as a numeric maximum. It adds value while still restating some bounds already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb+resource (the OCR source read for an inbound item, GET /v1/agent-inbox/:id/sources) and positions it relative to siblings: it follows list_agent_inbox and is deprecated in favor of get_inbound_item. That is enough to tell it apart from the other inbox/mail tools. The deprecation notice, however, muddies whether an agent should call it at all, keeping it short of a 5.

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 routing is provided: use get_inbound_item instead, otherwise call this after list_agent_inbox, narrow by item_id and date window rather than polling whole mailboxes, and fetch only selected items. It also states when to stop (before offset 10000, or report incomplete history) and how to handle 429/transient failures, which is unusually complete usage guidance.

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.