v8help-mcp
v8help-mcp provides tools to search, read, navigate, rebuild, and configure a local 1C:Enterprise help index.
Full-text search over help pages with filters by kind/section, result limit, relevance scores, and snippets.
Read a page by filename/id, or fetch 2–10 pages at once with max_chars; long articles are chunked and can be read chunk-by-chunk.
Browse help hierarchy/TOC: section summaries or top-level page groups with counts.
Find related pages via outgoing and incoming links.
Rebuild the index from .hbk files asynchronously: returns a job_id; supports source/lang selection, forced rebuild, cleanup, chunk_size, and chunk_overlap.
Check asynchronous build status/progress via job_id.
Run autodiscovery for the 1C platform bin directory, local embedders (LM Studio/Ollama), and index state.
Read and update effective config, including search backend (fts/hybrid/vectors), search limits, build/chunking options, embedder endpoints/models, bin_dir, lang, and books.
Allows using Hugging Face Inference API for cloud-based embeddings, enabling vector and hybrid search without running a local embedding server.
Allows using Ollama as a local embedding provider for vector and hybrid search, enabling semantic search alongside full-text search.
Supports OpenAI-compatible embedding APIs for vector and hybrid search, allowing compatible local or cloud embedding services to be used.
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., "@v8help-mcpfind documentation for СтрНайтиПоРегулярномуВыражению"
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.
v8help
MCP-инструмент и CLI для чтения, индексации и поиска по файлам справки
1С:Предприятие (.hbk).
Извлекает HTML-страницы из V8-контейнера справки, конвертирует их в Markdown, строит полнотекстовый индекс (SQLite FTS5) и отдаёт поиск через MCP-сервер (stdio или streamable-http) или командную строку.
Возможности
Самодостаточная пересборка корпуса из
.hbkодной командойbuild(распаковка → консолидация → индексация).Чтение контейнеров
Format15с корректным парсингом TOC (включая свободные блоки, которые ломают штатныйonec_dtools.read_entries).Единый конвертер HTML → Markdown: заголовки по
V8SH_pagetitle(синтакс- помощник), имена по пути архива (язык запросов и др.), переписывание ссылокv8help://...в относительные.md.Полнотекстовый поиск FTS5 с лексическим расширением (разбиение PascalCase-идентификаторов, например
СтрНайтиПоРегулярномуВыражению).Ранжирование FTS с весами полей
title/description/body(9/3/1): совпадение в заголовке или в секции «Описание» метода весомее совпадения в теле.Чанкование длинных статей (настраиваемые
chunk_size/chunk_overlap) с метаданными чанка (родитель, соседние чанки) — единицы поиска и чтения.Векторный и гибридный поиск (FTS + эмбеддинги, RRF-фьюжн) через OpenAI-совместимый API эмбеддингов (LM Studio, Ollama, Hugging Face).
Асинхронная сборка через MCP:
buildвозвращаетjob_idсразу, прогресс — черезbuild_status; поиск при этом не блокируется (атомарная подмена БД).Автодискавери: каталог
binплатформы (реестр Uninstall/ФС), установленный 1C:EDT и доступные эмбеддеры на localhost-портах; настройка через MCP (config_get/config_set).Справка по командной строке 1C:EDT: если найден
1cedtcli, сборка добавляет статьи по режимам запуска, всем командам и кодам возврата (префиксedtcli__, разделedt).
Related MCP server: onec-meta-mcp
Требования
Python 3.11+
Установленная платформа 1С:Предприятие (каталог
binс.hbk-файлами) — нужна только для пересборки индекса; для поиска достаточно готовой БД (см. «Готовые индексы»).(опционально) эмбеддер для векторного поиска — LM Studio, Ollama или Hugging Face.
Установка
Локальная установка
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -e .Установка регистрирует два консольных скрипта: v8help (CLI) и
v8help-mcp (MCP-сервер).
Установка в Docker
Готовый контейнер с HTTP-интерфейсом (streamable-http), БД на volume и опциональной авто-загрузкой индекса — см. Запуск в Docker.
Быстрый старт
copy v8help.example.toml v8help.toml # Windows (Linux/macOS: cp)
# укажите bin_dir своей платформы в v8help.toml
v8help build # собрать индекс (несколько минут)
v8help search "регулярному" # поискДля векторного/гибридного поиска настройте эмбеддер (см. Эмбеддинги).
Документация
Использование: CLI и MCP — все команды, параметры и инструменты.
Конфигурация —
v8help.toml, ключи, неймспейсы.Эмбеддинги и гибридный поиск — LM Studio / Ollama / HF.
Запуск в Docker — контейнер, volume, env, инициализация БД.
Разработка — сборка, тесты, структура кода.
Лицензия
MIT — см. LICENSE.
Благодарности
Конвертер HTML → Markdown портирован из hbk-to-md.
Available Tools
9 toolsbuildBuildA
Пересобрать индекс: распаковка .hbk -> консолидация md-корпуса -> индексация.
Выполняется асинхронно: возвращает job_id сразу, результат и прогресс — через build_status. Может занять минуты.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Язык: ru/en (по умолчанию из конфига). | |
| force | No | Пересобрать даже если индекс актуален. | |
| cleanup | No | Удалить corpus после индексации. | |
| sources | No | Источники для сборки (по умолчанию все из конфига). | |
| chunk_size | No | Целевой размер чанка в символах (по умолчанию 1500). | |
| chunk_overlap | No | Перекрытие соседних чанков в символах (по умолчанию 200). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key behavior: asynchronous execution, immediate job_id return, progress/result via build_status, and possible multi-minute duration. It omits the destructive/overwrite nature of a rebuild and any resource or concurrency constraints, which is a notable gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the pipeline, then the async contract and duration. Every sentence earns its place and there is no repetition.
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 an async pipeline tool with an output schema covering the job_id return, the description supplies the essential execution model, timing, and status-routing. It would be fully complete with a note on overwriting the existing index and any permission requirements, but the core is present.
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 100%, so all six parameters (lang, force, cleanup, sources, chunk_size, chunk_overlap) are documented in the input schema. The description adds no parameter-level detail, so the baseline of 3 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?
The description names a specific verb and resource ('rebuild the index') and even itemizes the pipeline stages (.hbk unpack -> md-corpus consolidation -> indexing). It is clear what the tool does, though it never states what it is not for relative to siblings like search or discover.
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?
It implies the tool is used to (re)build the index and explicitly routes status/progress checks to the sibling build_status. However, it never states when a rebuild is warranted versus alternatives, nor when not to use it, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_statusBuild StatusA
Статус асинхронной сборки по job_id (running/done/error + прогресс).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Идентификатор job из build. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the operation is async and that the result surface includes running/done/error plus progress, but it says nothing about permissions, whether state is retained after completion, or timeout/expiry behavior for job_ids.
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 that front-loads the operation, the input (job_id), and the observable outcomes. Nothing is redundant and nothing is padded.
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, non-nested status tool with an output schema present, the description covers what is needed to invoke it and even previews the state values. Minor gaps in workflow placement (when/how often to poll) keep it from a 5, but the return format does not need explaining given the output schema.
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 100% and the single job_id parameter is documented as the identifier coming from 'build'. The description adds no format, length, or lifecycle detail beyond that, so it neither compensates for nor extends the schema — the baseline 3 for high coverage 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?
The description states a specific verb+resource: it returns the status of an asynchronous build identified by job_id, and even enumerates the possible result states (running/done/error + progress). This clearly distinguishes it from the sibling 'build' tool that presumably initiates the job, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the word 'асинхронной' (asynchronous) and the required job_id signal that this is a polling tool used after a build has been started, but there is no explicit when-to-use statement, no guidance on polling cadence, and no named alternative. A caller must infer the workflow from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_getConfig GetB
Текущие настройки (эффективный конфиг): эмбеддер, search.backend, bin_dir, книги.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add one meaningful trait beyond the schema: that this is the *effective* (merged/computed) configuration rather than raw stored values. However, it says nothing about permissions, side effects, or freshness/caching behavior.
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 no waste, front-loading the purpose and then listing the covered fields. It is a fragment rather than a sentence, but every token earns its place for a zero-argument getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in prose, and for a zero-param read tool the description is nearly sufficient. The only real gap is that key fields are listed redundantly rather than using that space for usage context or the relationship to config_set.
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 the baseline is 4. The description adds no parameter meaning, but there is nothing for it to clarify on that dimension.
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 states a specific verb+resource: it returns the current (effective) settings and enumerates the key sections covered (embedder, search.backend, bin_dir, books). An agent can tell it is a read-only config reader, but it does not explicitly name the sibling config_set as its write counterpart, so it is clear without full sibling differentiation.
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 alternative is named even though config_set sits in the sibling list as the obvious counterpart. The read-vs-write intent is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_setConfig SetA
Изменить настройки и сохранить в v8help.toml (атомарно).
Ключи: search.backend (fts|hybrid|vectors), search.limit, search.max_chunks_per_page, build.cleanup, build.chunk_size, build.chunk_overlap, embedder.index/query.{model,base_url,api_key,dims, batch_size,embed_chars,threads}, bin_dir, lang, books.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Плоские ключи -> значения. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one important trait: the write to v8help.toml is atomic. However it omits mutation semantics that matter here, e.g. whether supplied values merge with existing config or replace it, and whether invalid keys are rejected or silently ignored.
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?
Extremely tight: the mutating action and its atomic persistence are front-loaded in the first clause, followed by a compact key reference list that earns its length by documenting valid configuration keys. No filler sentences.
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?
The output schema covers return values and the parameter is documented, so those needs are met. As a mutation tool with zero annotations, though, the description should say whether updates are partial/merge-style, whether invalid keys error, and whether a restart is needed for changes to take effect.
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 100%, so the single 'values' object parameter is already documented, but the description goes beyond the schema by enumerating the recognized keys and giving an enum for one of them (search.backend: fts|hybrid|vectors). That compensates for the schema's permissive additionalProperties, which otherwise gives no key validation guidance.
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 names a specific verb and resource ('Изменить настройки' / change settings) and adds the persistence target ('сохранить в v8help.toml, атомарно'), so an agent knows exactly what the tool mutates. It does not explicitly name the read counterpart (config_get) as the sibling it is not, so it falls 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 by the verb 'change settings'; there is no statement of when to use this versus config_get or config_get-style reads, nor any prerequisites or warnings. The agent can infer it is the write path for configuration, but nothing is made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discoverDiscoverB
Показать конфиг и автодискавери.
Каталог bin установленной платформы 1С (реестр Uninstall/ФС), установка 1C:EDT CLI (1cedtcli), доступные эмбеддеры на localhost-портах (LM Studio/Ollama) и состояние индекса.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It implies a read-only reconnaissance operation by listing what it 'shows,' but never states side-effect behavior or prerequisites. The presence of an output schema partly compensates by documenting return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, followed by a tight enumerated list of discovered items. It is appropriately sized for a no-argument tool with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter discovery tool with an output schema, the description adequately covers what will be surfaced (tools/embedders/index state), and the output schema covers the exact return shape. The only gap is the absence of explicit read-only/behavioral framing in the face of missing annotations.
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 is 4. No parameter semantics are fabricated or misrepresented.
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 concrete verb ('Показать') and enumerates the specific resources discovered: the 1C platform bin catalog, 1C:EDT CLI install, embedders on localhost ports (LM Studio/Ollama), and index state. It is far more specific than a tautology, though it does not explicitly differentiate itself from the closest sibling config_get.
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 mention of alternatives among siblings like config_get or config_set. The 'autodiscovery' framing implies it is an environment-reconnaissance/setup step, but the agent must infer this rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageGet PageA
Полный текст страницы справки по идентификатору (filename без .md или числовой id).
id может быть строкой (одна страница) или массивом строк (несколько страниц одним вызовом, 2-10 статей, пока суммарно не превышено max_chars). Длинные статьи (>4000 символов) целиком НЕ возвращаются: отдаётся список чанков и первый чанк; конкретный чанк читается через chunk=N.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Страница или список страниц. | |
| chunk | No | Номер чанка (0-based) для чтения части длинной статьи. | |
| max_chars | No | Лимит суммарного размера ответа (для массива id). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that long articles (>4000 chars) are truncated to a chunk list plus first chunk, that chunk=N retrieves a specific part, and that array batching is capped at 2-10 articles / max_chars. It omits auth requirements and not-found behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the id-form and truncation rules in two tight sentences. Every clause conveys a distinct behavioral fact with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is unnecessary. Given the three-parameter tool with batching and chunking complexity, the description covers the important behaviors; only edge cases (missing id, chunk out of range) are left 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 100%, so baseline is 3, but the description genuinely adds meaning beyond the terse schema text: id as string vs array with the 2-10 batching limit, max_chars as an aggregate response cap for arrays, and chunk as the mechanism for reading truncated long articles.
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: retrieve the full text of a help page identified by filename (without .md) or numeric id. Purpose is unambiguous, but it never distinguishes itself from siblings like search, related, or discover, so it falls 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 implied rather than stated: use it once you already have an id. It gives mechanics (batching, chunking) but no guidance on when to prefer this over search or related for locating content, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hierarchyHierarchyA
Оглавление: без section — сводка по разделам; с section — группы страниц раздела.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Раздел для детализации (objects/tables/lang/query/clang/platform/edt). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses two distinct behaviors: a section-level summary when section is omitted, and page groups when section is supplied. This is useful, but it omits safety context (e.g., read-only nature) and any operational details like pagination or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that begins with the resource name and then contrasts the two parameter states. Every clause earns its place, with no repetition or 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?
Given the tool has one optional parameter, a complete schema description, and an output schema, the description is largely complete because it clarifies both usage modes and the effect of the parameter. The only minor gap is absence of guidance on when to prefer this tool over its siblings.
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 100%, so baseline is 3. The description adds meaning beyond the schema by explaining the concrete effect of supplying or omitting the section parameter: it changes the output from a section summary to page groups for the chosen section.
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 states the resource (table of contents / hierarchy) and distinguishes two modes based on the optional section parameter, so an agent can tell what the tool returns. However, it does not name or contrast with sibling tools like config_get or discover, leaving sibling differentiation 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 description explains what happens with and without the section parameter but gives no guidance on when to choose this tool over alternatives such as config_get or search. There are no prerequisites, exclusions, or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearchB
Полнотекстовый поиск по справке 1С (FTS5).
Возвращает список страниц с релевантностью (score) и сниппетами.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Фильтр по kind: page/member/index. | |
| limit | No | Максимум результатов. | |
| query | Yes | Поисковый запрос. | |
| section | No | Фильтр по разделу: objects/tables/lang/query/clang/platform/edt. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does state that results are ranked by relevance and include snippets, which adds useful context, but says nothing about pagination, default limits, permissions, or how the FTS5 scoring behaves.
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 zero filler, and the core purpose plus return shape are both front-loaded. It is compact and readable, though slightly terse for a tool with four parameters.
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 at length, and the schema fully covers the inputs. However, the description lacks any routing guidance against siblings like get_page or discover, leaving a gap in overall completeness.
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 100%, so the schema already documents query, limit, kind, and section filters in detail. The description adds no parameter meaning beyond what the schema provides, making the baseline 3 appropriate.
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 states a specific verb and resource: full-text search over 1C help using FTS5. It clearly describes the operation and its scope, though it does not explicitly distinguish itself from retrieval siblings like get_page or discover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_page, related, or discover. Usage is only implicitly inferable from the word 'search'; no conditions, exclusions, or prerequisites are given.
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
v0.14.0- Changed
build27 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / chunk_overlap / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / chunk_overlap / defaultAdded value: +null - changed
Input schema / properties / chunk_overlap / descriptionPrevious value: -"Перекрытие соседних чанков в символах (по умолчанию 200)"New value: +"Перекрытие соседних чанков в символах (по умолчанию 200)." - removed
Input schema / properties / chunk_overlap / typeRemoved value: -"integer" - added
Input schema / properties / chunk_size / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / chunk_size / defaultAdded value: +null - changed
Input schema / properties / chunk_size / descriptionPrevious value: -"Целевой размер чанка в символах (по умолчанию 1500)"New value: +"Целевой размер чанка в символах (по умолчанию 1500)." - removed
Input schema / properties / chunk_size / typeRemoved value: -"integer" - added
Input schema / properties / cleanup / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Input schema / properties / cleanup / defaultAdded value: +null - changed
Input schema / properties / cleanup / descriptionPrevious value: -"Удалить corpus после индексации"New value: +"Удалить corpus после индексации." - removed
Input schema / properties / cleanup / typeRemoved value: -"boolean" - added
Input schema / properties / force / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Input schema / properties / force / defaultAdded value: +null - changed
Input schema / properties / force / descriptionPrevious value: -"Пересобрать даже если индекс актуален"New value: +"Пересобрать даже если индекс актуален." - removed
Input schema / properties / force / typeRemoved value: -"boolean" - added
Input schema / properties / lang / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / lang / defaultAdded value: +null - changed
Input schema / properties / lang / descriptionPrevious value: -"Язык: ru/en (по умолчанию из конфига)"New value: +"Язык: ru/en (по умолчанию из конфига)." - removed
Input schema / properties / lang / typeRemoved value: -"string" - added
Input schema / properties / sources / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / sources / defaultAdded value: +null - changed
Input schema / properties / sources / descriptionPrevious value: -"Источники для сборки (по умолчанию все из конфига)"New value: +"Источники для сборки (по умолчанию все из конфига)." - removed
Input schema / properties / sources / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / sources / typeRemoved value: -"array" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
build_status3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / job_id / descriptionPrevious value: -"Идентификатор job из build"New value: +"Идентификатор job из build." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
config_get2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
config_set4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / values / additionalPropertiesAdded value: +true - changed
Input schema / properties / values / descriptionPrevious value: -"Плоские ключи -> значения"New value: +"Плоские ключи -> значения." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
discover2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
get_page13 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / chunk / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / chunk / defaultAdded value: +null - changed
Input schema / properties / chunk / descriptionPrevious value: -"Номер чанка (0-based) для чтения части длинной статьи"New value: +"Номер чанка (0-based) для чтения части длинной статьи." - removed
Input schema / properties / chunk / typeRemoved value: -"integer" - added
Input schema / properties / id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - changed
Input schema / properties / id / descriptionPrevious value: -"Страница или список страниц"New value: +"Страница или список страниц." - removed
Input schema / properties / id / oneOfRemoved value: -[ - { - "description": "Идентификатор страницы", - "type": "string" - }, - { - "description": "Несколько идентификаторов страниц", - "items": { - "type": "string" - }, - "type": "array" - } -] - added
Input schema / properties / max_chars / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / max_chars / defaultAdded value: +null - changed
Input schema / properties / max_chars / descriptionPrevious value: -"Лимит суммарного размера ответа (для массива id)"New value: +"Лимит суммарного размера ответа (для массива id)." - removed
Input schema / properties / max_chars / typeRemoved value: -"integer" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
hierarchy6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / section / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / section / defaultAdded value: +null - changed
Input schema / properties / section / descriptionPrevious value: -"Раздел для детализации"New value: +"Раздел для детализации (objects/tables/lang/query/clang/platform/edt)." - removed
Input schema / properties / section / typeRemoved value: -"string" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
related3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / id / descriptionPrevious value: -"Идентификатор страницы"New value: +"Идентификатор страницы (filename или числовой id)." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
- Changed
search15 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / kind / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / kind / defaultAdded value: +null - changed
Input schema / properties / kind / descriptionPrevious value: -"Фильтр по kind: page/member/index"New value: +"Фильтр по kind: page/member/index." - removed
Input schema / properties / kind / typeRemoved value: -"string" - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / limit / defaultAdded value: +null - changed
Input schema / properties / limit / descriptionPrevious value: -"Максимум результатов"New value: +"Максимум результатов." - removed
Input schema / properties / limit / typeRemoved value: -"integer" - changed
Input schema / properties / query / descriptionPrevious value: -"Поисковый запрос"New value: +"Поисковый запрос." - added
Input schema / properties / section / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / section / defaultAdded value: +null - changed
Input schema / properties / section / descriptionPrevious value: -"Фильтр по разделу: objects/tables/lang/query/clang"New value: +"Фильтр по разделу: objects/tables/lang/query/clang/platform/edt." - removed
Input schema / properties / section / typeRemoved value: -"string" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "type": "object" +}
9 tool updates
v0.10.0- First observed
build - First observed
build_status - First observed
config_get - First observed
config_set - First observed
discover - First observed
get_page - First observed
hierarchy - First observed
related - First observed
search
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes: search finds pages, get_page retrieves full text, related handles links, hierarchy provides the TOC, and build/build_status form a trigger/check pair. The only real overlap is config_get vs discover, since both surface current configuration (discover additionally does autodiscovery), which could cause occasional misselection.
Naming mixes single-word noun/verb tools (search, related, hierarchy, build, discover) with verb_noun patterns (get_page, build_status) and noun_verb patterns (config_get, config_set). The ordering of config_get/config_set (noun_verb) conflicts with build_status (verb_noun), so conventions are readable but not fully predictable.
Nine tools is well-scoped for a documentation search/index server. Each tool covers a distinct operation (search, retrieval, related links, TOC, build lifecycle, config) with no obvious redundancy beyond the minor config overlap.
The surface covers the full lifecycle: discovery, config get/set, index building with async status, search, page retrieval with chunking, related links, and hierarchy browsing. Minor gaps exist (e.g., no direct way to enumerate books or list all pages), but core retrieval workflows are complete.
Maintenance
Related MCP Connectors
Stimulsoft Reports & Dashboards docs MCP server. Semantic search for all platforms.
MCP server for querying Forkast documentation
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Agent-driven search: build, import, tune, search, and score result quality — all over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server for 1C:Enterprise that provides AI assistants with access to configuration data via vector search, structural indexing, and call graphs. It enables semantic code queries and rapid metadata object lookups without requiring the direct reading of raw files.78AGPL 3.0
- FlicenseNot gradedqualityBmaintenanceMCP server for searching and analyzing 1C enterprise metadata and BSL code using a SQLite backend. Enables querying configuration structure, code routines, and performing compliance checks via natural language.-
- AlicenseNot gradedqualityDmaintenanceMCP server for RAG-based search over 1C Enterprise configuration documentation, enabling natural language queries to find objects like справочники, документы, and отчеты.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for 1C:Enterprise that provides precise syntax reference cards (call signatures, parameters, return types, examples) by element name and lists object members. It helps AI agents answer 1C development questions using the official Russian help book.MIT