helix-mcp-knowledge
Helix MCP Knowledge is an MCP server for read-only, evidence-based retrieval across BMC Helix documentation and local project knowledge, separate from live-environment actions.
Search documentary evidence with
search_docs, filtering by product, version, document type, project, and source scope, with ranked results and provenance.Expand document sections with
get_section, returning the selected chunk plus bounded adjacent chunks.List available BMC products and versions with
list_productsandlist_versions, showing configured vs indexed readiness.List registered projects with
list_projectsand manage the process-local active project viaget_active_projectandset_active_project; explicit project IDs are also supported.Check release/update status with
get_update_status, optionally refreshing from GitHub without installing anything.Inspect official and project synchronization/index readiness with
get_sync_status, including progress, counts, and cancellation state.All MCP tools are local read-only operations; there is no tool for writing to a live Helix environment or modifying the corpus.
Provides evidence-based retrieval across the BMC Helix documentation ecosystem, with tools for searching, expanding, and managing indexed documentation for BMC Helix products and versions, including BMC Helix Innovation Suite/AR System, CMDB, ITSM, Digital Workplace, Business Workflows, and Discovery.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@helix-mcp-knowledgeSearch official BMC Helix docs for how to configure approval rules in ITSM 24.3"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
helix-mcp-knowledge
An MCP server for evidence-based retrieval across the BMC Helix documentation
ecosystem. It keeps documentary knowledge (helix-mcp-knowledge) separate from
live environment data (helix-mcp-gateway).
One autonomous Helix agent, two MCP servers
An autonomous Helix specialist needs two different kinds of evidence:
Knowledge answers what the applicable BMC and project documentation says, with product, version, project, source, and section provenance.
Gateway observes the authorized live environment and exposes governed operations under its own policy and approval controls.
The agent compares documentation with live state, distinguishes facts from inference, and acts only through the capabilities it has been granted.
Knowledge deliberately has no tool for changing a live Helix system. Its nine MCP tools search and expand local evidence, expose index readiness, and select only the process-local project context. See MCP tools for the complete contract. The Knowledge architecture diagram shows the ingestion and retrieval path, including optional local components. The joint agent architecture explains how one agent routes work through Knowledge and Gateway without merging their authority.
Related MCP server: Enterprise Knowledge MCP Server
Quick start from a checkout
uv sync --frozen --extra dev
uv run helix-mcp-knowledge init-db
uv run helix-mcp-knowledge status
uv run helix-mcp-knowledge serveThe repository and packaged configurations start with no product or private project
selected, so this sequence downloads no documentation. Use configure or the local
dashboard when you are ready to select an authorized product and version.
For a runnable, copyright-safe first answer, use the fictional project evidence case. It shows a lexical MCP search, section expansion, a source-and-version citation, and an explicit insufficient-evidence answer without downloading BMC content.
For a result-first walkthrough, run the CMDB reconciliation evidence demo. It provides an exact agent prompt, MCP calls, evidence matrix, acceptance checklist, and recording outline without redistributing BMC content.
For the first complete two-server workflow, use the integrated CMDB data-quality case. Knowledge establishes versioned documentary expectations, Gateway prepares a bounded synthetic DEV read, and the agent waits for explicit approval in a later turn before executing it.
The integrated controlled-update case adds one governed synthetic DEV write. Knowledge establishes the official and project authority chain; Gateway binds the exact proposal to a later approval, checks current state, applies once, and verifies the result. For a shorter, sanitized account of the validation and its evidence boundaries, see the two-server controlled-update case study.
Resource planning
The base server requires Python 3.12 or later with virtual-environment support on a supported WSL/Linux or native Windows host. OpenClaw is optional; HTTPS is needed when selected official documentation is synchronized. A new installation selects no products, downloads no documents or models, and uses SQLite/FTS5 lexical retrieval without Torch. No numeric minimum RAM or disk requirement for the base server has been validated across platforms and corpus sizes; source files, downloaded pages, and indexes grow with the selected corpus.
Mode | Disk planning | RAM and CPU planning | Basis and limits |
Base lexical search | No fixed published figure; SQLite/FTS5 and cached sources grow with the corpus. | No validated numeric minimum; no resident model service. | Required path. Start with no product selected, then index a bounded corpus before expanding it. |
Optional project-PDF OCR | Approximately 500 MiB estimated installation allowance. | CPU and memory are used only while scanned project PDF pages are indexed; no permanent OCR service. | Estimate shown before installation; not a measured retained footprint. Official BMC HTML and text-extractable PDFs do not use OCR. |
Optional semantic search | Approximately 5 GiB estimated first-install allowance plus corpus-dependent vector storage; retained size is not fixed. | Plan for approximately 4 GiB of RAM while enabled; vector creation can temporarily use more. | Dashboard planning estimates, not measured minima or installation caps. BGE-M3 and local Qdrant are absent from the base install. |
Optional result reranking | Approximately 5 GiB estimated setup allowance; a WSL reference installation retained about 3.3 GB. | WSL reference: about 1.8 GB of RAM while loaded and roughly 10–16 seconds per CPU search with 10 candidates. | Setup allowance versus measured WSL reference; native Windows and other CPUs may differ. No vectors are created. |
Optional components run locally rather than calling a hosted inference API; the costs are download time, disk, memory, and CPU latency, not a server-side model subscription. Setup allowances are planning figures, not guaranteed maxima. Disabling a model service releases its active memory but retains downloaded files until the separate removal action is used. On a resource-constrained host, keep semantic search and reranking disabled and evaluate lexical retrieval first.
Documentation paths
Install: client-neutral installation, WSL/Linux, native Windows, and MCP client integration.
Operate: dashboard, synchronization, projects, updates, and diagnostics.
Understand the design: architecture and component flow.
Use both servers: agent architecture: Knowledge + Gateway.
Handle security: security policy and private vulnerability reporting.
Develop: development setup and evaluation and contribution rules.
Scope and limits
Knowledge retrieves documentary evidence; it does not inspect or change a live
Helix environment. Gateway provides live observation and governed actions as a
separate MCP server. Knowledge currently uses stdio, has no embedded LLM or
full RBAC, and confines the official crawler to selected product/version,
domain, path, and page-count limits. Semantic search, OCR, and reranking are
optional; SQLite/FTS5 remains the base retrieval path. See the
architecture reference
for the technical boundaries.
Release status
Version 1.31.8 runs lexical SQLite/FTS5 retrieval by default and makes OCR, semantic search, and reranking opt-in. See the detailed release status for the complete capability inventory.
Supported official catalog
Every installation can enable any subset of products and retain more than one version of the same product.
Product | Selectable versions |
BMC Helix Innovation Suite / AR System | 26.3, 26.2, 26.1 |
BMC Helix CMDB | 26.3, 26.2, 26.1 |
BMC Helix ITSM | 26.3, 26.2, 26.1 |
BMC Helix Digital Workplace | 26.3, 26.2, 26.1 |
BMC Helix Business Workflows | 26.3, 26.2, 26.1 |
BMC Helix Discovery (SaaS) |
|
Discovery uses current because BMC maintains one continuously updated SaaS
documentation space rather than separate historical trees. The numeric product
spaces are version-bound and can coexist in the local index.
Product metadata is data-driven rather than hard-coded into the runtime. New
catalog revisions are published as immutable catalog-v<revision> prereleases,
verified with SHA-256, cached atomically, and exposed in the dashboard. See
BMC catalog maintenance for detection, validation,
review, publication, and new-product procedures.
Distributed installation
A clean installation creates a per-user workspace with no products selected and
no documentation download. OpenClaw is optional; other MCP clients can register
the stable stdio launcher. Follow the client-neutral installation guide,
the WSL/Linux guide, the native Windows guide,
or the MCP client integration guide.
Local dashboard
The dashboard is a local administration interface for source selection, project registration, synchronization, optional components, and update review. It is not an agent-callable MCP tool. See operations.
Server updates
Managed updates are verified and activated transactionally; installation requires local administrator confirmation and is not exposed through MCP. See operations.
Development setup
Use the development guide for checkout commands, optional local components, and retrieval evaluation. Follow CONTRIBUTING.md for publication-safe examples and quality checks.
Ingestion
Official and project sources are ingested only from their authorized roots, with structural chunking and provenance retained in SQLite. Scanned project PDFs can use optional OCR. See operations and the architecture reference.
Automatic official synchronization
Official synchronization is bounded to selected product/version sources and continues without blocking the first MCP startup. See operations.
MCP tools
Tool | What it returns | Scope and access | Effect |
| Ranked documentary evidence with source and version provenance. | Official BMC documentation, the effective or explicitly requested project, or both via | Local read-only search. |
| A selected active chunk and bounded adjacent chunks from its document. | Official evidence or the effective or explicitly requested project; a chunk from another project is rejected. | Local read-only retrieval. |
| Configured or indexed BMC products and their readiness flags. | Catalog and index metadata; no document text. | Local read-only lookup. |
| Configured or indexed versions for one BMC product. | Catalog and index metadata for the requested product; no document text. | Local read-only lookup. |
| Registered project IDs, names, status, and configured product versions. | Project metadata across registered projects, optionally including archived projects; no document content. | Local read-only lookup. |
| The project selected in this | Process-local selection only; it does not report the configured default project. | Local read-only lookup. |
| The newly selected project, or no project when passed | A registered project in this | Changes process-local context only; no corpus or Helix write. |
| Cached release status, or a fresh status when | Public GitHub release metadata when refreshed; no corpus or private-project content. | Read-only status check; refresh may contact GitHub but never installs an update. |
| Sanitized official index and synchronization readiness, plus bounded project status. | Official corpus and only the active or explicitly requested project; no raw errors, paths, or document text. | Local read-only status check; does not start synchronization. |
Knowledge has no MCP tool for writing to a live Helix environment. Its MCP tools also do not administer the source corpus, start synchronization, or install a release; those operations belong to separate local administration workflows.
list_products and list_versions combine configured selections with content
that already has queryable evidence. list_products distinguishes configured
from indexed; indexed remains false during the first synchronization and
becomes true when active evidence exists.
get_sync_status summarizes the official corpus, selected products, indexed
totals, next run, elapsed time, safe progress aggregates, cancellation state, and
non-fatal notice/error counts. It exposes only the active or explicitly requested
project and never returns raw errors, source paths, owner IDs, or process IDs.
MCP acceptance test
The optional stdio E2E suite uses synthetic, temporary evidence and never
modifies production data. See the development guide.
Installation diagnostics
Use the documented smoke checks and troubleshooting steps in operations.
Local registration in Codex
Register the stable launcher, then restart the client to load the MCP server. See the installation guide and MCP client integration guide.
Active project and MCP v2
V1 uses stdio; each client has its own process-local active-project context.
An explicit project_id still takes precedence. See
operations and the
architecture reference.
Configuring projects
Private projects are registered locally and never included in a generic release. Queries cannot cross into unrelated projects. See operations.
Storage design
SQLite holds canonical text, chunks, metadata, and FTS5; optional Qdrant holds vectors and filter metadata only. See the architecture reference.
Contact and support
Use GitHub Issues and choose the matching bug, feedback, or support form for a sanitized public report.
Read CONTRIBUTING.md before proposing a significant change.
Report security issues through the private process in SECURITY.md.
Never include credentials, private endpoints, organization or customer names, private document titles, paths or content, database copies, indexed chunks, or raw diagnostics in a public issue.
License, third-party content, and trademarks
Original project code and repository-authored documentation are available under the MIT License.
The MIT License does not apply to third-party material retrieved, downloaded, cached, indexed, or supplied to an installation. BMC documentation and software remain governed by BMC's applicable terms, and private project documents remain governed by their respective owners and agreements. This repository, its wheel, and its releases do not include downloaded BMC documentation, private project documents, or derived indexes. Users are responsible for ensuring that they are authorized to access and process every configured source.
This is an independent project. It is not affiliated with, sponsored by, or endorsed by BMC Software, Inc. BMC, BMC Helix, and related product names are trademarks of their respective owners.
Available Tools
9 toolsget_active_projectARead-onlyIdempotent
Return the project selected in this stdio server instance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds non-derivable context: the returned project is scoped to this particular stdio server instance, not a global or shared selection. That is a meaningful behavioral detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the scope qualifier front-loaded and no wasted 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?
An output schema exists, so return values need not be described. The one remaining gap is the edge case where no project is selected in the instance — the description does not say what happens then.
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 takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.
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+resource ('Return the project selected') with a clear scope qualifier ('in this stdio server instance'). It is distinguishable from list_projects and set_active_project by naming the single selected project, though it does not explicitly name those siblings.
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 scope phrase ('in this stdio server instance') rather than stated. There is no explicit when-to-use, when-not-to-use, or pointer to the sibling set_active_project/list_projects for the opposite operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sectionBRead-onlyIdempotent
Return a selected chunk and adjacent active chunks from the same document. Project sections require that project to be active or passed explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| chunk_id | Yes | ||
| project_id | No | ||
| context_after | No | ||
| context_before | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| chunks | Yes | |
| document_id | Yes | |
| selected_chunk_id | Yes |
TDQS
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 covered. The description adds genuine context about activeness scoping — both which chunks are returned ('active') and the project-activation prerequisite — but says nothing about error behavior when a chunk isn't active or how many chunks come back.
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 tight sentences with the core action front-loaded and the scoping constraint second. No filler, though the activeness rule could be phrased slightly more explicitly.
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 described, and annotations cover the safety profile. Still, for a 4-parameter chunk-retrieval tool with zero schema descriptions, the definition leaves the context-window parameters and the meaning of 'active' undefined, which an agent may need.
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% across 4 parameters, so the description carries the full burden and only partially delivers: it explains the project_id activation rule and implies adjacency via 'adjacent' chunks, but never names context_before/context_after or their default of 1, and gives no meaning for chunk_id beyond the obvious.
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 ('Return a selected chunk and adjacent active chunks from the same document'), which is more precise than a bare name restatement. It contrasts implicitly with search_docs by being a single-chunk retrieval, though it never names that sibling to sharpen the distinction.
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 gives a real precondition ('project sections require that project to be active or passed explicitly'), which tells the agent when project_id matters. It stops short of stating when to prefer this over search_docs or other siblings, so usage is implied rather than instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sync_statusBRead-onlyIdempotent
Report official index readiness and synchronization state; project details are limited to the explicitly requested or active project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| project | No | |
| official | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new behavioral context: results are scoped to the explicitly requested project or the active project, which tells the agent how the query is implicitly filtered. It stops short of noting freshness, caching, or cost.
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?
A single compact sentence with the core purpose front-loaded before the scoping qualifier. No filler, though the semicolon clause is slightly terse and would read better as two clauses.
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 not be described, and annotations cover the safety profile, so the remaining burden is small. Still, the description omits the sibling differentiation an agent needs and leaves the sole parameter's fallback semantics implicit.
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% and the single parameter (project_id, optional, default null) is undocumented in the schema. The description partially compensates by implying the project falls back to the active project when not explicitly requested, but it never names the parameter or states the null fallback explicitly.
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 ('Report') and resource ('official index readiness and synchronization state'), so the agent knows it is a status-read tool. However, it never distinguishes itself from the sibling get_update_status, which plausibly reports a closely related status, leaving the 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?
There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. The clause about project scope hints at invocation behavior but does not tell the agent when this tool is the right choice over get_update_status or get_active_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_update_statusARead-onlyIdempotent
Return the cached release status. Pass refresh=true to perform a read-only GitHub check; this tool never installs an update.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| status | Yes | |
| checked_at | No | |
| repository | Yes | |
| release_url | No | |
| published_at | No | |
| next_check_at | No | |
| latest_version | No | |
| current_version | Yes | |
| update_available | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful context beyond them: the default result is cached, refresh=true performs a network check, and critically it explicitly disclaims installing an update. This adds boundary information the annotations do not convey.
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 short sentences, zero filler, with the core purpose front-loaded and the misleading-interpretation guard ('never installs an update') placed last for emphasis. Every clause earns its place.
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 the description covers the cache-vs-refresh behavior and the no-install boundary. It stops short of noting failure modes of the GitHub check or cache staleness, which would round it out for an open-world 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%, so the description must compensate, and it does: it explains what refresh=true actually does (a read-only GitHub check) rather than merely restating the boolean. It does not cover the default/reset semantics of refresh=false beyond the word 'cached', but that is a minor gap.
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 ('Return the cached release status'), which is unambiguous and self-contained. None of the sibling tools (projects, sync status, docs, products) overlap, so no explicit sibling differentiation is required, but the description also doesn't need to name one.
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: the default call reads the cache, and passing refresh=true triggers a live GitHub check. There is no explicit 'use this when...' guidance, no precondition or prerequisite information, and no statement of when the cached value is stale enough to warrant a refresh.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsARead-onlyIdempotent
List configured or indexed BMC products; indexed is false until searchable evidence exists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| products | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description adds genuine behavioral context beyond that: the 'indexed is false until searchable evidence exists' clause explains a state transition the agent would otherwise have to infer from the data.
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?
A single front-loaded sentence with no filler, which is appropriate for a no-argument list tool. The trailing clause about 'indexed is false' is compressed to the point of mild ambiguity about which attribute is being described.
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, the description need not document return values, and annotations plus a zero-parameter schema leave little else to explain. What remains slightly thin is the meaning of 'configured' versus 'indexed' and any ordering or filtering of results, but the core is complete.
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 takes no parameters, so there is nothing for the description to clarify; baseline 4 applies. Schema coverage is 100% with an empty properties object, confirming no hidden inputs.
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 ('List ... BMC products') and adds a meaningful distinction between configured and indexed states. It does not name or contrast any sibling tool, but the resource (products) is disjoint from the sibling set (projects, docs, versions), so differentiation is largely inherent.
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 listing intent implies when to call it, and no sibling tool competes for the same resource, so the implied usage is reasonably unambiguous. However, there is no explicit statement of when to use this versus checking sync/update status, nor any prerequisite or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsBRead-onlyIdempotent
List selectable projects and their BMC product versions without document content.
| Name | Required | Description | Default |
|---|---|---|---|
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile needs no restating. The description adds one genuinely useful scoping fact — document content is excluded — but says nothing about pagination, ordering, or what 'selectable' means operationally.
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 sentence, front-loaded with the verb and the primary resource, with the scope constraint appended. Zero waste.
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?
Output schema exists, so return-value explanation is not required, and annotations cover the safety profile. The remaining gap is the undocumented include_archived parameter, which leaves the agent guessing about archived-project behavior despite otherwise adequate context.
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 single parameter include_archived has only a default value and no prose. The description never mentions archived projects, so it fails to compensate for the coverage gap in the one place it could add value.
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 (projects), and adds scope qualifiers: 'selectable' and 'their BMC product versions without document content'. This differentiates it reasonably from list_products/list_versions by tying versions to projects, though it does not explicitly name the siblings it is not.
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?
'Selectable' weakly implies this is a precursor to set_active_project, but there is no explicit when-to-use, no prerequisites, and no named alternative (e.g., get_active_project for the current selection). The agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsARead-onlyIdempotent
List configured or indexed versions for one canonical or aliased BMC product; indexed is false until searchable evidence exists.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| product | Yes | |
| versions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's only added behavioral content is the meaning of the 'indexed' state ('false until searchable evidence exists'). That is useful context beyond the annotations, but it is terse and says nothing about pagination or result 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?
A single front-loaded sentence with no filler; every clause (scope, product form, indexed semantics) contributes. The semicolon-joined second clause is slightly dense but not 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?
For a one-parameter list tool with rich annotations and an output schema (so return values need not be explained), the description covers purpose and the one non-obvious state flag. Only usage guidance and pagination behavior are absent, which is a minor gap at this 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?
Schema description coverage is 0% and the single 'product' parameter is bare in the schema, so the description carries the load. It does add real semantics by stating the value may be a 'canonical or aliased' product reference, though it gives no format examples for either form.
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 gives a specific verb ('List') and resource ('versions') scoped to 'one canonical or aliased BMC product,' which is clearly distinct from siblings like list_products and list_projects. It does not explicitly route an agent away from any sibling, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer it should call this when it has a product and wants its version list. There is no statement of when NOT to use it and no named alternative, so it lands at implied rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsBRead-onlyIdempotent
Retrieve documentary evidence from official BMC knowledge and the effective project. all_relevant never searches unrelated projects.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_k | No | ||
| product | No | ||
| version | No | ||
| project_id | No | ||
| source_scope | No | all_relevant | |
| document_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| context | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds the useful scoping behavior that all_relevant excludes unrelated projects, but omits result ranking, top_k default behavior, and how product/version filters interact.
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 short sentences with the scope constraint front-loaded and no filler. 'Documentary evidence' is slightly jargonistic but the text is efficiently sized for the schema.
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 described. But with 7 parameters at 0% schema coverage and many enum values left unexplained, the description does not supply enough for an agent to filter confidently across product/version/project.
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% across 7 parameters, so the description carries the burden and largely fails to. It only illuminates the all_relevant value of source_scope and says nothing about query, top_k, product, version, project_id, or document_types.
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?
Uses a specific verb ('Retrieve') and resource ('documentary evidence') and scopes it to official BMC knowledge plus the effective project, which no sibling (list_projects, get_section, etc.) duplicates. However, it never names the tool as a ranked search or explains what a query actually returns, leaving the retrieval mechanism implicit.
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 only guidance is a narrow caveat that 'all_relevant never searches unrelated projects', which clarifies one enum value rather than when to choose this tool over siblings. There is no explicit when-to-use, when-not-to-use, or alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_projectAIdempotent
Select a project in this stdio server instance. Pass null to return to official-only.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=true and destructiveHint=false; the description is consistent with those and adds genuinely new context — that the selection is scoped to this stdio server instance and that null reverts to 'official-only' mode. It stops short of saying whether the selection persists across calls or what the response contains, but the added state model is valuable.
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 short sentences, front-loaded with the action and its scope, with the null-reset behavior immediately following. 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?
An output schema exists, so return values need not be described. For a simple one-parameter stateful setter, the description covers the action, its scope, and the reset path. Minor gaps remain around persistence and where valid project_id values come from.
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% and the schema only declares project_id as a nullable string defaulting to null. The description compensates by explaining the null case ('return to official-only'), which the schema does not convey. It leaves open what a valid non-null project_id looks like (presumably an ID from list_projects), so not a 5.
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 ('Select a project') and adds the scoping context ('in this stdio server instance'), which distinguishes it from the read-only siblings list_projects and get_active_project. It's clear what the tool does, though it doesn't explicitly name the sibling it is not.
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 gives one concrete usage rule — 'Pass null to return to official-only' — which tells the agent how to reset state. However, it never says when to call this versus list_projects/get_active_project, nor what prerequisites exist before selecting a project. Usage is implied rather than routed.
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.
9 tool updates
v1.29.0- First observed
get_active_project - First observed
get_section - First observed
get_sync_status - First observed
get_update_status - First observed
list_products - First observed
list_projects - First observed
list_versions - First observed
search_docs - First observed
set_active_project
TDQS
Scored across 9 tools
Most tools have clearly distinct roles (active-project management, status checks, search, section retrieval, and listing). The main ambiguity is among the three list_* tools—list_projects, list_products, and list_versions—which describe related catalog concepts and could be confused since list_projects also mentions product versions, but the descriptions do provide enough distinction to disambiguate.
All nine tools follow a consistent snake_case verb_noun pattern (list_projects, get_active_project, set_active_project, get_update_status, get_sync_status, search_docs, get_section, list_products, list_versions). The verbs are also predictable and semantically appropriate (list_ for enumeration, get_ for retrieval, set_ for mutation).
Nine tools is well-scoped for a knowledge/retrieval server covering project selection, product/version discovery, status reporting, and document search/retrieval. Each tool appears to earn its place without redundancy.
The surface covers discovery (projects, products, versions), configuration (set/get active project), status, search, and section-level navigation, which is a coherent read-oriented lifecycle. Minor gap: there is no tool to enumerate documents within a project or fetch an entire document, so users must rely on search_docs plus get_section chunking.
Maintenance
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
Make your knowledge agent-ready. One MCP endpoint, 5 connectors, 3 search modes.
- KumbukaOAuthai.kumbuka
Governed, auditable knowledge your team curates for its AI assistants, self-hostable
Search your knowledge bases from any AI assistant using hybrid RAG.
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP-native evidence retrieval platform that ingests source material, builds lexical and vector indexes, performs hybrid retrieval, and returns structured evidence packages for AI assistants.88Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides read-only, citation-backed semantic search and retrieval-augmented generation over enterprise documents via standardized MCP tools, with local embeddings for privacy.-
- FlicenseNot gradedqualityBmaintenanceEnables traceable, version-aware question answering over product documentation, combining vector and graph retrieval to return cited evidence and support agentic workflows.-
- FlicenseAqualityCmaintenanceEnables semantic search and retrieval over a locally supplied copy of Lemma's documentation, providing ranked excerpts and full-text chunk access via read-only MCP tools without calling live banking APIs.2-