Skip to main content
Glama

Doco Read

doco_read
Read-onlyIdempotent

Read specific sections of a live document within a token budget by anchoring to a block ID or resuming with a pagination cursor.

Instructions

按 token 预算局部读取文档。可用 around 锚定任意嵌套 block_id,或用 next_cursor 续读;游标绑定正文版本,read_cursor_stale 时必须重新规划。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
viewNoOutput view: markdown, tiptap-json, plain-text, or outline.
aroundNoStable block ID to center the local reading window around.
cursorNoOpaque pagination cursor returned by the previous response.
localeNoBCP-47 locale; use all where supported.
max_tokensNoApproximate maximum token budget for the response.
document_idYesTarget document ID.
context_afterNoNumber of surrounding blocks to include after the anchor.
context_beforeNoNumber of surrounding blocks to include before the anchor.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context beyond those annotations: the cursor is bound to the document body version, and `read_cursor_stale` signals that re-planning is needed. This is useful failure-mode disclosure and does not contradict the annotations.

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?

The description is compact, with the core purpose front-loaded and the navigation and staleness behavior condensed into two sentences. Every clause contributes useful information, with no filler or repetition of schema details.

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 tool with 8 parameters, full schema coverage, and an output schema, the description covers the essential purpose, local-reading scope, navigation mechanisms, and cursor-version staleness. It does not explicitly explain how to choose this over sibling tools, but that gap is more about usage guidance than completeness of the read operation itself.

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%, so all 8 parameters already have descriptions. The description adds some value by explaining that `around` can anchor any nested block_id and that cursor continuation is supported, but it also references `next_cursor` while the schema property is named `cursor`, creating slight ambiguity. Overall, it provides modest value beyond 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 states '按 token 预算局部读取文档' (read a document locally under a token budget), giving a specific verb, resource, and scope. It clearly conveys what the tool does, though it does not explicitly differentiate it from siblings like doco_get_document, doco_get_blocks, or doco_outline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description explains usage mechanics: use `around` to anchor a nested block_id, or use a cursor to continue reading, and that a stale cursor requires re-planning. However, it does not explicitly state when to prefer this tool over alternatives or when not to use it, so the usage context is implied rather than fully specified.

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