mcp-outline
Enables search, reading, creation, updating, moving, archiving, and optional deletion of Outline wiki documents and collections through the Outline API, including document tree browsing and markdown content management.
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., "@mcp-outlinesearch our wiki for onboarding docs"
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.
@fswap/mcp-outline
An MCP server for Outline that lets Claude Desktop, Claude Code, Cursor and other MCP clients search, read, create and update your wiki.
Runs locally over stdio. No install step — clients launch it with npx.
Quick start
Create an API token in Outline under Settings → API.
Run the interactive setup once:
npx -y @fswap/mcp-outline@latest setupIt asks for your Outline URL and token, verifies them against
auth.info, and stores them in your OS config directory (mode0600).Add the server to your client. Every value asked in
setupcan be skipped with Enter; anything you skip goes into theenvblock shown below instead.setup --printshows these snippets again at any time.Claude Desktop (
claude_desktop_config.json) and Cursor (~/.cursor/mcp.jsonor<project>/.cursor/mcp.json):{ "mcpServers": { "outline": { "command": "npx", "args": ["-y", "@fswap/mcp-outline@latest"] } } }Codex (
~/.codex/config.toml):[mcp_servers.outline] command = "npx" args = ["-y", "@fswap/mcp-outline@latest"]Claude Code:
claude mcp add outline -- npx -y @fswap/mcp-outline@latest
Without setup (environment variables)
Environment variables take precedence over the config file, so you can skip setup entirely (or skip individual values in it and set them here):
{
"mcpServers": {
"outline": {
"command": "npx",
"args": ["-y", "@fswap/mcp-outline@latest"],
"env": {
"OUTLINE_URL": "https://app.getoutline.com",
"OUTLINE_API_TOKEN": "ol_api_..."
}
}
}
}Codex equivalent:
[mcp_servers.outline]
command = "npx"
args = ["-y", "@fswap/mcp-outline@latest"]
[mcp_servers.outline.env]
OUTLINE_URL = "https://app.getoutline.com"
OUTLINE_API_TOKEN = "ol_api_..."Variable | Purpose |
| Outline base URL (cloud or self-hosted) |
| API token |
|
|
| Optional default collection name |
Related MCP server: mcp-outline
Tools
Tool | Outline endpoint | Notes |
|
| id, name, description, url |
|
| includes document tree |
|
| query, optional |
|
| full markdown body; accepts id or URL slug |
|
| filter by |
|
| title, markdown, collection, optional parent; published by default |
|
| title/text; |
|
| change collection and/or parent |
|
| reversible |
|
| only when delete is allowed (setup answer or |
API errors are returned to the model as isError results rather than crashing the server.
Development
TypeScript source in src/, bundled to dist/ with tsdown. Only dist/ is published.
npm install
npm run build # tsdown → dist/index.js
npm run lint # eslint (typescript-eslint)
npm run typecheck # tsc --noEmit
npm test # builds, then spawns the server and checks the tool list
npm run check # all of the above (also runs on prepublishOnly)
OUTLINE_URL=... OUTLINE_API_TOKEN=... npm run inspect # MCP Inspector UI against dist/Never write to stdout from server code — it is the protocol channel. Use console.error.
Reset
npx -y @fswap/mcp-outline@latest setup --resetLicense
MIT
Available Tools
9 toolsarchive_documentArchive documentA
Archive a document (reversible; it disappears from the collection but can be restored from the archive). Prefer this over delete_document.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses reversibility, the side effect of removal from the collection, and restorability from the archive. It does not mention permissions or whether archiving an already-archived document is idempotent, so it stops short of full disclosure.
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?
One sentence, zero filler, with the key semantic fact (reversible) surfaced immediately in parentheses and the routing advice last. Every clause 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?
For a one-parameter mutation tool with no annotations and no output schema, the description covers the essential behavior (reversible removal) and the sibling choice. Missing only peripheral details like permission requirements or the archive's subsequent retrieval path.
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 single 'id' parameter is documented in the schema, so the description need not explain it. It adds no format hints or constraints beyond the schema, which is the baseline-3 case.
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?
States a specific verb (Archive) and resource (document), and adds the semantic consequence: it disappears from the collection but is restorable. This distinguishes it from the update/delete family without needing a schema.
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 routes the agent: 'Prefer this over delete_document.' That is real when-to-use guidance. It loses a point because delete_document is not among the listed siblings and no when-not (e.g., when to genuinely delete instead) is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentCreate documentA
Create a new Outline document from markdown. Published by default; pass publish=false to save a draft. Requires a collectionId (use list_collections). Optionally nest under a parent document.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Document body in markdown | |
| title | Yes | Document title | |
| publish | No | Publish immediately (false = draft) | |
| collectionId | Yes | Collection to create the document in | |
| parentDocumentId | No | Nest under this document |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the highest-value traits: documents are published (public) by default, drafts are opt-in via publish=false, and collectionId is mandatory. It omits permission requirements, whether published posts are externally visible, and error behavior, which are meaningful gaps for a write tool without 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?
Three tight sentences, front-loaded with the core action, then defaults, then the required-parameter dependency and optional nesting. No filler and no restatement of the title.
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 5-parameter create tool with no output schema and no annotations, it covers the essentials an agent needs to invoke correctly: required inputs, default visibility, draft escape hatch, sourcing of collectionId, and nesting. It would be complete at 5 if it mentioned auth/permission prerequisites or that the new document's id is what subsequent update_document calls need.
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 already 100%, so the baseline is 3. The description adds genuine value beyond the schema by telling the agent where collectionId comes from ("use list_collections") and by surfacing the publish default as a decision point rather than a passive field default; the remaining field mentions repeat schema text.
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?
States a specific verb and resource ("Create a new Outline document from markdown") and immediately adds the two behavioral facts that matter most: default published state and the required collectionId. It is clearly the creation tool among the siblings, though it never explicitly contrasts itself with update_document/move_document, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete decision context: pass publish=false to save a draft, retrieve collectionId via list_collections, and optionally nest via parent. It names an alternative tool (list_collections) with the condition that selects it, but offers no guidance on when to prefer this over update_document or when creation would fail (e.g., missing permissions, duplicate names).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionGet collectionA
Get one Outline collection including its document tree (ids, titles and nesting). Useful to understand how a collection is organised before creating or moving documents.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so reasonably: 'Get' signals a non-mutating read, and it discloses the shape of the returned structure (ids, titles, nesting), compensating for the absent output schema. It omits permission requirements, error behavior, and whether large collections are paginated.
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?
Two sentences, zero filler, with the core action and payload shape front-loaded ahead of the usage hint. Every clause 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?
For a single-parameter read tool with no output schema, the description sufficiently covers what the tool returns (document tree) and when to reach for it. Minor gaps remain around permissions and pagination of the document tree, but nothing essential to invoking it correctly is missing.
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 there is only one parameter ('id', documented as 'Collection id'), so the schema already carries the semantics. The description adds no format hints or id-source guidance beyond what the schema provides, which is the baseline-3 case.
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?
States a specific verb and resource ('Get one Outline collection') and even previews the payload ('document tree (ids, titles and nesting)'), which lets an agent tell it apart from get_document. It does not explicitly distinguish itself from the sibling list_collections by name, so it falls just short of a 5.
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?
'Useful to understand how a collection is organised before creating or moving documents' gives a concrete when-to-use context and implicitly routes to create_document/move_document workflows. There is no when-not to use it or explicit mention of the read-only list alternative, so it stops at a clear-context 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentGet documentA
Fetch a single Outline document including its full markdown body. Accepts a document id, a urlId (the slug part of the URL) or a share id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id, urlId or share id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it does disclose that the full markdown body is returned, which is useful return-value context absent an output schema. However, it says nothing about permissions, error behavior for missing documents, or how share ids differ in access.
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?
Two short sentences, front-loaded with the action and return content, with zero filler. Every clause contributes 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?
For a single-parameter read tool with no output schema, the description covers what is fetched and the accepted identifier forms, which is sufficient to invoke it. Minor gaps around access requirements and not-found behavior are the only omissions.
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 there is only one parameter, so the baseline is 3. The description largely restates the schema's 'Document id, urlId or share id', adding only a brief gloss that urlId is the slug portion of the URL.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('a single Outline document') and clarifies it returns the full markdown body, which implicitly separates it from list_documents and search_documents. It does not, however, explicitly name or rule out any sibling tool, so differentiation remains inferential.
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 note that it accepts a document id, urlId or share id implies the tool is for retrieval when you already hold an identifier, but there is no explicit when-to-use guidance or statement of when to prefer search_documents/list_documents instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsList collectionsA
List Outline collections (top-level groupings of documents). Returns id, name, description and url. Use the id with search_documents, list_documents or create_document.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max collections to return | |
| query | No | Filter collections by name (substring match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the return fields (id, name, description, url), which substitutes for the missing output schema, but says nothing about pagination behavior, ordering, or the limit/query interaction that a listing tool needs.
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?
Three short sentences, zero filler, with the resource definition and the primary downstream use case front-loaded. Nothing needs to be trimmed.
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 no output schema, the description correctly compensates by naming the returned fields, and it explains the resource relationship to documents. It is slightly incomplete on listing mechanics (default limit, pagination), but an agent has what it needs to call 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?
Schema description coverage is 100%, so both parameters (limit, query) are already fully documented in the schema, including the substring-match semantics for query. The description adds no parameter detail beyond that, so the baseline of 3 applies.
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?
States a specific verb (List) and resource (Outline collections), and even defines the resource as 'top-level groupings of documents', which removes ambiguity against get_collection and the document-level siblings. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives downstream guidance ('Use the id with search_documents, list_documents or create_document'), which is workflow help rather than selection guidance. It never says when to prefer this over get_collection or the document listing tools, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsList documentsA
List documents, optionally filtered by collection and/or parent document. Returns id, title, url and timestamps (no bodies). Sorted by most recently updated by default.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | updatedAt | |
| limit | No | ||
| offset | No | ||
| direction | No | DESC | |
| collectionId | No | Only documents in this collection | |
| parentDocumentId | No | Only direct children of this document |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It usefully discloses the return shape (id, title, url, timestamps, no bodies) and the default sort, but says nothing about pagination behavior, total counts, permissions, or what happens when a collectionId/parentDocumentId matches nothing.
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?
Two tight sentences: the first gives scope and filters, the second gives the return shape and default ordering. Nothing is padded and the most decision-relevant information leads.
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 no output schema, the description correctly compensates by enumerating returned fields and excluding bodies. For a six-parameter read tool with no required args, this is nearly sufficient, though how limit/offset paginate the result is left unstated.
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 only 33%, and the description only adds meaning for collectionId/parentDocumentId (already documented in the schema) plus the default sort. The limit, offset, direction enumerations, and the distinction between 'index' and other sort modes are left entirely to 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?
States a specific verb and resource (list documents) plus the two optional filters (collection, parent document) and a default ordering rule, which an agent can distinguish from a get or search tool. It does not explicitly name siblings such as search_documents or get_document, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'optionally filtered by collection and/or parent document', which hints at when to reach for it over a full-text search, but there is no explicit when-to-use/when-not statement and no named alternative tool. An agent must infer the boundary against search_documents and get_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_documentMove documentB
Move a document to another collection and/or under a different parent document. Omit parentDocumentId to move it to the top level of the collection.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id | |
| index | No | Position among siblings | |
| collectionId | No | Target collection id | |
| parentDocumentId | No | Target parent document id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the top-level default when parentDocumentId is omitted, but says nothing about required permissions, what happens to child documents or sibling ordering, or whether the move is reversible.
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?
Two sentences, zero filler, with the primary action front-loaded and the defaulting rule immediately after. Every clause 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?
For a 4-parameter mutation tool with no annotations and no output schema, the description is adequate on purpose and the parentDocumentId default but silent on permissions, side effects, and index behavior. Enough to call it, not enough to call it confidently.
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 baseline is 3, and the description earns above that by explaining the semantic effect of omitting parentDocumentId (move to collection top level). It does not add comparable meaning for collectionId or index, so it stops short of a 5.
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 names a specific verb and resource ('Move a document') and further narrows scope to relocating it across collections and/or parents. This clearly separates it from list/get/archive siblings, though it never explicitly contrasts with update_document, which is the nearest conceptual neighbor.
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?
Usage context is implied by the scope statement (relocate within a collection hierarchy), and one behavior is spelled out ('Omit parentDocumentId to move it to the top level'). However, there is no explicit guidance on when to reach for this tool versus update_document or archive_document, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentsSearch documentsA
Full-text search across Outline documents. Returns id, title, url and a short context snippet per hit. Does NOT return document bodies — call get_document with an id to read one.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | Yes | Search terms | |
| offset | No | Pagination offset | |
| collectionId | No | Restrict results to one collection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to carry the burden, the description steps up by disclosing exactly what each hit contains (id, title, url, snippet) and what it deliberately omits (document bodies). It says nothing about permission requirements, result caps, or empty-result behavior, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the return-shape constraint is front-loaded before the routing hint to get_document.
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?
No output schema exists, so the description must describe returns — and it does, listing the per-hit fields and the missing body. It leaves pagination semantics (offset/limit interplay) unaddressed, a minor gap for a search tool of this size.
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 query, limit, offset and collectionId are already documented in structured form; the description adds nothing about them. Baseline 3 applies when the schema does the heavy lifting.
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?
Names a specific verb and resource ('Full-text search across Outline documents') plus the shape of the hits, which clearly separates it from list_documents. It does not explicitly name the sibling it is not (list_documents), so it falls just short of a 5.
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 clear follow-up path: hit ids are meant to be fed to get_document, and it explicitly rules out reading bodies here. It offers no guidance on when to prefer search_documents over list_documents, so it lacks the exclusion half of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_documentUpdate documentA
Update an existing document's title and/or markdown body. By default text REPLACES the body; set append=true to add text to the end instead. Only the fields you pass are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id | |
| done | No | Mark the editing session as finished (triggers notifications) | |
| text | No | New markdown body (or text to append when append=true) | |
| title | No | New title | |
| append | No | Append `text` to the existing body instead of replacing it | |
| publish | No | Publish a draft as part of this update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the two most non-obvious behaviors: `text` REPLACES the body by default, and only passed fields are changed (partial update). It is silent on side effects like the notification trigger for `done` or draft-publishing via `publish`, which the schema mentions only in passing.
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?
Three short sentences, front-loaded with the core action before the append nuance and the partial-update guarantee. No filler, though the final sentence slightly overlaps the second in intent.
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 six-parameter mutation with no output schema, the description covers the tricky semantics (replace vs append, partial update) that an agent most needs. The remaining gaps (done/publish side effects) are documented in the schema, so the definition is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters (including id, done, publish). The description reinforces the text/append interaction and partial-update semantics but adds no new parameter detail beyond that baseline.
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?
States a specific verb (update) and resource (existing document) plus the editable fields (title, markdown body). It is clearly distinct from the create/move/archive/get siblings by name and scope, though it does not explicitly name them.
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?
Usage is implied rather than stated: an agent can infer 'use this to modify an existing doc' versus create_document. There is no explicit when-to-use/when-not guidance or reference to any sibling, so it stops at the minimum viable level.
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.
9 tool updates
v0.1.4- First observed
archive_document - First observed
create_document - First observed
get_collection - First observed
get_document - First observed
list_collections - First observed
list_documents - First observed
move_document - First observed
search_documents - First observed
update_document
TDQS
Scored across 9 tools
Each tool has a clearly distinct action-resource pairing: list/search/get/list-collections for reads, create/update/move/archive for writes. The only mild overlap is list_documents vs search_documents, but descriptions make the boundary explicit (metadata listing vs full-text search with snippets) and search_documents points to get_document for bodies.
All nine tools follow a strict snake_case verb_noun pattern (list_collections, get_collection, list_documents, create_document, update_document, move_document, archive_document, search_documents, get_document) with no exceptions or mixed conventions.
Nine tools is well-scoped for an Outline document service, covering both the collection and document resources without redundancy. Every tool earns its place, none feels like filler.
The document lifecycle is largely covered (list, search, get, create, update, move, archive), plus collection reads. However, there is no collection creation/update and no explicit unarchive/restore or hard delete, leaving minor gaps agents must work around; archive is documented as reversible but no restore tool is exposed.
Maintenance
Related MCP Connectors
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Related MCP Servers
- 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.815 npm17MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server for interacting with Outline document management, supporting search, read, create, edit, archive documents, collections, comments, and backlinks.30MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates Outline Wiki with AI assistants like Claude Desktop, enabling search, create, update documents, list collections, and more.1-
- AlicenseNot gradedqualityDmaintenanceMCP server for Outline that gives Claude the ability to search and read documents from your Outline instance.MIT