agents-docs
agents-docs
MCP를 통해 AI 코딩 에이전트를 위한 초고속, 제로 블로트 로컬 마크다운 문서 RAG.
공식 프레임워크 문서와 실시간 AI 모델 레지스트리에 대한 즉각적인 BM25 검색. Cursor, Claude Code, Antigravity, Zed에서 공유됩니다.
왜 .agents/docs인가?
코딩 에이전트는 종종 더 이상 사용되지 않는 API(Svelte 4 vs 5 Runes, Tailwind v3 vs v4, React 19 Actions)를 환각하거나 오래된 LLM 모델과 토큰 가격을 참조합니다.
기존의 벡터 임베딩 RAG 솔루션은 비대합니다: Docker 컨테이너, 수백 메가바이트의 Python 의존성(Chroma, LangChain), 그리고 코드 블록을 반으로 쪼개는 느린 API 임베딩 호출이 필요합니다.
agents-docs는 Lolaplex 철학을 적용합니다:
제로 벡터 DB: 헤더 인식 마크다운 청킹 + 헤더 매치 부스트(+6.0) 및 전체 구문 부스트(+10.0)를 적용한 순수 Python 어휘 BM25 랭킹.
10ms 미만 검색: 디스크의 일반 마크다운 파일(
~/.agents/docs/)에서 직접 즉시 검색.실시간 AI 모델 레지스트리: Frontier 및 Open-Weights 모델(Claude 5/4, GPT-5/o3/o4, Gemini 3.x, DeepSeek V4/R1, Qwen 2.5 Coder)의 실시간 추적 컨텍스트 윈도우, 벤치마크, 토큰 가격($/1M).
큐레이션된 21+ 프레임워크 카탈로그: 공식
llms.txt1클릭 동기화(TypeScript Handbook, Svelte 5, FastAPI, Tailwind v3/v4, Tauri 2, Next.js, Supabase, Hono, WXT, Netlify, Coolify, Cloudflare, Resend, React, Vite, Zod, Pydantic, shadcn/ui).결정적 노이즈 제거: 코드 블록이나 테이블을 변경하지 않고 HTML 래퍼, 링크 노이즈, 쿠키 배너를 자동으로 제거.
유니버설 MCP 서버: 자동 동기화 및 의존성 매니페스트 검사 기능을 갖춘 FastMCP stdio 인터페이스.
Related MCP server: Speakeasy Docs MCP
아키텍처 및 흐름
┌─────────────────────────────────────────────────────────────┐
│ DOCS & MODEL REGISTRIES │
│ Official llms.txt · TypeScript Handbook · OpenRouter │
└──────────────────────────────┬──────────────────────────────┘
│ agents-docs sync <name>
▼
┌─────────────────────────────────────────────────────────────┐
│ DETERMINISTIC NOISE PRUNER │
│ Strips HTML boilerplate while preserving 100% of code │
└──────────────────────────────┬──────────────────────────────┘
│ Header-aware chunking
▼
┌─────────────────────────────────────────────────────────────┐
│ LOCAL DOCUMENTATION STORE │
│ ~/.agents/docs/ai-models/ ~/.agents/docs/svelte-5/ │
│ ~/.agents/docs/typescript/ ~/.agents/docs/fastapi/ │
└──────────────┬───────────────────────────────┬──────────────┘
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ LEXICAL BM25 │ │ MCP SERVER & CLERK │
│ Header Match Boost (+6.0) │ │ search_docs · list_docsets │
│ Sub-10ms Exact Retrieval │ │ sync_project_docs │
└─────────────────────────────┘ └─────────────────────────────┘빠른 시작
1단계 설정
pip install agents-docs && agents-docs init~/.agents/docs/를 스캐폴딩하고, 실시간 ai-models 레지스트리를 시드하며, 설치된 IDE에 MCP 구성을 자동 연결하고, 어시스턴트 스킬을 등록합니다.
[!TIP] 🤖 에이전트 주도 설정(제로 마찰):
코딩 에이전트에게 간단히 말하세요: "agents-docs를 설치하고 설정해 줘."
에이전트가 패키지를 설치하고agents-docs init을 실행한 후, 기술 스택이나 모델 가격 질문을 할 때마다 최신 문서를 자동으로 검색합니다.
CLI 참조
명령어 | 용도 |
| 플러그 앤 플레이 설정: 모든 IDE에 MCP를 자동 구성하고 모델 문서를 시드 |
| 사전 구성된 21+ 프레임워크 및 모델 카탈로그 나열 |
| 공식 프레임워크 문서 1클릭 다운로드/업데이트 |
| 사용자 정의 |
| 설치된 모든 문서셋에서 빠른 BM25 검색 |
| 특정 문서 세트 내 범위 검색 |
| 설치된 모든 문서에서 제자리 노이즈 및 보일러플레이트 정리 |
| 디스크에 설치된 모든 문서셋을 파일 및 바이트 수와 함께 나열 |
| FastMCP stdio 서버 실행(기본값) |
MCP 도구 참조
도구 | 매개변수 | 설명 |
| 없음 | 파일 수와 바이트 크기와 함께 |
|
| 헤더와 코드 블록이 포함된 상위 일치 마크다운 섹션을 밀리초 단위로 반환. 누락된 카탈로그 문서셋을 요청 시 자동 동기화. |
|
| 특정 파일의 원시 마크다운 콘텐츠를 반환. |
| 없음 | 1클릭 동기화 가능한 21+ 사전 구성 프레임워크 및 모델 카탈로그를 나열. |
|
| 카탈로그 또는 사용자 정의 |
|
|
|
| 없음 |
|
지원 생태계
Claude Code: MCP 서버 및
.agents/skills/docs-search를 통해 바인딩.Google Antigravity:
.gemini/config규칙 및agents-docsMCP를 통해 통합.Cursor:
.cursor/mcp.json및 에이전트 규칙을 자동 구성.Zed:
context_servers를 구성하고 어시스턴트 스킬을 미러링.VS Code / Windsurf: Cline / Roo-Code MCP 구성을 자동 연결.
공개 ABI 사양
자세한 아키텍처 사양은 abi/에 있습니다:
abi/WHY.md— 아키텍처 근거 및 BM25 vs 벡터 임베딩.abi/LAYOUT.md—~/.agents/docs/의 저장 분류 체계.abi/MCP.md— 도구 표면 정의 및 스키마.abi/CATALOG.md— 큐레이션된 카탈로그 스키마 및 지원 유형.abi/LLMSTXT.md—llms.txt표준 지원.
테스트 및 검증
모든 엔진에서 테스트 스위트 실행:
python tests/run_all_tests.py라이선스
MIT 라이선스. 자세한 내용은 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
- AlicenseAqualityBmaintenanceMCP 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.-