Skip to main content
Glama

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 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

감사의 말

Available Tools

38 tools
add_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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
document_idYes
parent_comment_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
DestructiveIdempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_documentsA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
questionYes
document_idNo
collection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
DestructiveIdempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
DestructiveIdempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
documentsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
DestructiveIdempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
permanentNo
document_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
DestructiveIdempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idsYes
collection_idNo
parent_document_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
DestructiveIdempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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
        
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
iconNo
textNo
titleYes
publishNo
templateNo
collection_idYes
parent_document_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_collectionA
DestructiveIdempotent
        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
        
ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
DestructiveIdempotent
        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
        
ParametersJSON Schema
NameRequiredDescriptionDefault
permanentNo
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
Destructive
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
saveNo
editsYes
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_collectionsA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
formatNooutline-markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_collectionA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
formatNooutline-markdown
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_attachmentA
Read-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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_urlA
Read-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)
    
ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_structureA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_commentA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes
include_anchor_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_id_from_titleA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
collection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_tocA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_collectionsA
Read-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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_attachmentsA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_commentsA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
document_idYes
include_anchor_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
Read-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
        
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
date_filterNoweek
collection_idNo
status_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_trashA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
Destructive
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes
collection_idNo
parent_document_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_sectionA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
headingYes
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool reads a specific document 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.

Usage Guidelines4/5

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_documentA
Idempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_contentA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
document_idYes
context_linesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentsA
Read-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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
offsetNo
collection_idNo
status_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_documentA
Idempotent
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_collectionA
Destructive
        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
        
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
descriptionNo
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_documentA
Destructive
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
iconNo
textNo
titleNo
appendNo
templateNo
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 38 tool updatesv1.10.0
    • Changedadd_comment1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_commentOutput",
        +  "type": "object"
        +}
    • Changedarchive_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "archive_documentOutput",
        +  "type": "object"
        +}
    • Changedask_ai_about_documents1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "ask_ai_about_documentsOutput",
        +  "type": "object"
        +}
    • Addedbatch_archive_documents
    • Addedbatch_create_documents
    • Addedbatch_delete_documents
    • Addedbatch_move_documents
    • Addedbatch_update_documents
    • Changedcreate_collection1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "create_collectionOutput",
        +  "type": "object"
        +}
    • Changedcreate_document3 fields changed
      • addedInput schema / properties / icon
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Icon"
        +}
      • addedInput schema / properties / template
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Template"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "create_documentOutput",
        +  "type": "object"
        +}
    • Changeddelete_collection1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "delete_collectionOutput",
        +  "type": "object"
        +}
    • Changeddelete_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "delete_documentOutput",
        +  "type": "object"
        +}
    • Addededit_document
    • Changedexport_all_collections1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "export_all_collectionsOutput",
        +  "type": "object"
        +}
    • Changedexport_collection1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "export_collectionOutput",
        +  "type": "object"
        +}
    • Changedexport_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "export_documentOutput",
        +  "type": "object"
        +}
    • Addedfetch_attachment
    • Addedget_attachment_url
    • Changedget_collection_structure1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_collection_structureOutput",
        +  "type": "object"
        +}
    • Changedget_comment1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_commentOutput",
        +  "type": "object"
        +}
    • Changedget_document_backlinks1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_document_backlinksOutput",
        +  "type": "object"
        +}
    • Changedget_document_id_from_title1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_document_id_from_titleOutput",
        +  "type": "object"
        +}
    • Addedget_document_toc
    • Changedlist_archived_documents1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_archived_documentsOutput",
        +  "type": "object"
        +}
    • Changedlist_collections3 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 100,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_collectionsOutput",
        +  "type": "object"
        +}
    • Addedlist_document_attachments
    • Changedlist_document_comments1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_document_commentsOutput",
        +  "type": "object"
        +}
    • Addedlist_recently_updated_documents
    • Changedlist_trash1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_trashOutput",
        +  "type": "object"
        +}
    • Changedmove_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "move_documentOutput",
        +  "type": "object"
        +}
    • Changedread_document3 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 0,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "read_documentOutput",
        +  "type": "object"
        +}
    • Addedread_document_section
    • Changedrestore_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "restore_documentOutput",
        +  "type": "object"
        +}
    • Addedsearch_document_content
    • Changedsearch_documents4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 25,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / status_filter
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "enum": [
        +          "draft",
        +          "archived",
        +          "published"
        +        ],
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Status Filter"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "search_documentsOutput",
        +  "type": "object"
        +}
    • Changedunarchive_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "unarchive_documentOutput",
        +  "type": "object"
        +}
    • Changedupdate_collection1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "update_collectionOutput",
        +  "type": "object"
        +}
    • Changedupdate_document3 fields changed
      • addedInput schema / properties / icon
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Icon"
        +}
      • addedInput schema / properties / template
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Template"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "update_documentOutput",
        +  "type": "object"
        +}
  2. 25 tool updatesv1.0.0
    • First observedadd_comment
    • First observedarchive_document
    • First observedask_ai_about_documents
    • First observedcreate_collection
    • First observedcreate_document
    • First observeddelete_collection
    • First observeddelete_document
    • First observedexport_all_collections
    • First observedexport_collection
    • First observedexport_document
    • First observedget_collection_structure
    • First observedget_comment
    • First observedget_document_backlinks
    • First observedget_document_id_from_title
    • First observedlist_archived_documents
    • First observedlist_collections
    • First observedlist_document_comments
    • First observedlist_trash
    • First observedmove_document
    • First observedread_document
    • First observedrestore_document
    • First observedsearch_documents
    • First observedunarchive_document
    • First observedupdate_collection
    • First observedupdate_document

TDQS

A4.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivitySlowing
ResponsivenessSyncing

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

Latest Blog Posts

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