mcp-outline
Allows interacting with the Outline API for document management, including searching, reading, creating, editing, archiving documents, managing collections, adding comments, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-outlinesearch for documents about Q4 goals"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Outline Server
A Model Context Protocol server for interacting with Outline document management.
Features
Document operations: Search, read, create, edit, archive documents
Collections: List, create, manage document hierarchies
Comments: Add and view threaded comments
Backlinks: Find documents referencing a specific document
MCP Resources: Direct content access via URIs (outline://document/{id}, outline://collection/{id}, etc.)
Automatic rate limiting: Transparent handling of API limits with retry logic
Related MCP server: Outline MCP Server
Prerequisites
Before using this MCP server, you need:
An Outline account (cloud hosted or self-hosted)
API key from Outline web UI: Settings → API Keys → Create New
Python 3.10+ (for non-Docker installations)
Getting your API key: Log into Outline → Click your profile → Settings → API Keys → "New API Key". Copy the generated token.
Installation
Using uv (Recommended)
uvx mcp-outlineUsing pip
pip install mcp-outlineUsing Docker
docker run -e OUTLINE_API_KEY=<your-key> ghcr.io/vortiago/mcp-outline:latestOr build from source:
docker buildx build -t mcp-outline .
docker run -e OUTLINE_API_KEY=<your-key> mcp-outlineConfiguration
Variable | Required | Default | Notes |
| Yes | - | Get from Outline web UI: Settings → API Keys → Create New |
| No |
| For self-hosted: |
| No |
|
|
| No |
|
|
| No |
|
|
| No |
| Transport mode: |
| No |
| Server host. Use |
| No |
| HTTP server port (only for |
Access Control
Configure server permissions to control what operations are allowed:
Read-Only Mode
Set OUTLINE_READ_ONLY=true to enable viewer-only access. Only search, read, export, and collaboration viewing tools are available. All write operations (create, update, move, archive, delete) are disabled.
Use cases:
Shared access for team members who should only view content
Safe integration with AI assistants that should not modify documents
Public or demo instances where content should be protected
Available tools:
Search & Discovery:
search_documents,list_collections,get_collection_structure,get_document_id_from_titleDocument Reading:
read_document,export_documentComments:
list_document_comments,get_commentCollaboration:
get_document_backlinksCollections:
export_collection,export_all_collectionsAI:
ask_ai_about_documents(if not disabled withOUTLINE_DISABLE_AI_TOOLS)
Disable Delete Operations
Set OUTLINE_DISABLE_DELETE=true to allow create and update workflows while preventing accidental data loss. Only delete operations are disabled.
Use cases:
Production environments where documents should not be deleted
Protecting against accidental deletions
Safe content editing workflows
Disabled tools:
delete_document,delete_collectionbatch_delete_documents
Important: OUTLINE_READ_ONLY=true takes precedence over OUTLINE_DISABLE_DELETE. If both are set, the server operates in read-only mode.
Adding to Your Client
Prerequisites: Install
uvwithpip install uvor from astral.sh/uv
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (or %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"mcp-outline": {
"command": "uvx",
"args": ["mcp-outline"],
"env": {
"OUTLINE_API_KEY": "<YOUR_API_KEY>",
"OUTLINE_API_URL": "<YOUR_OUTLINE_URL>" // Optional
}
}
}
}Go to Settings → MCP and click Add Server:
{
"mcp-outline": {
"command": "uvx",
"args": ["mcp-outline"],
"env": {
"OUTLINE_API_KEY": "<YOUR_API_KEY>",
"OUTLINE_API_URL": "<YOUR_OUTLINE_URL>" // Optional
}
}
}Create a .vscode/mcp.json file in your workspace with the following configuration:
{
"servers": {
"mcp-outline": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-outline"],
"env": {
"OUTLINE_API_KEY": "<YOUR_API_KEY>"
}
}
}
}For self-hosted Outline instances, add OUTLINE_API_URL to the env object.
Optional: Use input variables for sensitive credentials:
{
"inputs": [
{
"type": "promptString",
"id": "outline-api-key",
"description": "Outline API Key",
"password": true
}
],
"servers": {
"mcp-outline": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-outline"],
"env": {
"OUTLINE_API_KEY": "${input:outline-api-key}"
}
}
}
}VS Code will automatically discover and load MCP servers from this configuration file. For more details, see the official VS Code MCP documentation.
In Cline extension settings, add to MCP servers:
{
"mcp-outline": {
"command": "uvx",
"args": ["mcp-outline"],
"env": {
"OUTLINE_API_KEY": "<YOUR_API_KEY>",
"OUTLINE_API_URL": "<YOUR_OUTLINE_URL>" // Optional
}
}
}If you prefer to use pip instead:
pip install mcp-outlineThen in your client config, replace "command": "uvx" with "command": "mcp-outline" and remove the "args" line:
{
"mcp-outline": {
"command": "mcp-outline",
"env": {
"OUTLINE_API_KEY": "<YOUR_API_KEY>",
"OUTLINE_API_URL": "<YOUR_OUTLINE_URL>" // Optional
}
}
}For remote access or Docker containers, use HTTP transport. This runs the MCP server on port 3000:
docker run -p 3000:3000 \
-e OUTLINE_API_KEY=<YOUR_API_KEY> \
-e MCP_TRANSPORT=streamable-http \
ghcr.io/vortiago/mcp-outline:latestThen connect from client:
{
"mcp-outline": {
"url": "http://localhost:3000/mcp"
}
}Note: OUTLINE_API_URL should point to where your Outline instance is running, not localhost:3000.
Tools
Note: Tool availability depends on your Access Control settings. Some tools are disabled in read-only mode or when delete operations are restricted.
Search & Discovery
search_documents(query, collection_id?, limit?, offset?)- Search documents by keywords with paginationlist_collections()- List all collectionsget_collection_structure(collection_id)- Get document hierarchy within a collectionget_document_id_from_title(query, collection_id?)- Find document ID by title search
Document Reading
read_document(document_id)- Get document contentexport_document(document_id)- Export document as markdown
Document Management
create_document(title, collection_id, text?, parent_document_id?, publish?)- Create new documentupdate_document(document_id, title?, text?, append?)- Update document (append mode available)move_document(document_id, collection_id?, parent_document_id?)- Move document to different collection or parent
Document Lifecycle
archive_document(document_id)- Archive documentunarchive_document(document_id)- Restore document from archivedelete_document(document_id, permanent?)- Delete document (or move to trash)restore_document(document_id)- Restore document from trashlist_archived_documents()- List all archived documentslist_trash()- List all documents in trash
Comments & Collaboration
add_comment(document_id, text, parent_comment_id?)- Add comment to document (supports threaded replies)list_document_comments(document_id, include_anchor_text?, limit?, offset?)- View document comments with paginationget_comment(comment_id, include_anchor_text?)- Get specific comment detailsget_document_backlinks(document_id)- Find documents that link to this document
Collection Management
create_collection(name, description?, color?)- Create new collectionupdate_collection(collection_id, name?, description?, color?)- Update collection propertiesdelete_collection(collection_id)- Delete collectionexport_collection(collection_id, format?)- Export collection (default: outline-markdown)export_all_collections(format?)- Export all collections
Batch Operations
batch_create_documents(documents)- Create multiple documents at oncebatch_update_documents(updates)- Update multiple documents at oncebatch_move_documents(document_ids, collection_id?, parent_document_id?)- Move multiple documentsbatch_archive_documents(document_ids)- Archive multiple documentsbatch_delete_documents(document_ids, permanent?)- Delete multiple documents
AI-Powered
ask_ai_about_documents(question, collection_id?, document_id?)- Ask natural language questions about your documents
Resources
outline://collection/{id}- Collection metadata (name, description, color, document count)outline://collection/{id}/tree- Hierarchical document tree structureoutline://collection/{id}/documents- Flat list of documents in collectionoutline://document/{id}- Full document content (markdown)outline://document/{id}/backlinks- Documents that link to this document
Development
Quick Start with Self-Hosted Outline
# Generate configuration
cp config/outline.env.example config/outline.env
openssl rand -hex 32 > /tmp/secret_key && openssl rand -hex 32 > /tmp/utils_secret
# Update config/outline.env with generated secrets
# Start all services
docker compose up -d
# Create API key: http://localhost:3030 → Settings → API Keys
# Add to .env: OUTLINE_API_KEY=<token>Setup
git clone https://github.com/Vortiago/mcp-outline.git
cd mcp-outline
uv pip install -e ".[dev]"Testing
# Run tests
uv run pytest tests/
# Format code
uv run ruff format .
# Type check
uv run pyright src/
# Lint
uv run ruff check .Running Locally
uv run mcp-outlineTesting with MCP Inspector
Use the MCP Inspector to test the server tools visually via an interactive UI.
For local development (with stdio):
npx @modelcontextprotocol/inspector -e OUTLINE_API_KEY=<your-key> -e OUTLINE_API_URL=<your-url> uv run python -m mcp_outlineFor Docker Compose (with HTTP):
npx @modelcontextprotocol/inspector http://localhost:3000
Architecture Notes
Rate Limiting: Automatically handled via header tracking (RateLimit-Remaining, RateLimit-Reset) with exponential backoff retry (up to 3 attempts). No configuration needed.
Transport Modes:
stdio(default): Direct process communicationsse: HTTP Server-Sent Events (use for web clients)streamable-http: Streamable HTTP transport
Connection Pooling: Shared httpx connection pool across instances (configurable: OUTLINE_MAX_CONNECTIONS=100, OUTLINE_MAX_KEEPALIVE=20)
Troubleshooting
Server not connecting?
Check your API credentials:
# Test your API key
curl -H "Authorization: Bearer YOUR_API_KEY" YOUR_OUTLINE_URL/api/auth.infoCommon issues:
Verify
OUTLINE_API_KEYis set correctly in your MCP client configurationCheck
OUTLINE_API_URLpoints to your Outline instance (default:https://app.getoutline.com/api)For self-hosted Outline, ensure the URL ends with
/apiVerify your API key hasn't expired or been revoked
Tools not appearing in client?
Read-only mode enabled? Check if
OUTLINE_READ_ONLY=trueis disabling write toolsDelete operations disabled? Check if
OUTLINE_DISABLE_DELETE=trueis hiding delete toolsAI tools missing? Check if
OUTLINE_DISABLE_AI_TOOLS=trueis disabling AI featuresRestart your MCP client after changing environment variables
API rate limiting errors?
The server automatically handles rate limiting with retry logic. If you see persistent rate limit errors:
Reduce concurrent operations
Check if multiple clients are using the same API key
Contact Outline support if limits are too restrictive for your use case
Docker container issues?
Container won't start:
Ensure
OUTLINE_API_KEYis set:docker run -e OUTLINE_API_KEY=your_key ...Check logs:
docker logs <container-id>
Can't connect from client:
Use
0.0.0.0for MCP_HOST:-e MCP_HOST=0.0.0.0Verify port mapping:
-p 3000:3000Check transport mode:
-e MCP_TRANSPORT=streamable-http
Need more help?
Contributing
Contributions welcome! See CONTRIBUTING.md for setup instructions.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Built with MCP Python SDK
Uses Outline API for document management
Available Tools
30 toolsadd_commentA
Adds a comment to a document or replies to an existing comment.
Use this tool when you need to:
Provide feedback on document content
Ask questions about specific information
Reply to another user's comment
Collaborate with others on document development
Args: document_id: The document to comment on text: The comment text (supports markdown) parent_comment_id: Optional ID of a parent comment (for replies)
Returns: Result message with the new comment ID
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| text | Yes | ||
| parent_comment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation, and description adds return value context and markdown support, no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with short summary, bullet use cases, and labeled sections for args and returns, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, parameters, and return value. No output schema provided, but return info is included. Sufficient for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains each parameter's purpose and constraints, including optional parent for replies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool adds a comment or replies, distinguishing from sibling tools like list_document_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (feedback, questions, replies, collaboration) but does not mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_documentADestructiveIdempotent
Archives a document to remove it from active use while preserving it.
IMPORTANT: Archived documents are removed from collections but remain searchable in the system. They won't appear in normal collection views but can still be found through search or the archive list.
Use this tool when you need to:
Remove outdated or inactive documents from view
Clean up collections while preserving document history
Preserve documents that are no longer relevant
Temporarily hide documents without deleting them
Args: document_id: The document ID to archive
Returns: Result message confirming archival
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains key behavioral traits beyond annotations: documents are removed from collections but remain searchable and can be found via search or the archive list. This adds significant context to the destructiveHint annotation, and there is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary, an important note in bold, bullet points for usage, and a separate Args section. It is concise with no wasted words, fitting the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no nested objects), the description covers all necessary aspects: purpose, behavior, usage guidelines, parameters, and return value. The presence of an output schema (not shown) further supports completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (document_id), and the description provides a brief yet meaningful explanation ('The document ID to archive'). Given 0% schema coverage, this description compensates adequately, though it could include a format or example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource combination ('Archives a document') and clearly distinguishes it from siblings like delete_document by emphasizing preservation and the fact that documents remain searchable but are removed from active use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists explicit use cases (e.g., removing outdated documents, cleaning up collections) and implies when not to use it (e.g., if deletion or permanent removal is intended). It does not explicitly name alternative tools, but the context from siblings is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_ai_about_documentsARead-only
Queries document content using natural language questions.
Use this tool when you need to:
Find specific information across multiple documents
Get direct answers to questions about document content
Extract insights from your knowledge base
Answer questions like "What is our vacation policy?"
Answer "How do we onboard new clients?" and similar queries
Args: question: The natural language question to ask collection_id: Optional collection to limit the search to document_id: Optional document to limit the search to
Returns: AI-generated answer based on document content with sources
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| collection_id | No | ||
| document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that the tool provides AI-generated answers with sources, consistent with a read-only information retrieval operation. It does not discuss potential limitations like latency or hallucination, but annotations cover the behavioral traits adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief purpose statement, bullet-pointed use cases, an Args section, and a Returns note. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple query interface with optional filters, output schema present), the description covers purpose, use cases, parameters, and return format. It is complete for an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage (property descriptions missing in schema), the tool description includes a dedicated 'Args' section that explains each parameter: question as the natural language query, collection_id and document_id as optional filters. This adds clear meaning beyond the schema's type and required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries document content using natural language questions, with specific examples (e.g., 'What is our vacation policy?'). This distinguishes it from sibling tools focused on CRUD, archiving, or keyword search, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists situations to use the tool (e.g., find specific information across documents, get direct answers). However, it does not mention when not to use it or provide explicit alternatives, though sibling tools like search_documents or read_document serve different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_archive_documentsADestructiveIdempotent
Archives multiple documents in a single batch operation.
This tool processes each document sequentially, continuing even if individual operations fail. Rate limiting is handled automatically by the Outline client.
IMPORTANT: Archived documents are removed from collections but remain searchable. They won't appear in normal collection views but can still be found through search or the archive list.
Use this tool when you need to:
Archive multiple outdated documents at once
Clean up collections in bulk
Batch hide documents without deleting them
Recommended batch size: 10-50 documents per operation
Args: document_ids: List of document IDs to archive
Returns: Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| document_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses sequential processing, continues on failure, automatic rate limiting, and the effect on documents (removed from collections but remain searchable). Annotations (destructiveHint: true, idempotentHint: true) are consistent and description adds significant behavioral context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with short paragraphs, bullet points, and clear sections. Every sentence adds value; no fluff. Front-loaded with purpose and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple operation (1 param, basic archiving), the description fully covers purpose, behavior, usage, and return type. Output schema exists to detail return values. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (document_ids). Schema description coverage is 0%, but description repeats 'List of document IDs to archive' which adds little beyond the schema. No details on format, limits, or constraints for the array items.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it archives multiple documents in a batch, distinguishing from siblings like archive_document (single) and batch_delete_documents (deletion vs archive). Specific verb+resource: 'batch archive documents'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (archive multiple outdated docs, clean collections, batch hide) and a recommended batch size. Lacks explicit when-not-to-use or alternative tools, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_create_documentsADestructiveIdempotent
Creates multiple documents in a single batch operation.
This tool processes each creation sequentially, continuing even if individual operations fail. Rate limiting is handled automatically.
Each document dictionary should contain:
title (required): Document title
collection_id (required): Collection ID to create in
text (optional): Markdown content
parent_document_id (optional): Parent document for nesting
publish (optional): Whether to publish immediately (default: True)
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, each containing title, collection_id, and optional text, parent_document_id, and publish fields
Returns: Summary of batch operation with created document IDs and success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| documents | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses sequential processing with continuation on failure and automatic rate limiting. Annotations indicate destructiveHint and idempotentHint; description adds operational details without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, behavior, parameter details, usage scenarios. Slightly verbose but each sentence adds value. Could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all critical aspects: purpose, parameters, behavior, usage, and a rendering note. Although no output schema is provided, the description mentions a summary with IDs and success/failure, which is sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates by detailing all expected fields (title, collection_id, text, parent_document_id, publish) and their required/optional status, providing essential guidance beyond the open-ended schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates multiple documents in a single batch operation. It distinguishes from single document creation and other batch operations by specifying bulk creation, but does not explicitly contrast with sibling batch tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases: creating multiple documents, bulk import, setting up structures. Includes a notable tip about Mermaid code fences. Does not explicitly exclude single-document use, but implication is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_delete_documentsADestructiveIdempotent
Deletes multiple documents, moving them to trash or permanently.
This tool processes each document sequentially, continuing even if individual operations fail. Rate limiting is handled automatically.
IMPORTANT: When permanent=False (the default), documents are moved to trash and retained for 30 days. Setting permanent=True bypasses trash and immediately deletes documents without recovery option.
Use this tool when you need to:
Remove multiple unwanted documents at once
Clean up workspace in bulk
Permanently delete sensitive information (with permanent=True)
Recommended batch size: 10-50 documents per operation
Args: document_ids: List of document IDs to delete permanent: If True, permanently deletes without recovery option
Returns: Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| document_ids | Yes | ||
| permanent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explains sequential processing, continuation on failure, automatic rate limiting, and the behavior of permanent=false (trash, 30-day retention) vs. permanent=true (immediate deletion). Annotations confirm destructiveHint=true and idempotentHint=true, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, bold note, bullet points, and parameter descriptions. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: purpose, usage, behavior, parameters, and return value. Output schema is referenced (summary of operation), and the description is adequate for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description fully explains both parameters: document_ids as list of IDs, permanent as toggle for full deletion. This adds meaning beyond the schema's minimal metadata.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it deletes multiple documents with options for trash or permanent deletion. It distinguishes from siblings like delete_document (single) and archive_document by specifying batch operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (bulk removal, workspace cleanup, permanent delete of sensitive data) and a recommended batch size. Implicitly differentiates from single-document operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_move_documentsADestructiveIdempotent
Moves multiple documents to a different collection or parent.
This tool processes each document sequentially, continuing even if individual operations fail. Rate limiting is handled automatically.
IMPORTANT: When moving documents that have child documents, all children will move along with them, maintaining hierarchical structure. You must specify either collection_id or parent_document_id (or both).
Use this tool when you need to:
Reorganize multiple documents at once
Move documents between collections in bulk
Restructure document hierarchies efficiently
Recommended batch size: 10-50 documents per operation
Args: document_ids: List of document IDs to move collection_id: Target collection ID (optional) parent_document_id: Target parent document ID (optional)
Returns: Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| document_ids | Yes | ||
| collection_id | No | ||
| parent_document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses sequential processing, error continuation, automatic rate limiting, and child document movement. Annotations (destructiveHint=true, idempotentHint=true) are not contradicted; description adds valuable behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, use cases, and parameter list. Concise yet comprehensive; every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers purpose, usage, behavior, parameters, and return type (summary with success/failure). With output schema present, return value is adequately described. No gaps given tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions in schema); description compensates fully by explaining each parameter, noting optionality of collection_id and parent_document_id, and stating requirement to specify at least one of them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it moves multiple documents to a different collection or parent, with specific verb 'Moves' and resource 'documents'. Distinguishes from siblings like 'move_document' (single) and batch tools for different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases (reorganize, move between collections, restructure hierarchies) and suggests batch size (10-50). Does not explicitly exclude single moves, but the sibling 'move_document' implies alternative. Lacks explicit 'when not to use' but still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_documentsADestructiveIdempotent
Updates multiple documents with different changes.
This tool processes each update sequentially, continuing even if individual operations fail. Rate limiting is handled automatically.
Each update dictionary should contain:
id (required): Document ID to update
title (optional): New title
text (optional): New content
append (optional): If True, appends text instead of replacing
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, each containing id and optional title, text, and append fields
Returns: Summary of batch operation with success/failure details
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutating, destructive, and idempotent behavior. The description adds that processing is sequential, continues on individual failures, and handles rate limiting. This gives the agent a clear behavioral model beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a headline, bullet points for usage, a note, batch size recommendation, and parameter listing. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch operation with partial failures), the description covers failure handling, rate limiting, batch size, parameter semantics, and usage patterns. The presence of an output schema means return values don't need further explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% parameter description coverage, but the description details each field in the update dictionary (id, title, text, append) with required/optional flags and meaning. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Updates multiple documents with different changes,' which is a specific action on a specific resource. It distinguishes from sibling tools like update_document (single) and batch_archive_documents (different operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage scenarios are listed ('Use this tool when you need to...') with bullet points covering common cases. It also provides a recommended batch size. Missing explicit alternatives like 'use update_document for single updates,' but still strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionA
Creates a new collection for organizing documents.
Use this tool when you need to:
Create a new section or category for documents
Set up a workspace for a new project or team
Organize content by department or topic
Establish a separate space for related documents
Args: name: Name for the collection description: Optional description of the collection's purpose color: Optional hex color code for visual identification (e.g. #FF0000)
Returns: Result message with the new collection ID
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| color | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, so the description adds that it returns a result with a new collection ID. However, it does not discuss side effects, authentication needs, or constraints like name uniqueness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and sections, but could be slightly more concise. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the create tool, the description adequately covers purpose, parameters, and return value. It does not mention error scenarios or prerequisites, but the presence of an output schema reduces the need for that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description's Args section explains each parameter with meaningful context (e.g., color is a hex code for visual identification).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a collection for organizing documents, with specific use cases listed. It distinguishes from sibling tools like delete_collection and list_collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists when to use the tool (e.g., create a new section, set up a workspace), but does not explicitly state when not to use it or mention alternatives.
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
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 the document in text: Optional markdown content for the document parent_document_id: Optional parent document ID for nesting publish: Whether to publish the document immediately (True) or save as draft (False)
Returns: Result message with the new document ID
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| collection_id | Yes | ||
| text | No | ||
| parent_document_id | No | ||
| publish | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false) and non-idempotency (idempotentHint=false). The description adds value by detailing the publish parameter behavior (publish vs draft) and a rendering note about Mermaid code fences. It also mentions the return format (result message with new document ID).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise. It starts with a clear statement, uses bullet points for use cases and parameters, and includes a specific note on Mermaid. The use case list is somewhat redundant with the purpose, but overall structure is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 0% schema coverage and presence of annotations and output schema, the description covers tool purpose, parameters, and return value adequately. It lacks details on constraints (e.g., title uniqueness) or error conditions, but is sufficient for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully explains all five parameters: title, collection_id, text (optional markdown), parent_document_id (optional for nesting), and publish (True=publish, False=draft). This compensates completely for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Creates a new document in a specified collection' and lists specific use cases (add new content, create documentation, add child document), clearly distinguishing it from sibling tools like update_document or archive_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a 'Use this tool when you need to' list that covers typical creation scenarios (add to knowledge base, create docs, nest under parent). It does not explicitly state when not to use it, but the context and sibling names imply alternatives for updating or deleting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionADestructiveIdempotent
Permanently removes a collection and all its documents.
Use this tool when you need to:
Remove an entire section of content
Delete obsolete project collections
Remove collections that are no longer needed
Clean up workspace organization
WARNING: This action cannot be undone and will delete all documents within the collection.
Args: collection_id: The collection ID to delete
Returns: Result message confirming deletion
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and idempotentHint=true. The description adds that the action is permanent, cannot be undone, and deletes all documents, providing necessary behavioral context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with bullet points for use cases and a clear warning. Every sentence adds value, and it is front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter tool with output schema, the description covers purpose, usage, warning, parameter, and return. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter collection_id is explained in the description as 'The collection ID to delete,' adding meaning despite 0% schema coverage. The parameter's purpose is clear from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Permanently removes a collection and all its documents,' using a specific verb-resource pair. It distinguishes from sibling tools like delete_document and create_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases (remove section, delete obsolete, clean up) and a warning about irreversibility. It does not explicitly exclude alternatives or compare with batch_delete_documents, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentADestructiveIdempotent
Moves a document to trash or permanently deletes it.
IMPORTANT: When permanent=False (the default), documents are moved to trash and retained for 30 days before being permanently deleted. During this period, they can be restored using the restore_document tool. Setting permanent=True bypasses the trash and immediately deletes the document without any recovery option.
Use this tool when you need to:
Remove unwanted or unnecessary documents
Delete obsolete content
Clean up workspace by removing documents
Permanently remove sensitive information (with permanent=True)
Args: document_id: The document ID to delete permanent: If True, permanently deletes the document without recovery option
Returns: Result message confirming deletion
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| permanent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: describes default behavior (trash with 30-day retention), permanent deletion option, and recovery via restore_document. No contradictions with annotations (destructiveHint=true, readOnlyHint=false, idempotentHint=true).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections for purpose, usage, args, and returns. Front-loaded with main action. Slightly verbose but clear; could be tightened without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, return value, and behavioral notes. Mentions interaction with restore_document. Could benefit from differentiation from sibling tools like archive_document or batch_delete_documents, but is adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description includes an 'Args' section that explains both parameters (document_id and permanent) in detail, adding meaning beyond the schema's type and title. Includes default value for permanent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Moves a document to trash or permanently deletes it', specifying the verb and resource. It distinguishes from sibling tools like archive_document and batch_delete_documents by detailing the deletion behavior (trash vs permanent).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases such as removing unwanted documents, deleting obsolete content, and cleaning up workspace. Mentions restore_document for recovery. However, lacks explicit exclusions or alternatives among siblings (e.g., when to use archive_document instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_all_collectionsARead-onlyIdempotent
Exports the entire workspace content to a downloadable file.
IMPORTANT: This tool starts an asynchronous export operation which may take time to complete, especially for large workspaces. The function returns information about the operation, including its status. When the operation is complete, the file can be downloaded or accessed via Outline's UI. The export includes all collections, documents, and their hierarchies in the specified format.
Use this tool when you need to:
Create a complete backup of all workspace content
Migrate content to another system
Archive all workspace documents
Get a comprehensive export of knowledge base
Args: format: Export format ("outline-markdown", "json", or "html")
Returns: Information about the export operation and how to access the file
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | outline-markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), the description details that the tool starts an asynchronous operation, may take time, returns operation info, and file access via UI. This adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first sentence, a block on async behavior, use cases, and args. Slightly verbose but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (async export), the description covers key aspects: purpose, format, async behavior, and access. It's complete enough for an agent to understand and use the tool, though more detail on status checking could be added.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'format' has no schema description (0% coverage), but the description lists allowed values ('outline-markdown', 'json', 'html') and explains its purpose, fully compensating for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Exports the entire workspace content to a downloadable file,' clearly identifying the verb (exports) and resource (entire workspace). It distinguishes from sibling tools like export_collection and export_document, which export single collections or documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists concrete use cases (create backup, migrate, archive, comprehensive export), giving clear context. It implicitly distinguishes from single-export tools but does not explicitly 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.
export_collectionARead-onlyIdempotent
Exports all documents in a collection to a downloadable file.
IMPORTANT: This tool starts an asynchronous export operation which may take time to complete. The function returns information about the operation, including its status. When the operation is complete, the file can be downloaded or accessed via Outline's UI. The export preserves the document hierarchy and includes all document content and structure in the specified format.
Use this tool when you need to:
Create a backup of collection content
Share collection content outside of Outline
Convert collection content to other formats
Archive collection content for offline use
Args: collection_id: The collection ID to export format: Export format ("outline-markdown", "json", or "html")
Returns: Information about the export operation and how to access the file
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | ||
| format | No | outline-markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by describing the async operation and file access method; annotations already declare readOnlyHint, destructiveHint, idempotentHint, and description aligns with those.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured, concise, front-loaded, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers async behavior, file access, and purpose; slightly vague about how to use the returned operation info, but adequate given presence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description only briefly mentions parameters without adding meaning (e.g., does not list format options). Fails to compensate for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Exports all documents in a collection to a downloadable file,' distinguishing from siblings like export_document and export_all_collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists specific use cases (backup, share, convert, archive) and mentions asynchronous nature, but does not explicitly exclude use of alternatives or provide 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.
export_documentARead-onlyIdempotent
Exports a document as plain markdown text.
Use this tool when you need to:
Get clean markdown content without formatting
Extract document content for external use
Process document content in another application
Share document content outside Outline
Args: document_id: The document ID to export
Returns: Document content in markdown format without additional formatting
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. Description adds that the output is 'markdown format without additional formatting', which is useful beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with clear sections (purpose, usage bullets, Args, Returns). Front-loads the main verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 param, no nested objects, output schema present), the description fully covers what the tool does and returns. The Returns section explains output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's Args section clearly explains 'The document ID to export', adding meaning beyond the schema's title and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Exports' and resource 'document as plain markdown text', clearly distinguishing it from siblings like read_document (which likely returns formatted content) and other export tools (export_collection, export_all_collections).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use the tool (e.g., 'Get clean markdown content without formatting'). While it doesn't mention when not to use it or alternatives, the use cases are clear and help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collection_structureARead-onlyIdempotent
Retrieves the hierarchical document structure of a collection.
Use this tool when you need to:
Understand how documents are organized in a collection
Find document IDs within a specific collection
See the parent-child relationships between documents
Get an overview of a collection's content structure
Args: collection_id: The collection ID to examine
Returns: Formatted string showing the hierarchical structure of documents
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. Description adds that it returns a formatted string showing hierarchical structure, providing context beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points and sections, concise yet informative. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description adequately covers the retrieval purpose and return format. No major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds 'The collection ID to examine' for the single parameter collection_id, which provides meaning beyond the schema title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it retrieves the hierarchical document structure of a collection, with specific use cases. It clearly distinguishes from sibling tools like list_collections or read_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly lists four scenarios for using the tool. However, it does not mention when not to use it or provide alternative tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentARead-onlyIdempotent
Retrieves a specific comment by its ID.
Use this tool when you need to:
View details of a specific comment
Reference or quote a particular comment
Check comment content and metadata
Find a comment mentioned elsewhere
Args: comment_id: The comment ID to retrieve include_anchor_text: Whether to include the document text that the comment refers to
Returns: Formatted string with the comment content and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| include_anchor_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, confirming no side effects. The description adds value by stating the return format ('Formatted string with the comment content and metadata') and explaining the effect of the 'include_anchor_text' parameter. It provides behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct at ~10 lines, with a clear structure: opening verb statement, bulleted use cases, 'Args' section, and 'Returns' note. Every sentence serves a purpose, and key information is front-loaded. There is no redundancy or waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single resource retrieval), the description covers all necessary aspects: purpose, parameter explanations, return format, and common use cases. It is complete for the complexity level, and the presence of an output schema reduces the need for extensive return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (coverage 0%), so the description fully carries the burden of explaining parameters. It provides clear explanations: 'comment_id: The comment ID to retrieve' and 'include_anchor_text: Whether to include the document text that the comment refers to'. While straightforward, this adds essential meaning and earns a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Retrieves a specific comment by its ID,' which is a specific verb+resource combination. It lists distinct use cases (view details, reference, quote, check content, find a comment) that clearly differentiate it from sibling tools like 'list_document_comments' (lists all) and 'add_comment' (creates). The purpose is unambiguous and scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (e.g., to view details, reference a comment, check content, find a comment mentioned elsewhere). It provides clear context but does not explicitly exclude alternatives or contrast with siblings. The usage cases are well-defined, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_backlinksARead-onlyIdempotent
Finds all documents that link to a specific document.
Use this tool when you need to:
Discover references to a document across the workspace
Identify dependencies between documents
Find documents related to a specific document
Understand document relationships and connections
Args: document_id: The document ID to find backlinks for
Returns: Formatted string listing all documents that link to the specified document
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds that it returns a formatted string and details the argument. It is consistent with annotations and provides additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, use-case list, and sections for args and returns. It is concise, though the bullet list could be slightly trimmed without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with output schema indicated, the description provides a reasonable overview. It specifies the return type (formatted string) but lacks details on the format or any edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description for the parameter 'document_id' merely restates 'The document ID to find backlinks for,' adding little beyond the schema's title. With 0% schema description coverage, the description fails to compensate with format, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Finds all documents that link to a specific document.' It uses a specific verb and resource, and distinguishes it from sibling tools by focusing on backlinks as a unique relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a bullet list of use cases (discover references, identify dependencies, find related documents), but does not explicitly contrast with alternatives like search_documents or specify when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_id_from_titleARead-onlyIdempotent
Locates a document ID by searching for its title.
IMPORTANT: This tool first checks for exact title matches (case-insensitive). If none are found, it returns the best partial match instead. This is useful when you're not sure of the exact title but need to reference a document in other operations. Results are more accurate when you provide more of the actual title in your query.
Use this tool when you need to:
Find a document's ID when you only know its title
Get the document ID for use in other operations
Verify if a document with a specific title exists
Find the best matching document if exact title is unknown
Args: query: Title to search for (can be exact or partial) collection_id: Optional collection to limit the search to
Returns: Document ID if found, or best match information
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| collection_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable behavioral details: case-insensitive exact match first, then best partial match fallback, and accuracy improving with more title input. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, an important note, and a bulleted list of use cases. It is not overly long, but the IMPORTANT section could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, output schema present), the description covers the main behavior, return value, and use cases effectively. The mention of 'best match information' in returns is adequate without duplicating the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It briefly explains both parameters: 'query: Title to search for (can be exact or partial)' and 'collection_id: Optional collection to limit search.' This adds basic meaning but lacks detail on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Locates a document ID by searching for its title.' It also explains the matching behavior (exact then partial), which distinguishes it from sibling search tools like 'search_documents' or 'read_document'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists four use cases for when to use the tool, such as finding an ID when only the title is known or verifying existence. It lacks explicit 'when not to use' guidance but provides clear context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archived_documentsARead-onlyIdempotent
Displays all documents that have been archived.
Use this tool when you need to:
Find specific archived documents
Review what documents have been archived
Identify documents for possible unarchiving
Check archive status of workspace content
Returns: Formatted string containing list of archived documents
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, destructiveHint, idempotentHint. The description adds that it returns a formatted string, which is minimal additional context. With annotations present, a baseline score of 3 is appropriate as the description does not deeply elaborate on behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well-structured: a clear opening sentence, bullet list of use cases, and a line about the return value. No extraneous content; each part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema present), the description adequately covers what the tool does and returns. It could specify if the list is limited to the current workspace or user, but the scope is implied. With an output schema, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not add parameter details. According to guidelines, baseline for 0 params is 4. The description's mention of return format adds nominal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Displays all documents that have been archived.' and enumerates specific use cases, making the tool's purpose unambiguous. It distinguishes itself from sibling tools like list_trash and list_collections by focusing on archived documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists explicit use cases (find, review, identify for unarchiving, check status), providing clear context for when to use the tool. However, it does not contrast with alternatives or provide when-not-to-use guidance, preventing a top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsARead-onlyIdempotent
Retrieves and displays all available collections in the workspace.
Use this tool when you need to:
See what collections exist in the workspace
Get collection IDs for other operations
Explore the organization of the knowledge base
Find a specific collection by name
Returns: Formatted string containing collection names, IDs, and descriptions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's safety profile is clear. The description adds value by specifying the return format (formatted string with names, IDs, descriptions), which is useful beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear one-line purpose, a bullet list of use cases, and a return format note. Every sentence serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only), the description completely covers what the tool does, when to use it, and what it returns. The output format is described, and with the output schema present, no further details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the input schema provides no additional details. The description correctly omits parameter explanations, aligning with the baseline score of 4 for zero-parameter tools. The description does not need to add meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves and displays all available collections, with a specific verb and resource. It distinguishes itself from sibling tools that modify collections (e.g., create_collection, delete_collection) by focusing on listing, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases (e.g., see collections, get IDs, explore organization, find by name) which guide when to use it. It does not directly mention when not to use it or compare with alternatives, but given the context of read-only operation, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_commentsARead-onlyIdempotent
Retrieves comments on a specific document with pagination support.
IMPORTANT: By default, this returns up to 25 comments at a time. If there are more than 25 comments on the document, you'll need to make multiple calls with different offset values to get all comments. The response will indicate if there are more comments available.
Use this tool when you need to:
Review feedback and discussions on a document
See all comments from different users
Find specific comments or questions
Track collaboration and input on documents
Args: document_id: The document ID to get comments from include_anchor_text: Whether to include the document text that comments refer to limit: Maximum number of comments to return (default: 25) offset: Number of comments to skip for pagination (default: 0)
Returns: Formatted string containing comments with author, date, and optional anchor text
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| include_anchor_text | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and idempotentHint. The description adds value by explaining pagination behavior (default 25, need multiple calls for more, response indicates availability). No contradictions, and it supplements the annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, important note, use cases, args, returns). It is not overly long, though some repetition exists (e.g., 'Retrieves comments' and bullet points).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (1 required), no enums, and presence of output schema, the description covers parameter details, output format, and pagination. It does not address error handling or rate limits, but overall sufficient for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries full burden. It explicitly lists and describes all four parameters (document_id, include_anchor_text, limit, offset) with defaults, adding meaning beyond the schema. Lacks constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieves' and resource 'comments on a specific document', and highlights pagination support. This distinguishes it from siblings like 'get_comment' (single comment) and 'add_comment' (write).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases (review feedback, see all comments, etc.) and provides an important pagination note. However, it lacks explicit guidance on when not to use this tool (e.g., for a single comment, use get_comment).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_trashARead-onlyIdempotent
Displays all documents currently in the trash.
Use this tool when you need to:
Find deleted documents that can be restored
Review what documents are pending permanent deletion
Identify documents to restore from trash
Verify if specific documents were deleted
Returns: Formatted string containing list of documents in trash
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds that it returns a formatted string, complementing annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured with bullet points for use cases and a clear return statement. No unnecessary info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a no-param tool with annotations and output schema. Covers purpose, usage, and return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage 100%. Baseline 4 is appropriate as description adds no parameter details needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Displays all documents currently in the trash' with specific verb and resource, and distinguishes from sibling tools like list_archived_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases (find deleted documents, review pending deletion, identify to restore, verify deletions). No exclusion of alternatives, but context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_documentADestructive
Relocates a document to a different collection or parent document.
IMPORTANT: When moving a document that has child documents (nested documents), all child documents will move along with it, maintaining their hierarchical structure. You must specify either collection_id or parent_document_id (or both).
Use this tool when you need to:
Reorganize your document hierarchy
Move a document to a more relevant collection
Change a document's parent document
Restructure content organization
Args: document_id: The document ID to move collection_id: Target collection ID (if moving between collections) parent_document_id: Optional parent document ID (for nesting)
Returns: Result message confirming the move operation
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| collection_id | No | ||
| parent_document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and description adds that moving a document with children moves them all, which is critical behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and bullet points. Front-loaded with purpose. The Args section slightly redundant with schema but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key behavior (child documents) and basic return value. Given annotations and output schema (existence noted), the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains each parameter's role and the constraint that at least one of collection_id or parent_document_id must be provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool relocates a document to a different collection or parent document. It uses specific verbs and distinguishes from siblings like batch_move_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (reorganize hierarchy, move to collection, change parent) and includes an IMPORTANT note about child documents. Lacks explicit '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.
read_documentARead-onlyIdempotent
Retrieves and displays the full content of a document.
Use this tool when you need to:
Access the complete content of a specific document
Review document information in detail
Quote or reference document content
Analyze document contents
Args: document_id: The document ID to retrieve
Returns: Formatted string containing the document title and content
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to reiterate safety. It adds context by specifying the return format ('Formatted string containing the document title and content'), but does not detail potential error behavior or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a main statement, bulleted use cases, and separate Args/Returns sections. It is concise (about 80 words) and every sentence adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one parameter), complete annotations, and presence of an output schema, the description covers purpose, usage, parameter explanation, and return format. Minor omissions like error handling do not significantly detract from completeness for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description's 'Args' section adds meaningful context: 'document_id: The document ID to retrieve'. This explains the parameter's purpose beyond the schema's type/required, compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieves and displays' and the resource 'full content of a document'. It distinguishes itself from sibling tools like create_document or delete_document by focusing on read-only access to full content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists four use cases ('Access the complete content...', 'Review document information...', etc.), providing clear guidance on when to use the tool. However, it does not mention when not to use it or contrast with similar read tools like search_documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_documentAIdempotent
Recovers a document from the trash back to active status.
Use this tool when you need to:
Retrieve accidentally deleted documents
Restore documents from trash to active use
Recover documents deleted within the last 30 days
Access content that was previously trashed
Args: document_id: The document ID to restore
Returns: Result message confirming restoration
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true, and the description adds context about restoring from trash within the last 30 days and accessing previously trashed content. No contradictions, and adds non-obvious details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear overview and bullet points for use cases. Each sentence adds value, no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with straightforward functionality, the description covers purpose, usage guidance, return value (via output schema), and behavioral constraints. It is complete for the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has one parameter with no description. The description simply restates it as 'The document ID to restore'. With 0% schema coverage, this adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Recovers a document from the trash back to active status') and specifies the resource (document). It is distinct from siblings like 'delete_document', 'archive_document', and 'unarchive_document'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists use cases (retrieve accidentally deleted, restore from trash, etc.), providing clear context. It does not explicitly state when not to use it, but the purpose is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentsARead-onlyIdempotent
Searches for documents using keywords or phrases across your knowledge base.
IMPORTANT: The search performs full-text search across all document content and titles. Results are ranked by relevance, with exact matches and title matches typically ranked higher. The search will return snippets of content (context) where the search terms appear in the document. You can limit the search to a specific collection by providing the collection_id.
PAGINATION: By default, returns up to 25 results at a time. If more results exist, use the 'offset' parameter to fetch additional pages. For example, use offset=25 to get results 26-50, offset=50 for 51-75, etc.
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)
Returns: Formatted string containing search results with document titles, contexts, and pagination information
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| collection_id | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds full-text search behavior, relevance ranking, snippet inclusion, and pagination. Annotations already indicate read-only and idempotent, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections (IMPORTANT, PAGINATION, Use when, Args, Returns). No wasted sentences; every line adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers pagination, snippets, ranking, and return format. Output schema exists but description enhances understanding. Complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0%, but description provides full parameter explanations (query terms, collection_id optional, limit default/max, offset default).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Searches for documents using keywords/phrases across knowledge base; verb 'searches' and resource 'documents' are specific. Distinguished from siblings (e.g., read_document, list_collections).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use scenarios listed (find terms, locate info, search within collection, browse results). Sibling tools are distinct, but no when-not-to is needed given clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_documentAIdempotent
Restores a previously archived document to active status.
Use this tool when you need to:
Restore archived documents to active use
Access or reference previously archived content
Make archived content visible in collections again
Update and reuse archived documents
Args: document_id: The document ID to unarchive
Returns: Result message confirming restoration
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds that it restores to active status and returns a confirmation, which is consistent and mildly informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, well-structured, and front-loaded with the main action. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of output schema (not shown), the description covers the essential usage, return value, and parameters. No additional information is necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains document_id as 'The document ID to unarchive,' which closely mirrors the schema's title. With only one simple parameter, the added value is minimal; schema coverage is 0% but the parameter is straightforward.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Restores a previously archived document to active status.' It lists specific use cases and implicitly distinguishes from siblings like archive_document and restore_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use this tool when you need to:' bullets provide clear context for when to use the tool. However, it does not explicitly state when not to use it or directly mention alternatives, though siblings are listed separately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_collectionADestructive
Modifies an existing collection's properties.
Use this tool when you need to:
Rename a collection
Update a collection's description
Change a collection's color coding
Refresh collection metadata
Args: collection_id: The collection ID to update name: Optional new name for the collection description: Optional new description color: Optional new hex color code (e.g. #FF0000)
Returns: Result message confirming update
| Name | Required | Description | Default |
|---|---|---|---|
| collection_id | Yes | ||
| name | No | ||
| description | No | ||
| color | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's 'modifies' adds little beyond that. It lists what properties can be changed but does not disclose side effects, permission needs, or behavior when optional fields are omitted (e.g., whether they remain unchanged). Slightly above minimal given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured: one opening sentence, bullet list of use cases, then Args with inline descriptions, and a Returns line. No redundant information. Every sentence adds value. Front-loaded with main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the return value description is sufficient. All parameters are explained, use cases are covered, and the tool's purpose is clear. However, it could mention prerequisites (e.g., collection must exist) or that other properties not listed remain unchanged. Still, comprehensive for a moderate-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. Args section adds meaningful context: 'name' is 'Optional new name', 'color' is 'Optional new hex color code (e.g. #FF0000)'. This substantially aids an agent in understanding parameter usage beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Modifies an existing collection's properties' with a specific verb and resource. Lists concrete use cases (rename, update description, change color coding, refresh metadata) that directly address the tool's function, distinguishing it from siblings like create_collection and delete_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit list of when to use (rename, update description, etc.) via a bulleted list. While it does not explicitly state when not to use or name alternatives, the use cases are clear and sufficient for an agent to decide. Lacks exclusionary guidance but still strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_documentADestructive
Modifies an existing document's title or content.
IMPORTANT: This tool replaces the document content rather than just adding to it. To update a document with changed data, you need to first read the document, add your changes to the content, and then send the complete document with your changes.
Use this tool when you need to:
Edit or update document content
Change a document's title
Append new content to an existing document
Fix errors or add information to documents
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 content) append: If True, adds text to the end of document instead of replacing
Returns: Result message confirming update
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| title | No | ||
| text | No | ||
| append | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it warns that content is replaced (not just appended) unless the append parameter is true, and includes a specific formatting note for Mermaid diagrams. Annotations already indicate destructiveHint=true, and the description reinforces this without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with a purpose sentence, important note, bullet points, and a formatted Args section. While slightly lengthy, each part adds value and is front-loaded with key behavior. Minor redundancy (e.g., 'append' in both usage and parameter description) but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, parameter semantics, and key behavioral traits. An output schema exists, so the brief mention of the return value is acceptable. However, it could be improved by noting typical error scenarios (e.g., invalid document_id) or confirming that the output object contains updated document fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden. It explains each parameter (document_id, title, text, append) with clear behavior (e.g., 'if None, keeps existing'). This adds meaning beyond the schema's type and default values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool modifies an existing document's title or content, and lists specific use cases (edit, change title, append). This distinguishes it from siblings like create_document (creates new) or read_document (read-only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use scenarios in bullet points and includes an important note about content replacement. However, it does not explicitly state when not to use this tool (e.g., for creating new documents) or compare to alternative sibling tools.
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.
30 tool updates
v0.1.0- First observed
add_comment - First observed
archive_document - First observed
ask_ai_about_documents - First observed
batch_archive_documents - First observed
batch_create_documents - First observed
batch_delete_documents - First observed
batch_move_documents - First observed
batch_update_documents - First observed
create_collection - First observed
create_document - First observed
delete_collection - First observed
delete_document - First observed
export_all_collections - First observed
export_collection - First observed
export_document - First observed
get_collection_structure - First observed
get_comment - First observed
get_document_backlinks - First observed
get_document_id_from_title - First observed
list_archived_documents - First observed
list_collections - First observed
list_document_comments - First observed
list_trash - First observed
move_document - First observed
read_document - First observed
restore_document - First observed
search_documents - First observed
unarchive_document - First observed
update_collection - First observed
update_document
TDQS
The tools cover distinct areas like documents, collections, comments, search, and batch operations, with clear boundaries. However, the presence of multiple batch tools and the overlap between archive/unarchive and delete/restore could cause slight confusion.
All tool names follow a consistent snake_case verb_noun pattern (e.g., add_comment, create_collection, search_documents). Even complex names like ask_ai_about_documents adhere to the pattern, ensuring predictability.
With 30 tools, the server covers a comprehensive range of operations for a knowledge base application. While slightly above the typical sweet spot, each tool serves a clear purpose and the count is justified by the feature set.
The tool set provides full CRUD for documents and collections, plus archiving, moving, commenting, searching, exporting, and batch operations. The inclusion of AI query and backlink detection adds advanced functionality, leaving no obvious gaps for document management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
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
Model Context Protocol server for todo.vu task management and time tracking.
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol server that enables AI assistants like Claude to interact with Outline document services, supporting document searching, reading, creation, editing, and comment management.38155MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables reading, writing, and searching documents in Outline via its API. It supports document management, full-text search, and collection organization using Markdown formatting.81817MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables AI agents to manage documents, collections, comments, and users in Outline through its API.559120MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to read, write, search, and organize Dynalist documents programmatically.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fastmcp-me/mcp-outline'
If you have feedback or need assistance with the MCP directory API, please join our Discord server