agents-docs
Search, file, and manage local markdown technical docs through MCP, including docset sync and model playbooks.
search_docs: header-aware BM25 search across fact categories, docsets, or all.get_doc: fetch raw markdown of a specific fact sheet, spec, or playbook.write_doc: append durable dated technical facts or overwrite a wrong sheet.delete_doc: remove wrong, duplicate, or yanked sheets.list_docs: list indexed docs with category and size.list_catalog: see curated docsets available for 1-click sync.sync_external_doc: fetch a catalog docset or custom llms.txt/raw markdown URL.get_model_playbook: get operational playbooks, strengths, and traps for AI models.
Provides searchable official Cloudflare documentation, allowing agents to look up Workers, Pages, and network APIs.
Provides searchable official FastAPI documentation, allowing agents to retrieve accurate API usage, parameters, and examples.
Provides searchable official Hono documentation, allowing agents to look up web framework APIs and middleware.
Provides searchable official Netlify documentation, enabling agents to retrieve deployment and configuration guidance.
Provides searchable official Next.js documentation, helping agents use current App Router and server/client components correctly.
Provides searchable official Pydantic documentation, helping agents use data validation and settings management APIs.
Provides searchable official React documentation, helping agents use current React 19 APIs and avoid deprecated patterns.
Provides searchable official Resend documentation, enabling agents to send emails and manage email APIs.
Provides searchable official shadcn/ui documentation, enabling agents to use UI components and styling patterns.
Provides searchable official Supabase documentation, enabling agents to retrieve database, auth, and storage APIs.
Provides searchable official Svelte 5 documentation, enabling agents to avoid deprecated APIs and use Runes correctly.
Provides searchable official Tauri 2 documentation, enabling agents to look up desktop app development APIs.
Provides searchable official TypeScript documentation, helping agents retrieve accurate type system information and handbook sections.
Provides searchable official Vite documentation, allowing agents to look up build tool configuration and features.
Provides searchable official WXT documentation, helping agents build browser extensions with current APIs.
Provides searchable official Zod documentation, enabling agents to use schema validation APIs correctly.
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., "@agents-docssearch FastAPI docs for dependency injection"
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.
Quickstart
pip install agents-docs && agents-docs initCreates ~/.agents/docs/ (category dirs only), copies skills, and merges MCP into host configs whose directories already exist. Docsets are not seeded. Fetch one with agents-docs sync <name>.
🤖 Agent-Driven Setup: Give your coding agent this repo (clone or URL), then tell it to "install and set up agents-docs."
Source checkouts can also be installed and managed with vand.
Related MCP server: Speakeasy Docs MCP
What it does
Markdown on disk is the store (~/.agents/docs/, override AGENTS_DOCS_PATH). Search is header-aware BM25 in-process. No vector database, no embeddings.
Layer | Where | What lives there |
Fact sheets |
| Append-mostly notes agents file with |
Docsets | one folder per catalog name or ingest | Fetched |
Search. search_docs ranks sections, not whole files. A named catalog docset is fetched when missing and refreshed when stale (7 days, ai-models 1 day).
Catalog sync does not rewrite fact sheets. sync / prune leave stacks|models|apis|platforms|custom alone.
Memory is a different store. User prefs, project decisions, and identity go to agents-memory. Do not dump READMEs or chat logs here. delete_doc is for a wrong, duplicate, or yanked sheet — not because a model is old.
Where it runs
Floor: any MCP client or a terminal. python -m agents_docs serve is enough.
init autowires hosts it finds. It does not install an IDE.
Layer | What you get | Who |
Vault + MCP/CLI | Full tools, or the CLI mirrors below | Any MCP host / any shell |
Autowire on init | Merge | Cursor, Claude Desktop, Zed ( |
MCP without autowire: point the host at python -m agents_docs serve.
MCP tools
Primary surface. Agents file and search facts here.
Tool | What it does |
| Header-aware BM25. |
| Raw markdown of one sheet |
| Append a dated section. |
| Drop a wrong, duplicate, or yanked sheet. No CLI mirror |
| Fact sheets with category and size |
| The 21 names |
| Fetch a catalog name or a custom |
| Model playbook text ( |
Eight tools. Full contract: abi/MCP.md.
CLI
Ops / install / batch. Vault writes mirror MCP. Machine-readable catalog: python -m agents_docs --help-json (do not scrape --help).
Command | Purpose |
| Categories, skills, MCP merge. No docset download |
| List the 21 catalog names |
| Fetch a catalog item or a custom URL |
| Copy a local markdown folder into the store |
| BM25. CLI flag is |
| Installed docsets with file and byte counts |
| Append a fact. Alias: |
| Same text as |
| Strip boilerplate in installed docsets |
| stdio MCP. Also the default when you pass no command |
| Re-copy skills, or re-merge MCP, without the rest of |
ABI
Layout and contracts in abi/:
WHY.md— markdown + BM25 instead of a vector databaseLAYOUT.md—~/.agents/docs/taxonomyMCP.md— tool surfaceCLI.md— commandsCATALOG.md— catalog schemaLLMSTXT.md—llms.txtfetch
Tests
python tests/run_all_tests.pyLicense
MIT. See LICENSE.
Available Tools
8 toolsdelete_docA
Delete a technical fact sheet that is wrong, duplicate, or yanked.
Do not delete because a fact is old. Old-but-still-true model/API notes stay.
Args: name: Document identifier to delete category: Category where the doc resides ('stacks', 'models', 'apis', 'platforms', 'custom')
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| category | No | custom |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden. It usefully defines what qualifies for deletion, but for a destructive tool it never states whether the deletion is permanent or reversible, what permissions are needed, or what happens to linked references.
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?
Purpose and the key exclusion rule are front-loaded in two short sentences, followed by a compact args list. No filler, though the args list largely restates the schema's properties.
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?
An output schema exists so return values need no explanation, and both parameters are covered. For a destructive operation with no annotations, the omission of reversibility/permission context is the only real gap.
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 must compensate, and it does: 'name' is documented as a document identifier, and 'category' is given as the location of the doc with the full enumerated set ('stacks', 'models', 'apis', 'platforms', 'custom') plus the 'custom' default. It only lacks guidance on name format.
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?
Specific verb (delete) plus resource (technical fact sheet) with qualifying criteria (wrong, duplicate, or yanked). An agent can distinguish this from write_doc/get_doc 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?
Gives an explicit negative rule: 'Do not delete because a fact is old. Old-but-still-true model/API notes stay.' This is a real when-not constraint. It stops short of naming the alternative tool (e.g., write_doc to correct a stale-but-true note), so it is 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docA
Fetch the complete raw markdown of a technical fact sheet, spec, or playbook.
Args: name: Name or relative path of the doc (e.g. 'tailwind-v3', 'stacks/fastapi.md', 'coolify-db', 'ai-models/pricing_and_specs.md') category: Optional category filter ('stacks', 'models', 'apis', 'platforms', 'custom', or 'all').
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| category | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 that output is raw markdown and complete rather than summarized or truncated, but it says nothing about read-only nature, permissions, or behavior when the doc is missing.
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 core purpose is a single front-loaded sentence, and the Args block is compact. The docstring-style formatting is slightly mechanical but wastes no 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?
With an output schema present, return values need no explanation, and both inputs are documented with examples. What is missing is routing guidance relative to the six sibling tools and any failure behavior for unknown names.
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 and largely does: it documents both parameters with concrete path examples and enumerates the accepted category values ('stacks', 'models', 'apis', 'platforms', 'custom', 'all') that the schema does not constrain via enum.
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 (doc) plus the return form ('complete raw markdown'), which implicitly separates it from search_docs' snippet-style results. It never names a sibling or explicitly contrasts scope, so it falls short of the top tier.
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 only implied: fetching 'complete raw' content suggests a lookup-by-known-name flow, but nothing says when to prefer this over search_docs or list_docs, nor that search should come first when the name is unknown. The category filter hints at narrowing, but no when/when-not rule is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_playbookA
Get self-awareness operational playbooks, strengths, traps, and best practices for AI models. Enables models to understand their own capabilities and optimize tool execution patterns.
Args: model: Model name or family (e.g. 'gemini-3.7-flash', 'claude-3.7-sonnet', 'gpt-4o', 'deepseek-r1', 'qwen', or 'auto').
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Get' implies a read-only retrieval, and it discloses that the payload covers strengths/traps/best practices, but it says nothing about permissions, caching, freshness, or whether the playbook is static. Adequate but thin for an annotation-free tool.
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 front-loaded sentences plus a short args block; no filler. The 'Args:' formatting is slightly heavier than needed for a single optional parameter, but nothing is wasteful.
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?
An output schema exists, so return-value explanation is not required, and the single optional parameter is covered with examples. The remaining gap is the undisclosed behavior of 'auto' and the lack of any freshness/scope caveat, which are minor for a read-style lookup.
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, and it does: it explains that `model` accepts a model name or family and provides five concrete examples plus the 'auto' sentinel. It still doesn't explain what 'auto' resolves to, but this is substantially better than the bare 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 ('Get') and resource ('self-awareness operational playbooks, strengths, traps, and best practices for AI models'), which is clearly distinct from the doc-oriented siblings. The purpose is understandable, though the phrase 'self-awareness operational playbooks' is somewhat abstract and never concretely described.
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 second sentence ('Enables models to understand their own capabilities and optimize tool execution patterns') implies a usage context but gives no explicit when-to-use trigger, no prerequisites, and no comparison to alternatives. The 'auto' option hints at a default path but doesn't say when to pick a specific model instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_catalogA
List curated pre-configured framework docsets available for 1-click sync. Includes Svelte 5, FastAPI, Next.js, Supabase, Tailwind v3/v4, Tauri 2, Hono, MCP, WXT.
| 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?
The verb 'List' and the example frameworks give a reasonable sense of expected content, and the tool has no parameters, making it likely read-only. With no annotations, the description carries the transparency burden, but it does not explicitly state that this is a non-mutating operation or how results are ordered.
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, front-loaded with the core purpose, and concrete examples. Every word earns its place with no 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?
For a zero-parameter list tool with an output schema, the description fully covers what is being listed, why it matters for one-click sync, and what the catalog contains. There are no critical gaps for this level of 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 tool has zero parameters, so the baseline is 4. The description adds meaningful context about curated pre-configured docsets and the sync availability that the empty schema cannot convey.
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 curated pre-configured framework docsets and gives concrete examples, so the verb and resource are specific. It does not explicitly differentiate itself from the similarly named sibling list_docsets, preventing 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?
There is no guidance on when to use this tool versus list_docsets, search_docs, or sync_docset. The wording implies it is for discovering pre-configured docsets, but no alternatives or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docsB
List all indexed technical documents, fact sheets, API specs, and playbooks with category and size.
Args: category: Filter by category ('stacks', 'models', 'apis', 'platforms', 'custom', or 'all')
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. Beyond the implied read-only nature of 'List', it says nothing about pagination, result limits, ordering, or auth requirements, which matters for a catalog-listing tool. 'with category and size' is the only return-behavior hint.
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 summary sentence plus a compact argument block; nothing is wasted. The front-loaded sentence carries the purpose, though the 'Args:' formatting adds minor structural noise.
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?
An output schema exists, so return values need not be explained, and the single optional parameter is documented. Only pagination/scope limits are unaddressed; otherwise complete for a simple listing 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% – the schema only declares a string with default 'all' and no enum. The description compensates by enumerating the valid values ('stacks', 'models', 'apis', 'platforms', 'custom', 'all'), adding meaning the schema lacks.
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 ('indexed technical documents, fact sheets, API specs, and playbooks'), so the agent knows exactly what it returns. It does not, however, distinguish itself from the sibling search_docs or list_catalog, leaving the enumeration-vs-search boundary to inference.
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?
'List all indexed...' implies enumerating the full catalog, which hints at when to prefer it over search_docs. There is no explicit when-to-use/when-not statement or named alternative, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsA
Search hard technical facts, API specs, stack rules, model capabilities, and playbooks using header-aware BM25 ranking.
Args: query: Keywords, function signatures, syntax, or technical questions (e.g. 'runes $state', 'HTTPException', 'coolify postgres port', 'cdp tab focus') category: Target category ('stacks', 'models', 'apis', 'platforms', 'custom', or specific docset name, or 'all' to search everything). top_k: Number of relevant sections to return (default 4).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_k | No | ||
| category | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the ranking algorithm and that results are ranked sections, which is useful, but says nothing about permissions, result ordering guarantees, or failure behavior; the existence of an output schema removes the need to describe return shape.
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?
Front-loaded opening sentence followed by a compact Args block. The parenthetical query examples add real value rather than filler, and nothing is redundant, though the examples are slightly 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?
All three parameters are documented in the description, which is essential given 0% schema coverage, and the output schema covers return values. Guidance on selecting this tool over siblings is the only notable gap.
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, and it does: it enumerates the accepted category values ('stacks', 'models', 'apis', 'platforms', 'custom', docset name, 'all'), explains top_k as 'number of relevant sections to return (default 4)', and gives concrete query examples. Format details like query syntax are left implicit.
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 (Search) and the resource/content type (hard technical facts, API specs, stack rules, model capabilities, playbooks), and adds the ranking mechanism (header-aware BM25). It clearly reads as a retrieval tool distinct from write/list/delete siblings, though it never names those siblings explicitly.
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 the content scope ('hard technical facts, API specs...') and by the query examples, but there is no explicit guidance on when to prefer this over get_doc or get_model_playbook, nor any when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_external_docB
Fetch/synchronize an external documentation set from curated catalog or custom llms.txt URL.
Args: name: Name of the catalog item (e.g. 'svelte-5', 'fastapi', 'tailwind-v3') or custom identifier. url: Optional custom URL (pointing to llms.txt, llms-full.txt, or raw markdown).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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. 'Synchronize' implies a write/persist operation that could overwrite or duplicate previously synced docs, but the description says nothing about idempotency, overwrite semantics, network/auth requirements, or failure modes.
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 purpose sentence is front-loaded and the argument notes are compact with no filler. The Args block is slightly redundant with the schema but earns its place by supplying formats and examples the schema lacks.
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?
An output schema exists, so return values need no explanation, and both params are covered. The gap is behavioral: for a synchronizing tool with no annotations, an agent still cannot tell what gets written, whether an existing doc set is replaced, or how this differs operationally from list_catalog plus get_doc.
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%, yet the description documents both parameters meaningfully: 'name' as a catalog item or custom identifier with examples ('svelte-5', 'fastapi', 'tailwind-v3'), and 'url' as an optional custom source accepting llms.txt, llms-full.txt, or raw markdown. This adds real meaning beyond the bare string 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 pair (fetch/synchronize) and a specific resource (external documentation set), with concrete source types (curated catalog or custom llms.txt URL). It is distinguishable from the read-only siblings like get_doc and search_docs, though it never names them explicitly.
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 the trigger (you want docs from a catalog item or an external llms.txt source) and explains that 'name' may be either a catalog item or a custom identifier. However it gives no explicit when-not guidance and does not contrast itself with list_catalog, which is the closest sibling for discovering catalog items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_docA
Append a durable technical fact (API spec, stack rule, model capability, platform note).
Default appends a dated section. Does not clobber. Use overwrite=True only to replace a wrong sheet. Hard tech facts belong here. User prefs and project fluid facts belong in agents-memory, not docs. delete_doc is for wrong/duplicate/yanked sheets — not for an old model that is still true.
Args: name: Short document identifier (e.g. 'powershell-gotchas', 'stripe-api', 'coolify-db-ports') content: Markdown fact to append (or full replacement when overwrite=True) category: One of 'stacks' (frameworks/libs), 'models' (LLM specs), 'apis' (protocol/APIs), 'platforms' (OS/Infra/DB), 'custom' overwrite: False (default) appends. True replaces the entire file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| content | Yes | ||
| category | No | custom | |
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 well: it discloses non-clobbering default behavior, that appends are dated sections, and that overwrite=True replaces the entire file. It stops short of stating permissions, failure modes, or write durability guarantees, but the mutation semantics are unusually clear.
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?
Front-loaded with the core action, then routing rules, then args. Every sentence carries information, though 'Hard tech facts belong here' slightly restates the opening line and the args block repeats details that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a 4-parameter write tool with no annotations and zero schema description coverage, the description supplies the action, the routing rules, the mutation semantics, and all four parameter meanings — nothing an agent needs to call 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 description coverage is 0%, so the description must compensate fully and does: name is explained with three concrete slug examples, content notes markdown and full-replacement behavior under overwrite, category enumerates all five allowed values, and overwrite states its default and effect.
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 ('Append a durable technical fact') and immediately scopes it with concrete examples (API spec, stack rule, model capability, platform note). It is clearly distinguishable from siblings like search_docs, get_doc, and delete_doc, which are either named or implied by the read/delete framing.
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 content: hard tech facts here, user prefs and project fluid facts to agents-memory, and wrong/duplicate/yanked sheets to delete_doc. It even handles the subtle case of an old-but-still-true model, which is exactly the kind of when-not guidance that prevents misrouting.
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.
12 tool updates
v0.44.1- Added
delete_doc - Added
get_doc - Removed
get_doc_page - Added
get_model_playbook - Added
list_docs - Removed
list_docsets - Changed
search_docs2 fields changed- added
Input schema / properties / categoryAdded value: +{ + "default": "all", + "title": "Category", + "type": "string" +} - removed
Input schema / properties / docsetRemoved value: -{ - "default": "all", - "title": "Docset", - "type": "string" -}
- Removed
sync_docset - Added
sync_external_doc - Removed
sync_memory_docs - Removed
sync_project_docs - Added
write_doc
7 tool updates
v0.42.0- First observed
get_doc_page - First observed
list_catalog - First observed
list_docsets - First observed
search_docs - First observed
sync_docset - First observed
sync_memory_docs - First observed
sync_project_docs
TDQS
Scored across 8 tools
Each tool targets a clearly distinct operation: search vs. full fetch, write vs. delete vs. list, external sync vs. catalog listing, and a specialized model playbook. The descriptions explicitly delineate boundaries (e.g., write_doc for facts vs. agents-memory for prefs). No two tools can be easily confused.
All tool names follow a consistent snake_case verb_noun pattern (search_docs, get_doc, write_doc, delete_doc, list_docs, sync_external_doc, get_model_playbook, list_catalog). There are no deviations in casing or verb style.
Eight tools is well-scoped for a documentation management server. Each tool serves a unique purpose—retrieval, mutation, listing, external sync, and playbooks—with no redundancy or bloat.
The surface covers full CRUD (write with overwrite for update, get/search/list, delete) plus external synchronization, catalog browsing, and specialized model playbooks. No obvious gaps in the documentation lifecycle are apparent.
Maintenance
Related MCP Connectors
Cloud or self-hosted knowledge for AI agents: hybrid search, reranking, GraphRAG, scoped MCP tools.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Self-hosted AI workspace: semantic RAG document search, long-term memory, and AI chat via MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server that gives AI coding agents on-demand access to private project docs via BM25 ranked search. One setup for Claude Code, Cursor, Codex, Gemini CLI, and more. Docs stay private, never in public repos.1516Apache 2.0

Speakeasy Docs MCPofficial
AlicenseNot gradedqualityCmaintenanceA lightweight, domain-agnostic hybrid search engine for markdown corpora, exposed via the Model Context Protocol (MCP), optimized for serving SDK documentation to AI coding agents.8AGPL 3.0- AlicenseAqualityDmaintenanceLocal-first context retrieval engine that serves precise documentation chunks to coding agents via MCP, ensuring high-confidence context for code generation.3MIT
- FlicenseNot gradedqualityDmaintenanceMCP server + RAG chatbot that makes your MDX documentation searchable by AI assistants. Built on BM25 + metadata filtering.-