Skip to main content
Glama

Open Kioku

Your coding agent shows its evidence before it edits, and its diff is verified against the plan it declared.

A local index of your repository feeds a bounded plan; after the edit, ok verify checks the actual changed files against that plan. Nothing leaves your machine.

CI npm npm downloads crates.io crates.io downloads License

Website · First win · What to expect · Install · MCP tools · Architecture


First Win: 2 Commands

npm install -g open-kioku
ok setup agent cursor --repo . --apply

Use claude instead of cursor for Claude Code. One command indexes the repository, writes repository-scoped MCP configuration and agent guidance, and checks that the local server answers (run without --apply to preview; nothing is written). Then ask for evidence on a real task:

ok context "reap the doctor's MCP probe child process" --format markdown

This is the actual output on this repository, trimmed: marks cut lines, and each primary unit is collapsed to its line range and first line. The commit that made this change touched exactly one file, and it is the first result:

# Task: reap the doctor's MCP probe child process

## Confidence
- Overall: `Medium` (`0.74`)
- Caveats:
  - exact symbol/reference evidence is absent
  - runtime corroboration is absent
- Components:
  …
  - `exact_references` score `0.25`, weight `0.20`, contribution `0.05`
  …
  - `task_relevance` score `1.00`, weight `0.20`, contribution `0.20`
  …
## Retrieval
…
- Attempted: `lexical, document, exact_semantic, graph, validation, git_history, runtime`
- Succeeded: `lexical, document, exact_semantic, graph, validation, git_history`
…
- Exact-authority selections: `0`; ambiguity/unresolved signals: `0`
- Retrieval confidence: `Medium` (qualitative ContextPack confidence, not a calibrated probability)
- Caveats:
  - no runtime traces, logs, or incidents are ingested for this repository
  …
## Primary Context
### crates/open-kioku-cli/src/reports/status_setup_doctor.rs
Lines 1-107  `fn file_path_for_symbol(store: &dyn MetadataStore, symbol: &Symbol) -> anyhow::Result<PathBuf> {`
### crates/open-kioku-core/src/process.rs
Lines 66-180  `fn proc_status_peak_rss_bytes() -> Option<u64> {`
…

The label is Medium, not higher, for one reason the pack states: the task names no identifier the index resolves exactly and this repository has no SCIP index, so exact_reference_count is 0 (exact_references scores 0.25; Exact-authority selections is 0), which caps the score at 0.74 and the label at Medium. Runtime artifacts are absent too; that is the second caveat, and it lowers the score, not the band. Exact is reserved for packs with at least one exact-authority selection; a lexical match, however good, does not earn it. The task is phrased as the fixing commit's subject, so git history corroborates the first file alongside the lexical match. Every pack says which evidence streams ran, which succeeded, and what is missing. Missing evidence lowers the stated confidence; it is never papered over.

Related MCP server: Context Zero Engine

What You Get

ok plan "change token expiration" --format json > plan.json   # context, impact, tests, edit boundary, caveats
# ...edit with your normal agent or editor...
ok verify --plan plan.json --git                               # the real diff against the declared boundary

ok plan (or the plan_change MCP tool) returns primary context with provenance, impact candidates split into structurally proven and heuristic, validation targets tiered by evidence, an edit boundary (allowed, caution, forbidden paths), and explicit caveats. ok verify reads the actual changed files and reports, for example, [out_of_boundary] go/shipping/carrier.go: path is outside the saved plan boundary. A green exit code from a test runner is not proof the right files changed; this is.

Underneath: exact definitions, references, and dependency paths from source (and optional SCIP) are authoritative. Lexical, semantic, history, test, and runtime signals can reorder retrieval; they cannot overwrite repository truth.

What Changed in 4.0.0

Released 2026-09-11. Run ok index after upgrading: the index storage format changed, and a pre-4.0 index withholds relationship evidence and says so (ok impact, ok plan, ok context, and the MCP tools on them refuse with run ok index rather than answer from an empty graph). The full list, with the commit and method behind every number, is in CHANGELOG.md.

  • 16 MCP tools, down from 58. Each answers one question no other tool answers; a retired name answers with where its capability went. Six descriptions that said what their names suggested now say what the implementation does, and structural_search is gone because no structural matching existed. docs/mcp-tools.md carries the migration table.

  • regex_search does regex. It had dispatched to ranked lexical search; it now evaluates the pattern line by line over indexed text and reports files scanned and early stops. ok search <pattern> --regex is the CLI equivalent.

  • The index reports what it did not index. Per-language coverage with every omission attributed to a skip reason, in ok index, ok doctor, ok status, and repo_status. An ingest rule had silently dropped 25 Java source files from one repository.

  • More of the right region. Selected units covered 3–22% of the lines a real commit changed even when the file was right; the top three files now widen to the enclosing symbol and adjacent chunks. Share of changed lines shown within 8k tokens, 626 paired local cases, no case worse, about three times the tokens: Java 0.216 → 0.248, Go 0.207 → 0.299, TypeScript 0.155 → 0.335, Python 0.130 → 0.203 (docs/ranking.md, benchmarks/commit-derived/region-widening-ab.json).

  • Task words reach the repository's identifiers. ChannelsUtils Tests reaches ChannelUtilsTests with no model, network, or re-index. Neutral on commit-subject benchmarks by construction; on 259 perturbed queries R@5 0.656 → 0.699, MRR +0.036 (95% CI +0.015 to +0.062), an upper bound by design (docs/ranking.md).

  • Derived-file edges. A generated file and its origin, or a test and the module it is named after, join impact analysis as labeled possibilities: a declared origin carries its proof, a naming convention is marked heuristic (docs/graph-model.md).

What to Expect

Retrieval is measured on the production path (ok context, the same builder behind ok plan and the MCP build_context_pack tool) on four real repositories, each indexed at a fixed base commit. Every case is a later commit: the query is its subject line, the answer is the source files it changed. Cases are split chronologically; both splits are gated nightly, and the table shows holdout.

Corpus

Holdout cases

R@5

R@20

MRR

Java, about 10k files

113

0.566

0.699

0.504

Go application, ~800 files

84

0.679

0.809

0.535

TypeScript, ~900 files

166

0.825

0.874

0.658

Python library, ~4k files

199

0.663

0.759

0.545

  • R@5 — the share of tasks for which at least one file the commit changed is in the first five results.

  • R@20 — the same within the first twenty results, roughly the whole context pack.

  • MRR — the average of 1 / rank of the first correct file; 1.0 means it was always first, 0.5 is what you get if the first correct file were always second, or first half the time and never found the rest.

Read it plainly. On a Java repository of about ten thousand files, the right file is in the top five about half the time and in the pack about two thirds of the time; on a TypeScript repository of about nine hundred files, in the pack nearly nine in ten and in the top five about four in five. That is the floor the agent starts from before it has looked at anything, and it is the number to watch. Exact lookups (definitions, references, dependency paths) and the plan → edit → verify loop sit on top of it.

These baselines were frozen from a hosted Linux runner matrix on 2026-09-08 and are re-derived nightly by .github/workflows/commit-derived-bench.yml; the job fails when a watched metric falls more than 0.03 below its frozen baseline. Queries are commit subjects, not issue text, so the numbers are not comparable with published benchmarks that use issue text. Corpus descriptions, both splits, the scripts, and the regression policy: docs/retrieval-benchmark.md; frozen baselines: benchmarks/commit-derived/.

Two more measured facts:

  • When the task has no answer. On the 30-case frozen fixture, none of the five no-gold tasks is presented as an answer: the no-gold false-positive rate is 0.0 (the CI ceiling is 0.25), and the advisory routed context-pack strategy in the same run (cc4:routed_contextpack) returns none of them above Low. A low-confidence pack still lists candidates; it tells the caller not to trust them rather than returning nothing. benchmarks/retrieval-baseline.json

  • Optional local neural embeddings. The default local neural profile (a 149M-parameter int8 model, pinned by digest) improved every metric on the Go and TypeScript corpora against a same-day control, by about +0.025 MRR, on 4-vCPU / 16 GB hosted runners. Real but modest; the lexical ranking fixes landed the same day were worth about four times as much. docs/embedding-providers.md

Measured at Scale

Performance claims are observations tied to an identifiable build, published with method and caveats. The most recent end-to-end scale record validates the 3.1.0 release lineage at source commit 3959fdfb6ca27d0c279b635fca7fc1b7935d4889 on a large Java repository, on the same host and protocol as the previous public record. 4.0.0 changed the index storage format and has not been re-run on this corpus; the table describes 3.1.0. 4.0.0's own measured changes are listed with their commits and methods in CHANGELOG.md.

Measurement (v3.1.0 lineage, end to end)

Result

Tracked source files / Java files

16,537 / 12,580

Indexed files / symbols / chunks

13,607 / 247,499 / 248,107

Graph nodes / edges

402,844 / 1,522,135

Cold structural index

19m 28s

Exact class lookup, fresh process

0.02–0.05s

Exact references / lexical search, fresh process

0.74s / 0.24s

Exact-flat semantic build

495,606 vectors in 58.8s; 0 failures

Persistent HNSW build

495,606 vectors in 10m 19s; 0 failures

Against main at c96f61a on the identical corpus and host (methodology): per-command startup ~14s → sub-second, exact class lookup 13.9s (returning an incorrect symbol not found) → 0.02s with the correct class, cold structural index 40m 40s → 19m 28s. The repeat index reproduced identical totals and four parallel graph readers completed with zero lock failures. The repository identity is withheld, so this is a scale record rather than a replayable corpus: machine-readable evidence · methodology · previous record: v3.0.4 evidence.

More artifacts: local semantic scale, 51,349 vectors, persistent HNSW auto-selected, 21.70s fresh build, 0 stale / 0 failed vectors (demo/proof/ann-50k-dogfood.json); plan → edit → validate → verify through the policy-gated runner, 2 passed, 0 boundary violations, final verdict warn because stronger evidence was absent (demo/proof/verification-dogfood.json); a public repository audit, 4,600+ files, 46,000+ symbols, 8,900+ tests indexed in 33.1s (docs/large-repo-proof.md).

These are local workstation timings, not universal guarantees.

Install

Channel

How

npm (recommended)

npm install -g open-kioku — the wrapper pulls @open-kioku/{darwin-arm64,linux-x64,linux-arm64,win32-x64} (sources under packages/)

crates.io

cargo install open-kioku-cli or cargo binstall open-kioku-cli

GitHub releases

Binaries with SHA256SUMS, SBOM.cargo-metadata.json, PROVENANCE.json, and GitHub build-provenance attestations (docs/release-trust.md)

Claude Code plugin

claude_plugin.json and .claude-plugin/

Cursor / Codex plugins

.cursor-plugin/ · .codex-plugin/

MCP directories

Glama (glama.json) · Smithery (smithery.yaml)

From source

git clone https://github.com/shivyadavus/open-kioku.git && cargo install --path open-kioku/crates/open-kioku-cli

Connect an Agent

ok setup agent claude --repo . --apply    # Claude Code: index + .mcp.json + managed skill, then a live MCP check
ok setup agent cursor --repo . --apply    # Cursor: index + .cursor/mcp.json + managed rule
ok mcp install codex  --repo .            # Codex: prints the TOML server entry
ok mcp install gemini --repo .            # Gemini CLI: prints the JSON server entry

ok setup agent --apply is wired for claude and cursor; every other client listed by ok mcp install --help gets a read-only configuration snippet from ok mcp install <client>. The MCP server is local, read-only, and speaks stdio. It advertises 16 tools — one per question nothing else answers — each carrying usage guidance, input/output schemas, safety annotations, and routing categories, and a metadata regression test rejects new tools that omit any of it. Memory and runtime-error tools appear only once those features are configured; the architecture, history and ownership capabilities ship on the CLI (ok architecture …, ok history …, ok contract show).

Step-by-step guides: Claude Code · Cursor · Codex · Gemini CLI · CI: open-kioku-action (docs/github-action.md)

Every ok mcp install client, with its generated config shape and how to confirm the connection: docs/guides/cross-harness-setup.md

Why Local

  • No hosted index and no source upload: everything lives under the repository's .ok/ directory, and ok prove shares counts and scores without source snippets.

  • MCP is read-only by default; source edits stay in your normal editor or agent harness.

  • Command execution and model downloads are policy-gated, secret-like paths are blocked, and network denial fails closed rather than degrading silently.

docs/security-model.md · SECURITY.md · docs/release-trust.md

How It Is Measured

Threshold changes are product changes and are reviewed as such; a threshold is never lowered to make CI green.

More Than One Repository

Semantic retrieval is optional and local (ok --repo . semantic index, then ok search "authorization expiry" --hybrid); model acquisition needs explicit consent and is refused under network denial (docs/semantic-search.md, docs/vector-index.md). Index projects individually and link them into a workspace (ok index --mode cross-project --workspace <dir>, ok architecture fleet). Export and import known-good indexes for team and CI reuse (ok --repo . snapshot export --quality best, ok --repo . index --from-snapshot auto); personal memory is excluded from shared snapshots by default. Detect architecture, check policies, and create bounded change contracts (ok --repo . architecture detect, ok --repo . contract create "update API boundary"). Git history is on by default with a bounded window; runtime traces and coverage reports are opt-in local inputs that never outrank exact source truth.

Language Support

Tree-sitter parsing and symbol extraction cover Rust, Python, TypeScript/TSX, JavaScript/JSX, Go, and Java. YAML and JSON are parsed structurally; file/chunk indexing also covers TOML, SQL, Markdown, Terraform, and other repository text. Language-aware resolution adds scope, import, receiver/type, containment, and inheritance semantics where supported.

Exact Java definitions and references from a scip-java index: docs/guides/java-scip.md

Useful Commands

ok --repo . search "token expiration handler"
ok --repo . symbol definition PolicyGate
ok --repo . symbol refs PolicyGate
ok --repo . impact --file src/auth.rs
ok --repo . tests --changed src/auth.rs
ok --repo . context "change token expiration" --format markdown
ok --repo . plan "change token expiration" --format markdown
ok --repo . verify --plan /tmp/plan.json --git
ok --repo . history similar --task "change token expiration" --path src/auth.rs
ok prove . --task "change token expiration"

Current top-level commands (38): init, index, snapshot, watch, status, doctor, setup, demo, search, semantic, symbol, explain, impact, path, tests, context, retrieve-context, plan, preflight, verify-boundary, verify, contract, bench, workflow-bench, retrieval-bench, relationship-bench, contract-bench, eval, prove, adr, ui, architecture, history, patch, memory, mcp, scip, and graph.

Full MCP tool reference: docs/mcp-tools.md

Repository Layout

This is a 43-crate Cargo workspace with a strict downward dependency direction: CLI / MCP → agent intelligence (context, impact, tests, plan, patch, actions) → code-intelligence kernel (ingest, parse, tree-sitter, resolution, graph, architecture) → storage and search (storage-sqlite, search-tantivy). open-kioku-core holds the evidence, graph, and report contracts; optional integrations (scip, lsp, semantic, vector, qdrant, sentry) return explicit disabled/unsupported diagnostics rather than degrading silently.

Architecture: docs/architecture.md · Crate map: docs/crate-map.md · Storage: docs/storage-model.md

Development

cargo fmt --all --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all
scripts/validate-docs.sh
ok retrieval-bench . --cases-file benchmarks/retrieval-cases.json --min-cases 30
ok workflow-bench . --cases-file benchmarks/workflow-cases.json --limit 10

Maintainer-led and source-available under Elastic-2.0; see CONTRIBUTING.md before opening a pull request.


If Open Kioku improves your agent workflow, consider starring the repository.

Available Tools

42 tools
architecture_boundariesOpen Kioku Architecture BoundariesA
Read-onlyIdempotent

Retrieve the configured or inferred component boundaries and their import constraints. Returns boundary definitions including component names, directory mappings, and allowed or forbidden dependency directions. Use to inspect the configured or inferred component boundaries and their import constraints before explaining or checking violations. Do NOT use for detecting actual violations (use architecture_violations), for policy-backed enforcement against indexed edges (use architecture_policy_check), or for explaining why a file belongs to a component (use architecture_policy_explain). This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that this is read-only and specifies the return content (component boundaries, constraints). No contradictions; adds useful behavioral context.

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: the first states the core action and outputs, the second provides context and exclusions. Efficient, front-loaded, no redundant information.

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 zero-parameter tool with an output schema, the description fully explains the purpose, content of return, and usage boundaries. No gaps.

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 input schema has zero parameters, so schema_description_coverage is 100%. The description does not need to add parameter info. Baseline 4 applies.

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 'Retrieve the configured or inferred component boundaries and their import constraints' and lists return elements (component names, directory mappings, allowed/forbidden dependency directions). It distinguishes from sibling tools like architecture_violations and architecture_policy_check.

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 states when to use ('before explaining or checking violations') and when NOT to use, with specific sibling alternatives (architecture_violations, architecture_policy_check, architecture_policy_explain).

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

architecture_policy_checkOpen Kioku Architecture Policy CheckA
Read-onlyIdempotent

Evaluate repository-owned architecture policy dependency rules against indexed import, reference, and call graph edges. Returns allowed, forbidden, and unknown edge counts with bounded unknown samples. Use to enforce architecture policy against indexed import/reference/call edges. Use architecture_policy_validate first for policy syntax errors and architecture_policy_explain for why a specific file or symbol matched. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and nondestructive. Description adds output specifics: returns edge counts with bounded unknown samples. No 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?

Three concise sentences, each earning its place: purpose, guidance, and read-only note. Front-loaded with key information.

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 no parameters and presence of output schema, description fully covers tool behavior and usage context without missing details.

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?

Input schema has no parameters (100% coverage), so description adds no parameter info; baseline for zero parameters is 4.

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 verb 'Evaluate' and resource 'architecture policy dependency rules', specifies it checks against 'import, reference, and call graph edges', and distinguishes from siblings by naming alternatives.

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 advises using 'architecture_policy_validate first' and 'architecture_policy_explain' as alternatives, providing clear guidance on when to use this tool.

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

architecture_policy_explainOpen Kioku Architecture Policy ExplainA
Read-onlyIdempotent

Explain architecture policy component, public API boundary, and exemption evidence for one indexed file, symbol, or the whole repository. Use after a policy check to explain component membership, public API boundaries, or exemptions for one file, one symbol, or the whole repo. This is read-only and does not change policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoRepository-relative file path to explain.
scopeNoUse `repo` to return repository-wide public API boundary findings.
symbolNoIndexed symbol name or qualified name to explain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, etc. The description adds 'This is read-only and does not change policy', confirming the behavior but not adding significant new context beyond annotations.

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

Conciseness5/5

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

Two concise sentences: first describes what it does, second adds usage guidance and safety note. No wasted words, well front-loaded.

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 presence of an output schema and full annotation coverage, the description sufficiently covers purpose, usage, and scope. A slight add on 'exemption evidence' could be expanded but not necessary.

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% with parameter descriptions. The description reiterates the three options (file, symbol, scope) but adds no additional semantic details 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 the verb 'Explain' and the specific resources: architecture policy component, public API boundary, and exemption evidence for one indexed file, symbol, or the whole repository. It distinguishes from siblings like explain_file and architecture_policy_check by specifying the policy context.

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 advises to use 'after a policy check', providing clear context. It does not list exclusions but implies differentiation from siblings like explain_file for general file explanation.

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

architecture_policy_validateOpen Kioku Architecture Policy ValidateA
Read-onlyIdempotent

Validate the resolved repository architecture policy, or an explicit policy TOML path, without evaluating indexed graph edges. Use before architecture_policy_check when editing or debugging policy TOML syntax and component resolution. It validates policy shape only and does not evaluate graph edges.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional repository-relative or absolute path to a standalone architecture policy TOML file.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnly, idempotent, non-destructive; description adds that it validates shape only and does not evaluate graph edges, providing helpful nuance 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, no wasted words, front-loaded with purpose and usage guidance.

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

Completeness5/5

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

Given single optional parameter, high schema coverage, and presence of output schema, description fully covers what the tool does, when to use, and key behavioral constraints.

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 covers 100% of parameter with description; description adds minimal value by mentioning 'explicit policy TOML path' as alternative to resolved policy, but baseline is adequate.

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?

Clear verb 'validate' and resource 'architecture policy', distinguishes from sibling using 'without evaluating graph edges' and 'Use before architecture_policy_check'.

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 (before architecture_policy_check when editing/debugging policy TOML) and what it does not do (does not evaluate graph edges), but could be more explicit about when not to use.

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

architecture_violationsOpen Kioku Architecture ViolationsA
Read-onlyIdempotent

Detect and report import-graph boundary violations that deviate from the inferred architecture layers. Returns violation details including source file, target file, violated boundary, and edge type. Use for a quick boundary-violation scan based on inferred architecture layers and import patterns without consulting ok.toml policy rules. Do NOT use when policy TOML rules must be authoritative (use architecture_policy_check instead) or when explaining why a specific file violates a boundary (use architecture_policy_explain). This is read-only and reads only from the local index.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false; the description adds that it is read-only and reads only from the local index, and clarifies it does not consult policy rules, going 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?

The description is three sentences: purpose, return details, usage guidance. No fluff, front-loaded, every sentence 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?

Given 0 parameters, an output schema, and annotations covering safety, the description fully addresses purpose, usage, and behavioral context for this 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 exist in the input schema, so the description does not need to add parameter semantics. Baseline 4 for 0 params.

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 detects and reports import-graph boundary violations based on inferred architecture layers, and distinguishes from siblings like architecture_policy_check and architecture_policy_explain by specifying what it does not do.

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 says 'Use for a quick boundary-violation scan' and 'Do NOT use when policy TOML rules must be authoritative' with specific alternatives, providing clear guidance.

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

build_compressed_contextOpen Kioku Build Compressed ContextA

Build a compressed context pack with short handles instead of full source snippets, reducing token count for prompt-constrained scenarios. Use retrieve_context with the returned handles to expand original snippets on demand. Use when a context pack is needed but prompt token budget is constrained. Returns compressed references with short handles instead of full source snippets, significantly reducing token count. Call retrieve_context later with a handle to expand the original snippet. Do NOT use when full inline context is acceptable (use build_context_pack) or when only test targets are needed (use find_tests_for_change). This tool writes reusable context handles under the .ok data directory and is not idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA natural language description of the task to gather compressed context for.
limitNoMaximum number of context items to compress. Defaults to 20. Higher values increase completeness but also stored handle count.
formatNoOutput format. 'json' returns structured handle objects, 'toon' returns token-optimized notation with handles. Defaults to 'json' when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations show readOnlyHint=false and idempotentHint=false; the description goes further by specifying that the tool writes reusable context handles under the .ok data directory and is not idempotent. 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.

Conciseness4/5

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

The description is well-structured with a clear main purpose, usage guidelines, and exclusions. However, it contains some redundancy (e.g., 'reducing token count' appears twice) which makes it slightly less concise.

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 has 3 parameters, an output schema exists, and the description covers usage, side effects, and alternatives, the description is complete. No significant gaps for an agent to 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 description coverage is 100%, so baseline is 3. The description does not add further meaning to parameters beyond what the schema already provides. Schema documents task, limit, and format adequately.

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 builds a compressed context pack with short handles instead of full snippets, reducing token count. It distinguishes from sibling tools like build_context_pack and find_tests_for_change.

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 provides when to use (prompt-constrained scenarios) and when not to use (when full inline context is acceptable, or when test targets are needed). Names specific alternative tools (build_context_pack, find_tests_for_change) and companion tool (retrieve_context).

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

build_context_packOpen Kioku Build Context PackA
Read-onlyIdempotent

Assemble a ranked, token-efficient context pack of relevant files, symbol definitions, test targets, git history evidence, and architecture policy context for a natural-language task. Returns results in JSON, Markdown, or TOON format. Use before planning or editing to assemble a ranked bundle of relevant files, symbol definitions, test targets, git history evidence, and architecture policy context for a natural-language task description. Returns results in the specified format (JSON, Markdown, or TOON). Do NOT use when prompt token budget is tight (use build_compressed_context with retrievable handles instead) or when only test recommendations are needed (use find_tests_for_change). This is read-only and queries the local index and git history only.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA natural language description of the task to gather context for (e.g., 'refactor the authentication middleware to support OAuth2').
limitNoMaximum number of context items to include in the pack. Defaults to 20. Higher values increase completeness but also token cost.
formatNoOutput format. 'json' returns structured objects, 'markdown' returns human-readable text, 'toon' returns token-optimized notation. Defaults to 'json' when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds that the tool 'queries the local index and git history only', which clarifies scope. No contradictions.

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

Conciseness2/5

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

The description is verbose and contains repetition: the first sentence and later portion both list the same content types and format results. Could be tightened to a single clear statement.

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 presence of an output schema, the description adequately covers what the tool does, what it includes, usage context, and alternatives. No gaps for this complexity level.

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% with good descriptions for all three parameters. The description's additional text largely repeats schema info (format, defaults) without adding new meaning, so baseline 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?

Clearly states the action 'assemble' and the resource 'ranked, token-efficient context pack' with specific content types. Distinguishes from siblings by mentioning ranking and token-efficiency, and later contrasts with build_compressed_context and find_tests_for_change.

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 states when to use: 'Use before planning or editing'. Also provides clear exclusions: 'Do NOT use when prompt token budget is tight' and 'when only test recommendations are needed', with alternative tool references.

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

create_change_contractOpen Kioku Create Change ContractA

Create and optionally store a versioned change contract from a task or saved plan while preserving plan_change for backwards compatibility. Use when a plan needs a durable verification contract for later review or CI evidence. By default it writes a contract under .ok/contracts; set store=false for a transient contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
planNoInline PlanReport object used as the source plan.
taskNoNatural language task used to build a fresh plan before contract creation.
limitNoMaximum planning results to generate when task is provided. Defaults to 20.
sinceNoOptional git revision/range used with git diff --unified=0 when planning from task.
storeNoPersist the contract under .ok/contracts. Defaults to true.
formatNoReturn format. Defaults to json.
plan_jsonNoJSON-encoded PlanReport used as the source plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior4/5

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

The description reveals key behaviors: it writes to .ok/contracts by default, can be transient, preserves plan_change for backwards compatibility, and creates versioned contracts. Annotations are neutral, so no contradiction; the description adds useful context beyond annotations.

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

Conciseness5/5

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

The description is two sentences, front-loading the core function and storage behavior in the first sentence. Every phrase earns its place with no redundancy or fluff.

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 (7 parameters, oneOf constraint, output schema present), the description covers the main workflow, storage, and use case. It implicitly relies on the schema for constraints but provides sufficient context for correct invocation.

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 adds some context (e.g., 'set store=false for a transient contract'), but the parameters are already well-described in the schema. No significant new meaning is added.

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 uses a specific verb ('Create') and resource ('versioned change contract from a task or saved plan'). It clearly distinguishes the tool's function from siblings like 'get_change_contract' and 'verify_change_contract' by focusing on creation and storage.

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 states when to use the tool: 'Use when a plan needs a durable verification contract for later review or CI evidence.' It also provides context for the 'store' parameter. However, it does not explicitly list alternatives or 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.

dependency_pathOpen Kioku Dependency PathA
Read-onlyIdempotent

Trace the shortest dependency or reference path between two files or symbols, illustrating how they are connected. Use to explain how two files or symbols are connected through indexed dependencies. Prefer module_dependencies for local neighbors and impact_analysis for downstream blast radius. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe target node path or symbol name.
fromYesThe starting node path or symbol name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

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. The description adds 'This is read-only,' which is consistent but does not provide additional behavioral context beyond what annotations already communicate.

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 concise with two sentences, front-loaded with the core action, and efficiently includes usage guidance and alternatives without 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 existence of an output schema, the description does not need to explain return values. It covers purpose, usage, and alternatives, making it complete for this tool's simplicity and the rich annotations/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 description coverage is 100%, so the schema already describes both parameters. The description does not add extra meaning about 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 the tool traces the shortest dependency path between two files/symbols, and distinguishes from sibling tools like module_dependencies and impact_analysis by specifying their use cases.

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?

The description explicitly provides usage guidance: 'Use to explain how two files or symbols are connected through indexed dependencies. Prefer module_dependencies for local neighbors and impact_analysis for downstream blast radius.' This tells when to use this tool and when to use alternatives.

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

detect_architectureOpen Kioku Detect ArchitectureA
Read-onlyIdempotent

Infer high-level architectural components and layers from the repository directory structure and file layout. Returns detected component names, directory paths, and inferred layer assignments using heuristic analysis. Use to infer high-level architectural components and layers from the repository directory structure using heuristic analysis. Do NOT use when enforced policy rules are needed (use architecture_policy_check), when specific boundary constraints are needed (use architecture_boundaries), or when file-level policy membership must be explained (use architecture_policy_explain). This is read-only and performs heuristic detection only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint; description adds that it is heuristic detection only. No contradiction, but adds value by clarifying non-deterministic nature 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.

Conciseness3/5

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

Description is somewhat repetitive; first and second sentences convey similar information. Could be more concise by merging.

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 tool with no parameters and clear boundaries, description fully covers purpose, usage, and return values (component names, paths, layers). Output schema exists, so return details are not needed. 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?

No parameters, so schema coverage is 100%. Baseline 4 applies; description does not need to add parameter info.

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?

Clearly states the tool infers architectural components from directory structure. Specific verb 'infer' and resource 'repository directory structure'. Distinguishes from siblings by listing alternative tools for different use cases.

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 provides when-to-use (infer components/layers) and when-not-to-use (enforced policy, boundary constraints, policy membership) with specific sibling tool names, enabling correct selection.

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

explain_fileOpen Kioku Explain FileA
Read-onlyIdempotent

Retrieve comprehensive indexed metadata for one repository-relative file, including language detection, syntax parsing status, all code chunks with line ranges, and associated symbol definitions. Use to retrieve comprehensive indexed metadata for one known repository-relative file, including language detection, syntax parsing status, all code chunks with line ranges, and associated symbols. Do NOT use to discover files by keyword (use search_files), for symbol-level context (use explain_symbol or get_symbol_context), or for architecture-level file analysis (use architecture_policy_explain). This is read-only and returns only previously indexed data.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRepository-relative path of the file to explain (e.g., 'src/main.rs' or 'lib/auth/handler.ts').

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the core safety profile. The description adds that it 'returns only previously indexed data,' giving additional context about data freshness and no live computation. 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.

Conciseness4/5

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

The description is information-dense but not overly long. It front-loads the primary action and then lists dos and don'ts. A slightly tighter structure could improve conciseness, but it remains clear and efficient.

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 has one required parameter, full schema coverage, and an output schema, the description covers all needed context: what data is retrieved, the access pattern (read-only, indexed), and boundary conditions (only for known files). 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 input schema has 100% coverage with a clear description for the 'path' parameter. The description reinforces this with an example path, adding minor value beyond the schema. No additional parameters need explanation.

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 uses specific verbs ('Retrieve') and resources ('repository-relative file'), and lists concrete data types (language detection, syntax parsing, code chunks, symbols). It distinguishes the tool from siblings like search_files, explain_symbol, and architecture_policy_explain by stating what it does not do.

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 states when to use ('for one known repository-relative file') and when not to use (discovery, symbol context, architecture analysis), with specific alternative tool names provided. This gives clear decision support.

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

explain_symbolOpen Kioku Explain SymbolA
Read-onlyIdempotent

Retrieve a concise explanation of one indexed symbol, including its definition range, qualified name, kind (function, class, struct, trait), and direct structural relationships within the codebase. Use for a concise explanation of one known symbol, returning its definition range, qualified name, kind, and direct structural relationships. Do NOT use for a comprehensive context bundle with docs and surrounding code (use get_symbol_context), for fuzzy symbol search (use search_symbols), or for cross-reference tracing (use get_references). This is read-only and reads from the local index.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe exact or partial name of the symbol to explain. Matches against indexed symbol names and qualified names.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds context that it 'reads from the local index', which provides additional clarity about the data source, though much of the behavioral profile is already covered by annotations.

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?

Description is two sentences, front-loaded with purpose and return fields. There is minor redundancy between the first sentence and the start of the second, but overall it is efficient and well-structured.

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 tool with one parameter and an output schema present, the description covers purpose, input semantics, return content, behavioral constraints, and usage boundaries. No gaps remain for the agent to make an informed invocation.

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?

Input schema covers 100% of the single parameter 'query'. Description adds meaning by specifying that it matches 'exact or partial name' and against 'indexed symbol names and qualified names', which goes beyond the schema's basic description.

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 it retrieves a concise explanation of one indexed symbol, listing specific return fields (definition range, qualified name, kind, direct structural relationships). It distinguishes from sibling tools like get_symbol_context and search_symbols by specifying what it does not do.

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 states when to use (for concise explanation of a known symbol) and when not to use, listing three specific alternatives: get_symbol_context for comprehensive context, search_symbols for fuzzy search, get_references for cross-reference tracing.

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

explain_test_coverageOpen Kioku Explain Test CoverageA
Read-onlyIdempotent

Retrieve stored test-coverage evidence and associated test suites for one repository-relative file or the whole repository. Returns coverage percentages, test file associations, and suite metadata from indexed data. Use to inspect stored test-coverage evidence for one file path or the whole repository. Returns associated test suites, coverage percentage when available, and test file associations from indexed metadata. Do NOT use to decide what tests to run next (use recommend_validation_plan) or to find tests for a specific change (use find_tests_for_change). This is read-only, does not execute any tests, and reports only previously indexed or stored coverage data.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoRepository-relative path of the file to inspect coverage for. If omitted, returns repository-wide coverage summary.
limitNoMaximum number of coverage entries to return. Defaults to 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.6/5.0
Behavior5/5

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

Description discloses that the tool is read-only, does not execute tests, and reports only indexed data. This adds context beyond annotations (readOnlyHint=true, destructiveHint=false) by specifying behavioral traits like 'does not execute any tests'.

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?

Description is relatively concise and front-loaded, though repetitive in parts (first and third sentence overlap). Efficient overall.

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 presence of output schema, annotations, and sibling tools, the description covers purpose, usage, limitations, and return value types (coverage percentages, test file associations, suite metadata). Complete.

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 100%; description does not add significant meaning beyond schema for parameters. Baseline 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?

Description uses specific verb 'Retrieve stored test-coverage evidence' and clearly identifies the resource: one file or whole repository. It distinguishes from siblings like recommend_validation_plan and find_tests_for_change.

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 states when to use the tool (inspect stored coverage) and when not to, providing alternative tools (recommend_validation_plan, find_tests_for_change).

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

explain_verificationOpen Kioku Explain VerificationA
Read-onlyIdempotent

Explain a contract verification report, including the decision, boundary failures, warnings, dependency deltas, validation attestations, and recommended tests. Use after verify_change_contract to translate a verification report into a decision, failures, warnings, and next tests. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoReturn format. Defaults to json.
verificationNoInline ContractVerificationReport object.
verification_jsonNoJSON-encoded ContractVerificationReport.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by listing the output content (decision, failures, warnings, etc.), which goes beyond annotations and informs the agent about the tool's behavioral output.

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: first states purpose and output components, second provides usage context and safety note. Every sentence is valuable, front-loaded with main purpose, no waste.

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 3 parameters (0 required), 100% schema coverage, and presence of output schema, the description effectively complements these by detailing expected output components and usage context. Complete for a tool that consumes a specific report and produces an explanation.

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. Description does not add additional meaning beyond the schema; it mentions 'verification report' but doesn't elaborate on parameter specifics.

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 verb 'explain' and the resource 'contract verification report', listing specific included components (decision, boundary failures, warnings, etc.). It effectively distinguishes from sibling tools like verify_change_contract (which produces the report) and explain_file/explain_symbol (which serve different purposes).

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 'Use after verify_change_contract', giving clear workflow context. Declares the tool read-only. Does not specify exclusions or alternatives, but the context is sufficient for proper usage.

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

find_tests_for_changeOpen Kioku Find Tests For ChangeA
Read-onlyIdempotent

Identify test files that should be run to validate changes to one repository-relative file. Returns ranked test file paths with relevance scores based on naming conventions, import relationships, and co-change history. Use after identifying a changed file to select relevant test files that should be run to validate the change. Returns ranked test file paths with relevance scores based on naming conventions, import relationships, and co-change history. Do NOT use when a broader validation plan including static checks and coverage actions is needed (use recommend_validation_plan) or when checking existing coverage data (use explain_test_coverage). This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRepository-relative path of the file being changed (e.g., 'src/auth/handler.rs').
limitNoMaximum number of test file recommendations to return, ranked by relevance. Defaults to 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds that the tool is read-only and explains ranking basis (naming conventions, import relationships, co-change history). No contradictions.

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

Conciseness3/5

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

Description is repetitive: the sentence about ranked paths appears twice. Could be more concise, but overall structure is logical and front-loaded.

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 only 2 parameters, 100% schema coverage, rich annotations, and output schema existence, the description covers purpose, usage, behavioral traits, and exclusions thoroughly. No 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 coverage is 100% with both parameters described. Description adds no new information beyond schema; it mentions default limit but schema already does. Baseline 3 per rules.

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 it identifies test files for a changed file, ranks them with relevance scores, and distinguishes it from sibling tools like recommend_validation_plan and explain_test_coverage. The verb 'identify' and resource 'test files' are specific.

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 states when to use ('after identifying a changed file') and when not to use ('when a broader validation plan needed' or 'when checking existing coverage'), naming alternative tools. Provides clear guidance.

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

get_change_contractOpen Kioku Get Change ContractA
Read-onlyIdempotent

Retrieve a stored change contract by id and optionally export it as JSON, Markdown, or TOON. Use to retrieve a previously stored contract by id before verification or explanation. Prefer create_change_contract for new contracts. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoReturn format. Defaults to json.
contract_idYesStored contract id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.7/5.0
Behavior5/5

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

Description states 'This is read-only,' aligning with annotations. Adds context about export formats and usage before verification/explanation, beyond what annotations provide.

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?

Four concise sentences covering purpose, usage context, alternative, and safety. No unnecessary words, front-loaded with the main action.

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 output schema exists, description covers when to use (before verification/explanation), export options, and read-only nature. Complete for a retrieval tool with good annotations and 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% with clear descriptions for both parameters. The description only mentions export formats, which are already in the schema. No additional semantic value beyond baseline.

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 retrieves a stored change contract by ID and can export it in JSON, Markdown, or TOON. It distinguishes from sibling create_change_contract by noting it is for new contracts.

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 says to use before verification or explanation, and recommends create_change_contract for new contracts. Provides clear context for when to use this tool versus alternatives.

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

get_definitionOpen Kioku Get DefinitionA
Read-onlyIdempotent

Retrieve the definition location, file range, and body of a symbol (function, class, struct, trait, module) by its name. Use after resolving a symbol name to retrieve its defining range and body. Prefer search_symbols for candidate discovery and get_symbol_context when surrounding references and documentation are needed. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe exact or partial name of the symbol to find the definition for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

The description adds context about what is returned (location, range, body) and states read-only, which is consistent with annotations. While annotations already cover safety, the description enriches understanding of the tool's output.

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?

Three concise sentences, each serving a distinct purpose: stating the action, usage timing, and alternatives with read-only note. 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 the simple tool with one parameter, annotations, and output schema, the description is complete. It covers purpose, usage prerequisites, sibling references, and safety.

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 100%, so baseline is 3. The description does not add additional parameter semantics beyond what the schema already provides.

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 action (retrieve), object (definition location, file range, body), and target (symbol by name). It lists specific symbol types (function, class, struct, trait, module), distinguishing it from sibling tools.

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 says to use after resolving a symbol name and directs to search_symbols for candidate discovery and get_symbol_context for surrounding references and documentation, providing clear when-to-use and alternatives.

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

get_evidence_schemaOpen Kioku Get Evidence SchemaA
Read-onlyIdempotent

Retrieve the versioned schema defining the supported graph node types, edge types, and query properties available in the repository's structural evidence graph. Use before query_evidence_graph to learn available graph node types, edge types, and properties. This is read-only and does not query graph data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

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, idempotentHint=true, destructiveHint=false. Description adds 'read-only' and 'does not query graph data', confirming annotations but not adding substantial new 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?

Two concise sentences with front-loaded action and resource, followed by usage context and safety note. No wasted 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 no parameters, presence of output schema, and rich annotations, the description covers what the tool returns and how to use it adequately.

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; schema coverage is 100%. Baseline 4 applies since no param info 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 specifies retrieving a versioned schema for graph node types, edge types, and query properties, and distinguishes from sibling 'query_evidence_graph' by stating 'Use before query_evidence_graph'.

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 ('before query_evidence_graph') and what it accomplishes (learn available types/properties). No explicit when-not, but context is clear.

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

get_referencesOpen Kioku Get ReferencesA
Read-onlyIdempotent

Retrieve all references, usages, and call-sites of a given symbol throughout the indexed codebase. Use to find usages of a resolved symbol across the index. Prefer get_callers for caller-only relationships and impact_analysis for broader file-level blast radius. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of references to return. Defaults to 20, capped at 100.
queryYesThe name of the symbol to find references for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds 'This is read-only' but no additional behavioral details like rate limits or pagination. With high annotation coverage, minimal extra value.

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?

Three sentences, each serving a purpose: first defines function, second gives usage context, third declares read-only. No unnecessary words.

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 guidelines, and safety. Output schema exists so return values not needed. Could mention error handling or prerequisites, but overall sufficiently complete for a code search tool.

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% with both parameters described. The description does not add any further parameter details beyond the schema. Baseline score 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 retrieves all references, usages, and call-sites of a given symbol, with explicit verb and resource. It distinguishes from siblings by mentioning get_callers and impact_analysis.

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?

Explicit guidance on when to use this tool ('find usages of a resolved symbol across the index') and when to prefer alternatives ('Prefer get_callers for caller-only relationships and impact_analysis for broader file-level blast radius').

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

get_symbol_contextOpen Kioku Get Symbol ContextA
Read-onlyIdempotent

Retrieve a comprehensive context bundle for one symbol, including its full definition body, file location and range, enclosing scope, documentation comments, and surrounding code context from the local index. Use to retrieve a comprehensive context bundle for one symbol, including its definition body, file location, enclosing scope, documentation comments, and surrounding code context when indexed. Returns more detail than get_definition. Do NOT use for simple definition lookup only (use get_definition), for fuzzy symbol search (use search_symbols), or for cross-reference tracing (use get_references). This is read-only and reads from the local index.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe exact or partial name of the symbol to retrieve comprehensive context for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds that it is read-only and reads from local index, which is useful behavioral context beyond annotations.

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

Conciseness3/5

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

First sentence clearly states purpose, but the second sentence repeats similar information ('Use to retrieve...'). Some redundancy, could be more concise.

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?

With output schema present, description need not explain return format. It lists included components (definition body, file location, etc.), which is sufficiently complete for agent understanding.

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 has 1 param with 100% description coverage. The tool description reiterates the param's purpose but does not add significant meaning beyond schema. Baseline 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?

Explicitly states it retrieves comprehensive context for one symbol, listing components like definition body, file location, enclosing scope, comments, and surrounding code. Differentiates from siblings by naming get_definition, search_symbols, get_references.

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?

Clearly defines when to use (comprehensive context) and provides explicit when-not-to-use scenarios with sibling tool names: get_definition for simple lookup, search_symbols for fuzzy search, get_references for cross-reference tracing.

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

impact_analysisOpen Kioku Impact AnalysisA
Read-onlyIdempotent

Analyze the blast radius of a change to one repository-relative file using the indexed dependency graph. Returns ranked downstream dependent files, caller functions, related test files, and architecture policy impact with impact scores and relationship types. Use before editing a file to estimate the blast radius: downstream dependent files, caller functions, related test files, and architecture policy impact from the indexed dependency graph. Do NOT use when only test targets are needed (use find_tests_for_change) or for a comprehensive validation plan including static checks (use recommend_validation_plan). This is read-only and analyzes the local index only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe repository-relative path of the file to analyze for downstream impact (e.g., 'src/auth/handler.rs').

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds 'read-only and analyzes the local index only', providing extra behavioral context beyond annotations. No contradictions.

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?

The description is front-loaded with the main purpose, but the second sentence largely repeats the list of return values from the first sentence, reducing conciseness slightly. Still efficient overall.

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 has only one parameter, has an output schema, and clear annotations, the description covers when and why to use it, constraints, and alternatives, making it complete for effective agent usage.

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% as the single parameter 'path' is well-described in the schema. The description does not add additional semantic meaning beyond what the schema provides, 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 analyzes the blast radius of a change to a file using the indexed dependency graph. It lists what it returns (downstream dependent files, caller functions, etc.). It also distinguishes itself from sibling tools like find_tests_for_change and recommend_validation_plan.

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?

The description explicitly tells when to use before editing a file and when not to use (for only test targets or comprehensive validation plan), providing specific alternative tool names.

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

list_filesOpen Kioku List FilesA
Read-onlyIdempotent

List all indexed files within the repository. Returns metadata such as relative path, size in bytes, and language. Useful for codebase structure discovery. Use for broad repository inventory and pagination over indexed paths; use search_files when you already have a keyword or path fragment. This is read-only and returns indexed data only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of files to return. Defaults to 20, capped at 100.
offsetNoNumber of matching files to skip. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide safety profile (readOnlyHint, idempotentHint). Description adds that it returns metadata (relative path, size, language) and that data is indexed-only, which is useful 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?

Three concise sentences, front-loaded with purpose. Every sentence adds value 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 output schema exists and complexity is low, description covers return metadata adequately and provides sufficient context for a filtered-list tool with good 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 coverage is 100% with descriptions for limit and offset. Description mentions pagination indirectly but does not add new semantic detail beyond the schema. Baseline 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?

Clear verb 'List' and resource 'indexed files'. Distinguishes from sibling 'search_files' by specifying use for broad inventory vs. keyword search.

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 states when to use (broad repository inventory, pagination) and when to use alternative (search_files for keywords). Also notes it's read-only and returns indexed data only.

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

list_languagesOpen Kioku List LanguagesA
Read-onlyIdempotent

List all programming languages detected and indexed in the repository, alongside support status. Use for a quick language/support overview before choosing language-specific investigation paths. This is read-only and does not rescan the repository.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

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, idempotentHint=true, destructiveHint=false, so description adds little new. It confirms read-only and states no rescanning, but overall behavioral insight is already covered by 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 short sentences, no filler. First sentence states function, second adds usage guidance and behavioral note. Efficient and front-loaded.

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 simple tool with no parameters, rich annotations, and existing output schema, the description covers purpose, usage context, and behavior completely. No gaps.

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?

Input schema has 0 parameters, baseline is 4. Description does not need to add parameter info; it focuses on tool purpose and usage.

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 lists programming languages with support status. It uses specific verb 'list' and resource 'programming languages', distinguishing from sibling tools focused on architecture, code analysis, or searching.

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 explicit usage context: 'Use for a quick language/support overview before choosing language-specific investigation paths.' Implicitly guides against using for detailed analysis, but does not name specific alternatives or when not to use.

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

list_symbolsOpen Kioku List SymbolsA
Read-onlyIdempotent

List or substring-filter all indexed code symbols (functions, classes, structs, traits, interfaces) with pagination. Returns symbol name, kind, file path, and line range for each entry. Use to browse the indexed symbol table or filter by exact substring match. Supports pagination via limit and offset. Do NOT use for fuzzy or ranked symbol search (use search_symbols), for retrieving a symbol's full definition body (use get_definition), or for comprehensive symbol context (use get_symbol_context). This is read-only and reads from the local index only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of symbols to return. Defaults to 20, capped at 100. Use with offset for pagination.
queryNoSubstring query to filter symbol names by exact match. If omitted, returns all symbols ordered by name.
offsetNoNumber of matching symbols to skip before returning results. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds behavioral context: 'reads from the local index only' and mentions pagination. This goes beyond annotations, warranting a 4.

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 plus exclusion clause, front-loaded with key information. Every sentence earns its place; no redundancy or filler. Concise yet comprehensive.

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 presence of an output schema and the tool's straightforward nature (list/filter), the description covers all necessary aspects: what is returned (symbol name, kind, file path, line range), pagination, substring filtering, and read-only nature. Complete for its purpose.

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 has 100% coverage with parameter descriptions. The description reinforces parameter usage (pagination via limit/offset, substring filtering via query) but does not add new semantics. Baseline 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 uses specific verbs (list, substring-filter) and resource (indexed code symbols) and lists example types (functions, classes, structs, traits, interfaces). It clearly distinguishes itself from sibling tools like search_symbols, get_definition, and get_symbol_context.

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 states when NOT to use: 'Do NOT use for fuzzy or ranked symbol search (use search_symbols), for retrieving a symbol's full definition body (use get_definition), or for comprehensive symbol context (use get_symbol_context).' This provides clear guidance for agent to select correct tool.

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

module_dependenciesOpen Kioku Module DependenciesA
Read-onlyIdempotent

List the direct dependency graph neighbors (imports and dependents) of a given file or symbol node. Use to inspect direct dependency neighbors for one file or symbol. Prefer dependency_path for a route between two nodes and architecture_policy_check for rule violations. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYesThe file path or symbol node identifier.
limitNoMaximum number of neighbors to return. Defaults to 20, capped at 100.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that the tool returns imports and dependents, confirming read-only behavior and specifying what neighbors are. No contradictions.

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, zero wasted words. Front-loaded with the core action, then usage guidance. Perfectly concise.

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?

With an output schema present, the description need not explain return values. It covers purpose, usage context, and constraints (direct neighbors, one file/symbol), making it complete for an agent to decide when and how to use the tool.

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?

Both parameters are fully described in the schema (100% coverage). The description does not add new meaning beyond the schema; it merely reiterates that node is a file path or symbol identifier, matching the schema description.

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 specifies the verb (list), resource (dependency graph neighbors: imports and dependents), and scope (direct neighbors of a given file or symbol). It distinguishes from sibling tools like dependency_path and architecture_policy_check.

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 states when to use this tool ('Use to inspect direct dependency neighbors for one file or symbol') and when to prefer alternatives ('Prefer dependency_path for a route between two nodes and architecture_policy_check for rule violations').

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

plan_changeOpen Kioku Plan ChangeA
Read-onlyIdempotent

Generate an evidence-backed pre-edit plan for a task, including primary files to edit, expected impact, changed-line ranges, and recommended test targets. Use before editing to create an evidence-backed plan with expected files, ranges, impact, and tests. Prefer create_change_contract when the plan must be persisted and verified later. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA natural language description of the task or change to plan.
limitNoMaximum planning results to generate. Defaults to 20.
sinceNoOptional git revision/range used with git diff --unified=0 to include changed files and line ranges in planning context.
formatNoThe format of the plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds 'This is read-only' and explains the evidence-backed nature, which provides useful context beyond the annotations.

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

Conciseness5/5

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

Four sentences, front-loaded with the primary action. Every sentence adds value, with no redundancy or fluff.

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 has an output schema (not shown) and complete parameter documentation, the description adequately covers inputs and output expectations for a planning tool. It mentions the key output components.

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 100%, so the schema already documents all parameters. The description mentions output components but does not add new semantics for parameters beyond what the schema provides.

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 specifies the verb 'Generate', the resource 'evidence-backed pre-edit plan', and includes specific deliverables: primary files, impact, changed-line ranges, and test targets. It also distinguishes from the sibling 'create_change_contract'.

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 states 'Use before editing' and 'Prefer create_change_contract when the plan must be persisted and verified later', providing clear when-to-use and when-not-to-use guidance with an alternative named.

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

propose_patchOpen Kioku Propose PatchA
Read-onlyIdempotent

Propose a patch plan (file edits, context bounds) for a task. Read-only; does not write any files. Use to draft a patch plan without modifying files. Prefer plan_change for evidence-backed planning and apply_patch only after explicit approval in write-enabled mode. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA natural language description of the changes to propose.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior3/5

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

Description reinforces annotations (readOnlyHint=true, destructiveHint=false) by stating 'Read-only; does not write any files.' Adds no new behavioral nuance beyond annotations, but is consistent and clear.

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?

Three concise sentences with no wasted words. Front-loaded with purpose and key constraint (read-only). Usage guidance follows naturally.

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?

With one parameter and output schema present, description adequately covers purpose and usage. Could optionally mention output structure but not required given 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 documentation covers 100% of the single parameter (task). Description does not add additional meaning beyond the schema's description.

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?

Explicitly states verb 'propose' and resource 'patch plan' with clarification that it is read-only and does not write files. Clearly distinguishable from siblings like plan_change (evidence-backed) and apply_patch (write).

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?

Provides explicit when-to-use (drafting patch plan without modifying files) and when-not-to-use (prefer plan_change for evidence, apply_patch only after approval in write mode). Names specific alternatives.

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

query_evidence_graphOpen Kioku Query Evidence GraphA
Read-onlyIdempotent

Execute a read-only graph query using a constrained subset of Cypher. Call get_evidence_schema first to see available node/edge types. (Note: The DSL is NOT full Cypher). Output rows are JSON arrays aligned with the user-selected variables in columns. Use for advanced read-only evidence queries after inspecting get_evidence_schema. The query language is a constrained Cypher-like DSL, not full Cypher; prefer purpose-built tools when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return. Defaults to 50, capped at 100.
queryYesThe graph query string to execute.
offsetNoNumber of matching rows to skip. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.9/5.0
Behavior5/5

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

Description states read-only nature (matching annotations), explains output format ('JSON arrays aligned with user-selected variables'), and notes the DSL is constrained. Adds useful behavioral context beyond annotations.

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

Conciseness5/5

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

Four sentences front-loading the main action, with concise warnings and usage guidance. No wasted 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?

Complete for an advanced query tool: explains prerequisites, constraints, output format, and behavioral traits. With output schema present and annotations covering safety, the description fills remaining gaps.

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 100%, but description adds meaning by linking query parameter to output format and mentioning default limits and caps. Provides slight incremental value over 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?

Clear verb ('Execute'), resource ('graph query'), and constraints ('read-only', 'constrained subset of Cypher'). Distinguishes from siblings by directing to call get_evidence_schema first and to prefer purpose-built tools.

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 instructs to inspect get_evidence_schema first, warns that the DSL is not full Cypher, and advises using purpose-built tools when available. Provides clear context for when to use this tool.

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

recommend_validation_planOpen Kioku Recommend Validation PlanA
Read-onlyIdempotent

Recommend a comprehensive validation plan (test targets, coverage checks, static checks) for a file change. Use before finalizing a change to choose tests, static checks, and coverage actions for one path. Prefer find_tests_for_change for test-only recommendations. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe repository-relative file path.
limitNoMaximum recommendations to return. Defaults to 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds 'This is read-only,' which is consistent. It does not introduce contradictions, but adds little 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?

Three concise sentences: purpose, usage context with alternative, and read-only note. No fluff, each sentence is valuable.

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 output schema exists (not shown but present), the description adequately covers what the tool does, what inputs it needs, and when to use it. It references a sibling for more specific cases.

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 mentions 'for one path' tying to the required 'path' parameter but does not add details about 'limit' beyond what the schema provides.

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 recommends a validation plan for a file change, specifying verb 'recommend' and resource 'validation plan'. It distinguishes from sibling 'find_tests_for_change' by noting that tool is for test-only recommendations.

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?

Provides explicit usage context: 'Use before finalizing a change to choose tests, static checks, and coverage actions for one path.' Also gives an alternative: 'Prefer find_tests_for_change for test-only recommendations.'

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

remember_factOpen Kioku Remember FactA

Persist a durable, repository-scoped memory fact into the local .ok SQLite store with optional source attribution and confidence level. The fact is append-only and survives re-indexing. Use only for durable, repository-scoped facts (architectural decisions, ownership conventions, known anti-patterns) that an agent should recall across sessions. Appends an immutable record to the local .ok SQLite store; duplicates are not deduplicated. Do NOT use for transient session notes, per-task scratch data, or facts derivable from the live index. Call search_memory first to avoid recording redundant entries. This tool writes to local storage and is not idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe fact text to persist. Should be a complete, self-contained statement (e.g., 'The auth module uses JWT tokens with 24h expiry'). Maximum ~4KB.
sourceNoIdentifier for the source that observed this fact (e.g., 'mcp', 'agent', 'human'). Defaults to 'mcp' when omitted.
confidenceNoConfidence level indicating reliability of the fact. 'low' for uncertain inferences, 'exact' for verified truths. Defaults to 'medium' when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description adds that the fact is append-only, immutable, not deduplicated, survives re-indexing, writes to local storage, and is not idempotent. This provides critical behavioral context beyond the annotations, with no contradictions.

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?

The description is about 4 sentences, front-loaded with the main purpose. It covers all essential information without unnecessary fluff. While very efficient, it could be slightly more terse, but overall it balances detail and conciseness well.

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 has 3 parameters, an output schema, and annotations, the description is comprehensive. It covers usage guidelines, behavioral traits, parameter semantics, and even includes a recommendation to call a sibling tool. There are no gaps; the agent can fully understand how and when to use this tool.

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

Parameters5/5

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

Schema coverage is 100%, baseline 3. The description adds significant meaning: explains that 'text' should be a complete, self-contained statement with ~4KB limit; 'source' defaults to 'mcp'; 'confidence' has specific semantics ('low' for uncertain, 'exact' for verified truths). These details help the agent craft correct parameter values.

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 persists a durable, repository-scoped memory fact into a SQLite store with optional source and confidence. It uses specific verbs ('persist', 'append') and resources ('local .ok SQLite store'), and distinguishes itself from sibling 'search_memory' by recommending to call it first to avoid duplicates.

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?

The description explicitly specifies when to use (durable, repository-scoped facts like architectural decisions) and when not to use (transient session notes, per-task scratch data, facts derivable from live index). It also provides an explicit alternative: 'search_memory' to check for existing facts before recording.

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

repo_statusOpen Kioku Repo StatusA
Read-onlyIdempotent

Retrieve the current repository index metadata, including file count, symbol count, chunk count, and the exact timestamp when the repository was last indexed. Use first to check whether the local index exists and is fresh enough before calling search, symbol, or graph tools. This is read-only and only inspects repository metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context by specifying it 'only inspects repository metadata' and listing the exact data returned, which is valuable beyond the annotations.

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

Conciseness5/5

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

The description is two sentences: one for purpose with specific details, one for usage guidance. Every sentence adds essential information without 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 zero parameters, rich annotations, and an output schema, the description fully covers the tool's behavior, usage context, and return data. 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?

No parameters exist, so schema coverage is 100% trivial. The description does not need to add parameter semantics; baseline for 0 params is 4. It remains clear and sufficient.

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 retrieves repository index metadata (file count, symbol count, chunk count, timestamp). It distinguishes itself from sibling tools by positioning it as a preliminary check before calling search, symbol, or graph tools.

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?

The description explicitly says 'Use first to check whether the local index exists and is fresh enough before calling search, symbol, or graph tools,' providing clear when-to-use guidance and implicitly when not to use (after other tools).

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

retrieve_contextOpen Kioku Retrieve ContextA
Read-onlyIdempotent

Retrieve the original uncompressed source code snippet associated with a compressed context handle. Use only with handles returned by build_compressed_context to recover original snippets. Prefer build_context_pack for a fresh task-level context bundle. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThe handle ID returned by build_compressed_context.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only and idempotent; description reinforces read-only nature and adds context about recovering original snippets, but no unexpected behavior disclosed.

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?

Three concise sentences, no wasted text, key information front-loaded.

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 read-only tool with one parameter and an output schema, the description provides all necessary context.

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 covers the only parameter fully (100% coverage) with a clear description; tool description repeats the constraint but doesn't add new meaning beyond 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 retrieves the original uncompressed source code snippet for a compressed handle, and distinguishes from siblings like build_context_pack.

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 states to use only with handles from build_compressed_context and recommends build_context_pack for fresh bundles.

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

review_patchOpen Kioku Review PatchA
Read-onlyIdempotent

Review a proposed patch plan for safety, target constraints, completeness, and potential regressions. Returns a structured safety assessment with warnings, risk indicators, and recommendations. Use to review a proposed patch plan for safety, target constraints, completeness, and potential regressions before applying it. Returns a structured safety assessment with warnings and recommendations. Do NOT use for architecture boundary and reference validation only (use validate_patch) or for post-edit verification against a plan (use verify_change). This is read-only and does not modify any files.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task name or identifier associated with the patch plan to review.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description reinforces that it is read-only and does not modify files, and adds that it returns a structured safety assessment with warnings and recommendations.

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

Conciseness3/5

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

The description is clear but slightly repetitive, containing two similar sentences about returning a structured safety assessment. It could be more concise while maintaining clarity.

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 single parameter, full schema coverage, annotations, and existence of an output schema, the description adequately covers the tool's purpose, usage, and behavior. No major 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 coverage is 100% with a description for the task parameter. The description does not add further meaning beyond the schema, so baseline 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 reviews patch plans for safety, target constraints, completeness, and regressions. It distinguishes from siblings by specifying what it does not do (e.g., architecture boundary validation).

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?

The description explicitly provides when-to-use context and lists two alternatives: 'Do NOT use for architecture boundary and reference validation only (use validate_patch) or for post-edit verification against a plan (use verify_change).'

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

search_codeOpen Kioku Search CodeA
Read-onlyIdempotent

Perform a lexical BM25 search across indexed code chunks. Set mode=graph to search indexed graph-node identifiers, qualified names, routes, config keys, and properties. Use for lexical BM25 code search when exact identifiers, terms, routes, or config keys are known. Prefer semantic_search for conceptual queries, hybrid_search when both lexical and semantic evidence are needed, and regex_search for exact patterns. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSearch mode. Defaults to code; graph searches indexed graph-node documents.
limitNoMaximum number of search results to return. Defaults to 20, capped at 100.
queryYesThe search query containing terms, code patterns, identifiers, graph entity names, routes, or config keys.
offsetNoNumber of matching search results to skip. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive. The description adds that it's read-only and explains mode-specific behavior (graph mode searches indexed graph-node documents). No contradictions; extra context on modes enhances transparency.

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 concise sentences, front-loaded with the core action. Every sentence adds value without redundancy. No wasted 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 an output schema exists, the description adequately covers everything needed: it explains both modes, usage conditions, and parameter defaults. No gaps remain for an AI agent to select and invoke the tool correctly.

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 has 100% coverage, so baseline 3. Description adds value by clarifying that mode defaults to 'code' and that limit is capped at 100. It also explains what graph mode searches ('indexed graph-node identifiers, qualified names, ...'), which is not fully captured in schema enum description.

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 performs 'lexical BM25 search across indexed code chunks' and specifies two modes: code and graph. It distinguishes from sibling tools like semantic_search, hybrid_search, and regex_search, making the 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 Guidelines5/5

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

Explicitly tells when to use this tool ('exact identifiers, terms, routes, or config keys') and when to prefer alternatives: semantic_search for conceptual queries, hybrid_search for both, regex_search for patterns. Provides clear selection criteria.

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

search_filesOpen Kioku Search FilesA
Read-onlyIdempotent

Search indexed file names and contents for specific keywords or file path patterns, returning ranked file matches with path, size, and language metadata. Set mode=graph to search graph-node documents through the same index. Use when the target is a file path, filename, or file-content keyword rather than a code symbol. Set mode=graph to search indexed graph-node documents. Do NOT use for browsing all files without a query (use list_files), for code snippet search (use search_code), or for exact regex line matching (use regex_search). This is read-only and searches the local Tantivy index only.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSearch mode. 'code' (default) searches file names and contents; 'graph' searches indexed graph-node documents including entity names and properties.
limitNoMaximum number of file results to return. Defaults to 20, capped at 100.
queryYesThe search query to match against file paths and file contents. Accepts filenames, directory fragments, or content keywords.
offsetNoNumber of matching file results to skip before returning. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by stating it searches the local Tantivy index only, and mentions ranking and metadata in results, providing context beyond annotations.

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

Conciseness4/5

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

The description is well-structured, front-loaded with the main purpose and key details, followed by mode explanation and clear exclusions. It is concise for the amount of information conveyed, with no redundant sentences.

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 complexity (search with modes, 4 parameters, output schema exists), the description is complete. It covers the scope, result metadata, mode behavior, and limitations (local index) without needing to repeat output schema details.

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 100%, so parameters are already documented. The description adds meaning by explaining the 'mode' parameter and its use cases, and provides usage context that clarifies when to invoke the tool with different parameters. It does not repeat schema details but adds contextual semantics.

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 that the tool searches indexed file names and contents for keywords or file path patterns, returning ranked matches with metadata. It explicitly distinguishes from siblings by stating not to use for browsing all files (list_files), code snippet search (search_code), or regex line matching (regex_search).

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?

The description provides explicit guidance on when to use the tool (for file path, filename, or file-content keyword) and when not to use it, listing alternative tools for specific cases (list_files, search_code, regex_search). It also explains the mode=graph usage for graph-node documents.

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

search_memoryOpen Kioku Search MemoryA
Read-onlyIdempotent

Search the append-only repository memory store for previously recorded facts by keyword and entity match. Returns fact text, source, confidence level, and timestamp for each matching entry. Use to retrieve stored repository-scoped memory facts by keyword, entity, or text match from the local .ok SQLite store. Returns fact text, source, confidence, timestamp, and associated entities for each match. Do NOT use for current source code search (use search_code or hybrid_search) or for live index data (use the search and symbol tools). Use remember_fact to write new entries. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of matching facts to return, ordered by relevance. Defaults to 20.
queryYesKeyword or phrase to match against stored fact text and entity names.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive. Description adds context about the append-only nature of the store and the specific data returned (fact text, source, confidence, timestamp, entities). 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.

Conciseness4/5

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

Reasonably concise and front-loaded with purpose and exclusion guidance. Some repetition of return fields could be tightened, but structure is logical and easy to scan.

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?

With output schema present, the description covers the tool's main behavior, constraints, and alternatives. It could mention more about matching semantics (e.g., case sensitivity, partial match) but is sufficient for the tool's simplicity.

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% with descriptions for both parameters. The description adds minimal extra context (e.g., query matches 'fact text and entity names', limit defaults to 20) but mostly repeats schema info. Baseline 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 defines the tool as a search over an append-only repository memory store for facts by keyword/entity, listing return fields. It explicitly distinguishes from source code and index search tools, specifying sibling tools to use instead.

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?

Provides explicit guidance on when to use (retrieve memory facts) and when not to use (source code, live index data), with alternative tools named (search_code, hybrid_search, symbol tools, remember_fact for writes).

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

search_symbolsOpen Kioku Search SymbolsA
Read-onlyIdempotent

Search indexed code symbols (functions, classes, structs, traits, interfaces) by name using fuzzy matching. Returns ranked candidates with symbol name, kind, file path, and line range. Use when an agent has an approximate or partial symbol name and needs fuzzy-ranked candidates from the indexed symbol table. Do NOT use for exact substring inventory (use list_symbols), retrieving a symbol's full body (use get_definition), or comprehensive symbol context with docs (use get_symbol_context). This is read-only and searches the local index only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of ranked results to return. Defaults to 20, capped at 100.
queryNoFuzzy or exact search query for symbol names. Supports partial names and approximate matches.
offsetNoNumber of matching symbols to skip before returning results. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it is read-only and searches the local index, which is consistent but not a significant addition beyond the annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and every sentence adds essential value without 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 the rich structured metadata (schema, annotations, output schema), the description provides sufficient context for usage, though it could optionally mention result ranking details.

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 100%; the description does not add any parameter-specific information beyond what the schema already provides.

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 explicitly states it searches indexed code symbols by name using fuzzy matching and returns ranked candidates with specific fields. It clearly distinguishes from siblings like list_symbols, get_definition, and get_symbol_context.

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?

It provides explicit guidance on when to use (approximate/partial symbol name needing fuzzy-ranked candidates) and when not to use, naming specific alternative tools.

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

summarize_architectureOpen Kioku Summarize ArchitectureA
Read-onlyIdempotent

Return a structured summary of the codebase architecture, including layer constraints and violation checks. Use for a structured architecture overview with layer constraints and violation checks. Prefer explain_flow for a narrative and architecture_policy_explain for file-level evidence. This is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds 'This is read-only' which is consistent but does not introduce new behavioral context beyond annotations. No contradiction, and the safety profile is clear from annotations.

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?

Three sentences, all contributing value. The second sentence partially repeats the first, but the inclusion of user guidance and read-only note keeps it efficient. Could be slightly more concise by merging the first two sentences.

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 no parameters, rich annotations (readOnly, idempotent, non-destructive), and the existence of an output schema (which documents return values), the description covers the essential purpose, usage guidance, and behavioral traits. It does not mention prerequisites, but none are needed.

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, and schema description coverage is 100% (vacuously). Per guidelines, baseline is 4. The description does not add parameter details because none exist.

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 a structured summary of codebase architecture, including layer constraints and violation checks. It distinguishes itself from siblings like explain_flow (narrative) and architecture_policy_explain (file-level evidence) by name and purpose.

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 states when to use this tool ('Use for a structured architecture overview') and provides alternative tools for different needs ('Prefer explain_flow for a narrative and architecture_policy_explain for file-level evidence'). This gives clear guidance on when to select this tool over siblings.

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

validate_patchOpen Kioku Validate PatchA
Read-onlyIdempotent

Validate a proposed patch plan against architecture boundaries, symbol references, and import constraints. Returns boundary violations, broken reference warnings, and policy conflicts without modifying any files. Use to check a proposed patch plan against architecture boundaries, symbol references, and import constraints before applying it. Returns boundary violations, broken reference warnings, and policy conflicts. Do NOT use after real edits have been made (use verify_change or verify_change_contract instead) or for full safety review (use review_patch). This is read-only and checks against the local index and policy rules only.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task name or identifier of the patch plan to validate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it does not modify files and checks only against local index and policy rules, which is consistent and adds minor context.

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?

The description is front-loaded with the main action but contains some redundancy (repeats the same information). Still efficient and well-structured.

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 simple parameter set, rich annotations, and presence of output schema, the description provides enough context about return values and scope. Complete for this tool.

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% with a well-described parameter. The description does not add additional meaning beyond the schema, so baseline 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 validates a proposed patch plan against architecture boundaries, symbol references, and import constraints. It uses specific verbs and resources, and distinguishes from siblings like verify_change and review_patch.

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 states when to use (before applying a patch plan) and when not to use (after real edits or for full safety review), with alternatives provided.

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

verify_changeOpen Kioku Verify ChangeA

Verify an actual unified diff or set of changed files against a saved PlanReport, checking boundary constraints, expected file coverage, API surface stability, and dependency policy. Optionally executes configured validation commands and persists timestamped attestation records. Use after code edits to compare an actual unified diff or changed file list against a PlanReport produced by plan_change. When run_commands=true, executes shell commands listed in the plan's validation section (test runners, linters) on the local machine. When write_attestation=true, persists timestamped pass/fail records under .ok/contracts/validation/. Do NOT use for pre-edit planning (use plan_change), contract-based verification (use verify_change_contract), or boundary-only checks (use validate_patch). Side effects are conditional on boolean flags; with all flags false the tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffNoThe unified diff (git diff format) showing the actual changes to verify.
planNoA JSON object containing the saved PlanReport to verify against.
plan_jsonNoA JSON-encoded string representation of the PlanReport to verify against.
since_planNoGit revision or range (e.g., 'HEAD~1', 'abc123..def456') used with git diff --unified=0 to derive changed files and diff input automatically.
run_commandsNoSet true to execute shell validation commands (test runners, linters) defined in the plan on the local machine. Commands run synchronously and their exit codes are recorded. Defaults to false.
changed_filesNoList of repository-relative paths of changed files. Used when diff is not provided.
evidence_refsNoList of evidence reference identifiers supporting the change.
check_api_surfaceNoSet true to detect public API surface changes (additions, removals, signature modifications) and flag them as warnings. Defaults to false.
write_attestationNoSet true together with run_commands to persist timestamped pass/fail attestation records under .ok/contracts/validation/. Has no effect when run_commands is false. Defaults to false.
traceability_strictNoSet true to reject any evidence references not present in the saved plan, enforcing full traceability. Defaults to false (lenient mode allows extra evidence).
check_dependency_deltaNoSet true to detect dependency graph changes and flag forbidden dependency additions based on architecture policy. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4.9/5.0
Behavior5/5

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

Discloses conditional side effects: 'Side effects are conditional on boolean flags; with all flags false the tool is read-only.' Explains that run_commands executes shell commands locally and write_attestation persists records. Annotations provide base but description adds critical context.

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 paragraphs: first states core purpose and checks, second explains optional behaviors and exclusions. No wasted words, front-loaded with key action. 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 11 parameters, nested objects, and boolean flags, the description comprehensively covers purpose, usage context, side effects, and exclusions. Output schema exists so return details are not needed.

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 100% so parameters are well-documented. Description adds behavioral context beyond schema, e.g., explaining conditional effects of run_commands and write_attestation, and local execution. Does not repeat schema verbatim.

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?

Clearly states it verifies a unified diff/changed files against a PlanReport, checking boundary/file coverage/API/dependency constraints. Explicitly distinguishes from sibling tools plan_change, verify_change_contract, validate_patch by specifying what not to use it for.

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 says 'Use after code edits' and provides three specific alternatives for when not to use, naming the appropriate sibling tool for each case (plan_change, verify_change_contract, validate_patch).

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

verify_change_contractOpen Kioku Verify Change ContractA

Verify changed files or a diff against a stored or inline change contract. Stored contract ids append verification records to .ok/contracts. Use after edits to verify a diff against a stored or inline change contract. Stored contract ids append verification records under .ok/contracts, and command execution is opt-in via run_commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffNoThe unified diff showing the actual changes.
formatNoReturn format. Defaults to json.
contractNoInline ChangeContractV1 or StoredContractRecord object.
since_planNoOptional git revision/range used with git diff --unified=0 to derive changed files and diff input.
contract_idNoStored contract id.
run_commandsNoSet true to execute validation commands defined in the contract.
changed_filesNoList of repository-relative paths of changed files.
contract_jsonNoJSON-encoded ChangeContractV1 or StoredContractRecord.
evidence_refsNoList of evidence reference identifiers.
check_api_surfaceNoSet true to detect public API additions, removals, and signature changes during verification.
write_attestationNoSet true with run_commands and a stored contract id to persist validation attestations.
traceability_strictNoSet true to reject supplied evidence references that are not present in the contract.
check_dependency_deltaNoSet true to detect dependency graph deltas and flag forbidden dependency additions.
validation_attestationsNoPreviously recorded validation attestations to replay during verification.

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueNoWrapped non-object output, used for Markdown, TOON, or scalar responses.

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds behavioral context: stored contract ids append verification records to .ok/contracts, and command execution is opt-in. This goes beyond the annotations without contradicting them.

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?

The description is two sentences long, front-loaded with the core purpose. It is concise without being under-specified, though a slightly more structured format (e.g., bullet points) could improve scanability.

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?

Given 14 parameters, high complexity, and an output schema, the description covers the core functionality and key behaviors. However, it does not explain many optional boolean flags (e.g., check_api_surface, check_dependency_delta) or the interaction between parameters, which could leave the agent guessing.

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 100%, so the schema itself documents all 14 parameters. The description adds minimal extra context (e.g., storing records, opt-in commands), but does not elaborate on the boolean flags or nested objects. Baseline 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's purpose: 'Verify changed files or a diff against a stored or inline change contract.' It uses a specific verb ('verify') and resource ('change contract'), and distinguishes from sibling tools like 'verify_change' by specifying the contract mechanism.

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 explicit use context: 'Use after edits to verify a diff against a stored or inline change contract.' It also mentions opt-in command execution. However, it does not explicitly state when not to use or compare to alternatives like 'validate_patch'.

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. 55 tool updatesv2.2.3
    • Changedarchitecture_boundaries1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedarchitecture_policy_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedarchitecture_policy_explain
    • Addedarchitecture_policy_validate
    • Changedarchitecture_violations1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbuild_compressed_context4 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"The output format."New value: +"Output format. 'json' returns structured handle objects, 'toon' returns token-optimized notation with handles. Defaults to 'json' when omitted."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of context items. Defaults to 20."New value: +"Maximum number of context items to compress. Defaults to 20. Higher values increase completeness but also stored handle count."
      • changedInput schema / properties / task / description
        Previous value: -"A natural language description of the task."New value: +"A natural language description of the task to gather compressed context for."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbuild_context_pack4 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"The output format of the context pack."New value: +"Output format. 'json' returns structured objects, 'markdown' returns human-readable text, 'toon' returns token-optimized notation. Defaults to 'json' when omitted."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of context results to include. Defaults to 20."New value: +"Maximum number of context items to include in the pack. Defaults to 20. Higher values increase completeness but also token cost."
      • changedInput schema / properties / task / description
        Previous value: -"A natural language description of the task to gather context for."New value: +"A natural language description of the task to gather context for (e.g., 'refactor the authentication middleware to support OAuth2')."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedcreate_change_contract
    • Changeddependency_path1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddetect_architecture1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedexplain_file2 fields changed
      • changedInput schema / properties / path / description
        Previous value: -"The repository-relative path of the file."New value: +"Repository-relative path of the file to explain (e.g., 'src/main.rs' or 'lib/auth/handler.ts')."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedexplain_flow
    • Removedexplain_search_result
    • Changedexplain_symbol2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"The symbol name to explain."New value: +"The exact or partial name of the symbol to explain. Matches against indexed symbol names and qualified names."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedexplain_test_coverage3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum coverage elements to return. Defaults to 20."New value: +"Maximum number of coverage entries to return. Defaults to 20."
      • changedInput schema / properties / path / description
        Previous value: -"The repository-relative path of the file."New value: +"Repository-relative path of the file to inspect coverage for. If omitted, returns repository-wide coverage summary."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedexplain_verification
    • Removedfind_errors_for_symbol
    • Removedfind_recent_failures
    • Changedfind_tests_for_change3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum test recommendations to return. Defaults to 20."New value: +"Maximum number of test file recommendations to return, ranked by relevance. Defaults to 20."
      • changedInput schema / properties / path / description
        Previous value: -"The repository-relative path of the file being changed."New value: +"Repository-relative path of the file being changed (e.g., 'src/auth/handler.rs')."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedget_callees
    • Removedget_callers
    • Addedget_change_contract
    • Changedget_definition1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_evidence_schema1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedget_implementations
    • Changedget_references1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_symbol_context2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"The name of the symbol."New value: +"The exact or partial name of the symbol to retrieve comprehensive context for."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedhistory_provenance_lookup
    • Removedhybrid_search
    • Changedimpact_analysis2 fields changed
      • changedInput schema / properties / path / description
        Previous value: -"The repository-relative path of the file to analyze."New value: +"The repository-relative path of the file to analyze for downstream impact (e.g., 'src/auth/handler.rs')."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_files2 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching files to skip. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_languages1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_symbols4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of symbols to return. Defaults to 20, capped at 100."New value: +"Maximum number of symbols to return. Defaults to 20, capped at 100. Use with offset for pagination."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching symbols to skip before returning results. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Substring query to filter symbol names. If omitted, returns all symbols."New value: +"Substring query to filter symbol names by exact match. If omitted, returns all symbols ordered by name."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedmap_stacktrace_to_code
    • Changedmodule_dependencies1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedplan_change1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpropose_patch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedquery_evidence_graph3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum rows to return. Defaults to 50."New value: +"Maximum rows to return. Defaults to 50, capped at 100."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching rows to skip. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrecommend_validation_plan1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedregex_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return. Defaults to 20, capped at 100."New value: +"Maximum number of matching lines to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching lines to skip before returning results. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / pattern / description
        Previous value: -"A valid regular expression pattern to match against source code."New value: +"A valid regular expression pattern (Rust regex syntax) to match against indexed source code lines. Example: 'fn\\s+main' to find main function declarations."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedremember_fact4 fields changed
      • changedInput schema / properties / confidence / description
        Previous value: -"The confidence level of the fact."New value: +"Confidence level indicating reliability of the fact. 'low' for uncertain inferences, 'exact' for verified truths. Defaults to 'medium' when omitted."
      • changedInput schema / properties / source / description
        Previous value: -"The source or tool that observed the fact. Defaults to 'mcp'."New value: +"Identifier for the source that observed this fact (e.g., 'mcp', 'agent', 'human'). Defaults to 'mcp' when omitted."
      • changedInput schema / properties / text / description
        Previous value: -"The fact text to remember."New value: +"The fact text to persist. Should be a complete, self-contained statement (e.g., 'The auth module uses JWT tokens with 24h expiry'). Maximum ~4KB."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrepo_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedretrieve_context1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedreview_patch2 fields changed
      • changedInput schema / properties / task / description
        Previous value: -"The task name or identifier associated with the patch."New value: +"The task name or identifier associated with the patch plan to review."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_code2 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching search results to skip. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_files5 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return. Defaults to 20, capped at 100."New value: +"Maximum number of file results to return. Defaults to 20, capped at 100."
      • changedInput schema / properties / mode / description
        Previous value: -"Search mode. Defaults to code; graph searches indexed graph-node documents."New value: +"Search mode. 'code' (default) searches file names and contents; 'graph' searches indexed graph-node documents including entity names and properties."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching file results to skip before returning. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"The search query to match against file paths, file contents, or graph-node documents."New value: +"The search query to match against file paths and file contents. Accepts filenames, directory fragments, or content keywords."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_memory3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of facts to return. Defaults to 20."New value: +"Maximum number of matching facts to return, ordered by relevance. Defaults to 20."
      • changedInput schema / properties / query / description
        Previous value: -"The search query to match against facts."New value: +"Keyword or phrase to match against stored fact text and entity names."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_symbols4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return. Defaults to 20, capped at 100."New value: +"Maximum number of ranked results to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Number of matching symbols to skip before returning results. Defaults to 0.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Fuzzy or exact search query for symbol names."New value: +"Fuzzy or exact search query for symbol names. Supports partial names and approximate matches."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedsemantic_search
    • Removedsemantic_status
    • Removedstructural_search
    • Changedsummarize_architecture1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedvalidate_patch2 fields changed
      • changedInput schema / properties / task / description
        Previous value: -"The task name or identifier."New value: +"The task name or identifier of the patch plan to validate."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedverify_change12 fields changed
      • changedInput schema / properties / changed_files / description
        Previous value: -"List of repository-relative paths of changed files."New value: +"List of repository-relative paths of changed files. Used when diff is not provided."
      • addedInput schema / properties / check_api_surface
        Added value: +{
        +  "description": "Set true to detect public API surface changes (additions, removals, signature modifications) and flag them as warnings. Defaults to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / check_dependency_delta
        Added value: +{
        +  "description": "Set true to detect dependency graph changes and flag forbidden dependency additions based on architecture policy. Defaults to false.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / diff / description
        Previous value: -"The unified diff showing the actual changes."New value: +"The unified diff (git diff format) showing the actual changes to verify."
      • changedInput schema / properties / evidence_refs / description
        Previous value: -"List of evidence reference identifiers."New value: +"List of evidence reference identifiers supporting the change."
      • changedInput schema / properties / plan / description
        Previous value: -"A JSON object containing the saved PlanReport."New value: +"A JSON object containing the saved PlanReport to verify against."
      • changedInput schema / properties / plan_json / description
        Previous value: -"A JSON-encoded string representation of the PlanReport."New value: +"A JSON-encoded string representation of the PlanReport to verify against."
      • changedInput schema / properties / run_commands / description
        Previous value: -"Set true to execute the validation commands defined in the plan."New value: +"Set true to execute shell validation commands (test runners, linters) defined in the plan on the local machine. Commands run synchronously and their exit codes are recorded. Defaults to false."
      • changedInput schema / properties / since_plan / description
        Previous value: -"Optional git revision/range used with git diff --unified=0 to derive changed files and diff input."New value: +"Git revision or range (e.g., 'HEAD~1', 'abc123..def456') used with git diff --unified=0 to derive changed files and diff input automatically."
      • addedInput schema / properties / traceability_strict
        Added value: +{
        +  "description": "Set true to reject any evidence references not present in the saved plan, enforcing full traceability. Defaults to false (lenient mode allows extra evidence).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / write_attestation
        Added value: +{
        +  "description": "Set true together with run_commands to persist timestamped pass/fail attestation records under .ok/contracts/validation/. Has no effect when run_commands is false. Defaults to false.",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "The MCP structuredContent object returned by this Open Kioku tool. Most tools expose their JSON fields directly; string or scalar tool outputs are wrapped as {\"value\": ...}.",
        +  "properties": {
        +    "value": {
        +      "description": "Wrapped non-object output, used for Markdown, TOON, or scalar responses."
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedverify_change_contract
  2. 8 tool updatesv2.1.0
    • Addedarchitecture_policy_check
    • Addedget_evidence_schema
    • Addedhistory_provenance_lookup
    • Changedplan_change1 field changed
      • addedInput schema / properties / since
        Added value: +{
        +  "description": "Optional git revision/range used with git diff --unified=0 to include changed files and line ranges in planning context.",
        +  "type": "string"
        +}
    • Addedquery_evidence_graph
    • Changedsearch_code2 fields changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Search mode. Defaults to code; graph searches indexed graph-node documents.",
        +  "enum": [
        +    "code",
        +    "graph"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"The search query containing terms, code patterns, or identifiers."New value: +"The search query containing terms, code patterns, identifiers, graph entity names, routes, or config keys."
    • Changedsearch_files2 fields changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Search mode. Defaults to code; graph searches indexed graph-node documents.",
        +  "enum": [
        +    "code",
        +    "graph"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"The search query to match against file paths and file contents."New value: +"The search query to match against file paths, file contents, or graph-node documents."
    • Changedverify_change1 field changed
      • addedInput schema / properties / since_plan
        Added value: +{
        +  "description": "Optional git revision/range used with git diff --unified=0 to derive changed files and diff input.",
        +  "type": "string"
        +}
  3. 37 tool updatesv2.0.3
    • Changedbuild_compressed_context3 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"Output format"New value: +"The output format."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of context items. Defaults to 20."
      • changedInput schema / properties / task / description
        Previous value: -"Natural language task description"New value: +"A natural language description of the task."
    • Changedbuild_context_pack3 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"Output format"New value: +"The output format of the context pack."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of context results to include. Defaults to 20."
      • changedInput schema / properties / task / description
        Previous value: -"Natural language task description"New value: +"A natural language description of the task to gather context for."
    • Changeddependency_path2 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Source file path or symbol name"New value: +"The starting node path or symbol name."
      • changedInput schema / properties / to / description
        Previous value: -"Target file path or symbol name"New value: +"The target node path or symbol name."
    • Changedexplain_file1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"Relative file path"New value: +"The repository-relative path of the file."
    • Changedexplain_search_result2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of explained results. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The search query to analyze and explain results for."
    • Changedexplain_symbol1 field changed
      • addedInput schema / properties / query / description
        Added value: +"The symbol name to explain."
    • Changedexplain_test_coverage2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum coverage elements to return. Defaults to 20."
      • addedInput schema / properties / path / description
        Added value: +"The repository-relative path of the file."
    • Changedfind_errors_for_symbol1 field changed
      • addedInput schema / properties / query / description
        Added value: +"The symbol name to look up errors for."
    • Changedfind_recent_failures1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of failure entries to retrieve. Defaults to 20."
    • Changedfind_tests_for_change2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum test recommendations to return. Defaults to 20."
      • addedInput schema / properties / path / description
        Added value: +"The repository-relative path of the file being changed."
    • Changedget_callees2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of callees to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The name of the symbol whose calls you want to trace."
    • Changedget_callers2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of callers to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The name of the symbol whose callers you want to find."
    • Changedget_definition1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Symbol name"New value: +"The exact or partial name of the symbol to find the definition for."
    • Changedget_implementations2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of implementations to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The name of the interface or trait."
    • Changedget_references2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of references to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The name of the symbol to find references for."
    • Changedget_symbol_context1 field changed
      • addedInput schema / properties / query / description
        Added value: +"The name of the symbol."
    • Changedhybrid_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The search query to match lexically and conceptually against the codebase."
    • Changedimpact_analysis1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"Relative file path"New value: +"The repository-relative path of the file to analyze."
    • Changedlist_files1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 20, max 100)"New value: +"Maximum number of files to return. Defaults to 20, capped at 100."
    • Changedlist_symbols2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of symbols to return. Defaults to 20, capped at 100."
      • changedInput schema / properties / query / description
        Previous value: -"Symbol name filter (substring match)"New value: +"Substring query to filter symbol names. If omitted, returns all symbols."
    • Changedmap_stacktrace_to_code1 field changed
      • addedInput schema / properties / stacktrace / description
        Added value: +"The stack trace string to analyze."
    • Changedmodule_dependencies2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of neighbors to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / node / description
        Added value: +"The file path or symbol node identifier."
    • Changedplan_change3 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"Output format"New value: +"The format of the plan."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum planning results to generate. Defaults to 20."
      • changedInput schema / properties / task / description
        Previous value: -"Natural language task description"New value: +"A natural language description of the task or change to plan."
    • Changedpropose_patch1 field changed
      • changedInput schema / properties / task / description
        Previous value: -"Natural language description of the change"New value: +"A natural language description of the changes to propose."
    • Changedrecommend_validation_plan2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum recommendations to return. Defaults to 20."
      • addedInput schema / properties / path / description
        Added value: +"The repository-relative file path."
    • Changedregex_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return. Defaults to 20, capped at 100."
      • changedInput schema / properties / pattern / description
        Previous value: -"Regex pattern"New value: +"A valid regular expression pattern to match against source code."
    • Changedremember_fact3 fields changed
      • addedInput schema / properties / confidence / description
        Added value: +"The confidence level of the fact."
      • changedInput schema / properties / source / description
        Previous value: -"Source or tool that observed the fact"New value: +"The source or tool that observed the fact. Defaults to 'mcp'."
      • changedInput schema / properties / text / description
        Previous value: -"Fact to remember"New value: +"The fact text to remember."
    • Changedretrieve_context1 field changed
      • changedInput schema / properties / handle / description
        Previous value: -"Context handle id returned by build_compressed_context"New value: +"The handle ID returned by build_compressed_context."
    • Changedreview_patch1 field changed
      • addedInput schema / properties / task / description
        Added value: +"The task name or identifier associated with the patch."
    • Changedsearch_code2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of search results to return. Defaults to 20, capped at 100."
      • changedInput schema / properties / query / description
        Previous value: -"Search query"New value: +"The search query containing terms, code patterns, or identifiers."
    • Changedsearch_files2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The search query to match against file paths and file contents."
    • Changedsearch_memory2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of facts to return. Defaults to 20."
      • addedInput schema / properties / query / description
        Added value: +"The search query to match against facts."
    • Changedsearch_symbols2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"Fuzzy or exact search query for symbol names."
    • Changedsemantic_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"Natural language search query expressing the concept or functionality you are looking for."
    • Changedstructural_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of structural matches to return. Defaults to 20, capped at 100."
      • addedInput schema / properties / query / description
        Added value: +"The query to run against structure trees and chunk indices."
    • Changedvalidate_patch1 field changed
      • addedInput schema / properties / task / description
        Added value: +"The task name or identifier."
    • Changedverify_change6 fields changed
      • addedInput schema / properties / changed_files / description
        Added value: +"List of repository-relative paths of changed files."
      • changedInput schema / properties / diff / description
        Previous value: -"Unified diff to verify"New value: +"The unified diff showing the actual changes."
      • addedInput schema / properties / evidence_refs / description
        Added value: +"List of evidence reference identifiers."
      • changedInput schema / properties / plan / description
        Previous value: -"Saved PlanReport JSON object"New value: +"A JSON object containing the saved PlanReport."
      • changedInput schema / properties / plan_json / description
        Previous value: -"Saved PlanReport JSON string"New value: +"A JSON-encoded string representation of the PlanReport."
      • changedInput schema / properties / run_commands / description
        Previous value: -"Run validation commands from the saved plan"New value: +"Set true to execute the validation commands defined in the plan."
  4. 45 tool updatesv2.0.1
    • First observedarchitecture_boundaries
    • First observedarchitecture_violations
    • First observedbuild_compressed_context
    • First observedbuild_context_pack
    • First observeddependency_path
    • First observeddetect_architecture
    • First observedexplain_file
    • First observedexplain_flow
    • First observedexplain_search_result
    • First observedexplain_symbol
    • First observedexplain_test_coverage
    • First observedfind_errors_for_symbol
    • First observedfind_recent_failures
    • First observedfind_tests_for_change
    • First observedget_callees
    • First observedget_callers
    • First observedget_definition
    • First observedget_implementations
    • First observedget_references
    • First observedget_symbol_context
    • First observedhybrid_search
    • First observedimpact_analysis
    • First observedlist_files
    • First observedlist_languages
    • First observedlist_symbols
    • First observedmap_stacktrace_to_code
    • First observedmodule_dependencies
    • First observedplan_change
    • First observedpropose_patch
    • First observedrecommend_validation_plan
    • First observedregex_search
    • First observedremember_fact
    • First observedrepo_status
    • First observedretrieve_context
    • First observedreview_patch
    • First observedsearch_code
    • First observedsearch_files
    • First observedsearch_memory
    • First observedsearch_symbols
    • First observedsemantic_search
    • First observedsemantic_status
    • First observedstructural_search
    • First observedsummarize_architecture
    • First observedvalidate_patch
    • First observedverify_change

TDQS

A4.1/5.0

Scored across 42 tools

Disambiguation4/5

Most tools have distinct purposes with detailed descriptions including 'use this not that' guidance. However, with 42 tools, there is inherent overlap in categories like search and context building, which could still cause misselection despite clear documentation.

Naming Consistency4/5

Tool names consistently use underscores and mostly follow a verb_noun pattern (e.g., list_files, search_code, explain_symbol). Some noun-verb combinations (e.g., architecture_boundaries) still convey clear meaning, but the pattern is not perfectly uniform.

Tool Count3/5

42 tools is well above the typical 15-tool threshold for 'heavy' sets. While the server covers a broad domain (architecture, search, analysis, change management), many tools are granular and could be consolidated, making the count feel excessive.

Completeness4/5

The tool surface covers indexing, search, symbols, dependencies, architecture policy, context building, change planning, verification, and memory. Notable gaps include the absence of an apply_patch tool and limited execution capabilities, but core workflows are well-covered.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Persistent codebase knowledge layer for AI agents. Pre-digests codebases into structured knowledge (symbols, dependency graphs, co-change patterns, architectural decisions) and serves via MCP. 28 languages, 14 tools, ~85% token reduction.
    14 npm
    8
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local code-intelligence engine for AI agents that indexes repositories into a PostgreSQL-backed code graph and serves structured, token-budgeted context over MCP and HTTP, enabling targeted queries on symbols, dependencies, contracts, and impact analysis.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local-first codebase intelligence layer for AI coding agents, providing a persistent, queryable model of a repository via an MCP server and CLI to enable structure queries instead of reading many files.
    Apache 2.0