Skip to main content
Glama
Lolaplex

agents-docs

by Lolaplex

Quickstart

pip install agents-docs && agents-docs init

Creates ~/.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>.

TIP

🤖 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

stacks/ models/ apis/ platforms/ custom/

Append-mostly notes agents file with write_doc

Docsets

one folder per catalog name or ingest

Fetched llms.txt / markdown, or a local folder

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 agents-docs into the host MCP file when that config directory already exists; copy docs-search and docs-sync

Cursor, Claude Desktop, Zed (context_servers), Antigravity / Gemini, Windsurf, Codex, Roo, Cline. Skills land in ~/.agents/skills, ~/.cursor/skills, ~/.gemini/config/skills

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

search_docs

Header-aware BM25. category is all, a fact category, or a docset name

get_doc

Raw markdown of one sheet

write_doc

Append a dated section. overwrite=true replaces a wrong sheet

delete_doc

Drop a wrong, duplicate, or yanked sheet. No CLI mirror

list_docs

Fact sheets with category and size

list_catalog

The 21 names sync can fetch with no URL

sync_external_doc

Fetch a catalog name or a custom llms.txt / markdown URL

get_model_playbook

Model playbook text (model, default auto)

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

agents-docs init

Categories, skills, MCP merge. No docset download

agents-docs catalog

List the 21 catalog names

agents-docs sync <name> [--url URL]

Fetch a catalog item or a custom URL

agents-docs ingest <name> <path>

Copy a local markdown folder into the store

agents-docs search "<query>" [--docset NAME] [--top N]

BM25. CLI flag is --docset (MCP calls it category)

agents-docs list

Installed docsets with file and byte counts

agents-docs write NAME CONTENT [CATEGORY]

Append a fact. Alias: add. --overwrite replaces

agents-docs playbook [model]

Same text as get_model_playbook

agents-docs prune

Strip boilerplate in installed docsets

agents-docs serve

stdio MCP. Also the default when you pass no command

agents-docs skills / sync-mcp

Re-copy skills, or re-merge MCP, without the rest of init


ABI

Layout and contracts in abi/:


Tests

python tests/run_all_tests.py

License

MIT. See LICENSE.

Available Tools

8 tools
delete_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')

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
categoryNocustom

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
categoryNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoauto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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')

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
categoryNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
contentYes
categoryNocustom
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate 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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 12 tool updatesv0.44.1
    • Addeddelete_doc
    • Addedget_doc
    • Removedget_doc_page
    • Addedget_model_playbook
    • Addedlist_docs
    • Removedlist_docsets
    • Changedsearch_docs2 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "default": "all",
        +  "title": "Category",
        +  "type": "string"
        +}
      • removedInput schema / properties / docset
        Removed value: -{
        -  "default": "all",
        -  "title": "Docset",
        -  "type": "string"
        -}
    • Removedsync_docset
    • Addedsync_external_doc
    • Removedsync_memory_docs
    • Removedsync_project_docs
    • Addedwrite_doc
  2. 7 tool updatesv0.42.0
    • First observedget_doc_page
    • First observedlist_catalog
    • First observedlist_docsets
    • First observedsearch_docs
    • First observedsync_docset
    • First observedsync_memory_docs
    • First observedsync_project_docs

TDQS

A4/5.0

Scored across 8 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP 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.
    15
    16
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    8
    AGPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Local-first context retrieval engine that serves precise documentation chunks to coding agents via MCP, ensuring high-confidence context for code generation.
    3
    MIT