Skip to main content
Glama

Knowledge OS — segundo cérebro para agentes

Servidor MCP local que guarda o conhecimento durável do seu trabalho — regras, decisões e o porquê, procedimentos, contexto e aprendizados — e o devolve aos agentes com pouco custo de contexto. É a memória obrigatória do Plumb: o hook de início de sessão injeta o contexto do projeto e o fechamento de cada mudança grava o que valeu, numa chamada.

  • Local-first: SQLite em ~/.knowledge-os (Postgres e MySQL opcionais, pela UI).

  • Barato em contexto: perfil agent com 6 ferramentas (~1.800 tokens de definição) e instruções de ~400 tokens; o pacote de contexto respeita um orçamento.

  • Busca sem embeddings que acerta em PT-BR: FTS5 sem acento, radical e prefixo ("migração" acha "migrações"), relevância antes de importância.

  • Escrita idempotente: item_save em lote, por key estável — grava de novo sem duplicar.

  • Segredos sem passar pelo modelo: o agente cria o segredo vazio, você preenche na UI local e ele usa por knowledge-mcp run, que entrega o valor só ao processo filho.

  • Seguro: recusa segredos em itens comuns; operações destrutivas pedem confirmação.

Instalar

uv tool install "git+https://github.com/KauaLealz/knowledge-os-mcp-server"      # comando `knowledge-mcp`
knowledge-mcp --version

Para desenvolver, clone e instale editável: uv tool install --editable <pasta-do-clone>.

O SQLite (padrão) já vem incluído. Os drivers de Postgres e MySQL são opcionais:

uv tool install "knowledge-mcp[postgres] @ git+https://github.com/KauaLealz/knowledge-os-mcp-server"   # ou [mysql], ou [all]

Sem o driver, conectar a esse banco falha com a mensagem "instale knowledge-mcp[postgres]" (ou [mysql]).

Já tinha instalado antes do layout src/knowledge_os/? O comando antigo segue funcionando por um atalho, com aviso no stderr; reinstale com uv tool install --editable <caminho-do-repo> --force.

O instalador do Plumb (npx plumb-harness install) registra o servidor no Claude Code e no Cursor, com o perfil agent e o hook de início de sessão. Para registrar à mão:

claude mcp add --scope user knowledge-os -e KNOWLEDGE_OS_TOOLSET=agent -e LOG_LEVEL=WARNING -- knowledge-mcp
// ~/.cursor/mcp.json
{ "mcpServers": { "knowledge-os": { "command": "knowledge-mcp",
  "env": { "KNOWLEDGE_OS_TOOLSET": "agent", "LOG_LEVEL": "WARNING" } } } }

Related MCP server: engrams

Modelo

Workspace = contexto de trabalho     ex.: Polara (empresa), Pessoal
 ├── Domain Geral                     o que vale para todos os repositórios do workspace
 └── Domain = um repositório          ex.: projpro, synapse
      └── Item: type · key · title · summary · content · scope_paths · keywords · source
Global / Geral                        o que vale para você em qualquer lugar

type

Para

rule

sempre/nunca (com scope_paths quando vale só para parte do código)

insight

decisão e o porquê

procedure

passo a passo

pattern · knowledge · context

solução recorrente · fato/gotcha · pano de fundo

Sem aprovação: o que o agente grava já vale. Para corrigir, regrave pela mesma key; para aposentar, status: deprecated ou supersedes — itens substituídos e obsoletos saem da busca e do contexto. Nota temporária: memory_class: "ephemeral" com ttl_days — a manutenção diária apaga quando o TTL vence. O resto (aprendizado, regra, decisão, procedimento) nunca expira sozinho; cada entrega a um agente conta em uses, e a /plumb-retro mostra o que nunca foi usado.

Um repositório é ligado a um workspace/domain pela chave do remote do git (project_link, ou knowledge-mcp link).

Ferramentas

Perfil agent (padrão do Plumb)

context_get

pacote do projeto (regras, contexto, decisões, padrões, procedimentos, aprendizados) dentro de um orçamento; paths traz as regras com escopo

item_search

busca por texto; devolve resumos

item_get

itens completos por ids ou keys, vários de uma vez

item_save

criar, atualizar, upsert, lote, renovar e relacionar — numa transação

project_link

liga um repositório a workspace/domain

health_check

versão, schema e perfil

Perfil all (padrão sem a variável): + structure_list, structure_delete (preview e confirm), item_delete, relation_delete, vocabulary (tags/labels), backup_export, backup_import, artifact_attach, artifact_get. Conexões com outros bancos, sincronização de schema e migração ficam na UI. Guia completo: docs/MCP_USAGE.md.

CLI

knowledge-mcp                                   # servidor MCP (stdio)
knowledge-mcp context --project . --paths src/payments/Charge.java --budget 1500
knowledge-mcp context --hook claude|cursor      # hook de início de sessão (lê o JSON no stdin)
knowledge-mcp link --project .                  # domain = repo; workspace = o do dono
knowledge-mcp recent --since 2026-10-01 --json  # o que mudou (usado pela daily)
knowledge-mcp pending --project .               # grava a fila offline (~/.knowledge-os/pending.jsonl)
knowledge-mcp ui [--port 8765]                  # UI web local (127.0.0.1; já sobe com o MCP)
knowledge-mcp run --env NPM_TOKEN=segredo/npm-token -- npm publish   # segredo só no filho
knowledge-mcp --check-db | --bootstrap | --version

Os subcomandos do cérebro não carregam o servidor MCP: o hook responde em ~1 s.

Segredos

Token, senha ou chave de API viram um item secret (key segredo/<nome>), no mesmo esquema do resto: no domain do repositório, no Geral do workspace (compartilhado pelos repos da empresa) ou no Global (seus). O fluxo:

  1. O agente grava o item sem valor (item_save recusa qualquer campo de valor) e a resposta traz fill_url, o link da UI local direto no item.

  2. Você abre o link e cola o valor num campo de senha. Ele é cifrado (Fernet) e guardado à parte (secret_values); nenhuma ferramenta, rota, busca, contexto ou exportação o devolve — só has_value. Na UI dá para substituir ou apagar; não existe "revelar".

  3. O agente usa: knowledge-mcp run --env VAR=segredo/<nome> [--stdin segredo/<nome>] -- <comando>. O valor vai só para o ambiente (ou stdin) do filho, que roda sem shell e sem a chave mestra; a saída volta com o valor e as codificações comuns (base64, URL) trocados por ***. A key é procurada no repo, depois no Geral do workspace, depois no Global. A redação cobre o valor exato, base64 (inclusive dentro de Basic user:token), URL, JSON escapado, as codepages do Windows e UTF-16, e cada linha de um valor de várias linhas.

A chave mestra é aleatória e fica no keyring do sistema (no Windows, o Gerenciador de Credenciais). KNOWLEDGE_OS_VAULT_KEY existe só para CI e máquinas sem keyring — nunca a ponha na config do MCP (.mcp.json) nem no ambiente do agente: quem a lê, com o banco, abre todos os valores. O banco e os backups guardam só texto cifrado, cada valor amarrado ao seu item. Se a chave some depois de criada, o servidor dá erro em vez de gerar outra por cima.

No Windows, o run acha o comando só pelo PATH (nunca pela pasta do projeto, onde um gh.cmd plantado receberia o token). Comandos .cmd/.bat (npm, az...) rodam pelo cmd.exe: o run recusa argumentos com " % & | < > ^ ! nesses casos. Valores com menos de 4 caracteres são recusados (não daria para escondê-los na saída).

Modelo de ameaça. Protege o valor do contexto do modelo, do histórico das conversas, dos itens, das exportações e do arquivo do banco. Não protege contra: um agente ou comando feito para vazar (quem roda knowledge-mcp run pode escrever um filho que imprime o valor transformado de um jeito que a redação não reconhece); malware rodando com o seu usuário (lê o keyring e chama a UI local); o próprio comando gravar o valor em log ou arquivo. Segredo nunca expira sozinho.

Dados e segurança

Tudo fica no home (KNOWLEDGE_OS_HOME, padrão ~/.knowledge-os): knowledge.db, connections.json, artifacts/, exports/, backups/. Senhas de conexões ficam no connections.json (fora de qualquer repositório) e nunca passam pelas ferramentas. Conteúdo com cara de segredo (chaves de nuvem, tokens, chaves privadas, password=..., URLs com senha) em itens comuns é recusado sem eco do valor (a mensagem ensina o fluxo de segredos acima). Com MCP_DB_KEY e o extra crypto, o catálogo é criptografado com SQLCipher (Linux).

Desenvolvimento

uv pip install -e ".[dev]"
pytest -q                 # ~490 testes, inclusive ponta a ponta via stdio
ruff check src tests

Arquitetura: docs/ARQUITETURA.md. Mudanças são conduzidas pelo Plumb (o plano de cada mudança fica no próprio cérebro, como item task).

Licença

MIT

Available Tools

15 tools
artifact_attachArtifact AttachA

Anexa um arquivo local a um item (copiado para /artifacts, até 100 MB).

Use quando: O valor do item é um arquivo (diagrama, template, script). Retorna: Metadados do anexo (id, filename, file_size, mime_type). Exemplo: artifact_attach(item_id="...", file_path="C:/docs/arquitetura.png") Notas: Use só caminhos que o usuário indicou. A lista vem em item_get → artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
file_pathYes
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the file is copied to <home>/artifacts, has a 100 MB limit, returns attachment metadata, and warns to use only user-indicated paths. However, it omits permissions, overwrite behavior, and error handling details.

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 compact and front-loaded with the core action, followed by use case, return value, example, and notes. Every section is short and contributes directly to invocation clarity.

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?

The output schema exists, so return-value details are supplementary, and the description covers purpose, usage, size limit, and an example. However, with 0% schema description coverage and no annotations, the missing connection_id semantics and lack of permission or failure behavior leave meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives an example showing item_id and file_path, and implies item_id links to an item while file_path is a local path, but the optional connection_id parameter is never explained or mentioned.

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 states a specific verb and resource: attaching a local file to an item, with copy destination and size limit. This clearly distinguishes the tool from sibling artifact_get and from unrelated item operations.

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

Usage Guidelines4/5

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

It explicitly says when to use the tool: when the item value is a file such as a diagram, template, or script. It also points to item_get for listing existing artifacts, though it does not state when not to use this tool or name a direct alternative.

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

artifact_getArtifact GetB

Conteúdo de um anexo em base64.

Use quando: Precisar do arquivo em si (confira file_size em item_get antes). Retorna: {artifact, content_base64}. Exemplo: artifact_get(artifact_id="...")

ParametersJSON Schema
NameRequiredDescriptionDefault
artifact_idYes
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full behavioral burden. It usefully discloses that the payload is base64 and implicitly warns about size by telling the agent to confirm file_size first, but it says nothing about size limits, token/memory cost, or auth requirements for reaching the blob.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the return payload, then use-case, then example — tight and scannable with no filler. The 'Retorna' line partially duplicates the existing output schema, but it costs little and aids fast reading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, and the item_get cross-reference covers the main workflow. However, for a 2-param tool the undocumented connection_id and absent guidance on large/failed fetches leave real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters. The example shows artifact_id in use but never explains where it comes from or what it identifies, and connection_id is entirely undocumented in both schema and description, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource and the exact payload ('Conteúdo de um anexo em base64'), which is a specific verb-free but unambiguous purpose. It distinguishes itself from item_get by noting that item_get is where you check file_size before fetching the artifact itself, so an agent can route between them.

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?

'Use quando: Precisar do arquivo em si' gives an explicit trigger condition and names the alternative (item_get / file_size) as a prerequisite check. No explicit when-not case, but the context is clear enough to select correctly.

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

backup_exportBackup ExportA

Exporta um workspace (ou só um domain) para um ZIP em /exports.

Use quando: Antes de mudanças grandes ou para levar conhecimento a outra máquina. Retorna: {status: ok, file_path, size_mb}. Exemplo: backup_export(workspace="agenda-api") · backup_export(workspace="agenda-api", domain="projpro") Notas: backup_import restaura (o workspace importado ganha ids novos).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
workspaceYes
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It usefully discloses the artifact location (ZIP in <home>/exports) and the restore caveat about new ids, but says nothing about permissions, whether an existing export is overwritten, or failure modes for a missing workspace.

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?

Bold-labeled sections (Use when / Returns / Example / Notes) are front-loaded and scannable, each carrying distinct information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so omitting deeper return-value detail is acceptable, and usage plus the sibling pointer are covered. The remaining gap is the undocumented connection_id, which an agent may need to supply.

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 0%, so the description must compensate. It clarifies workspace and domain through the parenthetical and two concrete examples, but connection_id is never mentioned or explained anywhere, leaving one of three parameters semantically opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (export a workspace or a domain to a ZIP), specifies the output location (<home>/exports), and distinguishes itself from the sibling backup_import, which it names as the reverse operation.

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

Usage Guidelines4/5

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

Provides an explicit 'Use when' clause (before big changes, or to move knowledge to another machine) and routes restoration to backup_import. It lacks an explicit 'do not use for X' exclusion, but the context and the named alternative make selection unambiguous.

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

backup_importBackup ImportA

Importa um ZIP de backup_export: workspace inteiro, ou um domain dentro de workspace.

Use quando: Restaurar um backup ou trazer conhecimento de outra máquina. Retorna: {status: ok, ...workspace ou domain criado}. Exemplo: backup_import(file_path="C:/x/workspace_....zip") Notas: Use só caminhos que o usuário indicou. Nome de workspace já existente é recusado.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
workspaceNo
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses an important failure mode (existing workspace name rejected) and a safety constraint (only user-indicated paths), plus the success return shape, but says nothing about whether an import overwrites/merges existing domains, permission requirements, or size/time limits.

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?

Labeled sections (purpose, Use quando, Retorna, Exemplo, Notas) with the core statement front-loaded and no filler. Every line adds either routing, constraint, or example value.

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?

Covers purpose, usage trigger, return shape, a concrete call example, and key constraints, which is strong for a 3-param mutation tool. The return values are also covered by an output schema, so the main remaining gap is the undocumented connection_id parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains file_path (a ZIP produced by backup_export) and workspace (the domain inside the workspace), which meaningfully supplements the bare string types, but connection_id is never mentioned and the workspace/null semantics remain ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (import a ZIP) and names the counterpart sibling backup_export as the source of the artifact, so the agent immediately understands the inverse relationship. It further scopes the outcome to either a whole workspace or a domain inside a workspace.

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?

Explicit when-to-use line: restoring a backup or bringing knowledge from another machine. It lacks a formal when-not/alternative clause, but the 'Notes' section adds a hard exclusion (existing workspace name is refused) and a constraint (only user-indicated paths), which covers most of the routing need.

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

context_getContext GetA

Pacote de contexto do projeto: regras, contexto, decisões, padrões, procedimentos.

Use quando: Começar num projeto (se o hook não injetou) ou ao passar a mexer em outra área: paths traz as regras com escopo daqueles arquivos; query, itens relacionados. Retorna: {linked, project_key, workspace, domain, markdown, included, omitted, sensitive}. Exemplo: context_get(project=".", paths=["src/payments/Charge.java"], query="estorno") Notas: Dentro de budget_tokens. Itens que casam com paths ou query vêm em foco, com o começo do content (dispensa item_get); o resto, só título, resumo e key. sensitive é true se paths toca uma área marcada com a keyword "sensivel". Inclui o domain do projeto, Geral do workspace e Global/Geral. Sem substituídos, obsoletos nem ephemeral.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsNo
queryNo
projectYes
budget_tokensNo
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

No annotations exist, so the description carries the full behavioral burden and largely meets it: it discloses the `budget_tokens` cap, that path/query matches arrive focused with the start of content while the rest show only title/summary/key, how `sensitive` is set, and which scopes are included/excluded (substituted, obsolete and ephemeral items omitted). Permissions and performance characteristics are the main gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with bold section headers (Use quando / Retorna / Exemplo / Notas) that let an agent skim. The 'Retorna' field list duplicates what the existing output schema already specifies, which is the only wasted line; the rest is dense and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with 0% schema description coverage and no annotations, the description supplies the usage triggers, scoping semantics, budget behavior and inclusion/exclusion rules an agent needs to call it correctly. With an output schema present, the explicit return-field listing is redundant, and `connection_id` remains undocumented, but overall it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does for most parameters: `paths` (scoped rules for those files), `query` (related items), `project` (shown as project=".") and `budget_tokens` (results capped within it) all gain meaning. Only `connection_id` is left unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource clearly: a project context bundle covering rules, context, decisions, patterns and procedures. The retrieval verb is only implicit ('context_get') and no sibling is named directly, though the note that focused items 'dispensa item_get' hints at the item_get overlap. Clear but not fully differentiated from item_get/item_search in the purpose line itself.

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 '**Use quando:**' block gives explicit triggering conditions: starting on a project (when the hook hasn't injected) or moving into another area, with `paths` for scoped rules and `query` for related items. It covers when to reach for this tool but does not lay out explicit when-not rules beyond the hook case.

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

health_checkHealth CheckA

Verifica a saúde do servidor MCP e do banco default.

Use quando: Diagnosticar falhas ou confirmar que o servidor está operacional. Retorna: {status: ok|error, database: connected | motivo, version, schema_version, toolset}. Exemplo: health_check() Notas: Valida a conexão e a presença de todas as tabelas (inclusive a de busca textual).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and largely meets it: it discloses what is validated (connection plus presence of all tables, including the full-text search table) and the shape of the response. It stops short of explicitly stating there are no side effects or auth requirements, but for a zero-param health probe the behavioral surface is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Bold-labeled sections (Use quando / Retorna / Exemplo / Notas) front-load the purpose and keep the reader oriented. The example line is near-redundant for a no-argument tool and the Retorna fields partly duplicate the existing output schema, costing a little efficiency.

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?

An output schema exists, so return values need not be described, yet the description still enumerates the return fields (status, database, version, schema_version, toolset) and the validation notes. For a zero-parameter diagnostic tool this leaves nothing an agent needs unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description's 'Exemplo: health_check()' correctly reinforces that no arguments are accepted, consistent with the empty 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?

States a specific verb+resource combination ('Verifica a saúde do servidor MCP e do banco default') that is unambiguous and distinguishable from every sibling, none of which are diagnostic tools. An agent immediately understands this reports server/database health.

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?

'Use quando: Diagnosticar falhas ou confirmar que o servidor está operacional' gives explicit when-to-use conditions. There is no sibling alternative to route against, so no exclusion is needed, but the guidance is clear rather than implied.

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

item_deleteItem DeleteA

Remove um item de vez (com tags, relações e anexos). Destrutivo.

Use quando: O item está errado e não há histórico a preservar. Retorna: {status: deleted, id}. Exemplo: item_delete(item_id="...") Notas: Para aposentar mantendo o histórico, prefira item_save com status=deprecated ou uma relação supersedes.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries the full load and does so well: it declares the operation destructive, permanent, and enumerates the collateral scope (tags, relations, attachments). It does not cover authorization/connection scoping, which keeps 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The destructive action and its scope are front-loaded in the first sentence, followed by clearly labeled Use quando / Retorna / Exemplo / Notas sections. Every line carries information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, and the description still names the return shape; destruction scope, routing alternative, and usage condition are all covered for a simple 2-parameter delete. The unresolved connection_id semantics is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 2 parameters, so the description must compensate. It only shows item_id inside an example string and says nothing about connection_id, leaving half the parameters undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (remove/delete an item) and precisely scopes what is removed: tags, relations and attachments. Marks it as destructive, which immediately distinguishes it from the retire-with-history path offered by item_save.

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

Usage Guidelines5/5

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

Contains an explicit 'Use quando' clause (item is wrong and no history needs preserving) plus a 'Notas' section naming the alternative (item_save with status=deprecated or a supersedes relation) and the condition that selects it. When-to-use, when-not, and the alternative are all present.

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

item_getItem GetA

Lê itens completos (content, tags, relações, anexos) por id e/ou key, vários de uma vez.

Use quando: O resumo da busca ou do contexto não bastou. Retorna: Lista de itens completos, na ordem pedida; o que não existe vem como {key|id, missing: true}, sem derrubar os outros. Exemplo: item_get(keys=["regra/money", "proc/deploy"], project=".") Notas: keys exigem project (o domain ligado) ou workspace e domain. Até 20 por chamada.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
keysNo
domainNo
projectNo
workspaceNo
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and mostly does: it discloses graceful degradation (missing items returned as {key|id, missing: true} without failing others), the batching limit (up to 20 per call), and ordering guarantees. It omits any auth/permission or addressee-side effects, but the batch and partial-failure semantics are genuinely useful.

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?

Front-loaded verb phrase followed by clearly labeled sections (Use quando, Retorna, Exemplo, Notas). Every line carries usable information with no filler, and the concrete example grounds the wire format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param, zero-schema-coverage tool the description covers the critical operational facts: batch limit, key-addressing prerequisites, and missing-item handling. An output schema exists so return-shape docs are a bonus rather than required; only the unlabeled ids/domain/connection_id semantics remain a gap.

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 0% across 6 params, so the description must compensate. It clarifies the keys/project/workspace/domain relationship ('keys exigem project... ou workspace e domain') and id/key dual addressing, but leaves 'ids', 'domain', and 'connection_id' uninterpreted, so coverage is partial rather than complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Lê') and resource ('itens completos') with an explicit scope enumeration (content, tags, relations, attachments) and distinguishes itself from the search/context summary path that returns less. An agent can tell it apart from item_search without opening either schema.

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

Usage Guidelines4/5

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

Has an explicit 'Use quando' block naming the trigger condition (search/context summary was insufficient), which effectively routes away from item_search and context_get. However, it does not name those alternatives explicitly or state when NOT to use it.

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

item_saveItem SaveA

Grava itens (criar, atualizar, upsert, renovar, relacionar) numa transação.

Use quando: Guardar o que vale para depois — uma regra que o usuário enunciou, as decisões e aprendizados ao fechar uma mudança, uma correção de um item. Retorna: [{index, id, key, action: created|updated|unchanged, similar?, relations?}]. Modo, por entrada: com key → upsert no domain (não duplica; o preferido); com id → atualiza o item; sem os dois → cria e devolve similar (títulos parecidos já guardados). Exemplo (upsert): item_save(project=".", items=[{"key": "regra/money", "type": "rule", "title": "Money em pagamentos", "summary": "Valores em Money, nunca double", "content": "...", "scope_paths": ["src/payments/**"], "source": "PAY-142"}]) Exemplo (aposentar): item_save(project=".", items=[{"key": "regra/x", "status": "deprecated"}]) Exemplo (substituir): item_save(project=".", items=[{"key": "proc/deploy-v2", ..., "relations": [{"type": "supersedes", "target": "proc/deploy"}]}]) Campos: type (rule, insight, procedure, pattern, knowledge, context, artifact, task), title, summary, content, keywords, source, scope_paths, status (active, done, superseded, deprecated), memory_class "ephemeral" + ttl_days só para nota temporária (sem aprovação: o resto já vale), tags, labels, relations [{type: related_to|depends_on|implements|references|supersedes|derived_from, target: id ou key}], workspace/domain (sem eles vale o domain ligado a project). Segredo: {"key": "segredo/npm-token", "type": "secret", "title": "Token do npm", "summary": "publicar no npm"} — sem valor (é recusado); a resposta traz fill_url: passe ao usuário para ele preencher na UI local. Usar: knowledge-mcp run --env NPM_TOKEN=segredo/npm-token -- <comando>. Notas: Um erro desfaz o lote e aponta a entrada. Conteúdo com cara de segredo é recusado.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
projectNo
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: batch is transactional (one error rolls back the lot and points at the offending entry), secret-like content is refused, secrets store no value and return a fill_url for the user to complete in the local UI, and similar-title detection fires on creation. This is exactly the operational context an agent needs before writing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is long, but the bold labels (Use quando / Retorna / Modo / Exemplo / Campos / Segredo / Notas) front-load the mode decision and the examples each demonstrate a distinct operation rather than restating one. Dense yet every block earns its place for a tool with this many modes; slightly heavy for quick scanning.

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?

An output schema exists, yet the description still summarizes the return shape and, more importantly, covers the failure paths (rollback, refused secrets, rejected secret-like content) and the secret-filling workflow. Combined with the schema, an agent has everything needed to call this correctly on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate — and it largely does, documenting the per-item mode switch (key → upsert in domain, id → update, neither → create + similar), the full field list (type, status, relations, scope_paths, memory_class/ttl_days, workspace/domain), and the project/domain fallback. Only connection_id is left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb and resource ("Grava itens") and enumerates the write modes it covers (criar, atualizar, upsert, renovar, relacionar) inside a transaction, so an agent immediately knows this is the write path. It never names the read/delete siblings (item_get, item_search, item_delete), but the semantics make the boundary obvious.

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?

"Use quando" gives concrete triggering situations — persisting a user-stated rule, decisions/learnings from a completed change, a correction to an item. It gives no explicit when-not or named alternative (e.g. use item_search to look things up, item_delete to remove), so the negative space is left to inference.

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

relation_deleteRelation DeleteA

Remove uma relação entre itens (o id vem em item_get → relations).

Use quando: Uma relação foi criada por engano. Retorna: {status: deleted, id}. Exemplo: relation_delete(relation_id="...") Notas: Remover um supersedes não reativa o alvo: ajuste o status com item_save.

ParametersJSON Schema
NameRequiredDescriptionDefault
relation_idYes
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it discloses a genuinely useful side effect: removing a supersedes relation does not reactivate the target, requiring a follow-up item_save. It still omits permissions/authorization requirements and whether the deletion is reversible.

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?

Front-loaded with the core action, then cleanly sectioned into Use quando / Retorna / Exemplo / Notas. Every line adds signal, and the example makes invocation concrete with no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter delete tool with an output schema already covering the return value, the description covers purpose, trigger, provenance, and the supersedes caveat. The remaining gap is the undocumented connection_id parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the provenance of relation_id and gives a usage example, but the optional connection_id parameter is never mentioned, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (remove) and resource (a relation between items), and adds where the identifier comes from ('o id vem em item_get → relations'). This clearly distinguishes it from sibling delete tools like item_delete and structure_delete, which operate on different resources.

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 'Use quando' section gives an explicit trigger ('Uma relação foi criada por engano'). However, it offers no exclusions or named alternatives for other cleanup scenarios, and the interaction with item_save is only hinted at in the notes.

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

structure_deleteStructure DeleteA

Remove um domain (ou o workspace inteiro) com todos os itens. Destrutivo.

Use quando: O usuário pediu explicitamente para apagar. Retorna: Sem confirm: {status: preview, would_delete}. Com confirm: {status: deleted}. Exemplo: structure_delete(workspace="Teste", confirm=True) Notas: Chame primeiro sem confirm e mostre o preview ao usuário. Prefira backup_export antes, e status=deprecated (item_save) quando o histórico importar.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
confirmNo
workspaceYes
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it declares the operation destructive, explains the two-phase confirm gate (without confirm = preview with would_delete; with confirm = actual deletion), and instructs calling without confirm first to show a preview. This discloses the exact safety-critical behavior of a deletion tool.

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?

Front-loaded purpose followed by clearly labeled sections (**Use quando**, **Retorna**, **Exemplo**, **Notas**). Every line earns its place for a destructive tool, with no redundancy.

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 a destructive 4-param tool with 0% schema coverage and an output schema present, the description covers purpose, invocation trigger, return behavior, an example, and safer alternatives. The only real gap is the undocumented 'connection_id' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It fully explains 'confirm' semantics and demonstrates 'workspace' via the example, and implies 'domain' scope, but 'connection_id' is never mentioned. Partial coverage of a 4-param schema that is otherwise undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Remove) plus the exact resource and scope ('um domain ou o workspace inteiro com todos os itens'), which clearly separates it from item_delete and relation_delete siblings. The word 'Destrutivo' is front-loaded so an agent can immediately gauge severity.

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

Usage Guidelines5/5

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

Explicitly scopes invocation to 'O usuário pediu explicitamente para apagar' and names alternatives with their conditions: prefer backup_export beforehand and use status=deprecated via item_save when historical data matters. This is genuine when/when-not/alternative guidance.

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

structure_listStructure ListA

Árvore workspaces → domains com a contagem de itens.

Use quando: Ver o que existe antes de organizar, ligar um projeto ou fazer backup. Retorna: [{workspace, description, items, domains: [{name, items}]}]. Exemplo: structure_list() · structure_list(workspace="agenda-api") Notas: Criar workspace/domain é implícito em item_save e project_link.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the return shape and the boundary that creation happens elsewhere, but never states that this is a non-destructive read, what connection_id selects, whether results are paginated or auth-scoped. Adequate but with real gaps for a zero-annotation tool.

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?

Front-loaded one-line summary followed by labeled Use/Returns/Example/Notes blocks. Dense but every line adds information; nothing is redundant padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not strictly required, and the tool has only two optional params. Still, connection_id is undocumented in both schema and description, and the read-only nature is left implicit for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The example structure_list(workspace="agenda-api") shows the workspace param is a name filter and that omitting it returns everything, but connection_id is never explained anywhere. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (the workspace → domain tree) and its payload (item counts), so an agent immediately knows this is a structural overview, not an item fetch. It also explicitly distinguishes itself from siblings by noting that workspace/domain creation lives in item_save and project_link rather than here.

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?

"Use quando" gives concrete triggers: before organizing, before project_link, before backup_export. It also draws a boundary by saying creation is not done here. No explicit when-not or named alternative for the inverse case, but the context is clear.

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

vocabularyVocabularyA

Vocabulário da base: tags (livres) e labels (lista controlada).

Use quando: Reaproveitar tags existentes antes de criar variações, ou gerir labels. Retorna: list → [{id, name}]; create → {id, name}; delete → {status: deleted}. Exemplo: vocabulary(kind="tags") · vocabulary(kind="labels", action="create", name="lgpd") Notas: kind: tags | labels. action: list | create (name) | delete (id). Tags também são criadas direto no item_save.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
kindNotags
nameNo
actionNolist
connection_idNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the whole burden. It discloses the return shape per action ('list → [{id, name}]', 'create → {id, name}', 'delete → {status: deleted}') and the tags-vs-labels distinction, which is genuinely useful. It omits permission/auth requirements and, importantly, does not say what deleting a label does to items already carrying it — a real gap for a destructive action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labelled sections (Use quando / Retorna / Exemplo / Notas) front-load the trigger and pack parameters, returns, and an example into four short blocks. Dense and readable with very little filler; slightly compressed syntax but nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter, no-required, multi-action tool with 0% schema coverage and no output schema, the description supplies the missing action model and per-action return shapes. Only 'connection_id' and the exact effect of delete on existing item tags are unaccounted for.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it defines the allowed values of kind ('tags | labels'), the action set and the argument each action takes ('create (name)', 'delete (id)'). Only 'connection_id' is left unexplained, and the enums remain informal rather than schema-enforced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line names the resource precisely ('tags (livres)' vs 'labels (lista controlada)') and the actions surface in the example and notes (list/create/delete). An agent can tell it deals with the tag/label vocabulary rather than items or structures. It stops short of an explicit verb+resource sentence up front and does not name the sibling it is distinct from.

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 'Use quando' line gives a concrete trigger (reuse existing tags before creating variants; manage labels), and the closing note routes the agent to item_save for the overlapping case of creating tags on an item. Clear context, but no explicit when-not-to-use beyond that one overlap.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv0.1.0
    • First observedartifact_attach
    • First observedartifact_get
    • First observedbackup_export
    • First observedbackup_import
    • First observedcontext_get
    • First observedhealth_check
    • First observeditem_delete
    • First observeditem_get
    • First observeditem_save
    • First observeditem_search
    • First observedproject_link
    • First observedrelation_delete
    • First observedstructure_delete
    • First observedstructure_list
    • First observedvocabulary

TDQS

A4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct resource and action: three deletes (item_delete, relation_delete, structure_delete) are explicitly scoped to different objects, and the three retrieval tools are clearly delineated (item_search returns summaries, item_get returns full items, context_get returns a curated project bundle). Descriptions add explicit 'use when' guidance that prevents misselection.

Naming Consistency4/5

The dominant pattern is consistent snake_case resource_action (item_save, item_get, artifact_attach, structure_delete, backup_export, project_link, relation_delete, context_get). A couple of names deviate from the verb_noun scheme (vocabulary has no verb; health_check is noun_noun), but overall it is predictable and readable.

Tool Count5/5

15 tools is well-scoped for a knowledge-management server spanning items, relations, artifacts, structure, backups, vocabulary, context, and health. Each tool earns its place with no redundant or filler entries.

Completeness4/5

Coverage is strong: items have save/read/search/delete, relations have create (via item_save) plus delete, artifacts attach/get, structure list/delete, and backup export/import. Minor gaps exist (no explicit artifact detach, workspace/domain rename, or description edit) but core lifecycle workflows are fully covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI coding assistants with persistent project memory to retain architectural decisions, code patterns, and domain knowledge across sessions. It stores data locally in a SQLite database, allowing agents to remember, recall, and manage project-specific context using full-text search.
    8 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Gives AI assistants persistent, queryable project memory for decisions, patterns, and rules, reducing the need to re-explain context in every prompt.
    11
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Gives AI coding agents persistent, evolving knowledge about a codebase, enabling them to store and retrieve observations about architecture, conventions, gotchas, and recent work context.
    10
    15 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.
    MIT