Skip to main content
Glama
omkute101

AI Square Documentation MCP Server

by omkute101

AI Square Documentation MCP Server

The official, documentation-first Model Context Protocol (MCP) service for AI Square. It is designed to let MCP-compatible clients retrieve authoritative AI Square documentation, API reference material, SDK examples, guides, and troubleshooting information with traceable citations.

Current status: Phase 8 complete. The repository can crawl and incrementally index the configured AI Square documentation scope, then serve citation-safe hybrid retrieval through ten read-only MCP documentation tools and eight static docs:// resources, as well as its internal API. Bounded TTL/LRU caches cover search outcomes, query embeddings, exact pages, and categories; Redis is an optional shared L2 backend for container and production deployments. Structured latency/error metrics and deterministic unit, integration, retrieval-quality, CLI, and Streamable HTTP MCP tests run in CI with an 80% coverage floor. Operator runbooks, deployment guidance, maintenance workflows, and troubleshooting are included below.

Design principles

  • Documentation is the source of truth; the server does not synthesize facts from model memory.

  • Every indexed chunk retains a stable source URL, document identity, structure, and filterable metadata.

  • Interfaces separate transports, application services, and infrastructure so providers can be replaced without changing MCP tools.

  • Configuration and secrets come from environment variables; no credentials are committed.

  • Async I/O, structured logs, health checks, and container-first operation are baseline concerns rather than later additions.

Related MCP server: Markdown RAG MCP

Architecture

See the architecture guide for the design and the executable Phase 1–8 boundaries.

MCP clients / internal callers
          │
          ├── MCP transport (stdio or Streamable HTTP)
          └── FastAPI internal API
                         │
                    application ports
                         │
 crawler → parser → structural chunker → embedding adapter → Qdrant
                                      └──────────────────→ PostgreSQL
                                                              │
 query ──► BM25 + dense search ──► reciprocal-rank fusion ──► reranker
                                                              │
                                                   cited, compact context

The FastAPI API is for operational and internal integrations. MCP transports are the public AI-client interface. They share application services but neither transport is allowed to depend directly on provider-specific indexing or future retrieval code.

Repository layout

app/
  api/             FastAPI application, routes, and HTTP contracts
  config/          Typed settings and logging configuration
  mcp/             Official MCP SDK host, public retrieval adapter, and transports
  models/          Shared domain models (expanded with later phases)
  services/        Application services for ingestion, indexing, and retrieval
  crawler/         Documentation acquisition (Phase 2)
  parser/          Structured document extraction (Phase 2)
  chunking/        Heading-aware document chunking (Phase 3)
  embeddings/      Provider-neutral embedding contracts and adapters (Phase 3)
  retrieval/       Hybrid retrieval and context building (Phase 4)
  database/        PostgreSQL metadata and Qdrant vector adapters (Phase 3)
  cache/           Bounded TTL/LRU cache, safe codecs, and optional Redis L2 (Phase 7)
tests/             Unit, integration, and transport tests
docs/              Architecture, engineering, and operator documentation
docker/            Container runtime support files
scripts/           Explicit operational commands (added as phases need them)

Quick start

Prerequisites: Python 3.12+, uv, Docker with Compose, and an embedding-provider API key for indexing.

# Run from the repository root.
cp .env.example .env
uv sync --all-groups
uv run aisquare-docs-api

The API is available at http://127.0.0.1:8000. Useful endpoints are:

  • GET /health/live — process liveness, with no downstream checks.

  • GET /health/ready — process/configuration readiness; it is degraded when local hybrid-search configuration is incomplete, while storage connectivity is verified by an index or retrieval run.

  • GET /api/v1/status — service and phase capability status.

  • POST /api/v1/index — incrementally index crawl artifacts through the internal API.

  • POST /api/v1/reindex — force a complete indexing pass through the internal API.

  • GET /api/v1/search — hybrid documentation search with filters and cited context.

  • GET /api/v1/page — exact indexed-page lookup by canonical URL.

  • GET /api/v1/examples — code-focused hybrid search.

  • GET /api/v1/categories — available indexed source categories.

  • GET /docs — OpenAPI documentation in development.

Run a respectful documentation crawl to create parsed artifacts:

uv run aisquare-docs-crawl

It writes deterministic structured JSON files and a run manifest under data/documents by default. Fetched HTML is used only in memory and is never written to an artifact. See the ingestion guide before changing crawl limits or the user agent.

To index the artifacts, put an embedding key in .env (for the default adapter, set AISQUARE_OPENAI_API_KEY), then start PostgreSQL and Qdrant and run the incremental indexer:

docker compose up -d postgres qdrant
uv run aisquare-docs-index
# or: make index

Use uv run aisquare-docs-index --force (or make reindex) to run a complete forced pass. Once PostgreSQL and Qdrant contain that index, the internal API can retrieve it with hybrid search. See the indexing guide for storage and re-indexing behavior, and the retrieval guide for search configuration and endpoint use.

For example, after indexing and starting the API:

curl -G http://127.0.0.1:8000/api/v1/search \
  --data-urlencode 'query=How do I authenticate?'

Set AISQUARE_REQUIRE_API_KEY=true and send X-API-Key outside a trusted local environment. The default Cohere reranking stage needs AISQUARE_COHERE_API_KEY; Voyage and Jina are selectable alternatives using their provider keys. Set AISQUARE_RERANKER_ENABLED=false to return deterministic RRF results without a reranker.

Run the MCP server over standard input/output for desktop MCP clients:

uv run aisquare-docs-mcp

Phase 5 exposes ten read-only documentation tools—search, exact page retrieval, API/reference, code/example, related-page, category, SDK, guide, and troubleshooting access—plus static docs:// resources for the main documentation areas. See the MCP usage guide for the complete tool/resource contract, aliases, and stdio or Streamable HTTP setup.

For containerized local dependencies and the API:

docker compose up --build

See development and configuration instructions for local setup and verified settings, the operations runbook for Docker and production deployment, and the MCP usage guide for client setup.

Documentation

Phase plan

  1. Foundation (complete): package, configuration, API/MCP hosts, Docker topology, logging, health checks, CI, and tests.

  2. Ingestion (complete): respectful sitemap/robots-aware crawler, structured parser, and durable raw-HTML-free JSON document artifacts.

  3. Indexing (complete): heading-aware chunks, provider-neutral embedding contracts, OpenAI embeddings, Qdrant vectors, PostgreSQL metadata, and incremental re-indexing.

  4. Retrieval (complete): BM25 + dense retrieval, reciprocal-rank fusion, metadata filters, optional reranking, and citation-preserving context through the internal API.

  5. MCP surface (complete): ten read-only documentation tools and static resources backed by the citation-safe retrieval service.

  6. Quality (complete): integration, retrieval-quality, CLI, and end-to-end Streamable HTTP MCP suites, with an enforced 80% coverage floor.

  7. Optimization (complete): bounded search/page/category/query-embedding caches, optional Redis L2 coherence and invalidation, cache metrics, and OpenTelemetry retrieval/embedding/error instrumentation.

  8. Operations documentation (complete): runbooks, deployment guidance, contribution workflows, and troubleshooting.

Security notes

Use a separate API key per environment. Bind internal HTTP endpoints to a private network in production and put Streamable HTTP MCP behind TLS and your identity provider. The project deliberately keeps OAuth and tenant context at the boundary so they can be introduced without rewriting retrieval services.

Never use .env files as an artifact or image layer, and rotate any key that has been exposed.

Contributing

uv run ruff check .
uv run black --check .
uv run mypy app
uv run pytest
uv run pytest -m retrieval_quality
uv run pytest -m mcp_e2e

See CONTRIBUTING.md for the full contribution workflow and docs/DEVELOPMENT.md for the coding, testing, and configuration conventions.

Available Tools

11 tools
find_examplesC
Read-onlyIdempotent

Find implementation examples from indexed code chunks.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
languageNo
categoriesNo
canonical_urlsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds 'indexed code chunks' as a data source context, which is somewhat informative. However, it does not mention any behavioral nuances like result pagination, filtering behavior, or what constitutes an 'implementation example'.

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 description is a single, front-loaded sentence that directly states the core purpose. It is concise and contains no fluff. However, given the tool's complexity (six parameters) and the complete absence of parameter descriptions, the extreme brevity might be seen as under-specification rather than ideal conciseness, but structurally it is effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, an output schema, and annotations, this tool has moderate complexity. The description only covers the basic 'what', leaving out parameter usage, filtering options, and any constraints. While the output schema covers return values, the description does not provide enough context for an agent to choose and invoke the tool effectively, especially without any sibling differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/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 by explaining parameter meanings. It does not mention any of the six parameters (query, tags, limit, language, categories, canonical_urls) or their roles. The single sentence provides no parameter semantics beyond the implied 'query' from the purpose, leaving the agent to rely solely on parameter names.

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's function with a specific verb ('Find') and resource ('implementation examples'), sourced from 'indexed code chunks'. This is a clear, non-tautological purpose. However, it does not explicitly distinguish itself from sibling tools like 'search_code' or 'search_api', so it misses the top score.

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?

The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or preferred contexts. While the purpose implies use for finding examples, there is no explicit direction, and sibling tool names are not referenced. This is essentially no guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_sdkB
Read-onlyIdempotent

Find SDK documentation and code examples for a requested language.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
languageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description ('Find') is consistent with these and adds no contradictory behavior. However, it provides no additional behavioral context such as result limits or error handling, so it meets the minimum bar given annotation coverage.

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?

The description is a single sentence that is immediately informative and free of filler. It is front-loaded with the action verb and resource, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool has annotations and an output schema, the description is too sparse given the context. It does not explain the 'limit' parameter's role or specify how this tool differs from similar siblings like find_examples and search_docs, leaving the description incomplete for an agent to make fully informed decisions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

Schema description coverage is 0%, and the description only implicitly references the 'language' parameter ('for a requested language'). The 'limit' parameter is entirely unexplained, so the description fails to compensate for the schema gap and does not fully clarify parameter meaning.

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 uses the specific verb 'Find' with the resource 'SDK documentation and code examples' and the scope 'for a requested language,' making the core purpose clear. However, it does not explicitly distinguish itself from sibling tools like find_examples or search_docs, so it doesn't fully earn 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?

The description provides no guidance on when to choose this tool over alternatives. It neither mentions specific use cases nor contrasts with sibling tools, leaving the agent to infer the conditions for use without adequate support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pageA
Read-onlyIdempotent

Retrieve one complete indexed canonical page, including chunk citations.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds context about the page being 'complete' and 'canonical' and notes that chunk citations are included, which enriches response expectations beyond annotations.

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?

The description is a single concise sentence, front-loaded and without any filler or redundant phrases.

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?

The output schema covers return details, and annotations provide the safety profile. The description covers purpose and a key output trait, which is sufficient for a single-parameter retrieval tool; no critical gaps are evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The only parameter 'url' is self-evident from the tool name and description, but the description adds no format or constraint guidance. With 0% schema description coverage, the description offers minimal extra semantic value beyond the obvious.

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?

Description uses a specific verb ('Retrieve') and resource ('one complete indexed canonical page'), with a distinguishing detail ('including chunk citations'). This clearly differentiates it from sibling search and related-page tools.

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?

The description implies usage when a specific URL is known and the complete indexed page is needed. It lacks explicit exclusions or named alternatives, but the resource type is distinct from sibling tools that search, list, or get related pages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesA
Read-onlyIdempotent

List categories represented in the indexed documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context (e.g., whether categories are sorted, include empty categories, or pagination). It does not contradict the annotations.

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?

The description is a single, concise sentence that gets straight to the point. No redundant words or information.

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 parameterless list operation with an output schema, the description is sufficient. It identifies the source ('indexed documentation') and the content (categories), and there is no missing required context.

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?

There are zero parameters, so the schema fully covers parameter semantics. The description does not need to add parameter details, and the baseline score for 0 parameters is 4.

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?

The description clearly states the action ('List') and the resource ('categories represented in the indexed documentation'). It is specific and distinguishes itself from sibling tools that search or retrieve pages.

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?

No explicit when-to-use or alternatives are mentioned, but the tool's purpose implies usage: to retrieve the set of categories. It lacks explicit guidance on when NOT to use it or what to use instead, so the guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_apiB
Read-onlyIdempotent

Search categories configured as API/reference documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is known. The description adds nothing about behavior beyond being a search; no mention of result formatting, ordering, or scope boundaries. With annotations covering safety, this is adequate but not enriching.

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?

Single sentence, no filler, immediately states the action and scope. Extremely concise, though it sacrifices specificity.

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?

Given the simple search tool with output schema and annotations, the description covers the basic purpose but lacks context for when to use this vs sibling tools and what 'categories' means. It is minimally viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

Input schema has query (required) and limit (nullable integer, default null), but the description mentions neither. With 0% schema description coverage, the description provides zero parameter guidance, leaving the agent to infer semantics from schema names alone.

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 states it searches categories configured as API/reference documentation, using a specific verb ('search') and resource ('API/reference documentation'). It differentiates from sibling search tools by scoping to API/reference content, though 'categories' is somewhat ambiguous.

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?

No explicit guidance on when to use versus alternatives like search_docs or search_guides. The API/reference scope implies usage for reference docs, but no exclusions or alternative mentions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_codeA
Read-onlyIdempotent

Search only indexed code chunks, optionally prioritizing a language.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
languageNo
categoriesNo
canonical_urlsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive hints, so the safety profile is covered. The description adds the behavioral detail of language prioritization but does not describe result ranking, filtering behavior, or the impact of tags/categories. This provides some added context beyond annotations but lacks richer behavioral disclosure.

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?

The description is a single, front-loaded sentence that distinguishes the tool's purpose and features without redundancy. Every word earns its place.

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?

With an output schema and strong annotations, the description doesn't need to describe return values or safety. However, for a tool with 6 parameters and multiple sibling search tools, the description provides minimal usage context around filtering parameters and alternative tools, making it barely adequate for complex queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/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 explain parameters. It only gives semantic meaning to 'language' (prioritization), leaving 'tags', 'categories', 'canonical_urls', 'limit' undocumented. This is insufficient for a 6-parameter search tool with only one required field.

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?

The description clearly states the verb ('Search') and resource ('indexed code chunks'), and the word 'only' differentiates it from sibling search tools for docs, guides, and API. It also hints at language prioritization as a key feature.

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?

The phrase 'only indexed code chunks' provides clear context that this tool is for code-specific search, distinguishing it from search_docs and search_guides. However, it does not explicitly name alternative tools or state when not to use it, leaving some ambiguity for non-code search scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_docsC
Read-onlyIdempotent

Search documentation with optional metadata filters and source citations.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
categoriesNo
content_kindsNo
canonical_urlsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds minimal extra context by mentioning 'source citations,' which hints at return behavior, but it does not disclose pagination, rate limits, or auth requirements.

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 description is a single concise sentence with no filler or repetition. It is front-loaded with the primary verb-object ('Search documentation') and adds key qualifiers. However, it is slightly too terse for a tool with six parameters and many siblings.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's parameter count (6) and the existence of many sibling search tools, this description is under-specified. It does not clarify which documentation corpus is searched, what kinds of metadata filters are supported, or how results are structured. The output schema exists, so return values are covered, but invocation context remains vague.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/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. It mentions 'optional metadata filters' collectively, which maps to tags, categories, content_kinds, and canonical_urls, but it does not explain any parameter individually, nor does it clarify the behavior of 'limit' or the required 'query'.

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 searches documentation, with optional metadata filters and source citations. This gives a specific verb and resource, but it does not distinguish it from sibling search tools like search_guides, search_troubleshooting, or search_api.

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 alternatives. The description does not mention exclusions, prerequisites, or why an agent might prefer search_docs over search_guides or find_examples. The context of sibling tools makes this omission notable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_guidesA
Read-onlyIdempotent

Search categories configured as guides and tutorials.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds no additional behavioral context beyond what annotations provide, such as return format or pagination behavior, but it does not contradict the annotations.

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?

The description is a single, concise sentence that is front-loaded with the primary action and resource. It contains no wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of parameter descriptions, sparse behavioral details, and no usage guidelines, the description is incomplete for a search tool. The output schema exists, so return values are covered, but the description does not address how the search behaves, what the query matches, or how limit affects results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate. It does not explain the meaning of 'query' or 'limit' beyond what their names imply. The agent must infer that 'query' is the search term and 'limit' caps results, which is insufficient for a low-coverage schema.

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?

The description clearly states a specific verb ('Search') and resource ('categories configured as guides and tutorials'), which differentiates this tool from siblings like search_troubleshooting, search_docs, and search_code. The purpose is unambiguous and aligned with the tool name.

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 usage for finding guides/tutorials, but it does not explicitly state when to use this tool versus alternatives like search_troubleshooting or find_examples. There is no exclusionary guidance or mention of alternatives, so usage context is only inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_troubleshootingA
Read-onlyIdempotent

Search categories configured as troubleshooting and support content.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations (readOnlyHint, idempotentHint, destructiveHint) already disclose safety and side-effect profile. The description adds the behavioral detail that the search is limited to categories of type 'troubleshooting and support', which clarifies what the query targets. No contradictions exist.

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?

A single sentence, front-loaded with the verb, with zero redundant content. The description is as concise as possible while conveying the essential purpose.

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?

The tool is simple, and the presence of an output schema and safety annotations reduces the need for extensive detail. However, the description lacks explicit guidance on when not to use it or how it relates to similar search tools, and parameter semantics are nonexistent, leaving some ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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

Schema description coverage is 0%, and the description provides no additional meaning for the parameters (query and limit). The description does not explain what the query searches within or how limit behaves, leaving the agent to infer from parameter names alone.

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?

The description 'Search categories configured as troubleshooting and support content' specifies a clear verb (Search), resource (categories), and distinct scope (troubleshooting and support content), setting it apart from sibling tools like search_docs or search_guides.

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?

The description clearly implies when to use this tool: when searching for troubleshooting/support-related categories. It does not explicitly mention alternatives or exclusions, but the context is unambiguous given the unique scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_statusA
Read-onlyIdempotent

Report current MCP capabilities, registered tools, and static resources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing safety. The description adds value by specifying the exact content returned (capabilities, tools, resources), which is useful behavioral context beyond the annotations.

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?

A single, front-loaded sentence with no fluff. Every word earns its place, and the structure is ideal for quick scanning.

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?

Given the zero-parameter nature and existence of an output schema, the description is fully adequate. It clearly states the tool's scope without needing to explain return formats or parameters.

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?

There are zero parameters, so the schema is trivially fully covered. The baseline is 4, and the description correctly implies no arguments are needed.

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?

The description uses a specific verb 'Report' and clearly names the resource: 'current MCP capabilities, registered tools, and static resources.' This clearly differentiates it from sibling tools that search or list pages, categories, and SDKs.

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?

The description implies usage: when you need an overview of server capabilities, registered tools, and static resources. It does not explicitly mention alternatives, but the scope is clear enough for an agent to select it appropriately, especially given the distinct sibling tools.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv0.1.0
    • First observedfind_examples
    • First observedfind_sdk
    • First observedget_page
    • First observedlist_categories
    • First observedrelated_pages
    • First observedsearch_api
    • First observedsearch_code
    • First observedsearch_docs
    • First observedsearch_guides
    • First observedsearch_troubleshooting
    • First observedserver_status

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, especially the category-specific searches (search_guides, search_troubleshooting, search_api). However, find_examples and search_code both operate on code content, which could cause misselection without careful description reading.

Naming Consistency4/5

The majority of tools follow a consistent verb_noun pattern (list_categories, search_docs, get_page). Minor deviations include related_pages (adjective_noun) and server_status (noun_noun), which break the pattern slightly.

Tool Count5/5

With 11 tools, the set is well-scoped for a documentation server. Each tool addresses a distinct need, from search to retrieval to metadata, without unnecessary duplication or overwhelming count.

Completeness4/5

The tool surface covers core documentation workflows: searching across categories, retrieving pages, finding related content, and checking server status. A minor gap is the lack of a direct 'list all pages' tool, but search_docs and related_pages can compensate.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides semantic search over markdown documentation using RAG, allowing natural language queries and integration with MCP clients.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides RAG (Retrieval Augmented Generation) access to technical documentation through MCP, enabling LLMs to search and retrieve relevant documentation on-demand.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to intelligently search and reference documentation using hybrid semantic + keyword search via MCP protocol.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/omkute101/AISquare-Docs-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server