Skip to main content
Glama

LINZA - локальный MCP-сервер для агентской работы с папками знаний

Не меняет данные. Меняет взгляд.

LINZA работает с Obsidian vault, Markdown-папками, документами, статьями, логами и черновиками. Она нужна, когда материалов уже слишком много и вы хотите разобрать базу, выделить в ней основные области и научить агента хорошо ориентироваться в ней.

Python 3.10+ MCP Local first Review gated

English version

LINZA читает выбранную папку, строит рядом локальную SQLite-базу .linza/linza.db и дает агенту рабочую карту: какие темы есть в материалах, какие форматы повторяются, какие заметки могут быть связаны, где видны цепочки причина/следствие и что может пригодиться в будущих сессиях.

Исходные файлы остаются нетронутыми. LINZA не переписывает заметки при индексации, не превращает сырой лог в правило и не учит агента за вашей спиной. Она превращает гипотезы в короткие предложения: возможные действия с доказательствами. Пользователь решает, агент выполняет.

doctor -> index -> map -> review intents -> teach -> grow preview -> explicit apply

Зачем нужна LINZA

LINZA собирает несколько конкретных вещей, которые помогают агентам работать с базой:

  1. Карта папки Сколько заметок найдено, свежий ли индекс, какие области видны и какие материалы ждут вашего ревью.

  2. Области Крупные смысловые группы. Их названия остаются черновиками, пока вы не примете или не переименуете их.

  3. Форматы материалов Логи, черновики, спецификации, исследовательские заметки, кейсы, правила и другие повторяющиеся формы, найденные в папке.

  4. Связи Возможные соседства, иерархия, причина/следствие и маршруты между узлами. LINZA должна показывать не только как связаны документы, но и почему.

  5. Память для будущих агентов Короткие кандидаты: что помнить, когда вспоминать, что устарело или выглядит сомнительно.

  6. Пакеты контекста Компактные подборки для агента: выбранный контекст с источниками, связями и границами.


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 так думает? В нем должны быть источники, чанки, тип связи, уверенность и честное описание того, что изменится после применения.


Обучение и рост

Модель автономности такая:

  1. review_next показывает предложения в понятном пользовательском виде.

  2. Пользователь принимает, переименовывает или пропускает.

  3. apply_review_items сначала делает dry-run.

  4. После подтверждения выбранный интент записывается в .linza или в компактный YAML, если этот тип записи это поддерживает.

  5. teach выбирает хорошие принятые примеры.

  6. 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:

  1. Открыть LM Studio.

  2. Скачать embedding-модель, например text-embedding-granite-embedding-278m-multilingual, nomic-embed-text-v1.5 или другую подходящую модель.

  3. Запустить Local Server.

  4. Проверить, что 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.

Инструмент

Зачем

agent_workspace

Единый вход для диагностики, карты, импорта, ревью, обучения, роста, связей, памяти и экспорта контекста

guide_next_steps

Показать следующий безопасный шаг простым языком

index_all

Проиндексировать Markdown-папку в .linza/linza.db

search

Семантический и лексический поиск

read_file

Прочитать точный Markdown-файл

get_stats

Быстрые счетчики служебной базы

scan_vault

Диагностика папки без записи

Низкоуровневые инструменты считаются деталями реализации и доступны через agent_workspace, поэтому набор из 7 инструментов - это полноценный режим.

Режимы agent_workspace

Action

Режим

doctor

Проверить готовность LINZA и показать, чего не хватает

map

Собрать карту рабочей папки без записи

teach

Выбрать сильные принятые примеры для обучения

grow

Показать или применить рост по принятым примерам; по умолчанию dry-run

review_next

Показать следующие предложения на ревью; интенты базы имеют ID rq-*, интенты артефактов и рабочей папки - aw-*

apply_review_items

Показать или применить точные выбранные ID; по умолчанию dry-run

history

Показать принятые и отозванные одобрения

revoke_approval

Мягко отозвать одобрение, не удаляя историю

ingest_artifacts

Сохранить вставленный или извлеченный материал в sidecar

analyze_inbox

Найти события, кандидаты памяти и фрагменты знания в артефактах

connect

Объяснить возможную связь между двумя заметками или узлами

search_memory

Искать по подтвержденной памяти и контексту артефактов

export_context

Собрать компактный пакет контекста для другого агента

record_trace

Сохранить структурированные следы работы агента, не raw chain-of-thought

analyze_trace

Разобрать сохраненный trace для ревью

review_calibr

Проверить уроки калибровки, полученные из 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.

Действие

Куда пишет

Меняет текст заметок?

Индексация, анализ, поиск

.linza/linza.db

Нет

Сырые артефакты

.linza/linza.db

Нет

Название формата материала

.linza/linza.db

Нет

domains или role в YAML

Только компактный YAML после ревью

Нет

Иерархия, причинные связи, память, уроки калибровки

.linza/linza.db

Нет

Отчеты

.linza/reports

Нет

Пакеты контекста

.linza/context-packs

Нет

write_file

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

Переменные окружения

Переменная

Нужна для старта?

Описание

LINZA_VAULT

Нет

Путь к Markdown-папке; по умолчанию ./vault

LINZA_EMBED_PROVIDER

Нет

lmstudio для рекомендуемого локального режима; также openai и ollama

LINZA_EMBED_URL

Нет

URL embeddings API; по умолчанию http://127.0.0.1:1234/v1

LINZA_EMBED_MODEL

Нет

Модель эмбеддингов; задайте перед semantic indexing/search

LINZA_EMBED_KEY

Нет

Опциональный ключ для OpenAI-compatible embeddings API

LINZA_BRIDGE_THRESHOLD

Нет

Порог semantic bridge; по умолчанию 0.55

LINZA_MAX_BRIDGE_PAIRS

Нет

Максимум пар заметок для пересчета semantic bridges; по умолчанию 1000000, 0 отключает guard

LINZA_DEFAULT_PROFILE

Нет

Имя базового search-профиля; по умолчанию general

LINZA_LANGUAGE

Нет

Язык подсказок и маршрута ревью в guide_next_steps: auto, ru, en


Ссылки

MIT License (c) 2026 Semiotronika

Косинусы считаются. Синтаксис меняется. Семантика остается.

Available Tools

7 tools
agent_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWorkflow 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.
artifactsNoArtifact inputs for ingest_artifacts; each item may include text/content, path/source_uri, title, and metadata.
traceNoAgent trace payload for record_trace; stored as structured sidecar evidence, not raw chain-of-thought.
trace_idNoTrace identifier used by analyze_trace and review_calibr.
source_kindNoOptional artifact/source filter such as chat, document, note, log, web_article, or trace.
batch_idNoOptional batch identifier for grouping ingested artifacts or review intents.
privacyNoPrivacy label stored with artifacts/traces; default private.private
kindNoReview item kind filter for review/history actions; use all for no filter.all
modeNoGrowth mode for grow; default assisted.assisted
item_idsNoStable review intent IDs to preview/apply with apply_review_items.
approval_idNoExisting approval row ID for revoke_approval.
reasonNoReason recorded when revoking an approval or applying a reviewed action.
include_revokedNoInclude revoked approvals in history results.
dry_runNoPreview apply/revoke actions without writing active sidecar changes; default true.
allow_overwriteNoAllow reviewed YAML/frontmatter writes where supported; source note bodies are still protected by LINZA policy.
include_memoryNoInclude memory candidates in teach/grow/review workflows.
sourceNoSource note/path/query endpoint for connect.
targetNoTarget note/path endpoint for connect.
max_depthNoMaximum graph depth for connection/path exploration.
max_notesNoMaximum notes to sample when building workspace maps or growth candidates.
max_domainsNoMaximum domain groups to build in map/growth workflows.
queryNoSearch query for search_memory and export_context.
limitNoMaximum items/cards/results to return for the selected action.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_statsA
Read-onlyIdempotent

Return quick LINZA sidecar status: indexed file count, profiles, semantic bridges, and active profile. Use for health checks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_stepsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_notesNoMaximum notes to sample while building the review window.
max_domainsNoMaximum domain groups to consider in the current guide pass.
limitNoMaximum review intents to inspect when choosing the next step.
include_memoryNoInclude memory review candidates in the suggested route.
include_tool_guideNoInclude internal tool-audience/debug guidance in the response; normally false for users.
languageNoUser-facing guide language: auto-detect, English, or Russian.auto

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_allA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoWhen true, rebuild stored embeddings and semantic bridges even if the existing sidecar looks current.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_fileA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesVault-relative Markdown path to read, such as notes/project.md.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_vaultA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv0.2.0
    • Changedagent_workspace23 fields changed
      • addedInput schema / properties / action / description
        Added 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."
      • addedInput schema / properties / allow_overwrite / description
        Added value: +"Allow reviewed YAML/frontmatter writes where supported; source note bodies are still protected by LINZA policy."
      • addedInput schema / properties / approval_id / description
        Added value: +"Existing approval row ID for revoke_approval."
      • addedInput schema / properties / artifacts / description
        Added value: +"Artifact inputs for ingest_artifacts; each item may include text/content, path/source_uri, title, and metadata."
      • addedInput schema / properties / batch_id / description
        Added value: +"Optional batch identifier for grouping ingested artifacts or review intents."
      • addedInput schema / properties / dry_run / description
        Added value: +"Preview apply/revoke actions without writing active sidecar changes; default true."
      • addedInput schema / properties / include_memory / description
        Added value: +"Include memory candidates in teach/grow/review workflows."
      • addedInput schema / properties / include_revoked / description
        Added value: +"Include revoked approvals in history results."
      • addedInput schema / properties / item_ids / description
        Added value: +"Stable review intent IDs to preview/apply with apply_review_items."
      • addedInput schema / properties / kind / description
        Added value: +"Review item kind filter for review/history actions; use all for no filter."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum items/cards/results to return for the selected action."
      • addedInput schema / properties / max_depth / description
        Added value: +"Maximum graph depth for connection/path exploration."
      • addedInput schema / properties / max_domains / description
        Added value: +"Maximum domain groups to build in map/growth workflows."
      • addedInput schema / properties / max_notes / description
        Added value: +"Maximum notes to sample when building workspace maps or growth candidates."
      • addedInput schema / properties / mode / description
        Added value: +"Growth mode for grow; default assisted."
      • addedInput schema / properties / privacy / description
        Added value: +"Privacy label stored with artifacts/traces; default private."
      • addedInput schema / properties / query / description
        Added value: +"Search query for search_memory and export_context."
      • addedInput schema / properties / reason / description
        Added value: +"Reason recorded when revoking an approval or applying a reviewed action."
      • addedInput schema / properties / source / description
        Added value: +"Source note/path/query endpoint for connect."
      • addedInput schema / properties / source_kind / description
        Added value: +"Optional artifact/source filter such as chat, document, note, log, web_article, or trace."
      • addedInput schema / properties / target / description
        Added value: +"Target note/path endpoint for connect."
      • addedInput schema / properties / trace / description
        Added value: +"Agent trace payload for record_trace; stored as structured sidecar evidence, not raw chain-of-thought."
      • addedInput schema / properties / trace_id / description
        Added value: +"Trace identifier used by analyze_trace and review_calibr."
    • Changedguide_next_steps6 fields changed
      • addedInput schema / properties / include_memory / description
        Added value: +"Include memory review candidates in the suggested route."
      • addedInput schema / properties / include_tool_guide / description
        Added value: +"Include internal tool-audience/debug guidance in the response; normally false for users."
      • addedInput schema / properties / language / description
        Added value: +"User-facing guide language: auto-detect, English, or Russian."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum review intents to inspect when choosing the next step."
      • addedInput schema / properties / max_domains / description
        Added value: +"Maximum domain groups to consider in the current guide pass."
      • addedInput schema / properties / max_notes / description
        Added value: +"Maximum notes to sample while building the review window."
    • Changedindex_all2 fields changed
      • addedInput schema / properties / force / default
        Added value: +false
      • addedInput schema / properties / force / description
        Added value: +"When true, rebuild stored embeddings and semantic bridges even if the existing sidecar looks current."
    • Changedread_file1 field changed
      • addedInput schema / properties / path / description
        Added value: +"Vault-relative Markdown path to read, such as notes/project.md."
    • Changedsearch4 fields changed
      • addedInput schema / properties / explain / description
        Added value: +"When true, include scoring/context details for debugging retrieval."
      • addedInput schema / properties / profile / description
        Added value: +"Optional search profile name; defaults to the active profile in the sidecar."
      • addedInput schema / properties / query / description
        Added value: +"Natural-language query used to rank indexed notes."
      • addedInput schema / properties / top_k / description
        Added value: +"Maximum number of note matches to return."
  2. 7 tool updatesv0.1.8
    • First observedagent_workspace
    • First observedget_stats
    • First observedguide_next_steps
    • First observedindex_all
    • First observedread_file
    • First observedscan_vault
    • First observedsearch

TDQS

A3.9/5.0
Disambiguation3/5

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.

Naming Consistency3/5

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.

Tool Count5/5

7 tools cover the core workflows of indexing, searching, reading, diagnostics, status, and guidance without being too few or too many.

Completeness2/5

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

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Standalone MCP harness for cross-system process evidence, code-change impact review, and natural-language repository checkout mapping, with optional accelerators like CodeGraph.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Repository-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.
    30
    2
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Semiotronika/LINZA-MCP'

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