Skip to main content
Glama

Read document

read_document
Read-only

Read a stored document (see list_documents) as Markdown - headings, lists, tables, slides and pages kept. Long documents come a page at a time: 40000 characters by default; when truncated is true, call again with offset = nextOffset. Also returns downloadUrl (valid 60 minutes) for the ORIGINAL file and markdownUrl for the Markdown - give these to the user; do not fetch them yourself. When a document has no Markdown (e.g. an image), markdownNote says why and only the download link is returned.

Input Schema

NameRequiredDescriptionDefault
idYesDocument id, from list_documents or a DOCUMENT <id> / IMAGE <id> attribute
offsetNoCharacter offset to start from (default 0)
businessNoOptional. The business this call is for, by name, e.g. "azquo" - it then runs there whatever business the session is in. Worth giving on writes when you work in more than one business: a new MCP session starts in the login's own business. list_businesses shows the names.
databaseYesDatabase name
maxCharsNoCharacters to return (default 40000, max 200000)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / business
      Added value: +{
      +  "description": "Optional. The business this call is for, by name, e.g. \"azquo\" - it then runs there whatever business the session is in. Worth giving on writes when you work in more than one business: a new MCP session starts in the login's own business. list_businesses shows the names.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the readOnly annotation: discloses the 40000-character default page size, the truncation/continuation contract, that downloadUrl expires in 60 minutes, and that the agent must hand links to the user rather than fetch them. The image/no-Markdown fallback (markdownNote explains, only download link returned) is exactly the kind of edge case that prevents mis-invocation.

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?

Three dense sentences, front-loaded with the core behavior before pagination and link handling. Every clause carries operational information; nothing is restated from the title or annotations.

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?

There is no output schema, so the description carries the return-value burden and does it: markdown body, truncated, nextOffset, downloadUrl, markdownUrl, markdownNote. An agent can read, paginate, and correctly handle the no-Markdown case without further discovery.

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 baseline would be 3, but the description adds the cross-parameter relationship the schema cannot express: offset should be set to the returned nextOffset when truncated. It also corroborates the default page size, though it leaves maxChars bounds to the schema.

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 ('Read a stored document ... as Markdown') plus the preserved structure (headings, lists, tables, slides, pages). It also points at list_documents as the source of the id, which cleanly separates it from the discovery sibling and from read_workbook.

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 when-to-use routing ('see list_documents' for the id) and, crucially, tells the agent how to continue an incomplete read: 'call again with offset = nextOffset' when 'truncated is true'. It does not explicitly contrast itself with read_workbook, but the stored-document scope is clear.

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