LINZA-MCP
Integrates with Obsidian vault by indexing Markdown notes and providing search, review, and knowledge graph features to help organize and connect information.
LINZA - локальный MCP-сервер для агентской работы с папками знаний
Не меняет данные. Меняет взгляд.
LINZA работает с Obsidian vault, Markdown-папками, документами, статьями, логами и черновиками. Она нужна, когда материалов уже слишком много и вы хотите разобрать базу, выделить в ней основные области и научить агента хорошо ориентироваться в ней.
LINZA читает выбранную папку, строит рядом локальную SQLite-базу .linza/linza.db и дает агенту рабочую карту: какие темы есть в материалах, какие форматы повторяются, какие заметки могут быть связаны, где видны цепочки причина/следствие и что может пригодиться в будущих сессиях.
Исходные файлы остаются нетронутыми. LINZA не переписывает заметки при индексации, не превращает сырой лог в правило и не учит агента за вашей спиной. Она превращает гипотезы в короткие предложения: возможные действия с доказательствами. Пользователь решает, агент выполняет.
doctor -> index -> map -> review intents -> teach -> grow preview -> explicit applyЗачем нужна LINZA
LINZA собирает несколько конкретных вещей, которые помогают агентам работать с базой:
Карта папки Сколько заметок найдено, свежий ли индекс, какие области видны и какие материалы ждут вашего ревью.
Области Крупные смысловые группы. Их названия остаются черновиками, пока вы не примете или не переименуете их.
Форматы материалов Логи, черновики, спецификации, исследовательские заметки, кейсы, правила и другие повторяющиеся формы, найденные в папке.
Связи Возможные соседства, иерархия, причина/следствие и маршруты между узлами. LINZA должна показывать не только как связаны документы, но и почему.
Память для будущих агентов Короткие кандидаты: что помнить, когда вспоминать, что устарело или выглядит сомнительно.
Пакеты контекста Компактные подборки для агента: выбранный контекст с источниками, связями и границами.
Related MCP server: md-annotate
Форматы материалов
“Формат материала” - это пользовательское имя для повторяющейся формы заметок. Например: лог диагностики, решение, черновик статьи, исследовательская заметка, спецификация.
LINZA сначала видит только структуру: длину, заголовки, списки, ссылки, таблицы, папки, повторяющиеся признаки. Поэтому первый результат может называться нейтрально: type-001. Пользователь может сказать: “это логи”. Тогда LINZA сохраняет соответствие type-001 -> логи в .linza.
Внутри API остаются старые совместимые ключи material_type, type_name и role. Снаружи документация и пользовательский вид говорят “формат”, потому что это ближе к тому, как пользователь реально думает о материалах.
Важная граница:
принять название формата значит записать решение в
.linza;записать
role: логив YAML можно только отдельным предложением на ревью;текст заметки не меняется.
Как выглядит ревью
LINZA присылает примерно такую информацию:
LINZA готова
Материал:
- 42 заметки проиндексированы
- 3 входящих артефакта ждут ревью
- служебная база: .linza/linza.db
Следующий шаг:
1. Посмотреть найденные области
2. Принять, переименовать или пропустить 3-5 предложений
3. Ничего не будет записано без dry-run/apply
Предложение:
Принять формат материала "логи диагностики" по 8 примерам
Почему: похожая структура, повторяющиеся заголовки, близкие чанки
Что изменится: название формата сохранится в .linza; Markdown-заметки не меняютсяВнутри каждый интент остается структурой с ID, доказательствами и готовыми данными для проверки и последующего подтверждения и записи. Вам LINZA возвращает готовое пользовательское представление, чтобы агент мог показать понятный ответ вместо JSON.
Хороший интент всегда отвечает на главный вопрос: почему LINZA так думает? В нем должны быть источники, чанки, тип связи, уверенность и честное описание того, что изменится после применения.
Обучение и рост
Модель автономности такая:
review_nextпоказывает предложения в понятном пользовательском виде.Пользователь принимает, переименовывает или пропускает.
apply_review_itemsсначала делает dry-run.После подтверждения выбранный интент записывается в
.linzaили в компактный YAML, если этот тип записи это поддерживает.teachвыбирает хорошие принятые примеры.growпредлагает похожие интенты по этим примерам и объясняетselected_rules, почему они попали в партию.
Если вы приняли не то, одобрение можно мягко отозвать:
agent_workspace(action="history")
agent_workspace(action="revoke_approval", approval_id=17, dry_run=false)LINZA не удаляет старую запись и не пытается автоматически откатить YAML. Она помечает одобрение как отозванное, перестает использовать его как активный пример и оставляет след в истории.
Установка
1. Установить пакет
python -m pip install linza-mcpЕсли нужно читать PDF прямо через LINZA:
python -m pip install "linza-mcp[pdf]"Обычная установка уже достаточна для Markdown, TXT, JSON, DOCX и XLSX. [pdf] добавляет локальный PDF-экстрактор pypdf.
2. Выбрать папку
LINZA работает с любой Markdown-папкой: Obsidian vault, рабочей папкой проекта или отдельной папкой с документами.
В примерах ниже замените /absolute/path/to/workspace-or-vault на свой путь.
3. Подключить MCP-клиент
Claude Desktop, Cursor, OpenCode и другие MCP-клиенты обычно используют такой формат:
{
"mcpServers": {
"linza": {
"command": "linza-mcp",
"env": {
"LINZA_VAULT": "/absolute/path/to/workspace-or-vault"
}
}
}
}VS Code / Copilot MCP использует ключ servers:
{
"servers": {
"linza": {
"type": "stdio",
"command": "linza-mcp",
"env": {
"LINZA_VAULT": "/absolute/path/to/workspace-or-vault"
}
}
}
}LINZA_VAULT не обязателен для старта: без него сервер использует ./vault. Но для реальной работы лучше задать явную папку.
4. Проверить запуск
linza-mcp --versionПосле подключения попросите агента:
Проверь LINZA через agent_workspace(action="doctor").
Проиндексируй папку и покажи первые 3-5 предложений.Эмбеддинги
LINZA может запуститься и показать инструменты без embedding-сервера. Эмбеддинги нужны для смыслового поиска, карты тем и предложений связей.
Самый простой локальный путь - LM Studio:
Открыть LM Studio.
Скачать embedding-модель, например
text-embedding-granite-embedding-278m-multilingual,nomic-embed-text-v1.5или другую подходящую модель.Запустить Local Server.
Проверить, что endpoint доступен на
http://127.0.0.1:1234/v1.
Пример переменных для LM Studio:
$env:LINZA_EMBED_PROVIDER="lmstudio"
$env:LINZA_EMBED_URL="http://127.0.0.1:1234/v1"
$env:LINZA_EMBED_MODEL="your-embedding-model-name"Поддерживаются:
lmstudio- рекомендуемый локальный режим;ollama- локальный вариант через Ollama;openai- любой OpenAI-compatible endpoint с/embeddings.
Если меняете провайдер, модель или размерность, сделайте полный реиндекс. LINZA проверяет embedding signature и останавливает graph/search workflows, если sidecar устарел или содержит смешанные векторные пространства.
Основные MCP-инструменты
По умолчанию LINZA показывает только 7 MCP-инструментов. Этого хватает для обычной работы: проверить состояние, проиндексировать папку, искать, читать файл, смотреть счетчики, диагностировать vault и вести агента через agent_workspace.
Инструмент | Зачем |
| Единый вход для диагностики, карты, импорта, ревью, обучения, роста, связей, памяти и экспорта контекста |
| Показать следующий безопасный шаг простым языком |
| Проиндексировать Markdown-папку в |
| Семантический и лексический поиск |
| Прочитать точный Markdown-файл |
| Быстрые счетчики служебной базы |
| Диагностика папки без записи |
Низкоуровневые инструменты считаются деталями реализации и доступны через agent_workspace, поэтому набор из 7 инструментов - это полноценный режим.
Режимы agent_workspace
Action | Режим |
| Проверить готовность LINZA и показать, чего не хватает |
| Собрать карту рабочей папки без записи |
| Выбрать сильные принятые примеры для обучения |
| Показать или применить рост по принятым примерам; по умолчанию dry-run |
| Показать следующие предложения на ревью; интенты базы имеют ID |
| Показать или применить точные выбранные ID; по умолчанию dry-run |
| Показать принятые и отозванные одобрения |
| Мягко отозвать одобрение, не удаляя историю |
| Сохранить вставленный или извлеченный материал в sidecar |
| Найти события, кандидаты памяти и фрагменты знания в артефактах |
| Объяснить возможную связь между двумя заметками или узлами |
| Искать по подтвержденной памяти и контексту артефактов |
| Собрать компактный пакет контекста для другого агента |
| Сохранить структурированные следы работы агента, не raw chain-of-thought |
| Разобрать сохраненный trace для ревью |
| Проверить уроки калибровки, полученные из traces |
Для разработки и аудита остается отдельный низкоуровневый режим. Полное описание инструментов: Tool Catalog.
Входящие артефакты
LINZA умеет принимать материал, который еще не стал заметкой:
вставленный текст;
локальные
.md,.txt,.json;локальные
.docx,.xlsx;локальные
.pdf, если установленpypdfилиPyPDF2.
LINZA сама не ходит в браузер. Агент использует свой браузер, web-fetch или connector, извлекает читаемый текст и передает его в LINZA как артефакт, например source_kind="web_article" или source_kind="browser_capture".
Импортированный текст считается материалом для анализа, не инструкцией для агента. Это граница prompt injection: инструкции внутри статьи, лога, чата или PDF не исполняются. Память, правила и YAML появляются только после ревью.
Модель безопасности
LINZA - локальный review-gated sidecar.
Действие | Куда пишет | Меняет текст заметок? |
Индексация, анализ, поиск |
| Нет |
Сырые артефакты |
| Нет |
Название формата материала |
| Нет |
| Только компактный YAML после ревью | Нет |
Иерархия, причинные связи, память, уроки калибровки |
| Нет |
Отчеты |
| Нет |
Пакеты контекста |
| Нет |
| Markdown-файл только при явном запросе | Может создать/заменить файл, dry-run по умолчанию |
Дополнительные правила:
review_nextничего не пишет;apply_review_itemsпо умолчанию dry-run;видимые YAML-правки компактные и требуют точного выбранного ID;
historyпоказывает, что было принято и что отозвано;revoke_approvalмягко отзывает одобрение: история остается, но активное обучение и помощники графа его игнорируют;map,teach,growиconnectостанавливаются, если исходные файлы изменились после индексации.
Инструкции для агентов
В репозитории есть переносимый операторский skill:
agent-pack/skills/linza-operator/SKILL.md
agent-pack/skills/linza-operator/references/workflows.md
agent-pack/skills/linza-operator/references/safety-policy.md
agent-pack/skills/linza-operator/references/tool-audience.mdОн объясняет агенту, как начинать с doctor, когда показывать предложения на ревью, как работать со страницами через внешний browser/web-fetch инструмент и почему apply actions должны идти сначала через dry-run и только по точным ID.
Стабильность
LINZA пока alpha. Основной контракт безопасности должен оставаться стабильным: индексация, импорт артефактов, поиск, карта и grow preview не переписывают тела исходных заметок. Низкоуровневые advanced-инструменты и внутренние границы кода еще могут меняться, пока сервер полируется.
Проверка
Запустить полный набор тестов:
python -m unittest discover -s testsПеременные окружения
Переменная | Нужна для старта? | Описание |
| Нет | Путь к Markdown-папке; по умолчанию |
| Нет |
|
| Нет | URL embeddings API; по умолчанию |
| Нет | Модель эмбеддингов; задайте перед semantic indexing/search |
| Нет | Опциональный ключ для OpenAI-compatible embeddings API |
| Нет | Порог semantic bridge; по умолчанию |
| Нет | Максимум пар заметок для пересчета semantic bridges; по умолчанию |
| Нет | Имя базового search-профиля; по умолчанию |
| Нет | Язык подсказок и маршрута ревью в |
Ссылки
MIT License (c) 2026 Semiotronika
Косинусы считаются. Синтаксис меняется. Семантика остается.
Available Tools
7 toolsagent_workspaceA
Main LINZA workflow facade. Choose one action to inspect the workspace, ingest artifacts, review/apply supervised items, explain connections, search memory, export context, or run diagnostics. Safe actions are read-only; apply actions preview by default with dry_run=true.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Workflow action. Setup: doctor, map. Review/growth: teach, grow, review_next, apply_review_items, history, revoke_approval. Artifact flow: ingest_artifacts, analyze_inbox. Graph/context: connect, search_memory, export_context. Trace calibration: record_trace, analyze_trace, review_calibr. | |
| artifacts | No | Artifact inputs for ingest_artifacts; each item may include text/content, path/source_uri, title, and metadata. | |
| trace | No | Agent trace payload for record_trace; stored as structured sidecar evidence, not raw chain-of-thought. | |
| trace_id | No | Trace identifier used by analyze_trace and review_calibr. | |
| source_kind | No | Optional artifact/source filter such as chat, document, note, log, web_article, or trace. | |
| batch_id | No | Optional batch identifier for grouping ingested artifacts or review intents. | |
| privacy | No | Privacy label stored with artifacts/traces; default private. | private |
| kind | No | Review item kind filter for review/history actions; use all for no filter. | all |
| mode | No | Growth mode for grow; default assisted. | assisted |
| item_ids | No | Stable review intent IDs to preview/apply with apply_review_items. | |
| approval_id | No | Existing approval row ID for revoke_approval. | |
| reason | No | Reason recorded when revoking an approval or applying a reviewed action. | |
| include_revoked | No | Include revoked approvals in history results. | |
| dry_run | No | Preview apply/revoke actions without writing active sidecar changes; default true. | |
| allow_overwrite | No | Allow reviewed YAML/frontmatter writes where supported; source note bodies are still protected by LINZA policy. | |
| include_memory | No | Include memory candidates in teach/grow/review workflows. | |
| source | No | Source note/path/query endpoint for connect. | |
| target | No | Target note/path endpoint for connect. | |
| max_depth | No | Maximum graph depth for connection/path exploration. | |
| max_notes | No | Maximum notes to sample when building workspace maps or growth candidates. | |
| max_domains | No | Maximum domain groups to build in map/growth workflows. | |
| query | No | Search query for search_memory and export_context. | |
| limit | No | Maximum items/cards/results to return for the selected action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) are general; the description adds specific behavioral context: safe actions are read-only, apply actions default to dry_run=true. This goes beyond annotations without contradiction.
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 three sentences: purpose, action selection guidance, and safety note. It is front-loaded, concise, and contains no redundant information.
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's complexity (23 parameters, many actions), the description is fairly complete. It covers the general workflow and safety. However, it does not mention return values or error handling, which would be useful given the lack of 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 coverage is 100% for all 23 parameters, so the description does not need to add per-parameter detail. The description groups actions (e.g., 'Setup: doctor, map') which adds some semantic value, but no additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is the 'Main LINZA workflow facade' and enumerates categories of actions (inspect workspace, ingest artifacts, review/apply, etc.), making the purpose explicit. It distinguishes from sibling tools which are more specific (e.g., read_file, search).
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 instructs to 'Choose one action' and lists action groups, implying when to use it. It also notes that safe actions are read-only and apply actions preview with dry_run=true. While it doesn't explicitly state when not to use it, the sibling list provides alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsARead-onlyIdempotent
Return quick LINZA sidecar status: indexed file count, profiles, semantic bridges, and active profile. Use for health checks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description adds value by specifying the exact data returned (indexed file count, profiles, semantic bridges, active profile) and its purpose for health checks.
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 extremely concise: two sentences that front-load the core purpose and usage. Every word 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?
For a simple zero-parameter tool with no output schema, the description fully covers what it returns and when to use it. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 per the scoring rules. The description does not add parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns 'LINZA sidecar status' with specific items like indexed file count, profiles, semantic bridges, and active profile, and it is easily distinguishable from sibling tools like index_all, read_file, or search.
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 explicitly says 'Use for health checks', providing a clear usage context. It does not list exclusions, but given the tool's simplicity, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_next_stepsARead-only
Read the current LINZA state and recommend the next safe onboarding/review step in plain language. This is the navigator for agents and users; it does not write files.
| Name | Required | Description | Default |
|---|---|---|---|
| max_notes | No | Maximum notes to sample while building the review window. | |
| max_domains | No | Maximum domain groups to consider in the current guide pass. | |
| limit | No | Maximum review intents to inspect when choosing the next step. | |
| include_memory | No | Include memory review candidates in the suggested route. | |
| include_tool_guide | No | Include internal tool-audience/debug guidance in the response; normally false for users. | |
| language | No | User-facing guide language: auto-detect, English, or Russian. | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the readOnlyHint annotation by stating it 'does not write files' and that it 'Read[s] the current LINZA state'. This adds context beyond the annotation by explaining the tool's role as a navigator and its non-destructive nature. There is no contradiction with 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?
The description is extremely concise, consisting of two short sentences that immediately convey the tool's purpose. There is no redundant information; every word is valuable. The structure is front-loaded with the core action and result.
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?
While the description clearly states the tool's purpose and non-write behavior, it does not specify the structure or format of the output beyond 'plain language'. Since there is no output schema, the description could be more explicit about what kind of recommendations to expect (e.g., a string with bullet points, a JSON object). This leaves some ambiguity for the agent.
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?
All six parameters have descriptions in the input schema (100% coverage), so the schema already documents them well. The description does not add additional parameter-level semantics beyond what the schema provides. A score of 3 is appropriate per the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and resource 'current LINZA state', with the specific purpose to 'recommend the next safe onboarding/review step in plain language'. It distinguishes itself from sibling tools by explicitly calling itself 'the navigator for agents and users' and stating it 'does not write files', which differentiate it from tools like 'read_file' and 'search'.
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 provides clear context on when to use the tool: as a navigator for agents and users to get the next safe step. It explicitly states what it does not do ('does not write files'), guiding agents away from using it for mutation. However, it does not name specific alternative tools or provide explicit 'when not to use' scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_allAIdempotent
Rebuild the LINZA sidecar index for the configured Markdown vault. Use after first setup or after notes change; writes only .linza/linza.db and does not modify note bodies.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | When true, rebuild stored embeddings and semantic bridges even if the existing sidecar looks current. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by stating it writes only .linza/linza.db and does not modify note bodies, clarifying its non-destructive nature and idempotency. Annotations already mark it as idempotent and non-destructive.
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 two sentences, front-loading the main action and key constraints. Every sentence provides necessary information with no redundancy.
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 a single optional boolean parameter, no output schema, and robust annotations, the description fully covers when and how to use the tool, including side effects.
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 input schema already provides 100% coverage and a clear description for the 'force' parameter. The tool description does not add parameter information, so baseline score of 3 is 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 clearly states the tool rebuilds the LINZA sidecar index for the configured Markdown vault, specifying the verb and resource. It distinguishes from siblings like search and read_file by focusing on index rebuilding.
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 explicitly says 'Use after first setup or after notes change,' providing clear when-to-use context. However, it does not explicitly mention when not to use or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileARead-onlyIdempotent
Read one vault-relative Markdown file exactly as stored. Use after search or when the path is known; does not write files or sidecar state.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Vault-relative Markdown path to read, such as notes/project.md. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds context that the file is read "exactly as stored" and clarifies it does not write sidecar state, which aligns with annotations and adds small but useful behavioral detail.
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 extremely concise with two sentences totaling 17 words. It front-loads the core purpose in the first sentence and adds contextual usage in the second. No unnecessary 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?
Given the tool's simplicity (one parameter, no output schema, strong annotations), the description covers all necessary aspects: purpose, when to use, behavioral constraints, and what it does not do. It is complete for an AI agent to select and invoke correctly.
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. The description does not add any additional meaning beyond the schema's parameter description ("vault-relative Markdown path"). No extra context about format or constraints is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb "Read" and resource "one vault-relative Markdown file exactly as stored." It distinguishes from siblings by specifying "Use after search or when the path is known," making its purpose unambiguous.
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 explicitly tells when to use this tool ("after search or when the path is known") and what it does not do ("does not write files or sidecar state"). However, it does not name specific alternative tools like scan_vault or get_stats, just implies the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_vaultARead-onlyIdempotent
Run a read-only vault diagnostic over files, links, metadata, and LINZA setup. Use at first contact or when deciding what to fix next.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context about what is scanned (files, links, metadata, LINZA setup), but does not add significant behavioral detail beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, no unnecessary words. Every sentence adds value.
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 zero parameters, no output schema, and rich annotations, the description covers purpose and usage completely for a diagnostic 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?
No parameters in the input schema, so description does not need to add param info. Schema coverage is 100% (trivially), enabling baseline 4 for 0 parameters.
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?
Description clearly states the specific verb 'Run' and resource 'vault diagnostic' with scope over files, links, metadata, and LINZA setup. It distinguishes from sibling tools like index_all, read_file, and search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'at first contact or when deciding what to fix next.' Does not provide exclusions or alternative tools, but context from sibling names helps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-only
Find relevant indexed Markdown notes by semantic/lexical query. Use before read_file when the path is unknown; may record search history in the LINZA sidecar.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language query used to rank indexed notes. | |
| profile | No | Optional search profile name; defaults to the active profile in the sidecar. | |
| top_k | No | Maximum number of note matches to return. | |
| explain | No | When true, include scoring/context details for debugging retrieval. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false; description adds the side effect of recording search history, which is valuable context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with purpose and usage guidance.
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?
Covers purpose and usage well but lacks mention of return format/output; given no output schema, a brief note on return would improve 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 coverage is 100% with parameter descriptions; description adds minimal extra meaning (e.g., 'natural-language query'), keeping baseline at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finds relevant indexed Markdown notes via semantic/lexical query, and explicitly ties it to a use case (before read_file when path unknown), distinguishing it from 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?
Provides explicit when-to-use (before read_file) and a side effect (may record search history), but does not cover when to avoid or compare to all siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.2.0- Changed
agent_workspace23 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Workflow action. Setup: doctor, map. Review/growth: teach, grow, review_next, apply_review_items, history, revoke_approval. Artifact flow: ingest_artifacts, analyze_inbox. Graph/context: connect, search_memory, export_context. Trace calibration: record_trace, analyze_trace, review_calibr." - added
Input schema / properties / allow_overwrite / descriptionAdded value: +"Allow reviewed YAML/frontmatter writes where supported; source note bodies are still protected by LINZA policy." - added
Input schema / properties / approval_id / descriptionAdded value: +"Existing approval row ID for revoke_approval." - added
Input schema / properties / artifacts / descriptionAdded value: +"Artifact inputs for ingest_artifacts; each item may include text/content, path/source_uri, title, and metadata." - added
Input schema / properties / batch_id / descriptionAdded value: +"Optional batch identifier for grouping ingested artifacts or review intents." - added
Input schema / properties / dry_run / descriptionAdded value: +"Preview apply/revoke actions without writing active sidecar changes; default true." - added
Input schema / properties / include_memory / descriptionAdded value: +"Include memory candidates in teach/grow/review workflows." - added
Input schema / properties / include_revoked / descriptionAdded value: +"Include revoked approvals in history results." - added
Input schema / properties / item_ids / descriptionAdded value: +"Stable review intent IDs to preview/apply with apply_review_items." - added
Input schema / properties / kind / descriptionAdded value: +"Review item kind filter for review/history actions; use all for no filter." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum items/cards/results to return for the selected action." - added
Input schema / properties / max_depth / descriptionAdded value: +"Maximum graph depth for connection/path exploration." - added
Input schema / properties / max_domains / descriptionAdded value: +"Maximum domain groups to build in map/growth workflows." - added
Input schema / properties / max_notes / descriptionAdded value: +"Maximum notes to sample when building workspace maps or growth candidates." - added
Input schema / properties / mode / descriptionAdded value: +"Growth mode for grow; default assisted." - added
Input schema / properties / privacy / descriptionAdded value: +"Privacy label stored with artifacts/traces; default private." - added
Input schema / properties / query / descriptionAdded value: +"Search query for search_memory and export_context." - added
Input schema / properties / reason / descriptionAdded value: +"Reason recorded when revoking an approval or applying a reviewed action." - added
Input schema / properties / source / descriptionAdded value: +"Source note/path/query endpoint for connect." - added
Input schema / properties / source_kind / descriptionAdded value: +"Optional artifact/source filter such as chat, document, note, log, web_article, or trace." - added
Input schema / properties / target / descriptionAdded value: +"Target note/path endpoint for connect." - added
Input schema / properties / trace / descriptionAdded value: +"Agent trace payload for record_trace; stored as structured sidecar evidence, not raw chain-of-thought." - added
Input schema / properties / trace_id / descriptionAdded value: +"Trace identifier used by analyze_trace and review_calibr."
- Changed
guide_next_steps6 fields changed- added
Input schema / properties / include_memory / descriptionAdded value: +"Include memory review candidates in the suggested route." - added
Input schema / properties / include_tool_guide / descriptionAdded value: +"Include internal tool-audience/debug guidance in the response; normally false for users." - added
Input schema / properties / language / descriptionAdded value: +"User-facing guide language: auto-detect, English, or Russian." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum review intents to inspect when choosing the next step." - added
Input schema / properties / max_domains / descriptionAdded value: +"Maximum domain groups to consider in the current guide pass." - added
Input schema / properties / max_notes / descriptionAdded value: +"Maximum notes to sample while building the review window."
- Changed
index_all2 fields changed- added
Input schema / properties / force / defaultAdded value: +false - added
Input schema / properties / force / descriptionAdded value: +"When true, rebuild stored embeddings and semantic bridges even if the existing sidecar looks current."
- Changed
read_file1 field changed- added
Input schema / properties / path / descriptionAdded value: +"Vault-relative Markdown path to read, such as notes/project.md."
- Changed
search4 fields changed- added
Input schema / properties / explain / descriptionAdded value: +"When true, include scoring/context details for debugging retrieval." - added
Input schema / properties / profile / descriptionAdded value: +"Optional search profile name; defaults to the active profile in the sidecar." - added
Input schema / properties / query / descriptionAdded value: +"Natural-language query used to rank indexed notes." - added
Input schema / properties / top_k / descriptionAdded value: +"Maximum number of note matches to return."
7 tool updates
v0.1.8- First observed
agent_workspace - First observed
get_stats - First observed
guide_next_steps - First observed
index_all - First observed
read_file - First observed
scan_vault - First observed
search
TDQS
The tools are mostly distinct, but agent_workspace lists actions that overlap with search, read_file, and scan_vault, causing ambiguity about which tool to use for those tasks.
Most tools follow a verb_noun pattern (get_stats, read_file, scan_vault, guide_next_steps), but index_all, search, and agent_workspace deviate, mixing verb-only and noun_noun styles.
7 tools cover the core workflows of indexing, searching, reading, diagnostics, status, and guidance without being too few or too many.
The set lacks write operations (create, update, delete notes), and no tool for managing profiles or semantic bridges directly, leaving significant gaps in CRUD coverage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared Markdown notes for MCP-compatible AI tools.
Remote MCP for Kiro release readiness, evidence binders, signoff, and CI approval receipts.
Living docs and MCP context for GitHub repos — conventions, gaps, and source-cited pages on merge.
MCP-native collaborative markdown editor with real-time AI document editing
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceAn MCP server for reviewing markdown plans before AI agents implement them. Enables annotation of plans with Fix, Question, and Highlight, which AI agents can read directly through MCP.5-
- AlicenseNot gradedqualityDmaintenanceA local-first markdown review tool with MCP integration, enabling AI and humans to collaboratively annotate documents inline and generate revision prompts.1MIT
- AlicenseNot gradedqualityBmaintenanceStandalone MCP harness for cross-system process evidence, code-change impact review, and natural-language repository checkout mapping, with optional accelerators like CodeGraph.1MIT
- AlicenseAqualityAmaintenanceRepository-native protocol and MCP server for coordinating work items, documentation, changelogs, and project memory between humans and AI agents, using Markdown files in a Git repository as the canonical data source.302MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Semiotronika/LINZA-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server