MCP Outline Server
MCP 개요 서버
AI 어시스턴트가 Outline과 상호 작용할 수 있도록 하는 MCP(Model Context Protocol) 서버( https://www.getoutline.com )
개요
이 프로젝트는 AI 어시스턴트(예: Claude)가 Outline 문서 서비스와 상호 작용할 수 있도록 하는 MCP(Model Context Protocol) 서버를 구현하여 자연어 상호 작용과 Outline의 문서 관리 기능 간의 연결 고리를 제공합니다.
Related MCP server: Coda MCP Server
특징
현재 구현됨:
문서 검색 : 키워드로 문서 검색
컬렉션 관리 : 컬렉션 목록 및 문서 구조 보기
문서 읽기 : 문서 내용을 읽고 마크다운으로 내보내기
주석 관리 : 문서에 주석을 보고 추가합니다.
문서 생성 : 컬렉션에 새 문서 생성
문서 편집 : 문서 내용 업데이트 및 문서 이동
백링크 관리 : 특정 문서에 링크된 문서 보기
시작하기
필수 조건
파이썬 3.10+
API 접근이 가능한 개요 계정
Outline API 키(Outline 계정 설정에서 받으세요)
설치
지엑스피1
구성
프로젝트 루트에 다음 변수를 사용하여 .env 파일을 만듭니다.
# Outline API Configuration
OUTLINE_API_KEY=your_outline_api_key_here
# For cloud-hosted Outline (default)
# OUTLINE_API_URL=https://app.getoutline.com/api
# For self-hosted Outline
# OUTLINE_API_URL=https://your-outline-instance.example.com/api서버 실행
# Development mode with the MCP Inspector
mcp dev src/mcp_outline/server.py
# Or use the provided script
./start_server.sh
# Install in Claude Desktop (if available)
mcp install src/mcp_outline/server.py --name "Document Outline Assistant"사용 예
문서 검색
Search for documents containing "project planning"컬렉션 목록
Show me all available collections문서 읽기
Get the content of document with ID "docId123"새 문서 만들기
Create a new document titled "Research Report" in collection "colId456" with content "# Introduction\n\nThis is a research report..."댓글을 추가하세요
Add a comment to document "docId123" saying "This looks great, but we should add more details to the methodology section."문서 이동
Move document "docId123" to collection "colId789"기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
개발
# Run tests
uv run pytest tests/
# Format code
uv run ruff format .특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
감사의 말
MCP Python SDK 로 구축됨
문서 관리를 위해 Outline API를 사용합니다.
Available Tools
38 toolsadd_commentA
Adds a comment to a document or replies to an
existing comment.
Use this tool when you need to:
- Provide feedback on document content
- Ask questions about specific information
- Reply to another user's comment
- Collaborate with others on document development
Args:
document_id: The document to comment on
text: The comment text (supports markdown)
parent_comment_id: Optional parent comment ID
(for replies)
Returns:
Result message with the new comment ID
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| document_id | Yes | ||
| parent_comment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly and non-destructive behavior. The description adds that it returns a result message with comment ID but lacks details on side effects like notifications or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief summary, bulleted use cases, args list, and returns. It is front-loaded with essential info and no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with an output schema, the description covers purpose, usage, parameters, and return. It lacks error cases but is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by explaining each parameter: document_id, text (supports markdown), and optional parent_comment_id for replies. It adds meaning beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a comment or replies to an existing comment. It specifies verb, resource, and alternative use, distinguishing it from siblings like list_document_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists explicit use cases in a bulleted list, guiding when to use the tool. It does not specify when not to use, but the provided examples are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_documentADestructiveIdempotent
Archives a document to remove it from active use while preserving it.
IMPORTANT: Archived documents are removed from collections but remain
searchable in the system. They won't appear in normal collection views
but can still be found through search or the archive list.
Use this tool when you need to:
- Remove outdated or inactive documents from view
- Clean up collections while preserving document history
- Preserve documents that are no longer relevant
- Temporarily hide documents without deleting them
Args:
document_id: The document ID to archive
Returns:
Result message confirming archival
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint, idempotentHint), the description adds critical context: archived documents are removed from collections but remain searchable, and they don't appear in normal views. This explains the behavioral traits clearly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, a bullet list of behavioral effects, and a list of use cases. While slightly long, it is front-loaded and every sentence adds value. Could be slightly more concise but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema (indicated as present), the description covers purpose, behavior, usage, parameter, and return value. It is complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'document_id' is described as 'The document ID to archive,' providing essential context beyond the schema's title. With 0% schema description coverage, this brief description compensates adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Archives a document to remove it from active use while preserving it,' using a specific verb and resource. It distinguishes from siblings like 'delete_document' (permanent removal) and 'unarchive_document' (reverse action), and 'batch_archive_documents' (bulk operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use this tool with four specific scenarios: removing outdated documents, cleaning up collections, preserving history, and temporarily hiding. It provides clear context compared to alternatives like deleting or unarchiving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_ai_about_documentsARead-only
Queries document content using natural language questions.
Use this tool when you need to:
- Find specific information across multiple documents
- Get direct answers to questions about document content
- Extract insights from your knowledge base
- Answer questions like "What is our vacation policy?"
- Answer "How do we onboard new clients?" and similar queries
Args:
question: The natural language question to ask
collection_id: Optional collection to limit the search to
document_id: Optional document to limit the search to
Returns:
AI-generated answer based on document content with sources
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| document_id | No | ||
| collection_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations by stating the answer is AI-generated and includes sources. Annotations already declare readOnlyHint=true, so no contradiction. However, it does not clarify openWorldHint behavior (potential use of external knowledge).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points, separate Args and Returns sections. Every sentence is informative and earns its place. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, and return type. Could mention potential latency or limitations (e.g., token limits), but overall complete for a read-only query tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema_description_coverage is 0% (schema only has titles), but the description provides detailed explanations for all parameters (e.g., 'The natural language question to ask'). This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool queries document content using natural language questions, and provides specific use cases (e.g., find information across documents, get answers). This distinguishes it from sibling tools like search_document_content or read_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bulleted list explicitly states when to use the tool (find info, get answers, extract insights). However, it does not explicitly say when not to use it or provide alternatives, which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_archive_documentsADestructiveIdempotent
Archives multiple documents in a single batch operation.
This tool processes each document sequentially, continuing even if
individual operations fail. Rate limiting is handled automatically
by the Outline client.
IMPORTANT: Archived documents are removed from collections but remain
searchable. They won't appear in normal collection views but can
still be found through search or the archive list.
Use this tool when you need to:
- Archive multiple outdated documents at once
- Clean up collections in bulk
- Batch hide documents without deleting them
Recommended batch size: 10-50 documents per operation
Args:
document_ids: List of document IDs to archive
Returns:
Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| document_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: documents are removed from collections but remain searchable, sequential processing with failure tolerance, and automatic rate limiting. Annotations already indicate destructive and idempotent behavior, so description complements well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an intro, behavioral notes, bullet points for use cases, recommended batch size, and parameter description. It is appropriately sized, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch operation, potential failures), the description covers sequential processing, effects on visibility, recommended batch size, and output summary. It is adequate for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description only provides minimal clarification for the single parameter 'document_ids: List of document IDs to archive.' This adds little beyond the schema's property title and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool archives multiple documents in a single batch operation, using specific verbs and resource. It distinguishes from sibling tools like 'archive_document' and other batch tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit use cases are listed (archive multiple outdated documents, clean up collections, batch hide without deleting) and recommended batch size is provided. It does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_create_documentsADestructiveIdempotent
Creates multiple documents in a single batch
operation.
This tool processes each creation sequentially,
continuing even if individual operations fail.
Rate limiting is handled automatically.
Use this tool when you need to:
- Create multiple documents at once
- Bulk import content into collections
- Set up document structures efficiently
Note: For Mermaid diagrams, use ```mermaidjs
(not ```mermaid) as the code fence language
identifier for proper rendering.
Recommended batch size: 10-50 documents per
operation
Args:
documents: List of document specifications
Returns:
Summary of batch operation with created
document IDs and success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| documents | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description adds that operations are sequential and continue on failure, rate limiting is automatic, and recommends batch size. Adds useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise but includes an out-of-place note about Mermaid code fence syntax, which adds unnecessary detail. Could be streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter with nested object, the description covers purpose, usage, behavior, and return summary. It lacks detail on failure behavior beyond 'continuing' but is generally complete for a well-annotated tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'documents: List of document specifications' but does not elaborate on sub-fields; the input schema already describes each property. The recommended batch size adds value, but overall parameter description is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'creates' and the resource 'multiple documents in a single batch operation'. It distinguishes from siblings like 'create_document' by specifying batch behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists explicit use cases (create multiple documents at once, bulk import, etc.) and implies that for single documents one should use alternatives. It provides good context, though could explicitly mention 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.
batch_delete_documentsADestructiveIdempotent
Deletes multiple documents, moving them to trash or permanently.
This tool processes each document sequentially, continuing even if
individual operations fail. Rate limiting is handled automatically.
IMPORTANT: When permanent=False (the default), documents are moved
to trash and retained for 30 days. Setting permanent=True bypasses
trash and immediately deletes documents without recovery option.
Use this tool when you need to:
- Remove multiple unwanted documents at once
- Clean up workspace in bulk
- Permanently delete sensitive information (with permanent=True)
Recommended batch size: 10-50 documents per operation
Args:
document_ids: List of document IDs to delete
permanent: If True, permanently deletes without recovery option
Returns:
Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| permanent | No | ||
| document_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: sequential processing, continued on errors, automatic rate limiting, 30-day trash retention for non-permanent, and immediate deletion for permanent. Annotations already indicate destructiveness and idempotency, but the description explains the nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with paragraphs and bullet points, front-loading the main action. It is appropriately sized, though a bit verbose; still earns a solid 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only 2 parameters, a clear output schema mentioned, and annotations present, the description covers all aspects: purpose, usage, parameters, behavior, and return value. It is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, but the description fully documents both parameters: document_ids as a list of IDs and permanent with its behavior (default false moves to trash for 30 days, true bypasses trash). This compensates completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it deletes multiple documents, moving them to trash or permanently. It distinguishes from sibling tools like delete_document (singular) and batch_archive_documents (archive vs delete) by specifying the action and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use this tool: removing multiple unwanted documents, cleaning up workspace, or permanently deleting sensitive information. While it lacks a direct 'when not to use' section, the sibling context implies alternatives, and the guidelines are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_move_documentsADestructiveIdempotent
Moves multiple documents to a different collection or parent.
This tool processes each document sequentially, continuing even if
individual operations fail. Rate limiting is handled automatically.
IMPORTANT: When moving documents that have child documents, all
children will move along with them, maintaining hierarchical
structure. You must specify either collection_id or
parent_document_id (or both).
Use this tool when you need to:
- Reorganize multiple documents at once
- Move documents between collections in bulk
- Restructure document hierarchies efficiently
Recommended batch size: 10-50 documents per operation
Args:
document_ids: List of document IDs to move
collection_id: Target collection ID (optional)
parent_document_id: Target parent document ID (optional)
Returns:
Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| document_ids | Yes | ||
| collection_id | No | ||
| parent_document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive (modification) and idempotent hints. Description adds sequential processing, error continuation, automatic rate limiting, and child document movement. Confirms that either collection_id or parent_document_id must be specified, adding useful constraint beyond the optional schema fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is fairly concise given the complexity, with clear front-loaded purpose and use-case bullets. Slightly verbose with the 'IMPORTANT' note but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, behavioral details, parameter semantics, and return value summary. Recommends batch size and notes automatic rate limiting. Lacks details on permissions, error scenarios, or behavior with invalid inputs, but adequate for a batch operation with output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains document_ids as list of IDs, collection_id and parent_document_id as targets, with optionality. Adds the constraint that at least one of the optional parameters must be provided. This provides basic meaning but no format details or constraints on IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Moves multiple documents to a different collection or parent', providing a specific verb and resource. It distinguishes from siblings like move_document (single) and batch_archive_documents (archiving) by emphasizing batch move and reorganization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases (reorganize multiple docs, move between collections in bulk, restructure hierarchies) and provides a recommended batch size. Lacks explicit when-not-to-use or direct alternatives, but context makes it clear for multiple documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_documentsADestructiveIdempotent
Updates multiple documents with different changes.
This tool processes each update sequentially,
continuing even if individual operations fail.
Rate limiting is handled automatically.
Use this tool when you need to:
- Update multiple documents with different changes
- Batch edit document titles or content
- Append content to multiple documents
Note: For Mermaid diagrams, use ```mermaidjs
(not ```mermaid) as the code fence language
identifier for proper rendering.
Recommended batch size: 10-50 documents per
operation
Args:
updates: List of update specifications
Returns:
Summary of batch operation with
success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructive, idempotent), the description adds sequential processing, error continuation ('continuing even if individual operations fail'), and automatic rate limiting. This provides useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy with a tangential note about Mermaid diagrams. While front-loaded with the main purpose, it contains some verbose formatting that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, behavior, and batch size. With an output schema present, return description is acceptable. However, it lacks details on failure handling specifics and does not explain the role of the 'append' parameter beyond what schema provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only says 'List of update specifications' without adding detail. The schema itself has descriptions on each field, but the description text does not compensate for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Updates multiple documents with different changes.' It distinguishes from siblings like 'update_document' (single) and batch operations for create/delete/archive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists explicit use cases (batch edit titles/content, append) and provides a recommended batch size. However, it does not explicitly state when not to use it or mention alternatives like sequential single updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionA
Creates a new collection for organizing documents.
Use this tool when you need to:
- Create a new section or category for documents
- Set up a workspace for a new project or team
- Organize content by department or topic
- Establish a separate space for related documents
Args:
name: Name for the collection
description: Optional description of the collection's
purpose
color: Optional hex color code for visual
identification (e.g. #FF0000)
Returns:
Result message with the new collection ID
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-readonly, non-destructive operation. The description adds that it returns a result message with a new collection ID. However, it does not disclose potential constraints like naming uniqueness, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear introduction, bullet-pointed usage scenarios, and a structured parameter list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with 3 parameters and output schema indicated, the description adequately covers the creation action and return value. It could hint at workspace context but is sufficient for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description explains each parameter: name (required), description (optional), and color (optional with hex example). This adds meaning beyond the raw schema, though it lacks details like length limits or validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new collection for organizing documents, with specific use cases listed. It effectively distinguishes from siblings like delete_collection, update_collection, and list_collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit scenarios for using the tool ('Use this tool when you need to:') with bullet points. It does not contrast with alternative tools or provide when-not-to-use guidance, but the positive guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentA
Creates a new document in a specified collection.
Use this tool when you need to:
- Add new content to a knowledge base
- Create documentation, guides, or notes
- Add a child document to an existing parent
- Start a new document thread or topic
- Create a reusable template document
Note: For Mermaid diagrams, use ```mermaidjs
(not ```mermaid) as the code fence language
identifier for proper rendering.
Args:
title: The document title
collection_id: The collection ID to create in
text: Optional markdown content for the document
parent_document_id: Optional parent document ID
for nesting
publish: Whether to publish immediately (True)
or save as draft (False)
template: If True, creates the document as a
template
icon: Optional emoji character to use as the
document icon (e.g. "📋", "🚀"). If None,
no icon is set.
Returns:
Result message with the new document ID
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | ||
| text | No | ||
| title | Yes | ||
| publish | No | ||
| template | No | ||
| collection_id | Yes | ||
| parent_document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and idempotentHint=false. The description adds the Mermaid code fence detail and mentions the return format, but lacks information on authorization, error handling, or side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with paragraphs and bullet lists, but it is a bit verbose, including a tangential Mermaid note. However, every sentence adds value, and the argument descriptions are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers parameter semantics well but is vague about the output, only stating a 'Result message with the new document ID.' With no output schema provided, this leaves ambiguity about the exact structure. Adequate for a creation tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so thoroughly with an 'Args:' section that explains each parameter's purpose, including optionality, default behavior (e.g., publish default True), and allowed values (e.g., emoji for icon).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Creates a new document in a specified collection.' It distinguishes from siblings like update_document, delete_document, etc., and provides a list of use cases that reinforce its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists five use cases for when to use the tool, helping agents decide. It does not explicitly state when not to use it or mention alternatives, but the context of sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionADestructiveIdempotent
Permanently removes a collection and all its documents.
Use this tool when you need to:
- Remove an entire section of content
- Delete obsolete project collections
- Remove collections that are no longer needed
- Clean up workspace organization
WARNING: This action cannot be undone and will delete all
documents within the collection.
Args:
collection_id: The collection ID to delete
Returns:
Result message confirming deletion
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds that the action is permanent and deletes all documents, which is valuable context. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear structure: main verb, bullet points for use cases, and a warning. Every sentence contributes meaning, and it's front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, output schema exists), the description is complete. It explains the irreversible nature and the cascading effect on documents, which is sufficient for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the tool description must compensate. It provides 'collection_id: The collection ID to delete', which adds a brief meaning beyond the schema's title and type, but is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a collection and all its documents. It uses a specific verb ('removes') and resource ('collection'), and the purpose is distinct from siblings like delete_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases (removing entire sections, obsolete collections, cleaning up) and provides a warning about irreversibility. It does not explicitly name sibling alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentADestructiveIdempotent
Moves a document to trash or permanently deletes it.
IMPORTANT: When permanent=False (the default), documents are
moved to trash and retained for 30 days before being
permanently deleted. During this period, they can be restored
using the restore_document tool. Setting permanent=True
bypasses the trash and immediately deletes the document
without any recovery option.
Use this tool when you need to:
- Remove unwanted or unnecessary documents
- Delete obsolete content
- Clean up workspace by removing documents
- Permanently remove sensitive information (with permanent=True)
Args:
document_id: The document ID to delete
permanent: If True, permanently deletes the document without
recovery option
Returns:
Result message confirming deletion
| Name | Required | Description | Default |
|---|---|---|---|
| permanent | No | ||
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds crucial context: default moves to trash with 30-day retention, permanent=True bypasses trash, and documents can be restored via restore_document. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and clear sections. Every sentence adds value, and key information is front-loaded. Despite length, it remains concise and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be detailed. The description covers behavior, parameter semantics, and usage guidelines thoroughly. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully explains both parameters: document_id as the document to delete, and permanent as the flag to bypass trash and delete without recovery. This adds significant value beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool moves a document to trash or permanently deletes it. It distinguishes from sibling tools like restore_document, archive_document, etc., by explaining the two deletion modes and the recovery option.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear list of when to use the tool: removing unwanted documents, deleting obsolete content, cleaning workspace, or permanently removing sensitive info. It also mentions an alternative (restore_document) but does not explicitly 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.
edit_documentADestructive
Edits a document using string-match replacement.
Each edit finds a unique old_string in the document
and replaces it with new_string. Edits are applied
server-side — you never need to hold the full
document in context.
IMPORTANT: Batch all edits for a document into a
single call when possible to minimize API calls.
Each old_string must uniquely match one location in
the document. Include surrounding context if needed
to disambiguate.
Edits are applied sequentially, so later edits can
target text created by earlier edits in the same
batch. If any edit fails, no changes are applied
(all-or-nothing).
By default (save=True), changes are pushed to
Outline immediately. Set save=False to stage changes
locally for large rewrites spanning multiple calls,
then pass save=True on the final call to push all
accumulated changes.
Args:
document_id: The document ID to edit
edits: List of edits to apply
save: If True (default), push changes to Outline
immediately. If False, stage locally.
Returns:
Summary of edits applied and save status
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| edits | Yes | ||
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: server-side editing, sequential edits, all-or-nothing, and save staging. No contradiction with destructiveHint=true. Does not describe all edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with paragraphs. Slightly verbose but each sentence adds value. Front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given sibling tools (read, update, archive), output schema, and annotations, the description covers editing behavior fully. Return value summary is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Describes document_id, edits (list of DocumentEdit), and save with default. Explains old_string and new_string. Schema lacks descriptions for top-level props but $defs has some; description compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits a document via string-match replacement, specifying the verb, resource, and method. It distinguishes from siblings like update_document that likely modify metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on batching edits, uniqueness of old_string, sequential application, all-or-nothing failure, and save=false for staging. Lacks explicit when-not-to-use, but context with siblings makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_all_collectionsARead-onlyIdempotent
Exports the entire workspace content to a downloadable file.
IMPORTANT: This tool starts an asynchronous export operation which may
take time to complete, especially for large workspaces. The function
returns information about the operation, including its status. When
the operation is complete, the file can be downloaded or accessed via
Outline's UI. The export includes all collections, documents, and
their
hierarchies in the specified format.
Use this tool when you need to:
- Create a complete backup of all workspace content
- Migrate content to another system
- Archive all workspace documents
- Get a comprehensive export of knowledge base
Args:
format: Export format ("outline-markdown", "json", or "html")
Returns:
Information about the export operation and how to access the file
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | outline-markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent. The description adds critical behavioral context: the operation is asynchronous, may take time, returns status, and file access via UI. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (around 100 words), front-loaded with the core purpose, uses clear sectioning (IMPORTANT, bullet list, Args, Returns), and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations cover safety, the description covers async behavior, format options, use cases, and return type. Output schema exists but the description sufficiently explains what the tool returns. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for the only parameter 'format'. The description's argument section explicitly lists the allowed values ('outline-markdown', 'json', 'html'), adding meaning beyond the schema. A score of 4 reflects good compensation for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'exports', the resource 'entire workspace content', and the outcome 'downloadable file'. It distinguishes this tool from siblings like export_collection and export_document by emphasizing the scope (entire workspace).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases in bullet points (backup, migration, archive, comprehensive export), which helps the agent decide when to use this tool versus partial exports. It implies not to use it for single-collection or single-document exports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_collectionARead-onlyIdempotent
Exports all documents in a collection to a downloadable file.
IMPORTANT: This tool starts an asynchronous export operation which may
take time to complete. The function returns information about the
operation, including its status. When the operation is complete, the
file can be downloaded or accessed via Outline's UI. The export
preserves the document hierarchy and includes all document content and
structure in the
specified format.
Use this tool when you need to:
- Create a backup of collection content
- Share collection content outside of Outline
- Convert collection content to other formats
- Archive collection content for offline use
Args:
collection_id: The collection ID to export
format: Export format ("outline-markdown", "json", or "html")
Returns:
Information about the export operation and how to access the file
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | outline-markdown | |
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it discloses that the export is asynchronous, may take time, returns operation status, and that the file is accessible via Outline's UI. Annotations already indicate readOnlyHint=true and idempotentHint=true, which are consistent with the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise introductory sentence, an important async note, a bullet list of use cases, and clear args/returns sections. Every sentence adds value, and the information is front-loaded for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: what the tool does, async behavior, parameter details, and returns information. Given the output schema exists (not shown but referenced), the description sufficiently explains the return value as operation info and file access. No gaps for an expert user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides clear meaning for both parameters: collection_id is the ID to export, and format specifies the export format ('outline-markdown', 'json', or 'html') with a default. Since the input schema has no descriptions (0% coverage), the description fully compensates and clarifies parameter roles and options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports all documents in a collection to a downloadable file, and lists specific use cases (backup, share, convert, archive). It distinguishes from sibling tools like export_document (single document) and export_all_collections (all collections), making its purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (backup, sharing, conversion, archiving) and notes the asynchronous nature. However, it does not explicitly mention when not to use it or compare directly to alternatives like export_document, which would further enhance guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentARead-onlyIdempotent
Exports a document as plain markdown text.
Use this tool when you need to:
- Get clean markdown content without formatting
- Extract document content for external use
- Process document content in another application
- Share document content outside Outline
Args:
document_id: The document ID to export
Returns:
Document content in markdown format without
additional formatting
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and idempotent; the description adds that it returns markdown text without additional formatting, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with clear sections (use cases, args, returns), and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter, existing annotations, and an output schema, the description is complete—covering purpose, usage, and output format without gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description includes an 'Args' section explaining 'document_id', adding meaning beyond the schema's minimal 'title' field. It compensates adequately for a single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a document as plain markdown text and lists specific use cases, distinguishing it from sibling tools like read_document or edit_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly lists when to use the tool (e.g., get clean markdown, extract content), but does not mention when not to use it or provide alternatives, though the context of siblings implies this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_attachmentARead-onlyIdempotent
Fetch attachment content and return it as base64.
Calls attachments.redirect, follows the redirect, and returns the
raw file content encoded as base64. Useful for images and files
that agents can process.
Use this tool when you need to:
- Read PDF content from Outline documents
- Process embedded images
- Analyze files referenced in documents
- Enable AI tools to work with all document content
Args:
attachment_id: The attachment UUID
Returns:
Multi-line string in this format (blank line after Content-Length
/ before Content-Base64):
Content-Type: <mime-type>
Content-Length: <bytes>
Content-Base64: <base64-encoded-data>
Note: For large files (e.g. multi-MB PDFs), the base64 output
may hit token limits. Prefer get_attachment_url to obtain a
download URL for large attachments, then fetch externally.
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the internal mechanism ('calls attachments.redirect, follows the redirect') and returns base64-encoded content. It mentions token limits for large files. Annotations already indicate read-only and idempotent, but description adds valuable behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening, bullet points for usage, and a note with important caveats. Every sentence adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description still details the return format with exact fields (Content-Type, Content-Length, Content-Base64) and handles edge cases like large files. It is fully adequate for an agent to understand behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'attachment_id' receives a brief description ('The attachment UUID') which adds minimal meaning beyond the schema's type and title. With 0% schema description coverage, more detail on format or source would be helpful, but the parameter is simple and single, so 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Fetch attachment content and return it as base64,' a clear verb+resource. It distinguishes itself from sibling 'get_attachment_url' by explicitly recommending that alternative for large files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases (read PDF, process images, etc.) and provides a clear note advising when to use 'get_attachment_url' instead for large files, offering explicit when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachment_urlARead-onlyIdempotent
Resolve an attachment ID to a downloadable URL.
Calls attachments.redirect and returns the final URL after the
redirect. Allows clients/agents to fetch the file themselves.
Use this tool when you need to:
- Get a direct URL to download an attachment
- Share or reference an attachment URL
- Let another system fetch the file
Args:
attachment_id: The attachment UUID
Returns:
The redirect URL (signed download URL)
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds operational context (calls attachments.redirect, returns final URL, allows clients to fetch themselves), which is valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and is relatively concise. The bullet list for usage slightly repeats the purpose, but overall it is well-structured and not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no nested objects, output schema present), the description covers purpose, usage, parameter, and return value completely. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly documents the 'attachment_id' parameter as a UUID, adding semantic meaning beyond the schema's type and title. With 0% schema coverage, this compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves an attachment ID to a downloadable URL. It distinguishes from siblings like fetch_attachment by indicating the output is a URL for clients to fetch themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases: getting a direct URL, sharing/referencing a URL, or letting another system fetch the file. It provides clear context but does not explicitly mention when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collection_structureARead-onlyIdempotent
Retrieves the hierarchical document structure of a collection.
Use this tool when you need to:
- Understand how documents are organized in a collection
- Find document IDs within a specific collection
- See the parent-child relationships between documents
- Get an overview of a collection's content structure
Args:
collection_id: The collection ID to examine
Returns:
Formatted string showing the hierarchical structure of documents
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds return format but not deeper behavioral context like permissions or performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose, bullet points, and arg/return sections. Slightly verbose but front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects given simple tool: purpose, usage, and return value. Lacks detail on edge cases or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only restates the parameter name without additional format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves hierarchical document structure, with specific use cases listed. It distinguishes from sibling tools which are primarily individual document or batch operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use, but does not mention when not to use or provide alternatives. Context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentARead-onlyIdempotent
Retrieves a specific comment by its ID.
Use this tool when you need to:
- View details of a specific comment
- Reference or quote a particular comment
- Check comment content and metadata
- Find a comment mentioned elsewhere
Args:
comment_id: The comment ID to retrieve
include_anchor_text: Whether to include the document text that
the comment refers to
Returns:
Formatted string with the comment content and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| include_anchor_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool returns a 'formatted string with the comment content and metadata,' which adds behavioral context beyond the annotations (readOnlyHint, idempotentHint). There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a bulleted list of use cases, and an args section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameters, and return format. Given its simplicity (2 parameters, read-only), it is mostly complete. However, it does not mention error handling or behavior when the comment ID is invalid, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds value by detailing both parameters: comment_id and include_anchor_text, explaining that the latter controls whether to include the referenced document text. This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieves a specific comment by its ID,' providing a specific verb and resource. It lists concrete use cases (view details, reference/quote, check content, find comment) that distinguish it from siblings like list_document_comments and add_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly outlines when to use the tool with a bulleted list of scenarios. While it does not mention when not to use it or name alternatives directly, the context is clear enough for an AI agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_backlinksARead-onlyIdempotent
Finds all documents that link to a specific document.
Use this tool when you need to:
- Discover references to a document across the workspace
- Identify dependencies between documents
- Find documents related to a specific document
- Understand document relationships and connections
Args:
document_id: The document ID to find backlinks for
Returns:
Formatted string listing all documents that link to
the specified document
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint as true. The description adds the return type ('Formatted string listing all documents') which provides some behavioral context beyond annotations, but does not introduce additional traits like auth requirements or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (around 100 words) and well-structured with a header, bullet points, and clear sections for args and returns. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no nested objects, output schema exists), the description covers all essentials: purpose, usage context, parameter meaning, and return format. It is fully sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'document_id' is described as 'The document ID to find backlinks for', adding clear semantic meaning. Since schema coverage is 0%, this description compensates well, though it could be slightly more precise (e.g., note it's the document ID, not a URL).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Finds all documents that link to a specific document', using a specific verb and resource. It lists concrete use cases (discover references, identify dependencies, find related documents, understand connections) which effectively distinguishes it from sibling tools like read_document or search_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists scenarios for use ('Use this tool when you need to:'). While it does not provide explicit negative guidance or alternatives, the context is clear and an agent can easily determine when to use this tool vs siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_id_from_titleARead-onlyIdempotent
Locates a document ID by searching for its title.
IMPORTANT: This tool first checks for exact title matches
(case-insensitive). If none are found, it returns the best partial
match instead. This is useful when you're not sure of the exact title
but need
to reference a document in other operations. Results are more accurate
when you provide more of the actual title in your query.
Use this tool when you need to:
- Find a document's ID when you only know its title
- Get the document ID for use in other operations
- Verify if a document with a specific title exists
- Find the best matching document if exact title is unknown
Args:
query: Title to search for (can be exact or partial)
collection_id: Optional collection to limit the search to
Returns:
Document ID if found, or best match information
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| collection_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint, and the description adds valuable context: the matching algorithm (exact then partial), and that accuracy improves with more of the title. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and uses a clear structure with bullet points. However, it is somewhat wordy and could be more concise while retaining the same information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, straightforward behavior) and the presence of annotations and an output schema, the description covers the necessary aspects: matching logic, use cases, and parameter roles. It does not detail the return format, but the output schema likely handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining 'query' as a title for exact/partial search and 'collection_id' as an optional limiter. This adds meaning beyond the schema's type and requirement info, though no additional constraints or examples are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: locating a document ID by searching for its title. It distinguishes from sibling tools by specifying that it returns an ID and uses exact-then-partial matching, which is unique among the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases (e.g., when you only know the title, to get an ID for other operations). It does not explicitly state when not to use it or mention alternatives, but the provided use cases are clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_tocARead-onlyIdempotent
Returns the heading structure of a document as a
table of contents with line numbers.
Use this tool when you need to:
- Understand the structure of a large document
- Find specific sections before reading them
- Navigate a document by its headings
Line numbers in the output can be used with
read_document(offset=...) or
read_document_section(heading=...) to read specific
parts.
Args:
document_id: The document ID
Returns:
Formatted table of contents with line numbers
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so description doesn't need to repeat. It adds that output is formatted TOC with line numbers, which is helpful. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is in a structured block with clear bullet points. Not overly long, but could be more concise. Sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return values are covered. Description provides usage context and links to other tools. Complete for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (document_id) with 0% schema coverage. Description includes 'Args: document_id: The document ID', providing minimal but sufficient meaning for a straightforward parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns the heading structure as a table of contents with line numbers. It distinguishes from sibling tools like read_document and read_document_section by explaining usage for navigation and structure understanding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use: understand structure, find sections, navigate by headings. Also suggests using line numbers with other tools. Lacks explicit when-not-to-use, but positive guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archived_documentsARead-onlyIdempotent
Displays all documents that have been archived.
Use this tool when you need to:
- Find specific archived documents
- Review what documents have been archived
- Identify documents for possible unarchiving
- Check archive status of workspace content
Returns:
Formatted string containing list of archived documents
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description's burden is lower. It adds that the return is a 'Formatted string containing list of archived documents,' providing minimal extra behavioral context beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, uses bullet points for clarity, and every sentence adds value. It is appropriately sized and front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists, and annotations are rich, the description is complete. It covers purpose, usage, and return type, leaving no critical gaps for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100%. Since there are no parameters to explain, a baseline of 4 is appropriate; the description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Displays all documents that have been archived.' It identifies the specific verb ('Displays') and resource ('documents that have been archived'), and effectively distinguishes this tool from siblings like list_trash or list_recently_updated_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: finding archived documents, reviewing archives, identifying documents for unarchiving, and checking archive status. It does not explicitly exclude scenarios or compare to alternatives, but the listed use cases offer clear guidance on when to employ the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsARead-onlyIdempotent
Retrieves and displays all available collections in the workspace.
Use this tool when you need to:
- See what collections exist in the workspace
- Get collection IDs for other operations
- Explore the organization of the knowledge base
- Find a specific collection by name
Args:
limit: Maximum number of results to return
offset: Number of results to skip (pagination)
Returns:
Formatted string containing collection names, IDs, and descriptions
If the response contains as many collections as the
limit, execute the tool again with an increased offset
to check for more results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral context: it returns a formatted string with collection names, IDs, and descriptions, and it includes pagination handling instructions ('if response contains as many as limit, execute again with increased offset'). This 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a general statement, bulleted use cases, Args, Returns, and a pagination note. It is slightly verbose but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters with defaults, readOnly and idempotent annotations, and an output schema (though not detailed), the description covers purpose, usage, parameters, return format, and pagination behavior. It is fully complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden. The Args section explicitly explains limit ('Maximum number of results to return') and offset ('Number of results to skip (pagination)'), adding meaning absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves and displays all collections, listing specific use cases (see what exists, get IDs, explore knowledge base, find by name). This distinguishes it from sibling tools like create_collection, delete_collection, update_collection, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a bulleted list of when to use the tool. It does not explicitly state when not to use it or mention alternatives, but the use cases are clear and relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_attachmentsARead-onlyIdempotent
List attachment IDs referenced in a document.
Parses document content for attachment references (e.g.
/api/attachments.redirect?id=<uuid>) and returns a list of
attachment IDs with context snippets.
Use this tool when you need to:
- Discover attachments within a document
- Find attachment IDs for use with get_attachment_url or
fetch_attachment
- Audit what files a document references
Args:
document_id: The document ID to scan
Returns:
Formatted list of attachment IDs and context
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that it parses document content for attachment references and returns a list with context snippets, which is useful behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear one-sentence summary, followed by a bulleted list of use cases, and then explicit Args/Returns sections. Every part contributes value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter), the description fully covers its purpose, usage context, parameter, and return value. The presence of an output schema and clear when-to-use guidance makes it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description defines the single parameter 'document_id' as 'The document ID to scan.' Since schema description coverage is 0%, this explanation adds necessary meaning beyond the bare schema, though it could include format or additional details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List attachment IDs referenced in a document.' It uses a specific verb (list) and resource (attachment IDs) and distinguishes itself from sibling tools via bullet points that mention related tools like get_attachment_url and fetch_attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists three use cases: discovering attachments, finding IDs for get_attachment_url or fetch_attachment, and auditing document references. This provides clear guidance on when to use the tool and references sibling tools, making it easy for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_commentsARead-onlyIdempotent
Retrieves comments on a specific document with pagination support.
IMPORTANT: By default, this returns up to 25 comments at a time. If
there are more than 25 comments on the document, you'll need to make
multiple calls with different offset values to get all comments. The
response will indicate if there
are more comments available.
Use this tool when you need to:
- Review feedback and discussions on a document
- See all comments from different users
- Find specific comments or questions
- Track collaboration and input on documents
Args:
document_id: The document ID to get comments from
include_anchor_text: Whether to include the document text that
comments refer to
limit: Maximum number of comments to return (default: 25)
offset: Number of comments to skip for pagination (default: 0)
Returns:
Formatted string containing comments with author, date, and
optional anchor text
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| document_id | Yes | ||
| include_anchor_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds value by explaining pagination details (default 25 comments, need multiple calls) and that response indicates more comments available. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (IMPORTANT, use cases, args, returns). Slightly verbose but each sentence adds value. No clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no enums, and existence of output schema, the description covers pagination, return format (formatted string with author, date, anchor text), and use cases. Annotations cover safety. Complete for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, but the description compensates by explaining all four parameters: document_id, include_anchor_text, limit, offset, including defaults and purpose. Fully compensates for lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves comments on a document with pagination support. Uses specific verb 'retrieves' and resource 'comments', distinguishing from siblings like 'get_comment' (singular) and 'add_comment' (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases: review feedback, see all comments, find specific comments, track collaboration. Mentions pagination behavior and need for multiple calls. However, does not explicitly contrast with alternatives or state 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.
list_recently_updated_documentsARead-onlyIdempotent
Lists documents ordered by most recent change (newest first).
Answers questions like "what changed this week" without needing
search keywords. Backed by Outline's search endpoint with an empty
query, sorted by last-modified time.
IMPORTANT: date_filter is a coarse server-side window on each
document's last-modified time. It accepts only "day", "week",
"month", or "year" (no arbitrary timestamps) and defaults to
"week". Results are ordered newest-changed first.
STATUS FILTER: By default this lists published documents only.
Pass status_filter to include other states. Allowed values are
"draft", "archived", and "published". Drafts only ever include
those you are allowed to see.
PAGINATION: Returns up to limit documents (default 25). Use offset
to page through older changes.
Use this tool when you need to:
- Answer "what documents changed recently / this week"
- Review recent activity, optionally within one collection
- Catch up on edits since you last looked
Args:
date_filter: Time window on last-modified time. One of "day",
"week", "month", "year". Defaults to "week".
collection_id: Optional collection to limit results to
status_filter: Optional list of statuses to include. Allowed
values are "draft", "archived", and "published". Defaults
to published only.
limit: Maximum number of documents to return (default: 25)
offset: Number of documents to skip for pagination (default: 0)
Returns:
Formatted string listing documents with their IDs and
last-updated timestamps, newest first
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| date_filter | No | week | |
| collection_id | No | ||
| status_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is conveyed. Description adds behavioral quirks: date_filter restrictions, status filter defaults, pagination details. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (IMPORTANT, STATUS FILTER, PAGINATION, use cases). No fluff, but slightly verbose (200 words). Could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple list functionality and presence of an output schema (not shown but indicated), the description covers all key aspects: behavior, parameters, return format, use cases. Adequate for a non-complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description carries full burden. It explains date_filter enum, collection_id optionality, status_filter values, limit/offset defaults. Good but could add more detail on return format beyond the short note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Lists documents ordered by most recent change (newest first).' Distinguishes from siblings like search_documents (keyword-based) and list_archived_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases: 'Answer what documents changed recently / this week', 'Review recent activity', 'Catch up on edits'. Implicitly excludes keyword search scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_trashARead-onlyIdempotent
Displays all documents currently in the trash.
Use this tool when you need to:
- Find deleted documents that can be restored
- Review what documents are pending permanent deletion
- Identify documents to restore from trash
- Verify if specific documents were deleted
Returns:
Formatted string containing list of documents in trash
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent. Description adds return format (formatted string) but overlaps with output schema. No additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with bullet points for use cases. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with no params, good annotations, and output schema. Description covers all needed context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters - baseline 4. Description adds nothing needed beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it displays documents in trash, with specific use cases. Distinguishes from sibling tools like list_archived_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use scenarios (find deleted, review pending deletion, etc.). No explicit exclusion but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_documentADestructive
Relocates a document to a different collection or parent document.
IMPORTANT: When moving a document that has child documents (nested
documents), all child documents will move along with it, maintaining
their hierarchical structure. You must specify either collection_id or
parent_document_id (or both).
Use this tool when you need to:
- Reorganize your document hierarchy
- Move a document to a more relevant collection
- Change a document's parent document
- Restructure content organization
Args:
document_id: The document ID to move
collection_id: Target collection ID (if moving between collections)
parent_document_id: Optional parent document ID (for nesting)
Returns:
Result message confirming the move operation
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| collection_id | No | ||
| parent_document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), the description adds critical context that all child documents move along, maintaining hierarchy. This addresses a key behavioral nuance not captured by annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and bullet points, but slightly verbose. It front-loads the main action and important note, then lists use cases and parameters. Minor improvement could tighten wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, no nested objects, output schema exists), the description covers behavior, constraints, use cases, and parameter semantics thoroughly. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains each parameter's role, including the nuance that collection_id or parent_document_id must be specified. This compensates entirely for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it relocates a document to a different collection or parent document. It lists specific use cases like reorganizing hierarchy, which distinguishes it from siblings like archive_document or delete_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when to use scenarios (reorganize, move to collection, change parent, restructure) and specifies the constraint of choosing collection_id or parent_document_id. However, it does not explicitly mention when not to use or alternatives like batch_move_documents for multiple documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_documentARead-onlyIdempotent
Retrieves and displays document content, optionally
paginated by line range.
Use this tool when you need to:
- Access the complete content of a specific document
- Read a specific range of lines from a large
document
- Review document information in detail
- Quote or reference document content
When offset or limit are set, output includes line
numbers and a metadata header showing the range.
When both are 0 (default), the full document is
returned in the original format for backward
compatibility.
Args:
document_id: The document ID to retrieve
offset: 0-based line number to start from;
must be non-negative (default: 0)
limit: Number of lines to return; 0 means all
lines; must be non-negative (default: 0)
Returns:
Formatted string containing the document title
and content
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent. Description adds that output includes line numbers and metadata header when paginated, and full document format for backward compatibility when offset and limit are default. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections and front-loaded purpose. Slightly verbose with Returns line stating the obvious, but overall concise and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 params (1 required), output schema, and annotations, description covers behavior, parameters, and return format. Could mention error handling or edge cases, but sufficient for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description provides detailed Args: document_id (ID to retrieve), offset (0-based, non-negative, default 0), limit (number of lines, 0 means all, non-negative, default 0). Adds significant meaning beyond schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves and displays document content, optionally paginated. Distinguishes from siblings like read_document_section by specifying line range vs section focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases: access complete content, read specific range, review details, quote/reference. No direct mention of when not to use, but context with sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_document_sectionARead-onlyIdempotent
Reads a specific section of a document identified by
heading match.
Uses case-insensitive substring matching against
headings. Returns the section content from the matched
heading up to the next heading of the same or higher
level, including all nested subsections.
Use this tool when you need to:
- Read a specific part of a large document
- Focus on one section without loading everything
- Navigate by heading name instead of line numbers
Args:
document_id: The document ID
heading: Case-insensitive substring to match
against headings (e.g. "arch" matches
"## Architecture")
Returns:
Section content with line numbers
| Name | Required | Description | Default |
|---|---|---|---|
| heading | Yes | ||
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds important behavioral details: case-insensitive matching, end boundary condition (next heading of same/higher level), inclusion of nested subsections, and return of line numbers. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: core function, detailed behavior, use cases, parameter descriptions, and return value. Every sentence adds information; no fluff. Front-loaded with essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, clear behavior) and presence of an output schema (covering return values), the description covers all necessary aspects. It omits error conditions but is sufficiently complete for a read-only tool with annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description provides essential meaning for both parameters: document_id as 'The document ID' and heading with an example of substring matching. This adds value beyond the schema's title fields, though it remains somewhat terse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 section by heading match, with specific matching behavior (case-insensitive substring, returns from matched heading to next same/higher-level heading including nested subsections). This distinguishes it from siblings like read_document (entire document) and get_document_toc (just headings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists three use cases for the tool, giving clear guidance on when to use it. However, it does not explicitly state when not to use it or mention alternatives, though the use cases implicitly differentiate from read_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_documentAIdempotent
Recovers a document from the trash back to active status.
Use this tool when you need to:
- Retrieve accidentally deleted documents
- Restore documents from trash to active use
- Recover documents deleted within the last 30 days
- Access content that was previously trashed
Args:
document_id: The document ID to restore
Returns:
Result message confirming restoration
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, indicating a safe, non-destructive operation. The description adds context about the 30-day recovery window and returns a confirmation, enhancing transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with bulleted use cases and structured Args/Returns sections. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter, no nested objects, and an output schema, the description fully explains when to use it, what it does, and the outcome. It covers the essential context without gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter 'document_id'. The description only repeats 'The document ID to restore' without adding format, constraints, or how to obtain it. This minimally compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool recovers a document from trash to active status, using specific verb 'Recovers' and resource 'document'. It distinguishes from sibling tools like archive, delete, or move, as no other tool focuses on trash restoration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists clear use cases: retrieve accidentally deleted, restore from trash, recover within 30 days, access previously trashed content. While it doesn't explicitly state when not to use or mention alternatives, the context is sufficiently clear for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_document_contentARead-onlyIdempotent
Searches within a document for lines containing a
text snippet (grep-style), returning matches with
line numbers and surrounding context.
Use this tool when you need to:
- Locate specific text in a large document without
reading it in full
- Find the exact text and line number to build
edit_document old_string values or
read_document offsets
Matching is case-insensitive per line. Line numbers
are 0-based and valid as read_document offsets.
Args:
document_id: The document ID to search
query: Text snippet to find (case-insensitive)
context_lines: Lines of context around each
match (default: 2, must be non-negative)
Returns:
Matching lines with line numbers and context
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| document_id | Yes | ||
| context_lines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable behavioral details: case-insensitive matching, 0-based line numbers, and context_lines default/constraint. This goes beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose sentence, bullet list for usage, behavioral details, parameter list. Every sentence adds value, and the most important information is front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params, no nested objects) and presence of an output schema, the description covers all essential aspects: purpose, usage, matching behavior, return format. It is fully sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description carries full burden. It explains all three parameters: document_id, query, context_lines (with default and constraint). It does not specify query format (exact vs regex) but provides sufficient meaning for typical use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches within a document for text (grep-style), returns matches with line numbers and context. It distinguishes from siblings like read_document (full read) and edit_document (edit) by explicitly referencing them as use cases for building arguments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use scenarios: locate specific text without reading full document, and find line numbers to build edit_document old_string or read_document offsets. It does not state when not to use, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentsARead-onlyIdempotent
Searches for documents using keywords or phrases across your knowledge
base.
IMPORTANT: The search performs full-text search across all document
content and titles. Results are ranked by relevance, with exact
matches
and title matches typically ranked higher. The search will return
snippets of content (context) where the search terms appear in the
document. You can limit the search to a specific collection by
providing
the collection_id.
PAGINATION: By default, returns up to 25 results at a time. If more
results exist, use the 'offset' parameter to fetch additional pages.
For example, use offset=25 to get results 26-50, offset=50 for
51-75, etc.
STATUS FILTER: By default, searches published documents only. Pass
status_filter to include other document states. Allowed values are
"draft", "archived", and "published".
Use this tool when you need to:
- Find documents containing specific terms or topics
- Locate information across multiple documents
- Search within a specific collection using collection_id
- Discover content based on keywords
- Browse through large result sets using limit and offset
Args:
query: Search terms (e.g., "vacation policy" or "project plan")
collection_id: Optional collection to limit the search to
limit: Maximum results to return (default: 25, max: 100)
offset: Number of results to skip for pagination (default: 0)
status_filter: Optional list of statuses to search. Allowed values
are "draft", "archived", and "published". Defaults to
["published"] when omitted.
Returns:
Formatted string containing search results with document titles,
contexts, and pagination information
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| offset | No | ||
| collection_id | No | ||
| status_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. Description adds details on full-text search, ranking, snippet generation, pagination, and status filtering, significantly extending transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections and front-loaded purpose. Slightly verbose in use cases, but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive coverage of search behavior, pagination, status filtering, and all parameters. Output schema is implied via return description. Sufficient for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description includes an Args section that fully explains all five parameters, their defaults, allowed values, and meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states search for documents with keywords across knowledge base. Specific verb and resource, but does not explicitly differentiate from sibling 'search_document_content'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists multiple scenarios for usage (find specific terms, locate info across documents, etc.) and describes pagination and status filter defaults. Does not specify when not to use or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_documentAIdempotent
Restores a previously archived document to active status.
Use this tool when you need to:
- Restore archived documents to active use
- Access or reference previously archived content
- Make archived content visible in collections again
- Update and reuse archived documents
Args:
document_id: The document ID to unarchive
Returns:
Result message confirming restoration
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (idempotentHint=true, not destructive) and adds details like making content visible in collections again, which goes beyond what annotations provide. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description begins with a clear main sentence, followed by bullet points and structured Args/Returns. It is appropriately sized for a simple tool, though the bullet points add some verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, clear purpose) and the presence of an output schema (not shown but referenced), the description adequately covers behavior and context. It explains the effect on visibility without missing crucial details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for parameters. The description's Args section provides only a basic 'The document ID to unarchive', which adds minimal meaning beyond the parameter name. For one required parameter, this is acceptable but not enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('restores a previously archived document to active status') and the resource ('document'), with a specific verb and object. It distinguishes from siblings like 'archive_document' by focusing on the reverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases ('Use this tool when you need to: restore archived documents...') and covers common scenarios. It does not list when not to use or compare directly with siblings like 'restore_document', but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_collectionADestructive
Modifies an existing collection's properties.
Use this tool when you need to:
- Rename a collection
- Update a collection's description
- Change a collection's color coding
- Refresh collection metadata
Args:
collection_id: The collection ID to update
name: Optional new name for the collection
description: Optional new description
color: Optional new hex color code (e.g. #FF0000)
Returns:
Result message confirming update
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | ||
| description | No | ||
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so description's 'Modifies' adds no new behavioral insight. It adds context about what properties can be changed but lacks details on side effects or authorization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise one-sentence summary, followed by bullet list of use cases, then args, then returns. Front-loaded with purpose, no redundant info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, when to use, all parameters, and return value. Lacks validation details (e.g., hex format for color) and error conditions, but adequate for a simple update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains each parameter: collection_id, name, description, color (with hex example). Fully compensates for lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Modifies an existing collection's properties' with specific use cases (rename, update description, change color coding, refresh metadata). Distinguishes from sibling tools like create_collection, delete_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use with bullet points (rename, update description, change color, refresh metadata). No mention of when not to use, but context from siblings is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_documentADestructive
Modifies an existing document's title or content.
IMPORTANT: This tool replaces the document content
rather than just adding to it. For partial edits
(changing specific text), prefer the edit_document
tool instead.
Use this tool when you need to:
- Replace the entire document content
- Change a document's title
- Append new content to an existing document
- Convert a document to or from a template
Note: For Mermaid diagrams, use ```mermaidjs
(not ```mermaid) as the code fence language
identifier for proper rendering.
Args:
document_id: The document ID to update
title: New title (if None, keeps existing title)
text: New content (if None, keeps existing)
append: If True, adds text to end of document
instead of replacing
template: If True, converts to a template.
If False, converts a template back to a
regular document.
icon: Optional emoji character to use as the
document icon (e.g. "📋", "🚀"). If None,
keeps existing icon. Pass an empty string
to remove the icon.
Returns:
Result message confirming update
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | ||
| text | No | ||
| title | No | ||
| append | No | ||
| template | No | ||
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description adds that it replaces content rather than appending. It also explains the append parameter. No contradictions. It doesn't detail further side effects, but the annotations handle safety profile adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a summary, warning, bullet list, and parameter descriptions. Front-loaded with the core action. No unnecessary sentences; each part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive: covers all parameters, behavior, usage guidance, and a rendering note. Output schema exists, so the vague return mention is acceptable. Adequate for a tool with 6 params and 1 required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description's Args section fully explains each parameter's purpose, default behavior (e.g., None keeps existing), and special cases (e.g., icon empty string removes). Adds significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it modifies an existing document's title or content, and lists specific use cases. It distinguishes from the sibling tool 'edit_document' by noting that this tool replaces content rather than making partial edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: for partial edits, prefer 'edit_document'. It lists when to use this tool (replace entire content, change title, append, convert template) and includes a note about Mermaid diagram syntax.
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. Dates show when Glama detected each change.
38 tool updates
v1.10.0- Changed
add_comment1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "add_commentOutput", + "type": "object" +}
- Changed
archive_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "archive_documentOutput", + "type": "object" +}
- Changed
ask_ai_about_documents1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "ask_ai_about_documentsOutput", + "type": "object" +}
- Added
batch_archive_documents - Added
batch_create_documents - Added
batch_delete_documents - Added
batch_move_documents - Added
batch_update_documents - Changed
create_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "create_collectionOutput", + "type": "object" +}
- Changed
create_document3 fields changed- added
Input schema / properties / iconAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Icon" +} - added
Input schema / properties / templateAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Template" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "create_documentOutput", + "type": "object" +}
- Changed
delete_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "delete_collectionOutput", + "type": "object" +}
- Changed
delete_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "delete_documentOutput", + "type": "object" +}
- Added
edit_document - Changed
export_all_collections1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "export_all_collectionsOutput", + "type": "object" +}
- Changed
export_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "export_collectionOutput", + "type": "object" +}
- Changed
export_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "export_documentOutput", + "type": "object" +}
- Added
fetch_attachment - Added
get_attachment_url - Changed
get_collection_structure1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_collection_structureOutput", + "type": "object" +}
- Changed
get_comment1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_commentOutput", + "type": "object" +}
- Changed
get_document_backlinks1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_document_backlinksOutput", + "type": "object" +}
- Changed
get_document_id_from_title1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_document_id_from_titleOutput", + "type": "object" +}
- Added
get_document_toc - Changed
list_archived_documents1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_archived_documentsOutput", + "type": "object" +}
- Changed
list_collections3 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 100, + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_collectionsOutput", + "type": "object" +}
- Added
list_document_attachments - Changed
list_document_comments1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_document_commentsOutput", + "type": "object" +}
- Added
list_recently_updated_documents - Changed
list_trash1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_trashOutput", + "type": "object" +}
- Changed
move_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "move_documentOutput", + "type": "object" +}
- Changed
read_document3 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 0, + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "read_documentOutput", + "type": "object" +}
- Added
read_document_section - Changed
restore_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "restore_documentOutput", + "type": "object" +}
- Added
search_document_content - Changed
search_documents4 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 25, + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / status_filterAdded value: +{ + "anyOf": [ + { + "items": { + "enum": [ + "draft", + "archived", + "published" + ], + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Status Filter" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "search_documentsOutput", + "type": "object" +}
- Changed
unarchive_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "unarchive_documentOutput", + "type": "object" +}
- Changed
update_collection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "update_collectionOutput", + "type": "object" +}
- Changed
update_document3 fields changed- added
Input schema / properties / iconAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Icon" +} - added
Input schema / properties / templateAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Template" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "update_documentOutput", + "type": "object" +}
25 tool updates
v1.0.0- First observed
add_comment - First observed
archive_document - First observed
ask_ai_about_documents - First observed
create_collection - First observed
create_document - First observed
delete_collection - First observed
delete_document - First observed
export_all_collections - First observed
export_collection - First observed
export_document - First observed
get_collection_structure - First observed
get_comment - First observed
get_document_backlinks - First observed
get_document_id_from_title - First observed
list_archived_documents - First observed
list_collections - First observed
list_document_comments - First observed
list_trash - First observed
move_document - First observed
read_document - First observed
restore_document - First observed
search_documents - First observed
unarchive_document - First observed
update_collection - First observed
update_document
TDQS
Each tool targets a distinct resource and action. Document tools (create, read, update, edit, delete, archive, restore, move, search, comment) and collection tools (CRUD, export, structure) are clearly separated. Even similar tools like edit_document (string replacement) and update_document (full content replacement) have well-defined distinct purposes.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_document, archive_document, batch_delete_documents). There are no deviations or mixed conventions, making it easy for an agent to predict tool names.
38 tools is slightly above typical range but well-justified for a full document management system. Tools cover CRUD, batch operations, search, navigation, attachments, comments, export, and lifecycle management. No obvious bloat, though reducing some batch variants could be considered.
Comprehensive coverage of document and collection lifecycle: create, read (multiple variants), update, delete, archive, unarchive, restore, move, search, export. Also includes comments, attachments, backlinks, and table of contents. No significant gaps for document management tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that connects AI assistants like Claude to Notion workspaces, enabling them to view, search, create, and update Notion databases, pages, and content blocks.129911MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables AI assistants to interact with Coda documents, allowing operations like listing, creating, reading, updating, and duplicating pages.1947964MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server for interacting with Outline document management, supporting search, read, create, edit, archive documents, collections, comments, and backlinks.30MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables AI agents to manage documents, collections, comments, and users in Outline through its API.559120MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vortiago/mcp-outline'
If you have feedback or need assistance with the MCP directory API, please join our Discord server