Outline MCP Server
This server acts as a bridge between an MCP client and an Outline knowledge base instance, allowing you to read, search, and manage documents and collections.
Get a document (
outline_get_document): Retrieve a specific document by its ID.Search documents (
outline_search_documents): Perform a full-text search across all documents, with a configurable result limit (up to 100).List documents (
outline_list_documents): List documents, optionally filtered by a specific collection ID, with a configurable result limit (up to 100).Create a document (
outline_create_document): Create a new document with a title and Markdown content, optionally assigning it to a collection, nesting it under a parent document, and publishing it immediately.Update a document (
outline_update_document): Update an existing document's title, Markdown content, or publication status.Delete a document (
outline_delete_document): Permanently delete a document by its ID.List collections (
outline_list_collections): Retrieve a list of all available collections.Get a collection (
outline_get_collection): Retrieve detailed information about a specific collection by its ID.
Provides tools for reading, searching, creating, updating, deleting documents, and managing collections in Outline, enabling AI agents to interact with a knowledge base or documentation wiki.
Click on "Deploy 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., "@Outline MCP Serversearch for documents about project setup"
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.
Outline MCP Server
Servidor Model Context Protocol para integrar Outline con clientes MCP. Permite que un asistente o agente compatible consulte, busque y gestione documentos de una instancia de Outline mediante su API.
Para Qué Sirve
Este servidor actúa como puente entre un cliente MCP y Outline. Una vez configurado, el cliente puede invocar herramientas para leer documentación interna, buscar contenido, crear notas, actualizar documentos y consultar colecciones.
Casos de uso típicos:
Consultar la base de conocimiento de Outline desde un asistente de IA.
Buscar documentación interna sin salir del cliente MCP.
Crear o actualizar documentos en Markdown desde flujos automatizados.
Usar Outline como memoria documental editable para agentes.
Related MCP server: Grist MCP Server
Características
Lectura de documentos por ID.
Búsqueda de texto en documentos de Outline.
Listado de documentos, con filtro opcional por colección.
Creación de documentos con contenido Markdown.
Actualización de título, contenido y estado de publicación.
Eliminación de documentos.
Listado de colecciones.
Consulta de información de una colección concreta.
Transporte MCP por
stdiopor defecto, ideal para clientes locales.Transporte Streamable HTTP opcional para despliegues remotos.
Modo solo lectura para ocultar herramientas de escritura.
Timeout HTTP y reintentos acotados ante errores temporales de Outline.
Validación de argumentos con esquemas Zod mediante el SDK MCP actual.
Requisitos
Node.js
>=18.Una instancia de Outline accesible por URL.
Un token de API de Outline con permisos suficientes para las operaciones que quieras usar.
Instalación Rápida Con npx
La forma más sencilla es configurarlo directamente en tu cliente MCP usando npx:
{
"mcpServers": {
"outline": {
"command": "npx",
"args": ["-y", "getoutline-mcp-server"],
"env": {
"OUTLINE_BASE_URL": "https://tu-instancia-outline.com",
"OUTLINE_API_KEY": "tu-token-de-api"
}
}
}
}Instalación Desde Código Fuente
npm install
npm run build
npm startPara desarrollo:
npm run devPara recompilar automáticamente mientras editas:
npm run watchConfiguración
El servidor lee la configuración desde variables de entorno:
OUTLINE_BASE_URL=https://tu-instancia-outline.com
OUTLINE_API_KEY=tu-token-de-api
OUTLINE_READ_ONLY=false
MCP_TRANSPORT=stdio
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3000
MCP_HTTP_PATH=/mcp
OUTLINE_MAX_RETRIES=2
OUTLINE_RETRY_BASE_DELAY_MS=100
# OUTLINE_HTTP_TIMEOUT_MS=10000Puedes tomar env.example como referencia.
Variables disponibles:
Variable | Default | Descripción |
| requerido | URL base de tu instancia de Outline. |
| requerido | Token de API de Outline. No se imprime en logs. |
|
| Si es |
|
| Transporte MCP: |
|
| Host de escucha para Streamable HTTP. Usa |
|
| Puerto HTTP cuando |
|
| Path HTTP del endpoint MCP. Debe empezar con |
|
| Reintentos máximos por endpoint para |
|
| Delay base para backoff acotado entre reintentos. |
| sin valor | Timeout opcional en milisegundos para Axios. |
Modo Solo Lectura
Con OUTLINE_READ_ONLY=true, el servidor no expone las herramientas de escritura en tools/list. Las herramientas ocultas son outline_create_document, outline_update_document y outline_delete_document.
Aunque actives este modo, usa también un token de Outline con permisos mínimos de lectura siempre que tu instancia lo permita.
Transporte Streamable HTTP
stdio sigue siendo el transporte por defecto y no requiere configurar variables HTTP. Para exponer el servidor por Streamable HTTP:
MCP_TRANSPORT=http
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3000
MCP_HTTP_PATH=/mcp
npm startEl endpoint queda disponible en http://127.0.0.1:3000/mcp con transporte Streamable HTTP del SDK MCP. Si necesitas exponerlo fuera de la máquina local, cambia MCP_HTTP_HOST, por ejemplo a 0.0.0.0, y protege el acceso desde la red o un proxy.
Este cambio no agrega autenticación propia al endpoint HTTP. En producción, publícalo solo detrás de una red confiable, VPN, reverse proxy con autenticación, reglas de firewall o controles equivalentes.
Timeout Y Reintentos
El cliente de Outline puede reintentar errores temporales: 429, 500, 502, 503, 504, ECONNRESET, ETIMEDOUT y ECONNABORTED. No reintenta errores permanentes como 400, 401 o 403.
Configura OUTLINE_MAX_RETRIES=0 para desactivar reintentos. Define OUTLINE_HTTP_TIMEOUT_MS solo si quieres imponer un timeout explícito a las llamadas HTTP hacia Outline.
Cómo Obtener El Token De Outline
Entra en tu instancia de Outline.
Abre
Settings.Ve a
API Tokens.Crea un token nuevo.
Usa ese valor como
OUTLINE_API_KEY.
Recomendación: crea un token con los permisos mínimos necesarios para tu caso de uso.
Configuración En Clientes MCP
Cliente Local Con npx
{
"mcpServers": {
"outline": {
"command": "npx",
"args": ["-y", "getoutline-mcp-server"],
"env": {
"OUTLINE_BASE_URL": "https://tu-instancia-outline.com",
"OUTLINE_API_KEY": "tu-token-de-api"
}
}
}
}Cliente Local Desde Este Repositorio
Primero compila el proyecto:
npm run buildLuego apunta el cliente al archivo compilado:
{
"mcpServers": {
"outline": {
"command": "node",
"args": ["/ruta/absoluta/outline-mcp-server/dist/index.js"],
"env": {
"OUTLINE_BASE_URL": "https://tu-instancia-outline.com",
"OUTLINE_API_KEY": "tu-token-de-api"
}
}
}
}En Windows, usa una ruta absoluta válida, por ejemplo:
"args": ["D:/work/outline-mcp-server/dist/index.js"]OpenCode
OpenCode usa una forma de configuración distinta a otros clientes MCP: el comando va como un array único y las variables del proceso van en environment, no en env.
Ejemplo para C:\Users\gbaso\.config\opencode\opencode.json:
{
"mcp": {
"outline": {
"type": "local",
"command": [
"node",
"D:/work/outline-mcp-server/dist/index.js"
],
"enabled": true,
"environment": {
"OUTLINE_BASE_URL": "https://tu-instancia-outline.com",
"OUTLINE_API_KEY": "tu-token-de-api"
}
}
}
}Si usas env en OpenCode, el servidor puede arrancar sin OUTLINE_BASE_URL y OUTLINE_API_KEY, fallar al inicio y aparecer en logs como server unavailable key=outline type=local status=failed.
Los logs de OpenCode en Windows están en:
C:\Users\gbaso\.local\share\opencode\log\opencode.logDespués de modificar opencode.json, reinicia OpenCode. La configuración de MCP se carga al inicio y no se recarga en caliente.
Herramientas Disponibles
outline_get_document
Obtiene un documento por ID.
Parámetros:
id: ID del documento.
Ejemplo:
{
"name": "outline_get_document",
"arguments": {
"id": "document-id"
}
}outline_search_documents
Busca documentos en Outline.
Parámetros:
query: texto de búsqueda.limit: número máximo de resultados. Por defecto25, máximo100.
Ejemplo:
{
"name": "outline_search_documents",
"arguments": {
"query": "documentación del proyecto",
"limit": 10
}
}outline_list_documents
Lista documentos, opcionalmente filtrados por colección.
Parámetros:
collectionId: ID opcional de la colección.limit: número máximo de resultados. Por defecto25, máximo100.
outline_create_document
Crea un documento con contenido Markdown.
Parámetros:
title: título del documento.text: contenido en Markdown.collectionId: ID opcional de la colección.parentDocumentId: ID opcional del documento padre.publish: si debe publicarse inmediatamente. Por defectofalse.
Ejemplo:
{
"name": "outline_create_document",
"arguments": {
"title": "Plan del proyecto",
"text": "# Plan\n\nContenido inicial del documento.",
"collectionId": "collection-id",
"publish": true
}
}outline_update_document
Actualiza un documento existente.
Parámetros:
id: ID del documento.title: nuevo título, opcional.text: nuevo contenido Markdown, opcional.publish: cambia el estado de publicación, opcional.
outline_delete_document
Elimina un documento por ID.
Parámetros:
id: ID del documento.
outline_list_collections
Lista todas las colecciones disponibles.
No requiere parámetros.
outline_get_collection
Obtiene información de una colección por ID.
Parámetros:
id: ID de la colección.
Desarrollo
Estructura principal:
src/
├── index.ts # Servidor MCP y registro de herramientas
└── outline-client.ts # Cliente HTTP para la API de OutlineScripts disponibles:
npm run build: compila TypeScript endist/.npm test: ejecuta la suite Vitest sin credenciales reales de Outline.npm run test:coverage: ejecuta tests con cobertura global mínima del 85%.npm start: ejecutadist/index.js.npm run dev: compila y ejecuta el servidor.npm run watch: recompila al detectar cambios.
Seguridad
No incluyas
OUTLINE_API_KEYen commits, logs ni documentación pública.Usa variables de entorno o el sistema de secretos de tu cliente MCP.
Evita tokens con permisos excesivos si el cliente solo necesita lectura.
Ten cuidado con herramientas de escritura o borrado: el servidor puede modificar tu instancia de Outline.
Si usas
MCP_TRANSPORT=http, protege el endpoint con controles externos; el servidor no implementa autenticación HTTP propia.
Limitaciones Actuales
No implementa rate limiting interno; si haces muchas llamadas, depende de los límites de Outline.
Las respuestas de Outline se devuelven como JSON de la API, con tipos TypeScript pragmáticos pero sin validación runtime exhaustiva de cada campo.
El transporte HTTP es stateless; no agrega sesiones persistentes ni autenticación propia.
Licencia
MIT. Consulta LICENSE para más detalles.
Available Tools
8 toolsoutline_create_documentCrear documento en OutlineC
Crea un documento en Outline con contenido Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Título del documento | |
| text | Yes | Contenido del documento en Markdown | |
| collectionId | No | ID opcional de la colección | |
| parentDocumentId | No | ID opcional del documento padre | |
| publish | No | Publica el documento inmediatamente |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description adds no behavioral context beyond the schema. It does not disclose authentication needs, side effects, or return behavior, which is critical for a tool with no output schema.
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 a single short sentence, making it concise, but it lacks structure and additional context that would justify a higher score.
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 lack of an output schema and no annotations, the description should provide more context about return values or post-creation behavior. It is incomplete for a creation 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 100% with descriptions for all 5 parameters. The tool description adds no additional parameter meaning, meeting the baseline expectation but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('creates'), resource ('document in Outline'), and content type ('Markdown'). It implicitly distinguishes from siblings like outline_update_document and outline_delete_document by specifying creation.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_delete_documentEliminar documento de OutlineB
Elimina un documento de Outline por ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID del documento a eliminar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and minimal description, the tool does not disclose behavioral traits such as whether deletion is permanent, requires confirmation, or impacts related resources. The description only states what it does, not its consequences.
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 a single, front-loaded sentence with no wasted words. However, it could be slightly expanded to include key behavior points without losing conciseness.
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 delete operation with one parameter and no output schema, the description is minimally adequate but lacks context on error handling, return values, or side effects. It suffices for basic use but leaves 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 100% (one parameter with description). The description adds marginal value by restating the parameter's purpose ('por ID'), but does not provide format details or constraints 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 action 'Elimina' (delete) and the resource 'documento de Outline', distinguishing it from sibling tools like outline_create_document or outline_update_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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or restrictions. The agent is left to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_get_collectionObtener colección de OutlineB
Obtiene información de una colección concreta de Outline.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de la colección a recuperar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'gets info' with no mention of side effects, auth needs, rate limits, or what information is returned. This is insufficient for a read operation.
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 very short and efficient, with no wasted words. It is appropriate for a simple retrieval tool, though slightly more detail could be added without losing conciseness.
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 tool is simple with one parameter and no output schema, but the description lacks information about the output format or any constraints. It is minimally complete but could be improved.
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 100%, and the parameter 'id' is already described in the input schema. The description does not add any meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool obtains information of a specific Outline collection, using the verb 'obtiene' and specifying 'colección concreta', which distinguishes it from list_collections and other sibling 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?
No explicit guidance on when to use this tool versus alternatives like outline_list_collections or outline_get_document. The purpose implies use for a specific collection, but no when-not or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_get_documentObtener documento de OutlineB
Obtiene un documento concreto de Outline por ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID del documento a recuperar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as idempotency, authentication requirements, or error conditions. The description is too minimal to inform the agent about side effects or constraints.
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 front-loaded with the key action and resource. One sentence suffices for a simple retrieval tool, though it lacks structural elements like usage notes or examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one param, no output schema, no nested objects), the description is minimally adequate. It could be improved by mentioning that it returns the full document object or by noting if the tool is read-only.
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 100% for the single parameter 'id', which has a clear description. The tool description adds little beyond restating that it retrieves by ID, so it meets the baseline without providing extra 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 the verb 'obtiene' (gets) and the resource 'documento concreto de Outline por ID' (specific document by ID), which effectively distinguishes it from sibling tools like outline_list_documents and outline_search_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. However, the name and context of sibling tools imply it is for retrieving a single document by its ID when the ID is known, which is a common pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_list_collectionsListar colecciones de OutlineA
Lista todas las colecciones disponibles en Outline.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states a read operation but fails to mention any behavioral traits such as authentication requirements, pagination, return format, or performance implications for large datasets.
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 a single concise sentence that is front-loaded with the action. It is appropriately sized for a zero-parameter tool, with 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 no output schema, the description should explain what is returned (e.g., list of collection names or metadata). It does not, leaving gaps about the response format. For a simple tool, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (empty schema), so baseline is 3. The description adds essential meaning by explaining the tool's effect (listing all collections), which is not captured in the empty schema. It provides value beyond the structured 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 provides a specific verb 'listar' (list) and resource 'colecciones' (collections), clearly indicating the tool's function. It effectively distinguishes from sibling tools that deal with 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 implies usage for listing all collections but offers no explicit guidance on when to use this tool versus alternatives like outline_get_collection or outline_list_documents. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_list_documentsListar documentos de OutlineC
Lista documentos de Outline, opcionalmente filtrados por colección.
| Name | Required | Description | Default |
|---|---|---|---|
| collectionId | No | ID opcional de la colección | |
| limit | No | Número máximo de resultados |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states basic filtering. It omits behavioral traits like pagination (implied by limit parameter), ordering, error handling, and whether it returns all documents or just metadata.
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 a single concise sentence with no wasted words. However, it could be restructured to front-load the key action and include critical usage hints without losing brevity.
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?
Lacks explanation of return values (no output schema), pagination behavior, and guidance relative to outline_search_documents. The description is too minimal for a tool with no output schema and several siblings.
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 100%, so the description adds no additional meaning beyond 'filtered by collection.' Baseline 3 is appropriate as the description does not clarify when to use each parameter or provide extra 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 the tool lists Outline documents with optional collection filtering. The verb 'list' distinguishes it from create, delete, update, and search siblings, though it doesn't explicitly contrast with outline_search_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like outline_search_documents, and no prerequisites or limitations mentioned. The description only states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_search_documentsBuscar documentos de OutlineA
Busca documentos en toda la instancia de Outline.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Texto de búsqueda | |
| limit | No | Número máximo de resultados |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits like idempotency, authentication needs, or that it is a read-only operation. The agent lacks critical safety information.
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 a single sentence conveying the core purpose. It is concise but could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema parameter coverage but no output schema or description of return value format, the description lacks completeness. Missing details like response structure (e.g., list of document IDs vs full documents) and pagination behavior.
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 100% with clear parameter descriptions ('search text', 'max results'). The tool description adds no extra parameter meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'search documents across the entire Outline instance', specifying verb (search), resource (documents), and scope (entire instance). This distinguishes it from sibling tools like get_document or list_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 verb 'search' implies use when needing to find documents by query. While not explicitly stating when-not or alternatives, it is clear enough for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outline_update_documentActualizar documento de OutlineB
Actualiza el título, contenido o estado de publicación de un documento de Outline.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID del documento a actualizar | |
| title | No | Nuevo título del documento | |
| text | No | Nuevo contenido del documento en Markdown | |
| publish | No | Publica el documento |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It states the tool updates title, content, or publication status, which is clear but lacks details on idempotency, side effects, or whether updates are partial. This is adequate but minimal.
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 a single concise sentence with no wasted words. It is front-loaded and efficient, though it could benefit from brief expansion.
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 no annotations and no output schema, the description provides basic purpose but lacks details on behavior (e.g., response, partial updates). It is complete enough for a simple update but could be improved for a mutation 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 100%, so the description adds no additional meaning beyond the parameter descriptions. The description lists the fields but does not enrich the semantics.
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 updates title, content, or publication status of an Outline document. It uses specific verbs and resources, and distinguishes from sibling tools like outline_create_document and outline_delete_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. It simply states what it does without usage context.
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.
8 tool updates
v1.0.0- First observed
outline_create_document - First observed
outline_delete_document - First observed
outline_get_collection - First observed
outline_get_document - First observed
outline_list_collections - First observed
outline_list_documents - First observed
outline_search_documents - First observed
outline_update_document
TDQS
Scored across 8 tools
Each tool targets a distinct resource (document or collection) and action (create, delete, get, list, search, update), with no overlap or ambiguity.
All tools follow a consistent 'outline_verb_noun' pattern using snake_case, making the naming predictable and easy to understand.
8 tools are well-scoped for an Outline knowledge base server, covering essential document operations and collection queries without unnecessary bloat.
Document CRUD and search are complete, but collection management is limited to get and list, missing create/update/delete for collections, which is a minor gap.
Maintenance
Related MCP Connectors
Your portable context layer — load it into any AI.
Personal context for every AI: search, read, and write back to your private Markdown library.
Intelligent context infrastructure for AI teams: knowledge graph, sessions, tasks, documents.
Ingest, manage, and retrieve documents for RAG-powered AI applications
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
- FlicenseAqualityDmaintenanceEnables interaction with Grist documents, workspaces, and records via the Model Context Protocol. It supports comprehensive operations including SQL querying, schema management, and record CRUD functionality.11583-
- FlicenseBqualityDmaintenanceEnables Claude Code to search and retrieve documents from an Outline knowledge base.2-
- AlicenseAqualityDmaintenanceA Model Context Protocol server for interacting with Outline document management, supporting search, read, create, edit, archive documents, collections, comments, and backlinks.30MIT