Skip to main content
Glama

Doco

๐Ÿ“– ไธญๆ–‡็‰ˆ

The document space where humans and AI agents write together. An open-source rich-text collaborative editor that puts your data back in your hands โ€” and treats your AI agents with the same care: block-level stable addressing, optimistic concurrency control, and a 29-tool MCP server, so agents read and write your knowledge base as safely as a careful human editor.

  • Hosted: doco.page โ€” free during beta

  • Connect your agent: claude mcp add doco -- npx -y --package doco-agent-cli doco mcp

  • CLI: npm i -g doco-agent-cli && doco login

  • npm: doco-agent-cli ยท API docs: doco.page/api-docs

Claude Code Plugin Marketplace

/plugin marketplace add songofhawk/doco
/plugin install doco@doco

The marketplace bundles the Doco MCP server and the safe read โ†’ version โ†’ protected-write operating protocol. Tokens remain in Claude Code's local configuration and are never included in the plugin repository.

Doco editor showing a live block-level Agent update in an English demo document

Why agents are safe here

Capability

What it means

Block-level stable addressing

Every paragraph has a block_<ULID> id โ€” position-independent, survives drags and folds

Optimistic concurrency

Reads return a sha256 version; writes require If-Match; on 409 the agent re-reads, merges, retries โ€” blind overwrites are impossible

Markdown round-trip

Export with ?annotate=anchors; write the whole document back and block ids are preserved

Humanโ€“agent co-editing

Agent writes flow through the same Yjs document โ€” changes appear live in the browser

Transactions & idempotency

Batch operations commit atomically; Idempotency-Key makes retries side-effect-free

Related MCP server: session-coord-mcp

Features

Editing Experience

  • Rich text editing: headings, lists, blockquotes, task lists, code blocks (syntax highlighting), tables, images, links, text styling, and more

  • / slash command: type / to open the command palette with fuzzy search โ€” supports pinyin abbreviations for Chinese users

  • Floating toolbar: auto-appears on text selection, all formatting actions within two centimeters of your cursor

  • Block drag-and-drop: hover the left edge of any paragraph to reveal a drag handle โ€” reorder content like building blocks

  • Collapsible sections: fold away sections you're not working on; collapse state persists across sessions

  • Auto heading numbering: one-click toggle โ€” H1โ€“H4 headings automatically maintain hierarchical numbering (1. 1.1 1.1.1)

  • Keyboard shortcuts: โŒฅโ†‘/โ†“ move blocks, โŒ˜D duplicate blocks, โŒ˜โŒฅ1/2/3/0 switch heading levels

Text-to-Diagram

Write Mermaid or PlantUML source code directly in your document. Diagrams render in place. Double-click to edit, fullscreen view, pinch-to-zoom โ€” no more export-import-replace cycles with draw.io.

  • Mermaid: flowcharts, sequence diagrams, class diagrams, Gantt charts, state diagrams, and more

  • PlantUML: sequence diagrams, class diagrams, use case diagrams, component diagrams, and more

Spreadsheet

A full spreadsheet engine embedded in your documents:

  • Formula evaluation, cell formatting

  • Freeze panes, sort & filter

  • Cell merge / split

  • CSV import / export

Use it inline as a content block, or pop it out as a standalone full-screen spreadsheet.

Knowledge Base

  • Knowledge Base โ†’ Folders (nestable) โ†’ Documents โ€” a three-level structure

  • Drag-and-drop reordering, renaming, and moving in the sidebar

  • Whole-KB ZIP export preserving folder hierarchy, with bundled images

  • Lossless native .doco.zip transfer for a document, folder, or whole knowledge base

Real-time Collaboration

Built on the Yjs CRDT algorithm:

  • No save button โ€” changes sync automatically

  • Offline-first: browser IndexedDB is the primary store; the server holds a snapshot. Edit without a network, merge automatically when reconnected

  • Seamless device switching: close your laptop, pick up your phone, keep writing

Import / Export

Format

Import

Export

Doco native package

โœ… Document / folder / KB

โœ… Lossless document / folder / KB

Markdown

โœ… Paste / file upload

โœ… Single doc & KB bundle

Word (DOCX)

โœ…

โœ…

PDF

โœ…

โœ…

HTML

โœ…

โ€”

WeChat Official Account

โ€”

โœ… (with theme preview)

Images (in-document)

โœ… (paste / drag-drop)

โœ… (bundled in ZIP)

API ยท MCP ยท CLI

Three channels, one contract:

  • REST API: OpenAPI 3.1 spec, Bearer Token auth, ETag versioning, cursor pagination, idempotency keys

  • MCP server: doco mcp (ships inside doco-agent-cli) โ€” 29 tools plus doco:// resources

  • doco CLI: login / whoami / docs / blocks / edit / mcp, global --json, writes internalize ETag/If-Match

Turn your docs into programmable assets โ€” script your own backups, let an agent organize your knowledge base, pipe docs from your publishing workflow to your blog. Built-in API documentation page, ready to use out of the box.

Tech Stack

Layer

Technology

Frontend Framework

React 18 + Vite + TypeScript

CSS

Tailwind CSS v4

Editor

Tiptap v3 (ProseMirror)

Collaboration

Yjs (CRDT) + Hocuspocus

Diagrams

Mermaid + PlantUML

Backend

Node.js + Express + Hocuspocus Server

Database

better-sqlite3 (SQLite, WAL mode)

UI Components

Radix UI, Lucide React, Tippy.js

Quick Start

Prerequisites

  • Node.js >= 22

  • pnpm

Install & Run

# Install frontend dependencies
pnpm install

# Install backend dependencies
cd backend && npm install && cd ..

# Start the frontend dev server (Vite, default :5173)
pnpm run dev

# In another terminal, start the backend (Express + WebSocket, default :8000)
cd backend
npm run dev

Open http://localhost:5173 โ€” it will auto-connect to the backend WebSocket service.

The complete self-hosted package includes a Caddy frontend, Node.js collaboration backend, persistent SQLite storage, health checks, and a same-origin WebSocket proxy. The public images support both linux/amd64 and linux/arm64.

git clone https://github.com/songofhawk/doco.git
cd doco
cp .env.docker.example .env.docker

# Review .env.docker first, then start with prebuilt Docker Hub images
docker compose --env-file .env.docker up -d

# Verify the deployment
docker compose --env-file .env.docker ps
curl --fail http://localhost:8080/healthz

Open http://localhost:8080 by default. Set ALLOWED_ORIGINS, COOKIE_SECURE, Google OAuth, and SMTP values in .env.docker for your environment. These values are injected when the containers start and are not baked into the images. Application data is stored in the doco-data named volume.

Docker Hub: songofhawkg/doco-frontend ยท songofhawkg/doco-backend

To build the same images from source instead:

docker compose --env-file .env.docker up -d --build

See the Docker deployment guide for all configuration options, HTTPS, logs, backup, restore, and upgrades. Do not run docker compose down -v unless you intend to delete the database and attachments.

Manual Build & Deployment

# Frontend build
pnpm run build          # output โ†’ dist/
pnpm run deploy         # deploy to Cloudflare Pages

# Backend (production)
cd backend
npm start

Project Structure

doco/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.tsx                      # App entry point
โ”‚   โ”œโ”€โ”€ App.tsx                       # Root component, routing, import/export
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ””โ”€โ”€ Sidebar.tsx               # KB sidebar (document tree)
โ”‚   โ””โ”€โ”€ editor/                       # Editor module
โ”‚       โ”œโ”€โ”€ index.ts                  # Entry, exports DocoEditor component
โ”‚       โ”œโ”€โ”€ DocoEditor.tsx            # Editor core (Yjs/Hocuspocus init, extension registration)
โ”‚       โ”œโ”€โ”€ types.ts                  # DocoEditor Props/Ref type definitions
โ”‚       โ””โ”€โ”€ components/
โ”‚           โ”œโ”€โ”€ BubbleMenu.tsx        # Selection floating toolbar
โ”‚           โ”œโ”€โ”€ BlockHandle.tsx       # Block drag handle
โ”‚           โ”œโ”€โ”€ SlashCommand.ts       # / command palette
โ”‚           โ”œโ”€โ”€ CommandList.tsx       # Command palette UI
โ”‚           โ”œโ”€โ”€ suggestions.ts        # Command menu data
โ”‚           โ”œโ”€โ”€ CollapseExtension.ts  # Block collapse extension
โ”‚           โ”œโ”€โ”€ DocSettings.tsx       # Document settings (heading numbering, background)
โ”‚           โ”œโ”€โ”€ MermaidBlock.ts       # Mermaid node definition
โ”‚           โ”œโ”€โ”€ MermaidComponent.tsx  # Mermaid renderer
โ”‚           โ”œโ”€โ”€ PlantUMLBlock.ts      # PlantUML node definition
โ”‚           โ”œโ”€โ”€ PlantUMLComponent.tsx # PlantUML renderer
โ”‚           โ”œโ”€โ”€ CalloutBlock.ts       # Callout block definition
โ”‚           โ”œโ”€โ”€ CalloutComponent.tsx  # Callout renderer
โ”‚           โ”œโ”€โ”€ SpreadsheetBlock.ts   # Spreadsheet node definition
โ”‚           โ”œโ”€โ”€ SpreadsheetComponent.tsx  # Spreadsheet renderer
โ”‚           โ”œโ”€โ”€ spreadsheetEngine.ts  # Spreadsheet calculation engine
โ”‚           โ”œโ”€โ”€ WeChatExportDialog.tsx # WeChat Official Account export
โ”‚           โ”œโ”€โ”€ KeyboardShortcuts.ts  # Keyboard shortcuts
โ”‚           โ”œโ”€โ”€ TableOfContents.tsx   # Table of contents
โ”‚           โ”œโ”€โ”€ CodeBlockComponent.tsx # Code block (highlight + copy)
โ”‚           โ””โ”€โ”€ ImageComponent.tsx    # Image renderer
โ”œโ”€โ”€ backend/
โ”‚   โ”œโ”€โ”€ server.js                     # Entry: Express + Hocuspocus + export routes
โ”‚   โ”œโ”€โ”€ database.js                   # better-sqlite3 init & schema
โ”‚   โ”œโ”€โ”€ api.js                        # KB / folder / document REST API
โ”‚   โ”œโ”€โ”€ auth.js                       # Auth (OAuth + Email + API Token)
โ”‚   โ”œโ”€โ”€ markdown.js                   # YDoc โ†’ Markdown server-side export
โ”‚   โ”œโ”€โ”€ permissions.js                # Permission management
โ”‚   โ”œโ”€โ”€ quota.js                      # Quota management
โ”‚   โ”œโ”€โ”€ openapi.js                    # OpenAPI spec definition
โ”‚   โ””โ”€โ”€ tests/                        # Backend tests
โ””โ”€โ”€ docs/                             # Design docs & proposals

Standalone Frontend Component

The editor core is also published as doco-text-editor. It contains the full Doco editing experience and built-in styles, but has no dependency on Doco authentication, REST APIs, collaboration services, or IndexedDB. The host application decides whether content lives in memory, browser storage, its own backend, or an external system such as ClickUp.

npm install doco-text-editor
import { useRef } from 'react'
import {
  DocoTextEditor,
  type DocoTextEditorRef,
} from 'doco-text-editor'
import 'doco-text-editor/style.css'

const editorRef = useRef<DocoTextEditorRef>(null)

<DocoTextEditor
  ref={editorRef}
  defaultValue="# Browser-only draft"
  format="markdown"
  onChange={({ steps }) => {
    // Only the ProseMirror steps changed by this transaction.
    queueIncrementalChanges(steps)
  }}
/>

// Read the complete document only when needed.
const json = editorRef.current?.getContent('tiptap-json')
const markdown = editorRef.current?.getContent('markdown')
const html = editorRef.current?.getContent('html')
const text = editorRef.current?.getContent('text')

The package includes headings, inline formatting, blockquotes, ordered/unordered/task lists, code blocks, images, tables, callouts, Mermaid, optional PlantUML rendering, and embedded spreadsheets. See src/editor/README.md for the complete API and integration notes.

Full Doco Editor Component Usage

import { DocoEditor } from './editor'
import type { DocoEditorRef } from './editor/types'

const editorRef = useRef<DocoEditorRef>(null)

<DocoEditor
  ref={editorRef}
  docId="doc-001"
  userId="user-001"
  collaboration={{
    websocketUrl: 'ws://localhost:8000',
  }}
  onTitleChange={(docId, title) => console.log('Title changed:', title)}
  placeholder="Start writingโ€ฆ"
/>

{/* Call export methods via ref */}
<button onClick={() => editorRef.current?.exportMarkdown()}>Export MD</button>

Collaboration Architecture

Browser IndexedDB (y-indexeddb)  โ† local primary store
       โ†•
Browser Y.Doc  โ† @hocuspocus/provider (WebSocket)
       โ†•  Yjs binary delta messages
Server @hocuspocus/server  โ†’  SQLite ydoc_state (one merged snapshot per doc)
  • The browser IndexedDB is the primary store; the server snapshot is auxiliary. If the server snapshot is lost, simply open the document in the browser to repopulate it.

  • Offline editing works seamlessly; changes sync automatically when the network returns.

  • Collaborative cursors: supported by the framework, not enabled by default.

Markdown Export

Both single documents and KB bundles support Markdown export, generated on-the-fly from YDoc on the server:

# Single document export
curl http://localhost:8000/api/docs/{id}/export.md

# KB ZIP bundle
curl http://localhost:8000/api/kb/{id}/export.zip

Custom nodes (Mermaid, PlantUML, Callout, etc.) have corresponding serialization rules in backend/markdown.js. When adding new custom nodes, update the server-side serializer accordingly.

Lossless Doco Transfer

Use Export Doco File in a document, folder, or knowledge-base menu. The resulting .doco.zip contains the original Yjs state, hierarchy, document settings, standalone spreadsheets, and attachments. Importing always creates a copy with fresh resource and attachment IDs, so it can safely move between independent Doco deployments without colliding with existing data.

Use the upload button beside the knowledge-base heading to import a whole knowledge base. To import a document or folder package, choose Import Doco File from the destination knowledge base or folder menu.

License

MIT

Available Tools

29 tools
doco_batch_editDoco Batch EditA
Destructive

ๅ•ไบ‹ๅŠกๆ‰น้‡็ผ–่พ‘๏ผˆ1โ€“100 ไธชๆ“ไฝœ๏ผŒๅ…จๆœ‰ๆˆ–ๅ…จๆ— ๏ผ‰๏ผšoperations ไธบ {op: insert|replace|delete, ...} ๆ•ฐ็ป„ใ€‚base_version ๅฟ…ๅกซ่ฏญไน‰็”ฑๆœๅŠก็ซฏๅผบๅˆถ๏ผˆไธๅกซ่‡ชๅŠจ่ฏปๅ–๏ผ‰ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
operationsYesAtomic insert, replace, or delete operations.
document_idYesTarget document ID.
base_versionNoDocument version read before the protected write.
idempotency_keyNoๅน‚็ญ‰้”ฎ๏ผŒ้˜ฒ้‡่ฏ•ๅ‰ฏไฝœ็”จ

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the write and destructive nature (readOnlyHint=false, destructiveHint=true, idempotentHint=false), so the bar is lower. The description adds genuinely useful behavioral context beyond those flags: atomicity ('ๅ…จๆœ‰ๆˆ–ๅ…จๆ— ' all-or-nothing) and the server-enforced base_version semantics with auto-read when omitted. This tells the agent how the operation behaves at execution time. It stops short of describing rollback/error behavior or the consequences of the destructive ops, but it meaningfully supplements 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.

Conciseness4/5

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

Two dense sentences with the most important facts front-loaded: transaction scope and atomicity come first, followed by the op array shape, then the base_version behavior. There is no filler or repetition of schema fields. It is slightly compressed in a way that assumes familiarity (e.g., the '...' in the op shape), but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations cover the safety profile, so return values and destructive/write hints are handled. The notable gap is the operation payload structure: the description's '{op: insert|replace|delete, ...}' plus the schema's additionalProperties-{} items leaves the actual mutation fields (e.g., where to insert, what replacement content is, which path is targeted) undocumented. For a destructive batch tool this is a significant omission. Sibling routing guidance is also absent. Adequate but with clear gaps.

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 description coverage is 100%, setting the baseline at 3. The description adds real value beyond the schema: it specifies the operation item shape ({op: insert|replace|delete, ...}) which the schema's generic items object with additionalProperties:{} leaves entirely open, and it clarifies base_version as server-required-but-auto-read, going beyond the schema's 'Document version read before the protected write'. The idempotency_key already has a schema description, and the description adds nothing further there, which is acceptable.

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 a specific verb and resource: ๆ‰น้‡็ผ–่พ‘ (batch edit) targeting a doco document, scoped to 1โ€“100 operations with explicit op types (insert|replace|delete) and all-or-nothing transaction semantics. This is clear and actionable, but it does not explicitly differentiate from sibling tools such as doco_update_document or the block-level edit tools, relying on the 'batch' framing and the tool name itself to signal distinction.

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?

Usage context is implied rather than stated: the 'single transaction / all-or-nothing' and '1โ€“100 operations' framing signals this is for atomic multi-operation edits, which is a meaningful cue. However, there is no explicit when-to-use vs when-not-to-use guidance, no named alternatives (e.g., doco_update_document for a single edit, doco_patch_block/doco_insert_blocks/doco_delete_block for finer-grained operations), and no mention of prerequisites such as document existence or permissions.

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

doco_changesDoco ChangesA
Read-onlyIdempotent

ๅปบ็ซ‹ๆˆ–ๅขž้‡่ฏปๅ–ๆ–‡ๆกฃ็š„ๅ—็บงๅ˜ๆ›ดๆฐดไฝใ€‚้ฆ–ๆฌกไธไผ  after ่ฟ”ๅ›ž manifest ไธŽ cursor๏ผ›ๅŽ็ปญไผ  cursor ่Žทๅ– added/removed/modified/movedใ€‚sync_required=true ๆ—ถๅฟ…้กป้‡ๆ–ฐ่ฏปๅ–ๆญฃๆ–‡ๅนถๅปบ็ซ‹ๆ–ฐๅŸบ็บฟใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoไธŠๆฌกๅ“ๅบ”่ฟ”ๅ›ž็š„ไธ้€ๆ˜Ž cursor๏ผ›้ฆ–ๆฌก่ฐƒ็”จ็œ็•ฅ
limitNoๅ•้กตๅ˜ๆ›ดๆ‰นๆฌกๆ•ฐ๏ผŒ้ป˜่ฎค 100
localeNoBCP-47 locale; use all where supported.
document_idYesๆ–‡ๆกฃ ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, and non-destructive. The description adds meaningful context by explaining the two-phase behavior (manifest+cursor first, then added/removed/modified/moved) and the sync_required flag's implication, which is valuable beyond the annotations. It doesn't describe error or rate-limit behavior, but the core incremental pattern is well disclosed.

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?

Two sentences, both information-dense and front-loaded. The first sentence explains the core concept (watermark establishment and incremental reads) with a clear mode split. The second sentence encodes the critical behavioral rule. No filler or repetition.

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?

Given an output schema exists and annotations cover safety, the description sufficiently explains the tool's stateful behavior and how to use it correctly. The only minor gap is that it doesn't explicitly define what happens if 'after' is missing on a second call, but the phrase '้ฆ–ๆฌกไธไผ ' implies the convention clearly.

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 description coverage is 100%, so the schema documents all parameters. The description adds usage-level meaning (first call omits after, subsequent calls use cursor) that complements the schema's generic 'opaque cursor' description. However, it doesn't add detail beyond what a careful agent could infer from the schema plus the description.

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?

The description clearly states the tool establishes or incrementally reads block-level change watermarks for documents. It distinguishes the two modes (initial manifest/cursor vs. subsequent cursor-based diff) and references sibling tools by indicating a re-read of content is required when sync_required=true, which differentiates it from doco_read or doco_get_blocks.

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?

The description explicitly tells when to omit 'after' (first call) and when to pass 'cursor' (subsequent calls). It also provides a critical conditional: if sync_required=true, the agent must re-read the document body and establish a new baseline, which is a clear instruction on what to do next rather than just what the tool does.

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

doco_conceptsDoco ConceptsA
Read-onlyIdempotent

็ปŸไธ€่ฏปๅ–ๆฆ‚ๅฟตๅฑ‚๏ผšๅˆ—ๅ‡บ/่Žทๅ–ๆ˜พๅผๆฆ‚ๅฟตใ€ๆฒฟๆฆ‚ๅฟตๅ…ณ็ณป้ๅކ๏ผŒๆˆ–ๅˆ—ๅ‡บๅพ…ๅฎกๆ ธๅ€™้€‰ใ€‚ๅ€™้€‰ไธŽๆ˜พๅผๆฆ‚ๅฟตไธฅๆ ผๅˆ†็ฆปใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoTitle or body search query.
limitNoMaximum number of results (1โ€“100).
actionYesOperation to perform.
cursorNoOpaque pagination cursor returned by the previous response.
statusNoFilter by the requested status.
directionNoRelationship direction: outgoing, incoming, or both.
predicateNoRelationship type to filter or create.
concept_idNoExplicit concept ID.
min_confidenceNoMinimum candidate confidence from 0 to 1.
knowledge_base_idNoKnowledge base ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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, and the description aligns with those. It adds extra value by warning that candidates are strictly separated from explicit concepts, which prevents an agent from expecting candidates in list/get results. No contradiction with annotations exists.

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?

A single, compact sentence front-loads the tool's purpose and uses a colon-structured list to enumerate supported operations. Every clause earns its place; there is no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters, 4 actions, and a large sibling set, the description covers the broad scope and the output schema handles return values, but it omits pagination behavior and relationship-direction parameters, and it does not help an agent decide between this and sibling tools like doco_traverse. It is sufficient for a basic invocation but not a complete selection guide.

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?

With schema coverage at 100%, the baseline is 3. The description goes beyond the schema by semantically grouping the actions: list/get are for explicit concepts, candidates is a separate operation, and traverse follows concept relationships. This clarification directly affects how action, status, and min_confidence should be used, adding meaning that the schema's generic descriptions do not provide.

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 a clear purpose: a unified read layer for concepts, listing operations (list, get, traverse, candidates) on a specific resource. It distinguishes concepts from generic search/traversal tools by adding the notion of strict separation, but it does not explicitly contrast itself with sibling doco_traverse, so it stops short of full sibling differentiation.

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 wording implies this is the unified read access point for the concept layer and that candidates must be listed via the candidates action rather than list/get. However, it gives no explicit 'use this instead of X' guidance, and with siblings like doco_traverse, doco_search, and doco_edit_concepts available, an agent is left to infer when this tool is the right choice.

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

doco_create_documentDoco Create DocumentA

ๆ–ฐๅปบๆ–‡ๆกฃ๏ผŒๅฏๅŒๆ—ถ็Œๅ…ฅๅˆๅง‹ๆญฃๆ–‡๏ผˆcontent: {format: markdown|tiptap-json|html, content|document}๏ผ‰

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesNew document title.
contentNoContent payload or child block content.
folder_idNoFolder ID.
idempotency_keyNoOptional key that makes a retried write safe.
knowledge_base_idNoKnowledge base ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark the tool as not read-only, not idempotent, and not destructive; the description adds useful behavioral context by specifying the accepted content formats (markdown, tiptap-json, html) and the two supported payload shapes (content or document). It does not contradict 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 entire guidance is one compact, front-loaded sentence: primary purpose first, then the optional content detail. No filler or repetition of schema fields.

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?

Given an output schema, 100% parameter coverage, and annotations, the description is largely complete. It could be slightly stronger by hinting that folder_id/knowledge_base_id scope the creation and that idempotency_key prevents duplicate retries, but those are already visible in the schema.

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. The description goes beyond the schema by explaining the nested content object's format enum and alternative inner fields, which the schema leaves as a generic additionalProperties object.

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 specific verb and resource ('ๆ–ฐๅปบๆ–‡ๆกฃ' / create a new document) and adds the valuable capability of injecting initial content with supported formats. It is not a tautology, and the create action clearly separates it from update/get siblings, though it does not explicitly name an alternative.

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 intended use is implied: use this tool when a new document must be created, optionally with initial body content. However, it provides no explicit when/when-not guidance or alternatives such as doco_update_document for existing documents, so an agent must infer routing.

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

doco_create_relationDoco Create RelationA

ไปŽ็จณๅฎšๆฅๆบๅ—ๅˆ›ๅปบไธ€ๆกๆ˜พๅผใ€ๅฏๅฎก่ฎก็š„็ฑปๅž‹ๅ…ณ็ณปใ€‚target_uri ไฝฟ็”จ doco://doc/{id}#block={block_id}๏ผ›ๅˆ›ๅปบๅ‰ๆœๅŠก็ซฏๆ ก้ชŒไธค็ซฏๆƒ้™ไธŽๅ—ๅญ˜ๅœจๆ€งใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
predicateNoRelationship type to filter or create.
target_uriYesDoco URI of the target document or block.
anchor_textNoOptional human-readable text anchoring the relation.
idempotency_keyNoOptional key that makes a retried write safe.
source_block_idYesStable ID of the source block.
source_document_idYesDocument containing the source block.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (which only mark readOnly/idempotent/destructive as false), the description reveals that relations are auditable, that the server validates both ends' permissions and existence prior to creation, and implicitly signals non-idempotency by referencing an idempotency_key. This adds meaningful behavioral context without contradicting 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 entire description is a single, front-loaded sentence that states purpose, target URI format, and server-side checks. No filler; every clause contributes.

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 creation tool with six parameters and an output schema, the description covers the purpose, the critical URI format, and validation behavior. Combined with full schema coverage and an output schema, the agent has enough to call it correctly; remaining details like return values are presumably handled by the output schema.

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?

All six parameters have schema descriptions, so the baseline is 3. The description adds crucial semantics for target_uri by specifying the exact doco://doc/{id}#block={block_id} format, which is absent from the schema property description, and it frames source_document_id/source_block_id as a stable source block.

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 clear verb-resource pair: creates an explicit, auditable typed relation from a stable source block. The resource is specific enough to distinguish it from the many read/update/document sibling tools, and no sibling appears to create relations.

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 provides some context by specifying the target_uri format and explaining that the server validates permissions and block existence before creation. However, it does not explicitly state when to use this tool over alternatives or exclude any sibling, so usage guidance is mostly implied by the tool's purpose.

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

doco_delete_blockDoco Delete BlockC
DestructiveIdempotent

ๅˆ ้™คๅ•ไธชๅ—

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesStable block ID within the target document.
document_idYesTarget document ID.
base_versionNoDocument version read before the protected write.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the basic safety profile is known. The description adds no behavioral context such as permanence, cascading deletion of child blocks, versioning implications, or whether base_version is required for safe deletion. It is not contradictory, but it provides zero value beyond 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.

Conciseness4/5

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

The description is extremely short and front-loaded, with no wasted words. It is structurally efficient, though it is so terse that it leaves important behavioral and usage context for other dimensions to cover.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a destructive mutation tool, the description should provide some context about consequences or intended use cases. Annotations and schema cover safety and parameters, but the description itself is incomplete for an agent deciding whether deletion is appropriate or what side effects may occur.

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 description coverage is 100%, so all three parameters are already documented in the schema, including the optional base_version. The description adds no parameter-level meaning, so the baseline score of 3 is appropriate.

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 'ๅˆ ้™คๅ•ไธชๅ—' clearly states a specific action (delete) on a specific resource (a single block), so the core purpose is understandable. However, it does not explicitly differentiate this tool from sibling block operations like doco_patch_block or doco_insert_blocks beyond the verb itself.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives. The sibling list contains related block-level operations, but the description provides no context, conditions, or exclusions to help the agent decide which tool fits.

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

doco_edit_conceptsDoco Edit ConceptsA
Destructive

็ปŸไธ€ๅ†™ๅ…ฅๆ˜พๅผๆฆ‚ๅฟต๏ผšๅˆ›ๅปบใ€ๆ›ดๆ–ฐใ€่กฅๆฅๆบ/ๅ…ณ็ณปใ€ๅˆๅนถ๏ผŒไปฅๅŠๆŽฅๅ—/ๆ‹’็ปๅ€™้€‰ใ€‚ๅฎขๆˆท็ซฏ่‡ชๅŠจ่ฏปๅ– ETagใ€ๅ‘้€ If-Match๏ผŒๅนถไธบๆฏๆฌกๅ†™ๅ…ฅ็”Ÿๆˆๅน‚็ญ‰้”ฎใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoConcept or resource name.
actionYesOperation to perform.
reasonNoHuman-readable reason for the operation.
statusNoFilter by the requested status.
aliasesNoAlternative names for the concept.
sourcesNoEvidence sources attached to the concept.
relationsNoConcept relations to add.
concept_idNoExplicit concept ID.
descriptionNodescription parameter.
candidate_idNoPending concept candidate ID.
knowledge_base_idNoKnowledge base ID.
target_concept_idNoConcept ID to merge into.
canonical_document_idNoCanonical document ID for the concept.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the operation as destructive and not read-only. The description adds valuable behavior beyond annotations: automatic ETag reading, If-Match header sending, and idempotency-key generation for each write. These details alert the agent to optimistic concurrency and retry expectations. There is no contradiction with idempotentHint=false because generating a key does not assert tool-level idempotency.

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 one dense, front-loaded sentence listing all operation types, followed by one sentence of critical client behavior. Every clause carries information and there is no padding or repetition.

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 13-parameter, 7-action destructive write tool, the description provides the high-level operation map and concurrency/idempotency behavior, while the output schema, annotations, and per-parameter schema descriptions cover the rest. The main remaining gap is explicit action-to-parameter guidance, but the schema field names and descriptions are sufficiently suggestive for an agent to fill it.

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 goes beyond the enum names by explaining the semantic groups: create, update, source/relation addition, merge, and candidate accept/reject. It still does not map each action to the specific required parameters (e.g., merge needs target_concept_id), but the schema parameter names partially cover that.

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?

The description states a specific verb ('unified write') and a specific resource ('explicit concepts'), then enumerates the exact operation categories: create, update, add sources/relations, merge, and accept/reject candidates. This clearly identifies the tool as the concept-mutation entry point and differentiates it from read/search/translation siblings such as doco_get_tree or doco_search.

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 word 'unified' implies this is the intended single entry point for explicit concept writes, and the action list implies the supported cases. However, the description never says when to prefer this over overlapping siblings like doco_create_relation or doco_batch_edit, nor does it mention any exclusion conditions.

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

doco_get_blocksDoco Get BlocksA
Read-onlyIdempotent

ๆŒ‰ๅ—่ฏปๅ–ๆ–‡ๆกฃ๏ผš่ฟ”ๅ›ž้กถๅฑ‚๏ผˆๆˆ– recursive=true ๆ—ถๅ…จ้ƒจ๏ผ‰ๅ—ๅŠๅ…ถ็จณๅฎš block_id ไธŽ version

ParametersJSON Schema
NameRequiredDescriptionDefault
recursiveNoๆ˜ฏๅฆๅฑ•ๅผ€ๅตŒๅฅ—ๅ—๏ผŒ้ป˜่ฎค false
document_idYesTarget document ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds useful context about stable block_id and version, which is helpful. It doesn't disclose pagination, ordering, or whether full content is included, but for a read-only tool with annotations, this is acceptable but not rich.

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 a single, dense line that front-loads the core behavior and the key parameter (recursive). No wasted words; the Chinese phrasing is compact and clear.

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 block-reading tool with an output schema and strong annotations, the description covers the core behavior and the toggle. It could mention whether it's suitable for large documents or whether blocks include content text, but the output schema likely covers return values. It's structurally complete and adequate for the agent to select and invoke the tool.

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 description coverage is 100%, so both parameters (recursive and document_id) are already documented in the schema. The description adds the concept of top-level versus all blocks, which maps to the recursive parameter, but doesn't add syntax or format details beyond the schema. Baseline 3 applies.

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?

The description uses a specific verb ('ๆŒ‰ๅ—่ฏปๅ–' / read by blocks), names the resource (ๆ–‡ๆกฃๅ— / document blocks), and clarifies behavior (่ฟ”ๅ›ž้กถๅฑ‚ๆˆ–ๅ…จ้ƒจๅ— with stable block_id and version). It clearly distinguishes itself from doco_get_document, doco_read, doco_traverse, and doco_get_tree because it emphasizes block-level access and stable IDs.

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 description specifies when to use it: to read blocks, with a clear toggle for top-level vs recursive. It doesn't explicitly say when-not-to-use or name alternatives, but the sibling list and the 'ๆŒ‰ๅ—' framing imply it's for block retrieval, not for document metadata or search. The missing exclusions are a minor gap.

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

doco_get_documentDoco Get DocumentA
Read-onlyIdempotent

่ฏปๅ–ๆ•ด็ฏ‡ๆ–‡ๆกฃๆญฃๆ–‡ใ€‚format: markdown๏ผˆ่ฏปๆ‡‚่ฏญไน‰๏ผŒ้™„ๅธฆ warnings ้™็บงๆ็คบ๏ผ‰/ tiptap-json๏ผˆๆ— ๆŸ๏ผŒ็ฒพ็กฎ็ผ–่พ‘็”จ๏ผ‰/ htmlใ€‚่ฟ”ๅ›žๅซ version๏ผˆๅŽ็ปญๅ†™ๅ…ฅ้œ€ๆบๅธฆ๏ผ‰ใ€‚annotate=anchors ๆ—ถ markdown ๆฏไธช้กถๅฑ‚ๅ—ๅธฆ ้”š็‚น๏ผŒๆ”นๅฎŒๆ•ด็ฏ‡ๅ†™ๅ›ž๏ผˆPUT content format=markdown๏ผ‰ๅฏๆŒ‰้”š็‚นไฟ็•™ๆœชๆ”นๅŠจๅ—็š„ IDใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo้ป˜่ฎค tiptap-json
localeNo่ฏปๅ–ๆŒ‡ๅฎš่ฏญ่จ€็‰ˆๆœฌ๏ผ›ไนŸๅฏไผ  docset_ ID
annotateNoไป… markdown๏ผšๆณจๅ…ฅๅ—้”š็‚น
document_idYesๆ–‡ๆกฃ ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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, covering the safety profile with no contradiction. The description adds real behavioral context beyond annotations: the returned payload carries a version that must be attached to later writes, and annotate=anchors injects <!--@block=<id>--> anchors per top-level block to preserve block IDs across full-document rewrites. The 'warnings ้™็บงๆ็คบ' behavior is mentioned but not concretely defined, keeping this from a 5.

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 description is one dense, front-loaded passage that opens with the main purpose before covering formats, version contract, and anchor workflow. Every clause carries information โ€” format trade-offs, the version-carry requirement, and write-back behavior โ€” so nothing is redundant. It is long but justifiably so, and the logical flow is clear; splitting it into shorter sentences would improve readability slightly.

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?

With an output schema present, a 4-parameter signature, and annotations covering the read-only/idempotent safety profile, the description completes the key functional gaps: it names the version field, explains format fidelity differences, and describes the anchor-preservation workflow for round-trip edits. The weakest point is locale โ€” both schema and description mention docset_ID and language versions without explaining fallback behavior when a locale is absent โ€” so it is strong but not fully complete.

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 description coverage is 100%, so the baseline is 3. The description adds meaning for two of four parameters: it explains why to choose each format (markdown for semantic reading vs tiptap-json for lossless editing) and what the annotate anchors accomplish (preserving unchanged block IDs on write-back). document_id and locale receive no additional meaning beyond the schema, so the added value is partial โ€” above baseline but not complete.

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 a specific verb+resource: '่ฏปๅ–ๆ•ด็ฏ‡ๆ–‡ๆกฃๆญฃๆ–‡' (read the entire document body). The scope qualifier 'ๆ•ด็ฏ‡' (entire) and the format list distinguish it from block-level siblings like doco_get_blocks, doco_outline, and doco_get_tree. However, it never explicitly references overlapping siblings such as doco_read, so the differentiation is implicit rather than stated.

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 description gives explicit format-selection guidance: markdown for semantic reading (with warnings downgrade hints), tiptap-json for lossless precise editing, and html as a third option. It also explains the annotate=anchors write-back workflow โ€” injecting block IDs and preserving unchanged block IDs on PUT โ€” and the version field requirement for subsequent writes. It lacks explicit tool-selection exclusions against siblings like doco_read or doco_get_blocks, leaving that to inference.

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

doco_get_treeDoco Get TreeA
Read-onlyIdempotent

่Žทๅ–ไธ€ไธช็Ÿฅ่ฏ†ๅบ“็š„ๅฎŒๆ•ด็›ฎๅฝ•ๆ ‘๏ผˆๆ–‡ไปถๅคน + ๆ–‡ๆกฃ๏ผ‰

ParametersJSON Schema
NameRequiredDescriptionDefault
kb_idYes็Ÿฅ่ฏ†ๅบ“ ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description is consistent with the read-only, idempotent, non-destructive annotations and adds that the result is the complete directory tree including folders and documents. It does not hide side effects, and no contradictory behavior is mentioned.

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 a single focused sentence with no redundant words, examples, or filler.

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 simple one-parameter read-only tree tool, the description provides sufficient context about the return scope (folders and documents) and the target resource; it could mention output structure or sibling distinctions, but the existing output schema and clear purpose cover most needs.

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?

With a single parameter that has a complete schema description ('็Ÿฅ่ฏ†ๅบ“ ID'), the schema already provides the necessary meaning; the description adds no further detail beyond that.

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?

The description clearly states the action ('่Žทๅ–' / retrieve), the resource (a knowledge base's complete directory tree), and the scope (folders + documents), making it easy to distinguish from document-level or search tools.

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 wording implies use when the full folder/document hierarchy of a knowledge base is needed, but it does not explicitly compare against sibling tools such as doco_outline or doco_traverse or state when not to use it.

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

doco_insert_blocksDoco Insert BlocksA

ๅœจๆŒ‡ๅฎšไฝ็ฝฎๆ’ๅ…ฅไธ€ไธชๆˆ–ๅคšไธชๅ—ใ€‚position ๅ…ญ้€‰ไธ€๏ผšafter_block_id / before_block_id / parent_block_id(+child_index) / document_start / document_end / after_heading๏ผˆๆŒ‰ๆ ‡้ข˜ๆ–‡ๆœฌๅฎšไฝ๏ผŒๆœๅŠก็ซฏๅŒน้…๏ผ‰

ParametersJSON Schema
NameRequiredDescriptionDefault
nodesYes่ฆๆ’ๅ…ฅ็š„ tiptap ๅ—่Š‚็‚น
positionYesๅฎšไฝๅฏน่ฑก๏ผŒๅ…ญ็งๆ–นๅผ้€‰ไธ€็ง๏ผŒๅฆ‚ { after_heading: "้ƒจ็ฝฒๆต็จ‹" }
document_idYesTarget document ID.
base_versionNoDocument version read before the protected write.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, so the description is consistent. It adds context about server-side matching for after_heading and six positioning modes, which helps the agent understand behavioral nuances beyond the raw schema. It doesn't mention side effects like version conflicts or whether base_version is required for optimistic locking, but annotations already cover the write risk profile.

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 one sentence that front-loads the core operation and then packs all critical positioning modes into a compact list. Every part earns its place; no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key behavioral choice (position modes) well, but omits caveats such as whether inserting requires an existing document, how base_version is used for protected writes, or error conditions like duplicate headings. With an output schema present and annotations present, it's mostly complete, but a note about version conflict behavior would strengthen it.

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 description coverage is 100%, so parameters like nodes, position, document_id, base_version are documented in the schema. The description adds important meaning to 'position' by enumerating the six allowed strategies and giving an example ({ after_heading: "้ƒจ็ฝฒๆต็จ‹" }), which the schema's additionalProperties does not convey. This is valuable semantic enrichment.

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?

Description states a specific verb ('insert') and resource ('blocks') at a specified position, clearly distinguishing it from read/list/patch/delete siblings. The position enum is listed in Chinese, which is explicit but the title is tautological; still the description provides concrete positioning options.

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 implies usage by enumerating position strategies, but does not explicitly state when to use this tool vs alternatives like doco_patch_block or doco_batch_edit. No explicit exclusions or conditions are given, leaving the agent to infer based on the verb 'insert'.

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

doco_list_documentsDoco List DocumentsA
Read-onlyIdempotent

ๆŒ‰็Ÿฅ่ฏ†ๅบ“ / ๆ–‡ไปถๅคน / ๅ…ณ้”ฎ่ฏๆœ็ดขๆ–‡ๆกฃๅˆ—่กจ๏ผˆๅˆ†้กต๏ผ‰

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoๆ ‡้ข˜ๅ…ณ้”ฎ่ฏ
limitNoMaximum number of results (1โ€“100).
cursorNoOpaque pagination cursor returned by the previous response.
localeNoBCP 47 ่ฏญ่จ€ๆ ‡็ญพ๏ผ›ไธไผ ๆ—ถๅชๅˆ—ๆ™ฎ้€šๆ–‡ๆกฃๅ’Œๆบ่ฏญ่จ€็‰ˆๆœฌ
folder_idNoๆ–‡ไปถๅคน ID
include_variantsNoWhether to include translated document variants.
knowledge_base_idNo็Ÿฅ่ฏ†ๅบ“ ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the pagination behavior ('ๅˆ†้กต') and the filter scope, but does not disclose any additional side effects, authorization needs, or limitations beyond what annotations and schema provide. This is acceptable but not rich.

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 a single, front-loaded sentence that conveys the essential purpose and pagination without superfluous words. Every element carries meaning, so it earns a high score for conciseness.

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?

Given the full schema coverage, output schema, and safety annotations, the description is largely sufficient for an agent to understand the tool's function. It does not mention how filters combine or that all filters are optional, but those details are available in the structured fields and do not critically impede correct invocation. Sibling differentiation is missing but handled under usage guidelines.

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?

The schema description coverage is 100%, with descriptions for all seven parameters, including q, limit, cursor, locale, folder_id, include_variants, and knowledge_base_id. The description groups these into higher-level concepts (search by knowledge base/folder/keyword) but adds no new meaning beyond the schema. Baseline 3 applies.

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 a specific verb ('ๆœ็ดข') and resource ('ๆ–‡ๆกฃๅˆ—่กจ'), and identifies the key filtering dimensions (knowledge base, folder, keyword) plus pagination. It is clear about what the tool does, but it does not explicitly distinguish this tool from sibling tools like doco_search and doco_search_v2, so it misses the top tier.

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 implies usage by describing the function, but it does not state when to use this tool versus alternatives such as doco_search or doco_get_tree. There is no explicit when-to-use or when-not-to-use guidance, so the agent must infer suitability from the tool's name and schema.

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

doco_list_knowledge_basesDoco List Knowledge BasesA
Read-onlyIdempotent

ๅˆ—ๅ‡บๅฝ“ๅ‰็”จๆˆทๅฏ่ง็š„ๅ…จ้ƒจ็Ÿฅ่ฏ†ๅบ“

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful scoping detail that only knowledge bases visible to the current user are returned, but it does not disclose pagination, ordering, or other behavioral details. This is acceptable but not rich.

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 a single concise sentence that front-loads the action and resource. There is no redundant wording or unnecessary detail, making it easy for an agent to parse quickly.

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?

For a simple, parameterless, read-only listing tool with an output schema present, the description is complete. It specifies the scope (current user visibility) and the resource (knowledge bases), and the annotations cover the behavioral safety expectations.

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?

The tool has zero parameters, so there is no parameter semantics burden on the description. The schema is empty and fully covered, and the description does not need to explain any inputs. This aligns with the baseline for a zero-parameter tool.

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?

The description clearly states the action ('ๅˆ—ๅ‡บ' / list) and the resource ('ๅฝ“ๅ‰็”จๆˆทๅฏ่ง็š„ๅ…จ้ƒจ็Ÿฅ่ฏ†ๅบ“' / all knowledge bases visible to the current user). It is specific enough to distinguish this tool from siblings like doco_list_documents, which targets documents rather than knowledge bases.

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 implies the tool is used when the agent needs to enumerate knowledge bases visible to the current user. However, it provides no explicit guidance on when to prefer this tool over alternatives, nor does it mention any exclusions or related sibling tools.

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

doco_outlineDoco OutlineA
Read-onlyIdempotent

่ฏปๅ–ๆ–‡ๆกฃ็ป“ๆž„ๅคง็บฒ๏ผšๆฏไธชๆ ‡้ข˜ไปฅ็จณๅฎš block_idใ€heading_path ๅ’Œ้กถๅฑ‚ๅ—ๅŒบ้—ด่กจ่พพ๏ผŒ้€‚ๅˆๅ…ˆ่ง„ๅˆ’ๅ†ๅฑ€้ƒจ่ฏปๅ–ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesๆ–‡ๆกฃ ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

ๆณจ่งฃๅทฒๅฃฐๆ˜Ž readOnlyHint=trueใ€idempotentHint=trueใ€destructiveHint=false๏ผŒ่ฆ†็›–ไบ†ๅช่ฏปใ€ๅน‚็ญ‰ๅ’Œ้ž็ ดๅๆ€ง็ญ‰ๅฎ‰ๅ…จ็‰นๆ€งใ€‚ๆ่ฟฐๅœจๆญคๅŸบ็ก€ไธŠ่กฅๅ……ไบ†่ฏฅๅทฅๅ…ทๅช่ฟ”ๅ›žๆ ‡้ข˜็ป“ๆž„๏ผˆ่€Œ้žๅฎŒๆ•ดๆ–‡ๆกฃๅ†…ๅฎน๏ผ‰๏ผŒๅนถๅผบ่ฐƒ block_id ๆ˜ฏ็จณๅฎš็š„๏ผŒ่ฟ™ๅฏน่ฐƒ็”จ่€…็†่งฃ่พ“ๅ‡บๆ€ง่ดจๅ’Œ่ง„ๅˆ’ๅŽ็ปญ่ฏปๅ–้žๅธธๆœ‰ไปทๅ€ผใ€‚ๆฒกๆœ‰ไธŽๆณจ่งฃ็Ÿ›็›พไน‹ๅค„ใ€‚

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?

ๆ่ฟฐ็”จไธ€ๅฅ่ฏ็ฎ€ๆดๅœฐๆถต็›–ไบ†ๅŠŸ่ƒฝ๏ผˆ่ฏปๅ–ๅคง็บฒ๏ผ‰ใ€่พ“ๅ‡บ็‰นๅพ๏ผˆblock_idใ€heading_pathใ€้กถๅฑ‚ๅ—ๅŒบ้—ด๏ผ‰ๅ’Œ้€‚็”จๅœบๆ™ฏ๏ผˆๅ…ˆ่ง„ๅˆ’ๅ†ๅฑ€้ƒจ่ฏปๅ–๏ผ‰๏ผŒๆ— ๅ†—ไฝ™ไฟกๆฏ๏ผŒๅ…ณ้”ฎไฟกๆฏๅ‰็ฝฎ๏ผŒ็ป“ๆž„้ซ˜ๆ•ˆใ€‚

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?

่ฏฅๅทฅๅ…ทๅชๆœ‰ 1 ไธชๅฟ…้œ€ๅ‚ๆ•ฐ๏ผŒไธ” schema ่ฆ†็›–ๅฎŒๆ•ดใ€ๆœ‰่พ“ๅ‡บ schema ๅ’Œๅ…จ้ข็š„ๆณจ่งฃใ€‚ๆ่ฟฐๅทฒ็ปๆไพ›ไบ†่ถณๅคŸ็š„ไฟกๆฏ่ฎฉไปฃ็†ๆญฃ็กฎ่ฐƒ็”จ๏ผšๅฎƒๅšไป€ไนˆใ€่ฟ”ๅ›žไป€ไนˆๆ€ง่ดจ็š„ๆ•ฐๆฎใ€ไป€ไนˆๆ—ถๅ€™็”จใ€‚ๅ…ทไฝ“่ฟ”ๅ›žๅญ—ๆฎต็”ฑ่พ“ๅ‡บ schema ๆ‰ฟๆ‹…๏ผŒๆ— ้œ€ๅœจๆ่ฟฐไธญ้‡ๅคใ€‚

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 ๅฏน document_id ็š„่ฏดๆ˜Ž่ฆ†็›–็އไธบ 100%๏ผŒๆ่ฟฐไธญๆœช้ขๅค–่งฃ้‡Šๅ‚ๆ•ฐๅซไน‰ๆˆ–ๆ ผๅผใ€‚ๆ นๆฎ่ง„ๅˆ™๏ผŒๅฝ“ schema ๆ่ฟฐ่ฆ†็›–็އ้ซ˜ๆ—ถ๏ผŒๅ‚ๆ•ฐ่ฏญไน‰ๅพ—ๅˆ†็š„ๅŸบ็บฟไธบ 3๏ผŒๆ่ฟฐๆฒกๆœ‰่ถ…่ถŠ 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?

ๆ่ฟฐไฝฟ็”จๆ˜Ž็กฎ็š„ๅŠจ่ฏ'่ฏปๅ–'ๅ’Œ่ต„ๆบ'ๆ–‡ๆกฃ็ป“ๆž„ๅคง็บฒ'๏ผŒๅนถๅ…ทไฝ“่ฏดๆ˜Ž่พ“ๅ‡บๅ†…ๅฎนไธบๆฏไธชๆ ‡้ข˜็š„ block_idใ€heading_path ๅ’Œ้กถๅฑ‚ๅ—ๅŒบ้—ดใ€‚่ฟ™ไธŽ sibling ๅทฅๅ…ทๅฆ‚ doco_read๏ผˆ่ฏปๅ–ๆญฃๆ–‡ๅ†…ๅฎน๏ผ‰ๅ’Œ doco_get_tree๏ผˆ่Žทๅ–ๆ ‘็ป“ๆž„๏ผ‰่ƒฝๆธ…ๆ™ฐๅŒบๅˆ†๏ผŒไปฃ็†ๆ— ้œ€ๆ‰“ๅผ€ 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?

ๆ่ฟฐไธญๆ˜Ž็กฎๆๅˆฐ'้€‚ๅˆๅ…ˆ่ง„ๅˆ’ๅ†ๅฑ€้ƒจ่ฏปๅ–'๏ผŒ็ป™ๅ‡บไบ†ๅ…ทไฝ“ไฝฟ็”จๅœบๆ™ฏ๏ผšๅ…ˆ่Žทๅ–ๅคง็บฒ่ง„ๅˆ’๏ผŒๅ†ๆŒ‰้œ€่ฏปๅ–ๅฑ€้ƒจๅ†…ๅฎนใ€‚่™ฝ็„ถๆฒกๆœ‰ๆŒ‡ๅๆ›ฟไปฃๅทฅๅ…ทๆˆ–็ป™ๅ‡บๆŽ’้™คๆกไปถ๏ผŒไฝ†ไฝฟ็”จไธŠไธ‹ๆ–‡ๅทฒ่ถณๅคŸๆธ…ๆ™ฐ๏ผŒๆœช่พพๅˆฐๆœ€้ซ˜ๅˆ†ๆ˜ฏๅ› ไธบ็ผบๅฐ‘ๆ˜พๅผ็š„ when-not-to-use ๆŒ‡ๅผ•ใ€‚

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

doco_patch_blockDoco Patch BlockA
Idempotent

ๆ›ดๆ–ฐๅ•ไธชๅ—๏ผšๆไพ›ๅฎŒๆ•ด node ๆ›ฟๆข๏ผŒๆˆ–็”จ attrs/content ๅฑ€้ƒจไฟฎๆ”นใ€‚ๅธฆ base_version ๅšไน่ง‚ๅนถๅ‘ๆ ก้ชŒ๏ผ›ไธๅธฆๅˆ™่‡ชๅŠจ่ฏปๅ–ๆœ€ๆ–ฐ็‰ˆๆœฌใ€‚409 ๆ—ถ่ฏท้‡่ฏปๅˆๅนถ้‡่ฏ•ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeNoๅฎŒๆ•ดๆ›ฟๆข็š„ tiptap ่Š‚็‚น
attrsNoๅˆๅนถ่ฟ›็Žฐๆœ‰ attrs ็š„ๅญ—ๆฎต
contentNoๆ›ฟๆขๅ—็š„ๅญๅ†…ๅฎน
block_idYesStable block ID within the target document.
document_idYesTarget document ID.
base_versionNo่ฏปๅ–ๆ—ถๆ‹ฟๅˆฐ็š„ version๏ผˆๅผบ็ƒˆๅปบ่ฎฎๆไพ›๏ผ‰

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond annotations: it discloses optimistic concurrency via base_version, automatic latest-version reading when base_version is omitted, and 409 conflict handling with re-read/merge/retry guidance. This is consistent with annotations (readOnlyHint=false, idempotentHint=true) and adds value that is not present in the annotation block.

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 brief and front-loaded: the first sentence states the purpose and the two usage modes, the second sentence covers concurrency and error retry. Every sentence delivers essential information without redundancy.

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?

The description covers purpose, usage modes, concurrency handling, and error recovery, with output schema and 100% parameter description coverage filling in the rest. It does not state what happens if no node/attrs/content is provided, but that is arguably a schema or validation concern rather than a description gap.

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 description coverage is 100%, so parameters are already documented. The description goes further by clarifying base_version's role in optimistic concurrency and the auto-read behavior when absent, plus the distinction between node (full replacement) and attrs/content (partial modification). This is additional semantic value beyond 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?

The description states 'ๆ›ดๆ–ฐๅ•ไธชๅ—' (update a single block) with a specific verb and resource, and clearly distinguishes two modes: full node replacement vs partial modification via attrs/content. This makes it easy to differentiate from siblings like doco_insert_blocks and doco_delete_block without ambiguity.

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?

It explicitly explains when to use full node replacement versus partial attrs/content modification, and describes how base_version should be used with a clear fallback to auto-read latest version. It does not explicitly name alternatives or exclusion conditions, but the usage context is clear enough given the sibling list.

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

doco_readDoco ReadA
Read-onlyIdempotent

ๆŒ‰ token ้ข„็ฎ—ๅฑ€้ƒจ่ฏปๅ–ๆ–‡ๆกฃใ€‚ๅฏ็”จ around ้”šๅฎšไปปๆ„ๅตŒๅฅ— block_id๏ผŒๆˆ–็”จ next_cursor ็ปญ่ฏป๏ผ›ๆธธๆ ‡็ป‘ๅฎšๆญฃๆ–‡็‰ˆๆœฌ๏ผŒread_cursor_stale ๆ—ถๅฟ…้กป้‡ๆ–ฐ่ง„ๅˆ’ใ€‚

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

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.

doco_rebuild_summaryDoco Rebuild SummaryA
Idempotent

้‡ๅปบๆ‘˜่ฆใ€‚deterministic ๅŒๆญฅ่ฟ”ๅ›žๅฏ่ฟฝๆบฏ fallback๏ผ›model ๅชๅˆ›ๅปบๅผ‚ๆญฅไปปๅŠก๏ผŒๅฟ…้กป้šๅŽ็”จ doco_summary(job_id) ๆŸฅ่ฏข๏ผŒๆฅๆบๅ˜ๅŒ–ๆˆ–ๆ‘˜่ฆ่ขซ้’‰ไฝๆ—ถ็ป“ๆžœไผš obsolete ่€Œไธไผš่ฆ†็›–ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoSummary scope: document, folder, or knowledge_base.
block_idNoStable block ID within the target document.
generatorNoSummary generator: deterministic or model.
target_idYesDocument, folder, or knowledge base ID.
idempotency_keyNoOptional key that makes a retried write safe.
base_source_versionNoSource version used when preparing the summary write.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With only thin hints in annotations (readOnlyHint=false, idempotentHint=true), the description carries the behavioral burden and does so richly: it discloses the sync-versus-async contract per generator, the mandatory follow-up polling via doco_summary, the obsolescence condition when the source changes or the summary is pinned, and the guarantee that stale results will not overwrite. This is consistent with all annotations โ€” idempotentHint=true aligns with the non-overwrite and idempotency_key behavior โ€” and no contradiction exists.

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 description is compact โ€” two sentences, front-loaded with the core action '้‡ๅปบๆ‘˜่ฆ' followed by generator-specific contracts. Every clause carries distinct information (execution mode, return behavior, staleness policy, overwrite guarantee) with no filler or restatement of the tool name. The semicolon-chained structure is dense but readable, losing a point only for the slightly run-on feel.

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?

Given the rich input schema (100% coverage, enums, idempotency key), the idempotentHint annotation, and an existing output schema, the description only needs to fill the behavioral contract โ€” which it does thoroughly via sync/async mode, staleness conditions, and non-overwrite guarantees. The residual gaps are selection criteria between deterministic and model generators and the exact meaning of 'ๅฏ่ฟฝๆบฏ fallback', but neither blocks a correct invocation.

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 description coverage is 100%, so the schema already documents all six parameters and the baseline is 3. The description adds only indirect value: the obsolescence condition implies meaning for base_source_version, and the pinned-summary behavior relates to target scope, but no parameter-level syntax or format is elaborated. This is acceptable because the schema handles the burden.

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 opens with the verb+resource pair '้‡ๅปบๆ‘˜่ฆ' (rebuild summary), clearly identifying a write-rebuild operation on a summary. It further distinguishes itself from the sibling query tool doco_summary by stating that a model generator requires a follow-up query via doco_summary(job_id). However, it never names doco_save_summary, its closest writing sibling, so an agent must infer the distinction between rebuilding and saving without explicit guidance.

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 description gives concrete, actionable workflow guidance: for the model generator it explicitly states that only an async task is created and the agent must subsequently call doco_summary(job_id) to retrieve the result, which routes an agent correctly between two sibling tools. It provides clear context for the deterministic vs model split but lacks an explicit statement of when to prefer this over doco_save_summary or criteria for choosing between the two generators.

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

doco_refresh_concept_candidatesDoco Refresh Concept CandidatesA
Idempotent

่งฆๅ‘ๆฆ‚ๅฟตๅ€™้€‰ๆŠฝๅ–/ๅˆทๆ–ฐใ€‚ๅช็”Ÿๆˆๅพ…ๅฎกๆ ธๅ€™้€‰๏ผŒไธไผš็›ดๆŽฅๆฑกๆŸ“ๆ˜พๅผๆฆ‚ๅฟตๅฑ‚๏ผ›ๅ†™ๅ…ฅ่‡ชๅŠจๅธฆๅน‚็ญ‰้”ฎใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes่ฆ้‡ๆ–ฐๆŠฝๅ–ๅ€™้€‰็š„ๆ–‡ๆกฃ ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false; the description adds useful behavioral detail by specifying that writes automatically carry an idempotency key and that only pending-review candidates are generated, not direct changes to the explicit concept layer. This refines and contextualizes the annotation hints without contradicting them.

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 only two short sentences, with the primary action and the key safety guarantee front-loaded. Every phrase carries meaning, and there is no filler or unnecessary elaboration.

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?

For a single-parameter tool with full schema coverage, idempotency annotation, and an existing output schema, the description provides sufficient information for correct selection and invocation. The absence of an explicit sibling alternative pointer is a usage-guideline nuance, not a completeness gap.

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?

The single parameter document_id is fully documented in the input schema ('่ฆ้‡ๆ–ฐๆŠฝๅ–ๅ€™้€‰็š„ๆ–‡ๆกฃ ID'), and the description adds no additional parameter-level semantics. With schema description coverage at 100%, the baseline score of 3 is appropriate.

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?

The description names a specific action ('่งฆๅ‘ๆฆ‚ๅฟตๅ€™้€‰ๆŠฝๅ–/ๅˆทๆ–ฐ') and resource ('ๆฆ‚ๅฟตๅ€™้€‰'), and distinguishes this from the explicit concept layer by stating it only generates pending-review candidates. This makes it easy for an agent to tell it apart from siblings such as doco_concepts and doco_edit_concepts even without naming them.

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 description clearly communicates when to use the tool: to trigger candidate extraction/refresh while avoiding direct pollution of the explicit concept layer. It does not explicitly name an alternative or give a when-not-to-use statement, but the safety boundary and 'pending-review' wording provide enough context for correct selection.

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

doco_review_translation_unitDoco Review Translation UnitA
Idempotent

ๅœจๅ…ทไฝ“็›ฎๆ ‡่ฏญ่จ€ๆ–‡ๆกฃไธŠ็กฎ่ฎคๅฝ“ๅ‰่ฏ‘ๆ–‡ๆˆ–ๅฟฝ็•ฅๅ•ๅ…ƒ๏ผ›ไธๆŽฅๅ—ๆœบๅ™จ็ป“ๆžœ็›ดๆŽฅ่ฆ†็›–๏ผŒ้‡ๅˆฐ 409 ๅฟ…้กป้‡่ฏป็›ฎๆ ‡็‰ˆๆœฌใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYesTranslation unit ID.
if_matchNoExpected version or ETag for optimistic concurrency.
document_idYesTarget document ID.
review_statusYesReview decision: current or ignored.
target_block_idsNoStable target block IDs containing the reviewed translation.
target_document_idYesTarget language document ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this as non-read-only, non-destructive, and idempotent. The description adds value by disclosing that the tool refuses direct machine-result overwrites and by prescribing re-reading the target version after a 409. This concurrency and review-policy behavior is not visible in the annotations or schema and meaningfully improves the agent's expectations.

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 a single sentence that front-loads the core action, then appends the two most important constraints: no machine-result overwrite and 409 re-read behavior. There is no repetition of schema or annotation content and no wasted words.

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 review-state tool with an output schema and fully described parameters, the description covers the essential action, the no-machine-overwrite policy, and the key conflict-handling instruction. The only notable gap is that it does not help an agent tell document_id and target_document_id apart, but the rest of the structured context is sufficient for invocation.

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 description coverage is 100%, so all six parameters are at least nominally documented. The description indirectly clarifies review_status by mapping 'current' to confirming the translation and 'ignored' to ignoring the unit, but it does not disambiguate document_id from target_document_id, which remain confusingly similar in the schema. A baseline 3 is appropriate because the schema carries most of the parameter documentation burden.

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?

The description states a precise verb and resource: 'confirm current translation or ignore unit' on a specific target-language document. It also explicitly excludes direct machine-result overwrites, which distinguishes this review action from editing tools. This goes well beyond the title and makes the tool's role clear.

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 description gives clear context: the tool is used on a target-language document to record a review decision. It also provides an explicit exclusion ('does not accept direct overwrite by machine results') and a conflict protocol ('on 409, must re-read the target version'). It does not name sibling tools such as doco_patch_block or doco_translation_units, so it falls just short of full alternative routing.

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

doco_save_summaryDoco Save SummaryA
Idempotent

ไบบๅทฅ็ผ–่พ‘ๅนถๅฏ้’‰ไฝๆ‘˜่ฆใ€‚ๅฎขๆˆท็ซฏไผšๅ…ˆ่ฏปๅ–ๅฝ“ๅ‰ summary/source ๅŒ็‰ˆๆœฌๅŽๅธฆไฟๆŠคๅ†™ๅ…ฅ๏ผ›pinned ๅช้˜ฒ่‡ชๅŠจ่ฆ†็›–๏ผŒๆฅๆบๅ˜ๅŒ–ๅŽไปไผšๆ˜พ็คบ staleใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoSummary scope: document, folder, or knowledge_base.
pinnedNoWhether to pin the manually saved summary.
summaryYessummary parameter.
block_idNoStable block ID within the target document.
target_idYesDocument, folder, or knowledge base ID.
base_source_versionNoSource version used when preparing the summary write.
base_summary_versionNoSummary version used when preparing the summary write.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Discloses important behavior: pinned only prevents automatic overwrites, source changes cause the summary to show stale, and base versions are used for concurrency protection. This goes beyond annotations (idempotent, non-destructive) and is consistent with them.

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?

Two sentences convey purpose, protocol, and pinned behavior without redundancy; all content is relevant and no filler is present.

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?

Given the output schema and full parameter coverage, the description adds necessary context about versioning, stale display, and the read-before-write requirement that cannot be inferred from the schema alone.

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

Parameters5/5

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

All seven parameters have descriptions, including the protocol-critical base_source_version and base_summary_version, and the scope enum. The overall description clarifies how these parameters function in the protected write.

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 the tool's function clearly: 'Manually edit and pin summary' and explains the read-before-write protocol with dual versions, distinguishing it from automatic summary generation and rebuild tools.

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?

Provides guidance to read current summary/source versions before writing and explains the protective write and pinned semantics. However, it does not explicitly name alternative tools such as doco_rebuild_summary, so the condition for choosing manual over automatic summary updates is not fully explicit.

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

doco_search_v2Doco Search V2A
Read-onlyIdempotent

ๅธฆๆŸฅ่ฏข็บงๅฎŒๆ•ดๆ€ง่ฏๆ˜Ž็š„ๅ…จๆ–‡ๆœ็ดขใ€‚่ฟ”ๅ›ž็›ฎๅฝ•่ทฏๅพ„ใ€ๆ ‡้ข˜่ทฏๅพ„ใ€ๅ‰ๅŽๆ–‡ใ€ๅˆ†ๆ•ฐ่งฃ้‡Šใ€source/indexed ๆฐดไฝ๏ผ›exhaustive ๆจกๅผๅฏ็”จ cursor ๅฎŒๆ•ด้ๅކใ€‚projection.complete=false ๆ—ถ็ป“ๆžœไธๅฎŒๆ•ด๏ผŒไธ่ƒฝๆฎๆญคๆ–ญ่จ€โ€œ็Ÿฅ่ฏ†ไธๅญ˜ๅœจโ€ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesTitle or body search query.
modeNomode parameter.
limitNoMaximum number of results (1โ€“100).
cursorNoOpaque pagination cursor returned by the previous response.
localeNoBCP 47 ่ฏญ่จ€ๆ ‡็ญพๆˆ– all
knowledge_base_idNoKnowledge base ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's job is to go beyond safety traits โ€” and it does substantially. It discloses the response composition, the cursor-based exhaustive traversal semantics, and critically the negative-evidence rule: when projection.complete=false, results are incomplete and 'ไธ่ƒฝๆฎๆญคๆ–ญ่จ€็Ÿฅ่ฏ†ไธๅญ˜ๅœจ' (cannot assert knowledge absence). This directly prevents a classic agent failure mode of treating a search miss as proof of non-existence. No contradiction with the annotations; it refines the open-world nuance without conflicting.

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?

Two dense sentences with no filler: the first front-loads the purpose and enumerates the return fields, the second conveys the exhaustive-mode traversal capability and the completeness caveat. Every clause earns its place, and the most decision-relevant warning (incomplete results cannot prove absence) is placed at the end where it reads as a caution.

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?

An output schema exists, so the description is not obligated to fully document return values, yet it still summarizes the key return categories and adds the completeness semantics that no schema could express. For a 6-parameter tool with pagination, an enum mode, and locale/KB scoping, this covers the essentials. The one genuine gap is sibling routing: with doco_search present in the same tool list, the absence of any statement about which search variant to prefer leaves a meaningful completeness hole.

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 description coverage is 100%, so the schema carries the per-parameter documentation burden and the baseline is 3. The description adds genuine value on the mode/cursor interplay โ€” that exhaustive mode combined with cursor allows complete traversal โ€” which the schema's terse 'mode parameter' and 'opaque pagination cursor' text does not convey. It does not, however, add meaning for q, limit, locale, or knowledge_base_id beyond what the schema already provides.

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 opens with a specific verb and resource โ€” 'ๅ…จๆ–‡ๆœ็ดข' (full-text search) โ€” qualified by a distinctive feature, 'ๅธฆๆŸฅ่ฏข็บงๅฎŒๆ•ดๆ€ง่ฏๆ˜Ž' (with query-level completeness proof), and enumerates the return content (catalog path, title path, context, score explanation, watermarks). However, it never differentiates itself from the near-identically named sibling doco_search; the reader must infer why two search tools exist rather than being told.

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?

Usage context is implied rather than explicit: 'exhaustive ๆจกๅผๅฏ็”จ cursor ๅฎŒๆ•ด้ๅކ' tells the agent that exhaustive mode plus cursor enables full traversal, and the projection.complete=false caveat indicates when a negative result is not trustworthy. But no alternative tools are named, and the obvious sibling doco_search is not addressed with any 'use this when / use that when' guidance, leaving the selection between the two search tools to inference.

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

doco_summaryDoco SummaryA
Read-onlyIdempotent

่ฏปๅ–็ซ ่Š‚ใ€ๆ–‡ๆกฃใ€ๆ–‡ไปถๅคนๆˆ–็Ÿฅ่ฏ†ๅบ“ๆ‘˜่ฆ๏ผŒๆˆ–ๆŸฅ่ฏขๅผ‚ๆญฅ็”ŸๆˆไปปๅŠกใ€‚็ป“ๆžœๅธฆๆฅๆบๅ—ใ€ๆฅๆบ็‰ˆๆœฌใ€่ฆ†็›–็އใ€freshness ไธŽ fallback ่ฏญไน‰๏ผ›ๆจกๅž‹ๅ…ณ้—ญๆ—ถไปๅง‹็ปˆๅฏ็”จใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional question or summary query.
scopeNoSummary scope: document, folder, or knowledge_base.
job_idNoไผ ๅ…ฅๆ—ถๆ”นไธบๆŸฅ่ฏขๆ‘˜่ฆ็”ŸๆˆไปปๅŠก
block_idNoStable block ID within the target document.
target_idNoDocument, folder, or knowledge base ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description adds that results include source blocks, source versions, coverage, freshness, and fallback semantics, and that it is always available even when the model is off. This goes beyond the annotations, which only state read-only, idempotent, and non-destructive. It does not detail behavior when querying an incomplete async job, but overall adds useful context.

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 two sentences, starting with the main purpose, and includes essential details without superfluous text.

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?

Given the output schema exists and annotations cover safety, the description adequately conveys the tool's main functions and result characteristics. It could elaborate on parameter relationships or expected error scenarios, but it is sufficient for an agent to select and invoke the tool.

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?

Each parameter has a description, covering 100% of the schema. The descriptions explain the role of query, scope, job_id, block_id, and target_id. However, they do not clarify how parameters combine (e.g., whether job_id supersedes target_id) or which are mutually exclusive, so the description adds limited semantic depth beyond 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?

The description clearly states the tool reads summaries of various scopes (document, folder, knowledge base) and also queries asynchronous generation tasks. It distinguishes itself from siblings like doco_save_summary or doco_rebuild_summary by focusing on reading.

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 does not explicitly specify when to use this tool versus alternative tools like doco_get_document or doco_outline. It implies usage for retrieving summaries, but lacks direct guidance or conditions.

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

doco_translationsDoco TranslationsB
Read-onlyIdempotent

่ฏปๅ–ไธ€ไธชๅ…ทไฝ“ๆ–‡ๆกฃ็š„ Document Setใ€ๆบ่ฏญ่จ€ใ€ๅฏ็”จ่ฏญ่จ€็‰ˆๆœฌๅ’Œๆฏ็ง่ฏญ่จ€็š„ๆ–ฐ้ฒœๅบฆใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesTarget document ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description's mention of '่ฏปๅ–' aligns with these, but it adds no additional behavioral context beyond the annotations. With annotations present, the bar is lower, so a score of 3 is appropriate.

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 a single, clear sentence with no unnecessary words or repetition. It is concise and well-structured.

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?

The description provides sufficient context for a simple read operation, identifying the specific data points returned. However, it does not mention output format or any potential errors, but that is not critical for a read-only tool with no output schema.

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?

The only parameter, document_id, is described in the schema as 'Target document ID.' The tool description does not add further explanation or context for the parameter. Since schema coverage is 100%, a baseline score of 3 is warranted.

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?

The description clearly states the tool reads a specific document's Document Set, source language, available language versions, and freshness. It uses the verb '่ฏปๅ–' (read) and specifies the resource, distinguishing it from other document-related tools.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or situations where this tool is preferred.

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

doco_translation_unitsDoco Translation UnitsA
Read-onlyIdempotent

่ฏปๅ–็›ฎๆ ‡่ฏญ่จ€็š„ๅ—็บง็ฟป่ฏ‘ๅ•ๅ…ƒใ€็จณๅฎšๅ—ๆ˜ ๅฐ„ใ€source_version ๅ’Œ missing/current/conflict ็ญ‰็Šถๆ€ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoBCP-47 locale; use all where supported.
statusNoFilter by the requested status.
document_idYesTarget document ID.
target_document_idNoTarget language document ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description's ่ฏปๅ– is fully consistent. The description adds meaningful context beyond annotations by enumerating the exact data exposed: block-level translation units, stable block mapping, source_version, and missing/current/conflict statuses. It does not discuss edge-case behavior, but the output schema and read-only annotations lower the burden.

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 a single dense sentence that front-loads the action and resource, with no filler, repetition of the title, or irrelevant detail. Every clause contributes useful information about what the tool reads.

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?

Given the output schema, rich read-only annotations, and complete parameter-level schema descriptions, the description covers the core semantics well. The only notable gap is usage guidance versus sibling tools, but the resource scope is clear enough for an agent to select and invoke the tool 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 description coverage is 100%, so the baseline is 3. The description adds value by naming the status vocabulary (missing/current/conflict) and clarifying that locale relates to target-language content, which is not fully specified in the parameter descriptions. It does not elaborate on document_id versus target_document_id, but the schema already provides those descriptions.

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 uses the verb ่ฏปๅ– (read) and names a specific resource: block-level translation units plus stable block mapping, source_version, and translation statuses. This makes it clear that the tool is a read operation, distinct from review/write siblings, though it does not explicitly name or contrast any sibling.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus doco_translations or doco_review_translation_unit, and no mention of alternative conditions or exclusions. The verb ่ฏปๅ– implies a read context, but that is implicit rather than explicit guidance.

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

doco_traverseDoco TraverseA
Read-onlyIdempotent

ๆฒฟๆ˜พๅผๅ…ณ็ณป้ๅކๆ–‡ๆกฃใ€‚่ฟ”ๅ›žๆญฃๅ‘/ๅๅ‘ๅ…ณ็ณปใ€ๆณจๅ†Œ่ฐ“่ฏใ€ๆฅๆบๅ—ไธŽๆฅๆบ็‰ˆๆœฌ๏ผ›status=dangling_* ๆ—ถ็›ฎๆ ‡ๅทฒๅคฑๆ•ˆ๏ผŒevidence_freshness=stale ๆ—ถๅบ”้‡ๆ–ฐ็กฎ่ฎค่ฏๆฎ๏ผŒprojection_freshness=stale ๆ—ถไธๅพ—ๅฝ“ไฝœๅฎŒๆ•ดๅ…ณ็ณปๅ›พใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
directionNoRelationship direction: outgoing, incoming, or both.
predicateNoRelationship type to filter or create.
document_idYesTarget document ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful interpretation semantics: status=dangling_* invalidates the target, evidence_freshness=stale requires re-confirming evidence, and projection_freshness=stale means the result is not a complete relationship graph. This kind of staleness/validity context goes well beyond 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.

Conciseness4/5

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

The description is one dense sentence that front-loads the primary action before the return summary and three status caveats. Every clause earns its place, though splitting the trailing semicolon-separated caveats into separate sentences or bullets would improve scannability; the Chinese-language description also sits alongside an English schema without issue.

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 traversal tool with a rich output schema and safety annotations, the description covers what is returned and how to interpret dangling/stale flags. Minor gaps remain: pagination or traversal depth/limits are not mentioned, and no guidance connects this to doco_create_relation as the mutation counterpart, but the output schema likely covers return shape.

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 description coverage is 100%, so all three parameters (document_id, direction, predicate) are already documented in the schema. The description ties output concepts (forward/reverse relations, registered predicates) to the direction and predicate parameters but adds no new syntax or format detail, matching the baseline-3 expectation for high schema coverage.

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?

The description states a specific verb and resource โ€” traverse documents along explicit relationships โ€” and enumerates what it returns (forward/reverse relations, registered predicates, source blocks, source versions). This clearly differentiates it from siblings like doco_get_tree, doco_read, doco_search, and especially doco_create_relation, which is the write counterpart.

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 qualifier 'explicit relationships' implies it is for relationship traversal rather than content reading or tree structure, giving some usage context. However, it never names alternatives or states when not to use it; with many nearby read tools (doco_get_tree, doco_outline, doco_search), explicit routing would help.

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

doco_update_documentDoco Update DocumentA
DestructiveIdempotent

ๆ•ด็ฏ‡ๅ†™ๅ›žๆ–‡ๆกฃๆญฃๆ–‡ใ€‚markdown ๅ†™ๅ›žๅ‡ญ ้”š็‚นไฟ็•™ๆœชๆ”นๅŠจๅ— ID๏ผˆ้…ๅˆ doco_get_document ็š„ annotate=anchors๏ผ‰๏ผ›tiptap-json ไธบๆ•ด็ฏ‡ๆ— ๆŸๆ›ฟๆขใ€‚ๅผบ็ƒˆๅปบ่ฎฎๅธฆ base_version๏ผŒ409 ๆ—ถ้‡่ฏปๅˆๅนถ้‡่ฏ•ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesๆญฃๆ–‡ๆ ผๅผ
contentNomarkdown / html ๆญฃๆ–‡ๆ–‡ๆœฌ
documentNotiptap-json ๆ–‡ๆกฃๅฏน่ฑก
document_idYesTarget document ID.
base_versionNo่ฏปๅ–ๆ—ถๆ‹ฟๅˆฐ็š„ version๏ผˆๅผบ็ƒˆๅปบ่ฎฎๆไพ›๏ผ‰

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

ๅœจdestructiveHint=trueๅ’ŒidempotentHint=true็š„ๅŸบ็ก€ไธŠ๏ผŒๆ่ฟฐ่ฟ›ไธ€ๆญฅ่กฅๅ……ไบ†ๅ…ทไฝ“ๆœบๅˆถ๏ผšmarkdownๅ†™ๅ…ฅๅฆ‚ไฝ•ไฟ็•™ๆœชๆ”นๅŠจๅ—IDใ€tiptap-jsonๆ•ด็ฏ‡ๆ›ฟๆขใ€็‰ˆๆœฌๅ†ฒ็ชๆ—ถ็š„ๅˆๅนถ้‡่ฏ•ๅปบ่ฎฎ๏ผŒ่ฟ™ไบ›ๆ˜ฏๆณจ่งฃๆœช่ฆ†็›–็š„่กŒไธบ็ป†่Š‚๏ผŒๅฏน่ฐƒ็”จ่€…ๅˆคๆ–ญๅ‰ฏไฝœ็”จๅ’Œๆขๅค็ญ–็•ฅ้žๅธธๆœ‰ไปทๅ€ผใ€‚

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?

ไธ‰ๅฅ่ฏ่ฆ†็›–ๆ ธๅฟƒๆ“ไฝœใ€ๆ ผๅผ่กŒไธบๅ’Œ็‰ˆๆœฌๅปบ่ฎฎ๏ผŒไฟกๆฏ้ซ˜ๅบฆๆต“็ผฉ๏ผŒๆ— ๅ†—ไฝ™่ฏๆฑ‡๏ผŒๅ…ณ้”ฎ็บฆๆŸ๏ผˆๆ•ด็ฏ‡ใ€base_version๏ผ‰ๅ‰็ฝฎ๏ผŒ็ป“ๆž„ๆธ…ๆ™ฐๅˆฉ่ฝใ€‚

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?

้ขๅฏน5ไธชๅ‚ๆ•ฐใ€3็งๆ ผๅผใ€้”š็‚นๆœบๅˆถๅ’Œ409ๅ†ฒ็ชๅœบๆ™ฏ๏ผŒๆ่ฟฐ่ฆ†็›–ไบ†่ฐƒ็”จๆ‰€้œ€็š„ๆ ธๅฟƒ่ฆ็‚น๏ผšๆ ผๅผๅทฎๅผ‚ใ€ๅ†ฒ็ชๅบ”ๅฏนๅ’Œ็‰ˆๆœฌๅปบ่ฎฎใ€‚ไฝ†็ผบๅฐ‘ๅฏนๆ— ้”š็‚นๆƒ…ๅ†ต็š„่ฏดๆ˜ŽไปฅๅŠไธŽๆ‰น้‡/ๅฑ€้ƒจ็ผ–่พ‘ๅทฅๅ…ท็š„่พน็•Œๆ้†’๏ผŒ็•ฅๆœ‰้—ๆผใ€‚

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ๅฏน5ไธชๅ‚ๆ•ฐ100%่ฆ†็›–๏ผŒๆไพ›ไบ†ๅŸบๆœฌๆ่ฟฐ๏ผŒๅ› ๆญคๅŸบ็บฟไธบ3ใ€‚ๆ่ฟฐ้ขๅค–ๅผบ่ฐƒไบ†base_version็š„ๅ…ณ้”ฎๆ€งๅ’Œformat็š„่กŒไธบๅทฎๅผ‚๏ผŒๅธฎๅŠฉ่ฐƒ็”จ่€…็†่งฃๅ‚ๆ•ฐ้€‰ๆ‹ฉไธŽ็ป„ๅˆไฝฟ็”จ๏ผŒไฝ†ๆœชๆ˜Ž็กฎcontent/documentไธŽformat็š„ๅฏนๅบ”ๅ…ณ็ณป๏ผŒ็•ฅ้€ŠไบŽๅฎŒ็พŽใ€‚

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?

ๆ่ฟฐไปฅ'ๆ•ด็ฏ‡ๅ†™ๅ›žๆ–‡ๆกฃๆญฃๆ–‡'ๆ˜Ž็กฎ่กจ่พพไบ†ๅŠจ่ฏๅ’Œ่ต„ๆบ๏ผŒ็›ดๆŽฅ่ฏดๆ˜Ž่ฟ™ๆ˜ฏๅ…จๆ–‡ๆ›ดๆ–ฐๆ“ไฝœ๏ผŒไธŽpatch_blockใ€insert_blocksใ€delete_block็ญ‰ๅฑ€้ƒจ็ผ–่พ‘ๅทฅๅ…ทๅฝขๆˆๆ˜Žๆ˜พๅŒบๅˆ†ใ€‚'ๆ•ด็ฏ‡'ไธ€่ฏๅผบ่ฐƒไบ†ไฝœ็”จ่Œƒๅ›ด๏ผŒไธๅญ˜ๅœจๆญงไน‰ใ€‚

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?

ๆ่ฟฐไบ†ไธๅŒformatไธ‹็š„ไฝฟ็”จๆ–นๅผ๏ผˆmarkdown้”š็‚นไฟ็•™ใ€tiptap-jsonๆ— ๆŸๆ›ฟๆข๏ผ‰๏ผŒๅนถๅผบ็ƒˆๅปบ่ฎฎๅธฆbase_versionๅŠ409ๅ†ฒ็ชๅŽ็š„้‡่ฏ•็ญ–็•ฅ๏ผŒๆไพ›ไบ†ๆธ…ๆ™ฐ็š„ไฝฟ็”จไธŠไธ‹ๆ–‡ใ€‚ไฝ†ๆœชๆ˜พๅผ่ฏดๆ˜Žไฝ•ๆ—ถไธๅบ”็”จๆญคๅทฅๅ…ท่€Œๆ”น็”จๅ…ถไป–็ผ–่พ‘ๅ…„ๅผŸๅทฅๅ…ท๏ผŒ็ผบๅฐ‘ๆ˜Ž็กฎ็š„ๆŽ’้™คๆกไปถใ€‚

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

doco_upload_attachmentDoco Upload AttachmentA

ไธŠไผ ้™„ไปถ๏ผˆๅ›พ็‰‡/PDF/ๆ–‡ๆœฌ/Word๏ผ‰๏ผŒ่ฟ”ๅ›ž attachment_id ไธŽ URL๏ผ›ๅœจๆ–‡ๆกฃๅ—ไธญ็”จ image ่Š‚็‚น attrs.attachmentId ๅผ•็”จ

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoOptional filename to use for the uploaded attachment.
file_pathYesๆœๅŠกๅ™จ/ๆœฌๆœบๅฏ่ฎฟ้—ฎ็š„ๆ–‡ไปถ็ปๅฏน่ทฏๅพ„
document_idYes้™„ไปถๅฝ’ๅฑžๆ–‡ๆกฃ ID
idempotency_keyNoOptional key that makes a retried write safe.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent. The description adds supported file types and return values, but does not disclose potential side effects, retry behavior, or file size limits. With annotations covering the safety profile, this is adequate but not rich.

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?

A single sentence with the action, supported types, return values, and usage tip. Every clause earns its place; no filler.

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?

Given an output schema exists and annotations are present, the description covers the essential workflow: upload, get IDs, reference in blocks. It omits edge-case details like file size limits, but those are not critical for correct invocation.

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 3 applies. The description adds value by enumerating acceptable file types (image/PDF/text/Word) that are not present in the file_path schema description, clarifying the parameter's allowed content.

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?

The description uses a specific verb (ไธŠไผ /upload), names the resource (attachment), lists supported file types, and states the return values (attachment_id, URL) plus the referencing workflow. It is clearly distinct from sibling tools, none of which perform uploads.

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?

It gives clear context: use when you need to attach a file to a document, and it explains how the resulting attachment_id is used in image blocks. It doesn't name exclusions or alternatives, but no direct alternative exists among siblings, so the guidance is adequate.

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

doco_whoamiDoco WhoamiA
Read-onlyIdempotent

่‡ชๆฃ€่บซไปฝ๏ผšๅฝ“ๅ‰ Token ๅฏนๅบ”็š„็”จๆˆทไธŽๆƒ้™ scope

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive, lowering the bar for behavioral disclosure. The description adds useful context by specifying that it inspects the current token and reports user/permission scope, but it does not elaborate on behavior around missing or invalid tokens.

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 a single, front-loaded sentence with no filler. It communicates the action and the object in minimal space, and every word earns its place.

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?

Given the tool's low complexity, zero parameters, rich annotations, and existing output schema, the description is complete enough. It clearly tells an agent what the tool does and what information it will surface, with no meaningful gaps.

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?

The tool has zero parameters and schema coverage is 100%, so there is no parameter documentation burden for the description. The no-parameter baseline is 4, and the description appropriately says nothing about inputs.

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?

The description states an explicit self-check action ('่‡ชๆฃ€่บซไปฝ') and clearly identifies the resource: the user and permission scope associated with the current token. This is distinct from all sibling tools, which focus on documents, search, translations, and concepts rather than identity introspection.

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 description implies the intended use case: call this tool when you need to know the current token's user identity or permission scope. It does not explicitly name alternatives or exclusions, but no sibling tool appears to serve this identity-check purpose, so the contextual guidance is sufficient.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 29 tool updatesv0.1.0
    • First observeddoco_batch_edit
    • First observeddoco_changes
    • First observeddoco_concepts
    • First observeddoco_create_document
    • First observeddoco_create_relation
    • First observeddoco_delete_block
    • First observeddoco_edit_concepts
    • First observeddoco_get_blocks
    • First observeddoco_get_document
    • First observeddoco_get_tree
    • First observeddoco_insert_blocks
    • First observeddoco_list_documents
    • First observeddoco_list_knowledge_bases
    • First observeddoco_outline
    • First observeddoco_patch_block
    • First observeddoco_read
    • First observeddoco_rebuild_summary
    • First observeddoco_refresh_concept_candidates
    • First observeddoco_review_translation_unit
    • First observeddoco_save_summary
    • First observeddoco_search
    • First observeddoco_search_v2
    • First observeddoco_summary
    • First observeddoco_translation_units
    • First observeddoco_translations
    • First observeddoco_traverse
    • First observeddoco_update_document
    • First observeddoco_upload_attachment
    • First observeddoco_whoami

TDQS

A3.6/5.0

Scored across 29 tools

Disambiguation4/5

Most tools map to a distinct resource and action (documents, blocks, translations, relations, concepts, summaries), so an agent can generally pick the right one. The main ambiguities are doco_search vs. doco_search_v2 and the easily confused doco_translations vs. doco_translation_units, though the descriptions give enough detail to resolve them.

Naming Consistency4/5

The doco_ prefix, snake_case, and familiar verb_noun forms (list_, get_, create_, update_, delete_, insert_, patch_) give the set a strong, predictable pattern. A few noun-only readers (doco_changes, doco_outline, doco_concepts, doco_summary) and the doco_search_v2 suffix are minor deviations.

Tool Count3/5

29 tools is a large surface, but the server covers many distinct subdomains: knowledge-base navigation, document/block editing, search, translations, relations, concepts, summaries, and attachments. Still, the count is heavy and some functions (search_v2, separate block readers) could plausibly be merged, so the set is borderline rather than tightly scoped.

Completeness3/5

The tool set covers document create/read/update, block-level editing, search, summaries, concepts, and translations, so most core workflows are supported. Notable gaps are the lack of document deletion, relation deletion, and attachment lifecycle operations (list/download/delete), which agents cannot work around easily.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server that gives AI coding agents on-demand access to private project docs via BM25 ranked search. One setup for Claude Code, Cursor, Codex, Gemini CLI, and more. Docs stay private, never in public repos.
    15
    15
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent docs and memory for AI agents. Writespace is a collaborative markdown editor with a built-in MCP server โ€” your model reads, writes, organizes, and searches a shared workspace while humans edit the same docs live. Drop the ranked full-text search straight in as RAG retrieval.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.
    224,710 npm
    MIT