Skip to main content
Glama
laserdata

LaserData Docs MCP

Official
by laserdata

LaserData Docs MCP

MCP server for answering questions from the LaserData documentation.

It serves two corpora, so an AI assistant answers Laser SDK and LaserData Cloud questions from the current docs rather than from training data:

  • the guides: every page of docs.laserdata.com, read from the site's own llms-full.txt and keyed by site path (laser-sdk/memory, networking/private-link).

  • the Python API: the public surface of the laser_sdk package, read from the laser_sdk.pyi type stub in laserdata/laser-sdk and keyed under python/laser_sdk/.

The guides say how Laser SDK is meant to be used and the API says what is callable, so every result says which corpus it came from.

Search is chunked BM25 with a small vocabulary bridge, and code blocks are first-class content. Related pages are found through the links between pages as well as shared terms.

Adapted from IggyDocMCP, the same server for the Apache Iggy docs.

Corpus sources

The guides are fetched from docs.laserdata.com and cached on disk for seven days. Set LASER_DOCS_FILE to a local copy of llms-full.txt to read that instead, fresh on every call.

The Python stub is a copy in pystub/laser_sdk.pyi, taken from laserdata/laser-sdk at 2a278e76e. Set LASER_PYTHON_STUB to its path. To update it:

curl -sL https://raw.githubusercontent.com/laserdata/laser-sdk/main/foreign/python/laser_sdk.pyi -o pystub/laser_sdk.pyi

Related MCP server: RAG Documentation MCP Server

Install

python3 -m venv .venv
. .venv/bin/activate
pip install -e .

Run

LASER_PYTHON_STUB=pystub/laser_sdk.pyi laser-doc-mcp

This serves over stdio. Set LASER_DOC_MCP_TRANSPORT=streamable-http and PORT to serve over HTTP, as the Docker image does.

Test

pip install -e ".[dev]"
make check

Use the hosted server

The hosted server is at https://laserdata-docs-mcp.fly.dev/mcp, with no sign-in. In Claude Code:

claude mcp add --transport http laserdata-docs https://laserdata-docs-mcp.fly.dev/mcp

Deploy

The image ships the Python stub and fetches the guides at runtime.

fly deploy

Pushes to main also deploy through .github/workflows/fly-deploy.yml, which needs a FLY_API_TOKEN repository secret.

For the OpenAI plugin directory, the server answers the domain-verification challenge at /.well-known/openai-apps-challenge with the token in the OPENAI_APPS_CHALLENGE secret, and returns 404 when it is unset:

fly secrets set OPENAI_APPS_CHALLENGE=<token from the portal>

Tools

  • list_docs: every page, organised by section, with word counts and corpus; source restricts to website or python-api.

  • get_doc: full text of one page by key (e.g. laser-sdk/quickstart, python/laser_sdk/Laser); unambiguous partial keys resolve automatically.

  • search_docs: ranked search across both corpora, returning excerpts with their code blocks, each labelled Guide or Python API.

  • find_examples: code examples by topic and language (Python, TypeScript, Rust, shell).

  • extract_code_snippets: an inventory of code blocks, filtered by language or doc key.

  • get_related_docs: pages related to one key, through links, backlinks, shared section and shared terms.

  • explain_doc_map: the documentation sections and where to start for a new user, SDK developer, operator or AI assistant.

  • refresh_docs: re-fetch the guides, bypassing the cache, and re-read the Python stub. Local stdio use only; the hosted server leaves it out, and its cache refills on each cold start.

Every tool is read-only, and is annotated readOnlyHint: true, destructiveHint: false and openWorldHint: false (refresh_docs is open-world, since it fetches).

Example questions

  • How do I connect to Laser Stack from Python?

  • How do I give an agent memory that survives a restart?

  • What does Laser.connect accept?

  • How do I set up PrivateLink for a deployment?

  • Show me a TypeScript example that stores a key-value pair.

Licence

Apache License 2.0. See LICENSE.

Apache Iggy is a trademark of the Apache Software Foundation.

Available Tools

8 tools
explain_doc_mapA
Read-only

Explain how the LaserData documentation is organised and where to start.

This is a guided map, not a keyword search. Use it when a user asks where docs live, what reading path fits a goal, or which documentation areas look thin from the indexed corpus.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNo
audienceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description's job is to add context, which it does by revealing this is an orientation/map tool whose output reflects 'the indexed corpus' and can flag thin areas. It stops short of describing the response shape, but an output schema exists to carry that.

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 short paragraphs, front-loaded with the core purpose followed by the disambiguation and usage cues. Every clause carries information; no filler.

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 needn't be explained; the description adequately covers purpose, when to use, and the tool's non-search nature. The only meaningful gap is the undocumented 'audience' parameter.

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 there are two optional params. The phrase 'reading path fits a goal' implies the role of the 'goal' param, but 'audience' is never mentioned in the description or schema, leaving half the parameters undocumented.

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 ('Explain') and resource (the LaserData documentation organisation) and explicitly distinguishes itself from keyword-based siblings with 'This is a guided map, not a keyword search.' An agent can separate it from search_docs, list_docs, and 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 clear triggering conditions: where docs live, which reading path fits a goal, which areas look thin. It also implicitly excludes search-style use via 'not a keyword search,' though it does not name search_docs as the alternative, so routing still requires a small inference.

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

extract_code_snippetsB
Read-only

Return an inventory of fenced code snippets from the documentation.

The result includes the doc key, title, heading, language, line number, source URL, and code. Use this for snippet verification and docs CI design.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
languageNo
max_snippetsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds the shape of the result (doc key, title, heading, language, line number, source URL, code), which is useful context, though it largely duplicates the output schema rather than disclosing behavior like filtering or pagination limits.

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 short sentences, front-loaded with the core purpose followed by the use case. The enumerated return fields are somewhat redundant given an output schema exists, but the overall size is tight and well-ordered.

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 not be spelled out. The gaps are the three undocumented parameters and the lack of disambiguation from find_examples. Adequate but with clear holes for a filtering tool.

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% across three parameters (key, language, max_snippets), so the description must compensate and does not. It never explains that key scopes to a doc, that language filters snippets, or what max_snippets caps; it only references language as a returned field, not as a filter.

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+resource: 'Return an inventory of fenced code snippets from the documentation.' An agent can tell this extracts code snippets. However, it does not differentiate from the sibling find_examples, which plausibly overlaps, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this for snippet verification and docs CI design' gives an intended use case, but there is no when-not guidance and no mention of alternatives such as find_examples or get_doc. Usage is implied rather than disambiguated.

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

find_examplesA
Read-only

Find code examples in the LaserData documentation by topic and language.

Use this when a user asks for runnable examples, Laser SDK examples in Python, TypeScript or Rust, agent or session samples, or CLI commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
languageNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description is not obligated to restate that. It adds no behavioral context beyond purpose: nothing about result ranking, whether the corpus is the live docs index, or what happens with empty inputs. Adequate but thin given how little the annotations leave unstated.

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, no filler, with the core purpose front-loaded before the usage triggers. Every clause carries information the agent needs.

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 not be explained, and the annotations cover safety. What is missing is any guidance on parameter behavior: the query and language defaults are empty strings and max_results defaults to 8, none of which is documented in either the schema or the description.

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?

Schema description coverage is 0%, so the schema alone tells an agent nothing about the three parameters. The description partially compensates by mapping query to "topic" and by enumerating language values (Python, TypeScript, Rust), which is genuinely useful since the schema has no enum. It says nothing about max_results or the empty-string default for query, so the compensation is incomplete.

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 opens with a specific verb and resource ("Find code examples in the LaserData documentation") and adds two scoping facets: topic and language. It is easy to distinguish from list_docs or get_doc, though it never explicitly contrasts itself with the closest sibling, extract_code_snippets, so the boundary between them must be inferred.

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?

It gives an explicit trigger clause ("Use this when a user asks for runnable examples, Laser SDK examples in Python, TypeScript or Rust, agent or session samples, or CLI commands"), which covers several realistic request shapes. It stops short of stating when not to use it or naming an alternative tool for overlapping needs.

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

get_docA
Read-only

Retrieve the full text of one LaserData documentation page.

Use list_docs to discover valid keys such as 'laser-sdk/quickstart', 'laser-sdk/memory' or 'python/laser_sdk/Laser'.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/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 a closed-world hint, so the safety profile is covered. The description adds that the whole page text is returned (as opposed to snippets or summaries), but says nothing about behavior on invalid keys, rate limits, or pagination. Adequate but thin given annotations carry the main burden.

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 short sentences, zero filler, with the core action front-loaded and the key-discovery hint immediately after. The example keys are the only elaboration and they earn their space by illustrating the parameter format.

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?

For a single-parameter read tool with an output schema already present, the description need not explain return values. It covers purpose, key format and how to obtain valid keys; the only minor gap is explicit routing versus sibling search/list tools.

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 by showing concrete key shapes: 'laser-sdk/quickstart', 'laser-sdk/memory', 'python/laser_sdk/Laser'. This communicates the path-like namespace convention and points to list_docs as the authoritative key source, which is meaningfully more than the bare string schema offers.

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 and resource: 'Retrieve the full text of one LaserData documentation page.' The scope word 'one' contrasts implicitly with the list/search siblings, though the description never explicitly names what it is not (e.g., not a multi-page search like search_docs). Clear, but sibling differentiation is left partly 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides actionable context by directing the agent to list_docs to discover valid keys before calling, which is a concrete prerequisite step. It stops short of explicit when/when-not selection rules against alternatives such as search_docs or extract_code_snippets, so no exclusions are given.

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

list_docsA
Read-only

List every LaserData documentation page, organised by section.

The corpus has two halves. 'website' is the pages of docs.laserdata.com, covering Laser SDK and LaserData Cloud, keyed by site path (laser-sdk/memory). 'python-api' is the Laser SDK Python surface from its type stub, keyed under python/. Pass source to see one alone; the default lists all.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine context the annotations don't: the corpus is split into 'website' and 'python-api' halves with different keying schemes ('laser-sdk/memory' site paths vs 'python/' prefixes), which shapes what the agent will actually receive.

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 the corpus model, then the parameter behavior. Every sentence carries weight, though the keying examples ('laser-sdk/memory', 'python/') add length that could be trimmed without much loss.

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 documentation is not required, and the description supplies the corpus taxonomy and valid source values an agent needs. It does not mention list size or pagination behavior, which is the only meaningful remaining gap for an enumeration tool.

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% and the source property has no enum, so the description carries the full burden — and it does: it names the two values ('website', 'python-api') and explains that omitting source defaults to listing all. That is exactly the missing semantics 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 and resource ('List every LaserData documentation page, organised by section') and immediately scopes it with the two-halves corpus model. The enumeration nature implicitly separates it from single-item siblings like get_doc, but no sibling is named explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final line gives real guidance on the source parameter ('Pass source to see one alone; the default lists all'), which tells the agent how to narrow the listing. However, it never says when to prefer this tool over search_docs, find_examples, or get_related_docs, so usage relative to alternatives is only implied.

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

refresh_docsA
Read-only

Re-fetch the documentation corpus, bypassing the seven-day cache.

When LASER_DOCS_FILE points at a local llms-full.txt this is a no-op, since the local file is always read fresh.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, open-world), so the bar is lower. The description adds real behavioral context the annotations don't: the seven-day cache is bypassed and the operation is a no-op under a specific configuration, which is exactly the kind of idempotency detail an agent needs.

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, zero waste. The core action is front-loaded, and the caveat follows immediately. Every sentence earns its place.

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 and no parameters, the description needn't explain return values. It covers the action and its main caveat; the only minor gap is no explicit trigger for when a refresh is warranted.

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 takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies for a parameterless tool.

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 and resource: 'Re-fetch the documentation corpus,' which is clearly distinct from the read-oriented siblings (list_docs, get_doc, search_docs). It does not explicitly name or differentiate from any sibling, but the refresh action is unambiguous.

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?

Provides a genuine when-not condition: the call is a no-op when LASER_DOCS_FILE points at a local llms-full.txt. This helps an agent decide whether calling is worthwhile, though no alternative tool is named for the stale-cache scenario.

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

search_docsA
Read-only

Search the LaserData documentation for a term or phrase.

Searches the whole corpus: the pages of docs.laserdata.com, covering Laser SDK and LaserData Cloud, and the Laser SDK Python surface. Each result says which corpus it came from, because the guides say how Laser SDK is meant to be used and the API says what is actually callable. Set source to 'website' or 'python-api' to search one alone.

Prefer this over answering Laser SDK questions from memory: the SDK moves quickly and the docs are the current truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
sourceNoall
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: results are labeled by corpus, guides vs API differ in kind ('how the SDK is meant to be used' vs 'what is actually callable'), and the docs are positioned as more current than memory.

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 and scope before the usage advice; sentences are clean and purposeful. The corpus rationale paragraph is slightly expansive but each clause (corpus labeling, source filtering) carries information an agent needs, so little waste remains.

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 needn't be detailed, and annotations carry the safety profile, so the description's job is scope and selection — both covered well. The only shortfall is the undocumented max_results parameter, a minor gap for an otherwise complete definition.

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?

Schema description coverage is 0%, so the description must compensate. It documents the semantic values for source ('website' or 'python-api', with the implied default of searching both) but says nothing about max_results or its default of 8, leaving one of three parameters undocumented everywhere. Partial compensation justifies the baseline 3.

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 (search) and resource (LaserData documentation) and precisely scopes it: the whole corpus spanning docs.laserdata.com pages and the Laser SDK Python surface. The whole-corpus scope implicitly separates it from page-level siblings like get_doc and list_docs, letting an agent pick it without opening another 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 explicit context for use ('Prefer this over answering Laser SDK questions from memory: the SDK moves quickly and the docs are the current truth') and explains how to narrow scope via the source value. It never explicitly names or excludes a sibling tool, so it's clear guidance rather than full when/when-not routing.

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. 8 tool updatesv0.1.0
    • First observedexplain_doc_map
    • First observedextract_code_snippets
    • First observedfind_examples
    • First observedget_doc
    • First observedget_related_docs
    • First observedlist_docs
    • First observedrefresh_docs
    • First observedsearch_docs

TDQS

A4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct roles: list/get/search/related/map/refresh are all separable, and the doc-key vs keyword distinction is explained. The one soft spot is the trio search_docs, find_examples, and extract_code_snippets, which all surface documentation content including code; descriptions do differentiate them (topic/language search vs. snippet inventory with CI metadata), but an agent could still hesitate between them.

Naming Consistency5/5

Every tool follows a uniform snake_case verb_noun pattern (list_docs, get_doc, search_docs, find_examples, extract_code_snippets, get_related_docs, explain_doc_map, refresh_docs). No camelCase mixing or inconsistent verb styles; the naming is predictable throughout.

Tool Count5/5

Eight tools is well-scoped for a read-only docs server, covering discovery, retrieval, search, examples, snippets, relatedness, guidance, and cache refresh. Each tool has a defensible purpose and none feels redundant or filler.

Completeness5/5

The surface covers the full read-only docs lifecycle: listing the corpus, fetching a page, searching, finding runnable examples, extracting snippets, traversing related pages, orienting via a map, and refreshing the cache. No write operations are expected for a documentation source, so there are no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers