Skip to main content
Glama

Kontexta is a local-first Model Context Protocol (MCP) server that gives your AI coding agents β€” Claude Code, Cursor, Cline, GitHub Copilot, Gemini, Antigravity β€” a persistent memory and a controlled command surface. Learn more at kontexta.dev

Instead of agents losing context between sessions or inventing their own shell commands, Kontexta provides:

  • Brain: A git-backed markdown vault with FTS5 search and surgical section edits.

  • Hands: A sandboxed command engine defined by you in kontexta.json.

  • Eyes: A feedback loop that journals results back into the brain.

The Unique Value

Most AI tools trap context inside their own chat window. Kontexta moves that context to your own SSD, providing six core advantages:

1. Cross-Agent Handoff

  • Switch agents mid-project: Claude Code journals a decision; Cursor reads it 5 minutes later.

  • Unified command surface: Author your kontexta.json once; every agent uses the same validated tools and approval gates.

  • Multi-agent collaboration: Different agents working on different tasks contribute to the same indexed knowledge base.

  • Zero-touch onboarding: register_project + onboard_agent injects a fenced, version-stamped workflow rules block into CLAUDE.md / AGENTS.md / GEMINI.md / .cursor/rules / .continue/rules / .clinerules / .github/copilot-instructions.md so every new conversation β€” on any agent β€” wakes up already knowing how to use kontexta.

2. Cross-Project Awareness

  • Global reach: An agent working in Project A can instantly search and read the documentation, context, and states of Project B.

  • Shared standards: Solve a problem once, document it, and let your agent apply that solution across all your other projects automatically.

  • Heads-up on sensitivity: Because the vault is global, every registered project is readable by any agent session you start. If you mix client work with personal projects, keep sensitive material in a separate vault (KONTEXTA_DATA_DIR) rather than registering it alongside everything else.

3. Deterministic Context Retrieval

  • SQLite FTS5 Power: Instead of unpredictable vector-based RAG, Kontexta uses high-performance full-text indexing for deterministic, local-first context discovery.

  • Reliable Discovery: Fast, exact keyword and regex-based search ensures you find what you're looking for without the "hallucination" risk of third-party embedding providers.

4. Token-Optimized Context Economy

  • Surgical fetching: Instead of indiscriminately dumping whole directories into the LLM's context window, Kontexta provides tools to fetch specific file outlines, sections, or targeted search excerpts.

  • Budget awareness: Every tool response includes est_tokens so agents can smartly budget what they pull into memory.

5. Separation of Code and Context

  • The "Context.md" Killer: Stop littering your source tree with CONTEXT.md or AI_NOTES.md files that clutter your PRs and get stale.

  • Global Knowledge Vault: Keep your main codebase pristine. Architectural decisions, agent journals, and cross-project standards live in a separate, dedicated global vault accessible by any agent instance.

6. Compounding Intelligence

  • Continuous learning: Through the "Eyes" and journaling system, your AI agents document their decisions, successes, and mistakes.

  • Smarter next time: A problem solved today is saved in the Brain, meaning tomorrow's session starts with the benefit of yesterday's experience.


Related MCP server: MindOS

Architecture: Brain β†’ Hands β†’ Eyes

Kontexta builds a closed feedback loop that makes every turn smarter than the last.

1. Brain β€” The Context Engine

A markdown knowledge vault optimized for context-window economy.

  • FTS5 Search: Instant local keyword search.

  • Surgical Edits: Tools for reading and updating specific markdown sections without pulling entire files.

  • Token-Aware: Every response includes est_tokens and size_bytes so agents can budget their context.

2. Hands β€” The Command Engine

A project-defined command surface that replaces "unrestricted shell access" with a sandboxed contract.

  • Explicit boundaries: You declare exactly what an agent can do via kontexta.json. There is no unrestricted shell access.

  • Sandboxed: Locked working directory, clean environment, and ring-buffered output.

  • Human-in-the-loop: High-risk commands can require a cryptographic one-time token, pausing execution until you explicitly approve it.

IMPORTANT

The sandbox enforcesyour contract β€” it doesn't infer risk on its own. A command only requires approval if you mark it high-risk in kontexta.json; anything else runs unattended within the sandbox. Treat kontexta.json like a permissions file: the security posture is exactly as careful as your authorship of it.

3. Eyes β€” The Feedback Engine

Closes the loop by capturing Hands' output and journaling learnings back into the Brain.

  • Live Observation: Tools like whats_new and diff_against_disk let agents see what actually changed.

  • Automatic journaling: Every MCP tool call is captured to a per-project, append-only event log (Layer 1). The distill_journal tool β€” or the lenient-mode auto-fallback β€” collapses raw events into per-topic markdown summaries (Layer 2) indexed alongside the rest of the knowledge base. journal_note and journal_intent let agents enrich the log with decisions and topic pivots. Phase 2 also adds housekeep_journal (retention/archival), distill_journal_commit_upgrades (closes the subagent dispatch loop), strict mode (configurable per project β€” blocks read tools when backlog exists), and an opt-in WebUI scheduler that runs mechanical distillation on a 15-minute clock when the dashboard is installed. Learn more about Journaling modes and configuration in docs/JOURNAL.md.


How it Works in Practice

Imagine you are switching from Claude Code to Cursor mid-way through a feature.

The Problem: The "Context Gap"

  • Claude Code knows why you chose that specific library.

  • Cursor doesn't. You have to copy-paste or re-explain everything.

  • CONTEXT.md files help, but they get stale, they clutter your PRs, and they don't capture live decisions.

The Kontexta Solution

  1. Journaling: As Claude Code works, kontexta automatically captures every tool invocation and decision to a structured event log.

  2. Persistence: Those logs are saved in your local Kontexta brain, not the chat window. The distill_journal tool consolidates raw events into per-topic markdown entries that are searchable alongside your knowledge base.

  3. Seamless Handoff: When you open Cursor, it immediately sees the recent journal entries and architectural state via the Kontexta MCP.

  4. Zero Re-explanation: Cursor "wakes up" with the exact same context Claude had.


How Kontexta Compares

Kontexta doesn't try to replace your favorite agent or memory library β€” it sits in a different spot. Here's an honest read of where it overlaps and where it doesn't:

Capability

CLAUDE.md / AGENTS.md

Vendor memory (Cursor rules, Claude Projects)

mem0

Zep

Kontexta

Setup cost

None β€” just a file

None β€” built in

SDK integration in your app

SDK + service

MCP server + kontexta.json

Cross-agent portability

Per-agent flavored files drift apart

Locked to one vendor

App-level, not agent-level

App-level, not agent-level

Same MCP surface for Claude Code, Cursor, Cline, GitHub Copilot, Gemini, Antigravity

Retrieval model

Whole file dumped into context

Whole file / vendor-managed

Vector + graph (semantic)

Temporal knowledge graph (semantic)

Deterministic FTS5 + regex; surgical section reads

Token accounting

None

None

None exposed to agent

None exposed to agent

Every response carries est_tokens / size_bytes

Command execution

N/A

Vendor-defined tools

N/A (memory only)

N/A (memory only)

Sandboxed Hands with per-command contracts and approval tokens

Storage

Repo file (clutters PRs)

Vendor cloud

Self-host or hosted, vector DB

Self-host or hosted

Local SQLite, git-synced markdown vault

Best at

Static project conventions

Zero-config personal memory

Semantic recall inside one app

Long-running conversational memory

Multi-agent handoff + governed local execution

Honest tradeoffs:

  • If you only use one agent and one project, CLAUDE.md or vendor memory is simpler β€” reach for Kontexta when you're switching agents or coordinating across projects.

  • mem0 and Zep do semantic recall that FTS5 doesn't; Kontexta trades fuzzy matching for determinism and local-only operation.

  • Kontexta's Hands sandbox has no equivalent in the memory tools above β€” that's the unique surface, not the memory itself.


Quick Start (One Command)

Requires Node 22.x LTS. That's it β€” no Docker, no pnpm, no build.

npx kontexta start

Boots the dashboard on http://localhost:3000 (opens in your browser) and starts the MCP server. First run walks you through master password, data location, and project registration in the browser.

Add to your AI client (MCP-only)

If you only want the MCP server (no dashboard), point your AI client at:

{
  "mcpServers": {
    "kxta": {
      "command": "npx",
      "args": ["-y", "kontexta", "mcp"]
    }
  }
}

Alternative: Docker

For containerized deployments, see docs/INSTALL.md#docker-hub-compose.


Security & Network Exposure

Kontexta's dashboard is designed for local-first use β€” running on localhost or on a trusted machine you control. The threat model is:

  • Default safe: A master password protects the UI. Sessions are HMAC-signed cookies, passwords are scrypt-hashed.

  • IP bypass is opt-in per IP. During setup you can allowlist IPs (e.g. 127.0.0.1) to skip the login prompt from trusted addresses.

  • Reverse-proxy mode is opt-in. If you put Kontexta behind nginx, Caddy, or Cloudflare Tunnel, enable "Trust X-Forwarded-For headers" during setup. Without this flag, those headers are ignored β€” so a LAN attacker cannot spoof an allowlisted IP.

  • kontexta.json is your responsibility. The Hands engine executes shell commands you declare in this file. The sandbox limits where and how those commands run (path traversal blocked, ReDoS-proof regex, locked CWD, stripped PATH), but the what is whatever you wrote. Review any kontexta.json you didn't author yourself β€” same caution you'd apply to a Makefile, GitHub Actions workflow, or shell snippet from the internet.

WARNING

Do not expose the dashboard to the public internet without a trusted reverse proxy in front. The auth layer is sufficient for localhost and LAN use; it is not hardened against direct internet exposure (no rate limiting, no brute-force lockout, no MFA).


Demo & Walkthrough

In this demo:

  • System audit and web clipping.

  • Local RAG and context gathering.

  • The Brain/Hands/Eyes loop in action.

No-install demo: Try the MCP endpoints interactively right from your browser on the Glama Kontexta page.


Project Status & Transparency

Why the high version number on a fresh repository? If you look at the commit history, you might wonder how a repository with so few commits reached its current major version.

Kontexta wasn't built over a weekend. It began over a year ago as a private, monolithic toolchain used to manage complex, multi-agent coding workflows. The versioning reflects its true architectural maturity.

Recently, I undertook a major effort to industrialize and modularize this engine, restructuring it into the three core pillars you see today: Brain, Hands, and Eyes. This process involved decoupling the core from private infrastructure and moving to a clean, open-source monorepo. The condensed git history is the result of this clean extractionβ€”leaving behind internal legacy commits to publish only the battle-tested, production-ready framework available today.


Roadmap

What's deliberately deferred and what triggers will pull it forward lives in docs/ROADMAP.md. Notable open items: per-call project resolution in journaling, server-side LLM upgrade for the WebUI scheduler, and Layer 3 (embeddings + graph + semantic clustering).


Features Breakdown

Brain

  • Global vault with two-way git sync.

  • 66 MCP tools tuned for context economy.

  • Batch operations (up to 500 files/call), grep, and regex support.

  • Web clipping with auth-wall detection.

  • Full git-backed versioning: get_history, get_diff, restore_file.

  • Agent context rules onboarding: register_project detects existing CLAUDE.md / AGENTS.md / GEMINI.md / .cursor/rules/*.mdc / .continue/rules/*.md / .clinerules / .github/copilot-instructions.md and recommends a follow-up. The onboard_agent tool injects an idempotent, version-fenced workflow rules block (or scaffolds one for the right agent) so every new conversation starts already aware of kontexta's conventions.

Hands

  • Project-specific kontexta.json tools map.

  • Strict sandbox: realpath-verified CWD, stripped PATH, and hard timeouts.

  • ReDoS-proof parameter validation via re2.

  • CSPRNG-bound confirmation tokens for high-risk commands.

Dashboard

  • Built-in /docs page with a searchable catalogue of all 66 core tools.

  • Form-based kontexta.json editor with live validation.

  • Real-time status bar streaming git activity over WebSockets.

Calendar

  • Generic, dependency-aware calendar for tracking events across anything you name β€” a server, a delivery van, a store location, a piece of equipment, a room, or anything else you schedule against.

  • Automatic conflict detection: overlapping windows on the same entity, overlapping windows on linked entities, and events scheduled too close together (configurable buffer).

  • Month, week, and agenda views in the dashboard, matching the rest of the UI; click to add or edit events, manage entities and their dependency links.

  • Export any date range as a standard .ics file for Outlook, Google Calendar, or Apple Calendar.

  • 11 MCP tools so agents can schedule, link, and check conflicts straight from chat.

Publish

  • CLI-driven documentation generation. Turn your knowledge base into polished documentation sites, API references, and LLM-readable docs.

  • Render blocks. Composable output blocks for endpoints, glossary, mermaid diagrams, navigation, LLMs, markdown, and more.

  • Seed templates. Pre-built templates for common documentation patterns β€” get started in minutes.

  • Pipeline architecture. Pluggable pipeline with configurable sources, renderers, and output targets.


TIP

Deleting a project file in Kontexta only un-indexes it from the AI's memory. Your physical source code is never touched.


Contributing

Kontexta is a project for developers, by developers. If you'd like to contribute new tools, improve the core engine, or refine the dashboard, please see our CONTRIBUTING.md for architecture guidelines and local setup instructions.

Built with care for the future of agentic coding. License: Apache-2.0

Available Tools

53 tools
add_tagsA

Append tags to ONE file. Additive β€” existing tags are preserved; re-adding an existing tag is a no-op (idempotent per tag). New tag names auto-create rows in the global tags table. Persists to local SQLite. No external auth or rate limits. Returns {success: true}; throws if file_id is unknown. Use to label a single file. To tag every file matching a query in one call use tag_search_results; to remove tags use remove_tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYesArray of tag names to add
file_idYesFile ID

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: additive, idempotent per tag, auto-creates rows, persists to local SQLite, no external auth/rate limits, returns success object, throws on unknown file_id. This goes far beyond what structured data provides.

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?

Every sentence earns its place. Front-loaded purpose, then behavior, then usage alternatives. No filler, perfectly sized.

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 output schema, the description explains return value and error behavior. It also covers persistence, auth, and rate limits. Fully complete for a tag-add operation.

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 covers both params but with terse descriptions. The tool description adds meaningful behavior for tags (auto-create rows, idempotent) and file_id (throws if unknown), enhancing parameter understanding 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 action ('Append tags to ONE file'), the resource ('file'), and the additive nature. It also explicitly distinguishes from siblings like tag_search_results and remove_tags.

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 to label a single file' and provides direct alternatives: 'To tag every file matching a query in one call use `tag_search_results`; to remove tags use `remove_tags`.' This is exemplary usage guidance.

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

clip_urlA

SIDE-EFFECTFUL β€” fetches an EXTERNAL URL and writes a NEW KB file. Downloads the page, extracts the main article via Readability, converts to markdown, and saves it as a new clipping. NOT idempotent / no de-dup β€” re-clipping the same URL creates a second file. AUTH: anonymous by default; pass headers (e.g. {Cookie: 'session=...'} or {Authorization: 'Bearer ...'}) to clip behind logins. Kontexta does not rate-limit but the upstream may throttle. On auth-required pages returns isError with code: AUTH_REQUIRED, optional login_url, and a hint to retry with headers. Returns {file_id, path, title, source}. Use to ingest external docs into the KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to clip
titleNoOptional title override (defaults to the page's <title>)
headersNoOptional HTTP headers to forward with the fetch (e.g. {"Cookie": "session=..."} or {"Authorization": "Bearer ..."}). Use to clip pages behind auth walls after AUTH_REQUIRED.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excels: it flags 'SIDE-EFFECTFUL', 'NOT idempotent / no de-dup', auth defaults, upstream throttling, AUTH_REQUIRED error details, and return format. This is comprehensive behavioral disclosure.

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?

Every sentence earns its place: side-effect warning, process, idempotency, auth, rate limits, errors, return, usage. Dense but well-organized and front-loaded with the most critical warning.

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 (external fetch, auth, error handling) and no output schema, the description is complete: it explains return values, error codes, and operational caveats. No significant gaps for an agent to select and invoke correctly.

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

Parameters4/5

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

Schema coverage for parameters is 100%, so baseline is 3. The description adds meaningful value beyond the schema by giving concrete examples for `headers` (Cookie, Authorization) and tying them to the auth flow, enhancing agent understanding.

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 the tool 'fetches an EXTERNAL URL and writes a NEW KB file' and details the full pipeline (download, Readability extraction, markdown conversion, save). This distinguishes it from sibling file-creation tools by focusing on external ingestion.

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

Usage Guidelines4/5

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

It provides clear context ('Use to ingest external docs into the KB') and explains when to pass headers for authenticated pages, but does not explicitly name alternative tools or state when NOT to use it. This is clear guidance without exclusions.

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

commit_backupA

SIDE-EFFECTFUL β€” TOUCHES THE NETWORK. Sync the project's KB data into its git backup directory, create a commit, and git push to origin. AUTH: relies on the local user's git credentials (SSH agent, credential helper, etc.) β€” there is no in-server auth. Kontexta does not rate-limit, but the remote may. Idempotent in steady state: a no-op commit is skipped, but the push still runs. Throws if the project has no configured backup repo or if push fails (network, auth, conflict). Returns {success, copied_files_count, copied_paths}. Use after a batch of KB writes to get changes off-machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: network access, reliance on local git credentials, idempotency with skipped commits, error conditions (no backup repo, push failure), and return value structure. This is exemplary 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?

The description is dense but every sentence contributes critical information about side effects, auth, idempotency, error behavior, and return values. No filler or 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 tool's complexity (network, git, auth, errors, return value) and absence of an output schema, the description covers all essential aspects: what happens, what is returned, when it throws, and when to invoke it. It is fully self-sufficient.

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

Parameters3/5

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

The only parameter is project_id, whose schema description is minimal ('Project ID'). The description adds context by referring to 'the project's KB data,' implying what the ID is used for. Since schema coverage is 100%, this is adequate but not enhanced 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's purpose: syncing KB data to a git backup directory, creating a commit, and pushing to origin. It uses specific verbs and resources, and it is easily distinguished from siblings like file management or journal tools.

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 after a batch of KB writes to get changes off-machine.' It does not mention alternatives or exclusions, but the guidance is clear enough to place it above the baseline.

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

confirm_handA

Approve and EXECUTE a previously-issued Hands invocation by its single-use approval token. The token is returned by any confirm-required Hands tool; tokens expire after 60 seconds and CANNOT be reused. Side effect equals whatever the underlying Hand does β€” this can be highly destructive (running arbitrary shell commands, modifying files, etc.), so only call when the user has authorised the pending action. The token IS the auth (no external auth, no rate limits). Invalid, expired, or already-consumed tokens return an inert text response, NOT an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesThe approval token from the pending response

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly states the side effect can be 'highly destructive (running arbitrary shell commands, modifying files, etc.)', that the token itself is the auth (no external auth, no rate limits), and that invalid tokens return an inert text response, not an error. This provides complete 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?

The description is concise and well-structured. It front-loads the purpose, then provides critical usage and behavioral details in a logical order. Every sentence serves a purpose without redundancy or fluff.

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

Completeness5/5

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

Given the tool's simplicity (1 required parameter, no output schema), the description covers all necessary aspects: purpose, usage context, behavioral implications, and parameter semantics. It is complete and self-contained, leaving no ambiguity for an AI agent.

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?

The description adds significant meaning beyond the schema. While the schema simply says 'The approval token from the pending response', the description elaborates that the token is returned by any confirm-required Hands tool, expires in 60 seconds, cannot be reused, and serves as the authentication mechanism. This provides essential context for correct 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's action: 'Approve and EXECUTE a previously-issued Hands invocation by its single-use approval token.' It uses a specific verb (Approve and EXECUTE) and resource (Hands invocation), and distinguishes itself from siblings by referencing a unique single-use token 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 gives clear context on when to use the tool: 'only call when the user has authorised the pending action.' It also warns against misuse by stating the token expires in 60 seconds and cannot be reused. However, it does not explicitly list alternative tools or when not to use it, which would elevate the score to 5.

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

create_fileA

Create a new markdown or mermaid file in the knowledge base or project. This operation writes a new file to disk and adds it to the local SQLite FTS5 index. Destination can be 'knowledge' (global KB), 'project' (reference file inside a project repo), or 'kontexta' (internal Kontexta schema file). If destination is 'project' or 'kontexta', project_id is strictly required. No external auth required. Rate limits do not apply (local operation). Returns the created file metadata including its new ID, path, and estimated tokens. If the destination directory does not exist, it will be created automatically. Use this tool to instantiate new contextual documents or notes. To modify an existing file, use 'update_file' instead. Parameters: 'destination' dictates required fields; if 'project' or 'kontexta', 'project_id' must be a valid integer. 'tags' and 'folder' are optional. Pass format='mmd' to create a Mermaid diagram file (.mmd); defaults to 'md'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional array of tags
titleYesTitle of the file
folderNoOptional folder path
formatNoFile extension to write. Defaults to 'md'.
contentYesContent of the file
project_idNoProject ID (required for project/kontexta destinations)
destinationYesDestination type

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully bears the burden of behavioral disclosure and excels. It reveals that the operation writes to disk, indexes in SQLite FTS5, auto-creates missing directories, returns metadata (ID, path, estimated tokens), and explicitly states no external auth or rate limits apply. This is far beyond typical descriptions.

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 a single dense paragraph that front-loads the core purpose in the first sentence. It includes some repetition of schema details (e.g., tags/folder optional), but every sentence serves a purpose and the structure is logical, moving from action to behavior to usage to parameters.

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 7 parameters, 3 required, and no output schema, the description is remarkably complete. It covers purpose, usage, behavioral side effects, parameter constraints, return metadata, and an alternative tool. Nothing critical is missing for an 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 coverage is 100%, so baseline is 3, but the description adds meaningful semantics: it interprets the 'destination' enum values (global KB, project repo, internal schema file), clarifies that 'project_id' is strictly required for project/kontexta, and explains the 'format' default and its mapping to '.mmd'. This exceeds the schema's bare descriptions.

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 opens with a specific verb+resource ('Create a new markdown or mermaid file') and immediately specifies the valid destinations (knowledge, project, kontexta). It also explicitly distinguishes itself from 'update_file', making its scope clear.

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 states when to use the tool ('Use this tool to instantiate new contextual documents or notes') and provides an explicit alternative ('To modify an existing file, use 'update_file' instead'). It also details destination-specific requirements (project_id required for project/kontexta), giving clear contextual guidance.

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

create_filesA

Batch variant of create_file β€” create up to 200 markdown or mermaid files in one call. Each item follows the same rules (project_id required if destination is project or kontexta). SIDE EFFECTS: writes new files to disk and inserts FTS5 rows; missing folders are mkdir'd. Per-item failures are isolated to errors[] and the rest of the batch still commits β€” partial success is the norm, always inspect error_count. No external auth or rate limits. Returns {created_count, error_count, created, errors}. Use for bulk ingestion; for >200 items, page yourself. Pass format='mmd' on an item to create a Mermaid diagram file (.mmd); defaults to 'md'.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesFiles to create (max 200 per call)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: side effects (writes to disk, FTS5 inserts, mkdir), partial success semantics (`errors[]`, `error_count`), return structure, and absence of auth/rate limits. This is exceptionally transparent.

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 a single, well-structured paragraph that front-loads purpose, then covers constraints, behavior, and return values. Every sentence adds value 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 the tool's complexity (batch creation with partial success, multiple parameters, no output schema), the description covers all necessary context: how to use, what to expect, error handling, and return format. 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?

Schema coverage is 100%, but the description adds meaning by explaining the `format` parameter (.md vs .mmd), the conditional requirement of `project_id`, and the batch limit of 200. This goes beyond the schema's minimal descriptions.

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 identifies the tool as a batch variant of `create_file`, specifies it creates up to 200 markdown or mermaid files, and mentions the key constraint of batch size. This distinguishes it from the sibling `create_file` and other tools.

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 advises 'Use for bulk ingestion' and for '>200 items, page yourself', implying when to use. It also notes the `project_id` requirement for certain destinations. However, it does not explicitly state when to prefer the singular `create_file` instead, which is a minor gap.

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

create_folderA

Create a folder under a project root or the KB. Idempotent β€” creating an existing folder succeeds. Nested paths like notes/inbox create intermediates. REJECTS: empty names, null bytes, leading path separators, and any segment equal to .. (the call returns isError, no folder is touched). Side effect: a directory is mkdir'd on disk; no DB rows are written until a file lands inside. No external auth or rate limits. Returns {path, base_path}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name (relative; supports nested paths via '/')
project_idNoProject ID. Pass null or omit to create the folder under the KB.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: idempotency, rejection criteria (empty names, null bytes, leading separators, '..'), side effects (disk mkdir, no DB rows until file lands), and no external auth/rate limits. This is exceptionally transparent about behavior and consequences.

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 appropriately sized, front-loading the primary purpose in the first sentence. Every subsequent sentence adds crucial operational details (idempotency, rejections, side effects, return value) without redundancy or fluff.

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?

Despite no output schema, the description discloses the return shape ({path, base_path}) and covers edge cases, side effects, and constraints. It is complete enough for an agent to invoke confidently without additional documentation.

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 baseline is 3. The description adds value by clarifying nested path behavior ('notes/inbox' creates intermediates), which enriches the 'name' parameter beyond its schema description. It also implies project_id semantics ('project root vs KB'), adding contextual meaning.

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 'Create a folder under a project root or the KB', with a specific verb (create) and resource (folder), and distinguishes it from siblings like create_file and delete_folder. The mention of idempotency and nested path handling further clarifies scope.

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

Usage Guidelines4/5

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

It provides clear context for when to use the tool (under a project root or KB, with nested path support) but does not explicitly contrast with alternatives like create_files. The idempotent behavior and rejection cases implicitly guide usage, though no explicit 'use this instead of X' statement exists.

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

delete_fileA

DESTRUCTIVE. Permanently delete one file by ID. KB files are unlinked from disk AND removed from the FTS5 index; project reference files only have their index entry removed (the file on disk is left alone so the watcher does not fight your editor). Not idempotent β€” deleting an unknown ID throws. No external auth or rate limits. Returns {success: true}. Use only when the file is truly obsolete; to deprioritise without losing data, untag (remove_tags) or unfavorite (set_favorite) instead. Bulk variant: delete_files.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it is destructive and permanent, differentiates between KB files (unlinked from disk and removed from FTS5 index) and project reference files (only index entry removed), notes non-idempotence (throws on unknown ID), states no auth/rate limits, and specifies the return 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?

Starts with 'DESTRUCTIVE.' as a clear warning, then packs essential behavioral details, error semantics, return value, usage guidance, and alternatives into a tight paragraph. Every sentence adds value 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?

Despite no annotations and no output schema, the description covers the tool's purpose, behavior, edge cases (unknown ID), return value, safety guidance, and related tools. It is complete for a destructive single-file deletion operation.

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

Parameters3/5

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

The schema covers the only parameter 'id' with description 'File ID' (100% coverage). The description doesn't add meaning beyond that, though it contextualizes how the ID affects behavior (KB vs project reference). This meets the baseline for full schema coverage.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Permanently delete one file by ID.' It clearly distinguishes this tool from the bulk variant 'delete_files' and from alternatives like 'remove_tags' and 'set_favorite'.

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 only when the file is truly obsolete.' It provides clear alternatives: 'to deprioritise without losing data, untag (remove_tags) or unfavorite (set_favorite) instead.' Also mentions the bulk variant for multiple files.

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

delete_filesA

DESTRUCTIVE batch β€” delete up to 500 files by ID in one call. Same physical-deletion rules as delete_file (KB files unlinked from disk; project reference files only de-indexed). Per-ID failures isolated to errors[]; the batch keeps going β€” partial success is the norm. Not idempotent β€” unknown IDs surface as per-item errors. No external auth or rate limits. Returns {deleted_count, error_count, deleted, errors}. To preview the set before deleting, run list_files with the same filter and confirm the IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesFile IDs to delete (max 500 per call)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full transparency burden. It discloses physical deletion rules (KB unlinked vs project de-indexed), per-ID error isolation, partial success, non-idempotency, and lack of auth/rate limits. This exceeds typical 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?

The description is dense but each sentence provides unique value: scope, deletion rules, error behavior, idempotency, auth, and preview guidance. The opening line front-loads the critical 'DESTRUCTIVE batch' warning.

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 single-parameter schema and no output schema, the description fully covers operation semantics, return format, error handling, and alternatives. There are no unanswered questions for an agent deciding to invoke it.

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% (the `ids` array is described as 'File IDs to delete (max 500 per call)'). The description adds behavioral meaning: unknown IDs become per-item errors, failures don't abort the batch, and returns a structured result. This enhances the bare 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 opens with 'DESTRUCTIVE batch β€” delete up to 500 files by ID in one call', clearly stating the verb, resource, and batch scope. It distinguishes itself from the singular `delete_file` sibling by emphasizing the batch nature and the 500-file limit.

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

Usage Guidelines4/5

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

It explicitly references `delete_file` for shared deletion rules and advises running `list_files` to preview before deleting, providing a concrete alternative. While it doesn't state 'use delete_file for a single file', the batch distinction is clear from the name and description.

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

delete_folderA

DESTRUCTIVE β€” recursively delete a folder under the KB AND every file inside it (disk + FTS rows). REFUSES (returns isError) when project_id is supplied: deleting inside a registered project would race the file watcher and re-ingest the contents β€” remove project content via your editor instead. Same name validation as create_folder. Not recoverable from Kontexta after the call (only the git backup, if configured, retains it). No external auth or rate limits. Returns {success: true}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name (relative)
project_idNoProject ID. Pass null or omit to delete from the KB. Project IDs are rejected.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and delivers: labels itself DESTRUCTIVE, explains recursive deletion of disk and FTS rows, states the project_id refusal and its rationale, warns about non-recoverability except git backup, notes no external auth/rate limits, and states the return value. This is comprehensive and directly addresses the tool's safety profile.

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 four sentences, front-loaded with 'DESTRUCTIVE' and then covers key aspects: scope, refusal behavior, validation, recoverability, auth/rate limits, and return value. Every sentence carries essential information with no fluff or 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 tool's destructive nature, lack of annotations, and no output schema, the description is remarkably complete. It explains what gets deleted, the race condition caveat, alternative action, recovery options, external constraints, and the success response format. This leaves the agent well-prepared to invoke the tool correctly and understand consequences.

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

Parameters3/5

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

Schema coverage is 100% for both parameters, so the baseline is 3. The description adds marginal value by referencing 'Same name validation as create_folder' for the name parameter, but the project_id semantics are already fully described in the schema. It does not significantly deepen understanding 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 uses a specific verb (delete) with a clear resource (folder under the KB) and scope (recursively, including every file inside, disk + FTS rows). It distinguishes from sibling tools like delete_file and delete_files by specifying folder-level recursive deletion, and clearly states the refusal behavior for project_id.

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 when-not-to-use guidance: it refuses project_id deletions and tells the user to remove project content via their editor instead. It also references create_folder for name validation, giving context for expected behavior. However, it does not explicitly frame this as an alternative to delete_file or delete_files, though the folder-vs-file distinction is implicit.

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

describe_fileA

Return everything ABOUT a file without pulling its content (no token cost from the body). Tags, size, est_tokens, history depth, related-file ids, backlinks, project, folder, last edited. Operates locally with no auth or rate limits. Use this when you'd otherwise chain read_file + list_tags + get_history + find_related just to decide whether to actually read the file. Parameters: 'id' must be a valid integer file ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing behavior. It adds useful context: 'no token cost', 'Operates locally with no auth or rate limits', and implies a read-only operation via 'Return'. It does not explicitly state 'does not modify the file', but the described behavior strongly implies non-destructive, which is adequate.

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 moderately sized, front-loaded with the core purpose, and each sentence contributes value (purpose, return fields, operational details, usage guidance, parameter note). It is slightly long but not bloated, and the structure flows logically from what to when to parameter.

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 low complexity (one parameter, no output schema), the description covers the essential aspects: what the tool returns, when to use it, operational constraints, and parameter validation. It does not describe the exact return format, but the list of fields provides sufficient context for a metadata retrieval 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 one required 'id' parameter described as 'File ID'. The description adds 'id' must be a valid integer file ID, which slightly clarifies the required format but is largely redundant with the schema's type declaration. This is a baseline score as the schema already documents the parameter.

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: returning metadata about a file without pulling its content. It lists specific fields ('Tags, size, est_tokens...') and explicitly contrasts with read_file, making it distinct 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?

The description provides explicit guidance on when to use this tool: 'Use this when you'd otherwise chain read_file + list_tags + get_history + find_related just to decide whether to actually read the file.' It names alternatives and the exact scenario, making it highly actionable.

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

describe_hands_schemaA

Return the complete authoring reference for kontexta.json: JSON schema, validation rules, security guarantees, limitations, and an annotated example. Static document β€” does not read any project file or DB row. Read-only; no side effects, auth, or rate limits. Takes no parameters. Use when helping a user write or fix a kontexta.json; to see the loaded tools themselves use list_hands; to apply edits use reload_hands.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses that it is a static document, does not read any project file or DB row, is read-only with no side effects, auth, or rate limits, and takes no parameters. This fully preempts any behavioral concerns.

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 well-structured and every sentence adds value: what it returns, its static/read-only nature, no parameters, usage context, and sibling alternatives. It is appropriately sized for the tool's simplicity and front-loads the key purpose before the 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 the tool has no parameters, no output schema, and zero annotations, the description is complete. It covers the tool's content, behavior, limitations, and usage context, leaving no obvious gaps for an AI agent to be confused about selection or 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?

The tool takes zero parameters and the schema confirms this with an empty properties object. The description explicitly states 'Takes no parameters', which is consistent with the schema. Per rubric, a zero-parameter tool gets a baseline of 4, and the description reinforces that.

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 returns the complete authoring reference for `kontexta.json`, including schema, validation rules, and an annotated example. It explicitly distinguishes itself from siblings by naming `list_hands` for viewing loaded tools and `reload_hands` for applying edits, making its unique 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?

The description gives explicit when-to-use guidance: 'Use when helping a user write or fix a `kontexta.json`'. It also names the exact alternatives (`list_hands` and `reload_hands`) and what they are for, providing clear exclusions and alternative routing.

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

diff_against_diskA

Diagnose drift between one file's disk content and its FTS index. Status is one of in_sync, diverged, disk_unreadable, or no_index_row. On divergence returns sizes, line counts, the first divergent line number, and the disk vs index sample for that line β€” NOT a full diff (use get_diff for full diffs between commits). Read-only; no side effects, auth, or rate limits. Use when search results look stale; if status is diverged or no_index_row, run refresh_index to fix.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the tool is read-only with no side effects, auth, or rate limits, and details the possible statuses and return contents on divergence, including what is NOT returned.

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 and front-loaded with the core purpose. Every sentence adds value: purpose, statuses/return details, contrast with get_diff, read-only note, 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?

For a simple tool with one parameter, no output schema, and no annotations, the description is complete. It covers purpose, behavior, return values, statuses, usage context, and the follow-up action, leaving no significant gaps.

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

Parameters3/5

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

Schema description coverage is 100% (file_id is described as 'File ID'). The description does not add parameter-specific semantics beyond the schema, but the baseline of 3 is appropriate given the high coverage and single simple parameter.

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: 'Diagnose drift between one file's disk content and its FTS index.' It uses a specific verb and resource, and explicitly distinguishes itself from sibling tools like `get_diff` (full diffs) and `refresh_index` (fix).

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 when-to-use guidance: 'Use when search results look stale; if status is `diverged` or `no_index_row`, run `refresh_index` to fix.' It also contrasts with `get_diff` to clarify 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.

distill_journalA

Run the distillation pipeline: read raw events since the high-water mark, group by topic, write mechanical markdown entries, advance high-water. Idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_eventsNo
project_slugNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly describes the pipeline's side effects (writing markdown entries and advancing high-water) and explicitly states it is idempotent, which is valuable behavioral context. It does not cover every edge (e.g., permissions or errors), but core behaviors are transparent.

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 a single, dense sentence that conveys the full pipeline in a clear, front-loaded manner. Every clause adds meaning, with no redundant or vague wording.

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

Completeness3/5

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

The description gives a good overview of the pipeline and idempotency, but with no output schema, annotations, or parameter explanations, it misses return-value details and how the parameters influence behavior. It is adequate for a basic understanding but incomplete for full operational use.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters (max_events and project_slug), and the description does not explain either parameter. It mentions 'raw events since high-water mark' and 'group by topic' but does not connect these to the input parameters, so it fails to compensate for the schema's lack of descriptions.

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 function with a specific verb ('Run the distillation pipeline') and details each step: reading raw events since high-water mark, grouping by topic, writing mechanical markdown entries, and advancing high-water. This distinguishes it from sibling tools like journal_append or distill_journal_commit_upgrades.

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

Usage Guidelines3/5

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

The description implies the usage context: run when there are raw events since the high-water mark needing distillation. However, it does not explicitly state when not to use it or mention alternative tools, so guidance is only implicit.

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

distill_journal_commit_upgradesA

After dispatching subagents to upgrade mechanical journal entries to LLM-narrative, call this with the affected task slugs. Updates journal_meta.status_latest to mark the entries as upgraded.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_slugsYesTask slugs whose entries were upgraded by subagents.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly discloses the side effect: 'Updates journal_meta.status_latest to mark the entries as upgraded.' It does not mention error handling, idempotency, or reversibility, but for a simple status update the core behavior is transparent.

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 that are front-loaded and dense: first sentence gives the trigger, second gives the effect. No filler, no repetition of the tool name or schema.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description covers the purpose, the trigger, and the effect. It does not explain what 'mechanical journal entries' are or how to obtain the task slugs, but these are covered by sibling tools and domain context. A small gap is the lack of any mention of validation or response behavior.

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

Parameters3/5

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

The schema already provides a clear description for the only parameter (task_slugs: 'Task slugs whose entries were upgraded by subagents.'), so baseline is 3. The tool description adds minor workflow context ('affected task slugs') but no new syntax or format 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 states a specific verb and resource: 'Updates journal_meta.status_latest to mark the entries as upgraded.' It also gives workflow context ('After dispatching subagents to upgrade mechanical journal entries') that distinguishes this from sibling tools like distill_journal, which likely performs the upgrade itself.

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

Usage Guidelines4/5

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

The description clearly indicates when to use the tool: 'After dispatching subagents to upgrade... call this with the affected task slugs.' This establishes a prerequisite and sequencing. It does not explicitly name alternatives, but the 'after' clause makes the intended usage unambiguous.

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

get_diffA

Return the unified diff of one file between two commit hashes (typically obtained from get_history for the same file). Read-only; no side effects, auth, or rate limits. Order matters β€” commit_a is treated as the earlier side; reversing the args inverts the diff. Throws if either hash is unknown to the file's repo. Use after get_history to see WHAT changed, not just THAT it changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesID of the file
commit_aYesEarlier commit hash (from get_history)
commit_bYesLater commit hash (from get_history)

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excels: it states read-only, no side effects, auth, or rate limits; explains that order matters and reversing args inverts the diff; and discloses the error condition (throws if hash unknown). This is comprehensive behavioral disclosure.

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 packed with useful information: the core action, safety/behavioral traits, and usage guidance. No wasted words, and the most important information (what it does) comes first.

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 output schema and no annotations, the description covers all necessary context: the return type (unified diff), prerequisites (hashes from get_history), error behavior (throws on unknown hashes), and side-effect profile (read-only). It is complete for a function of this complexity.

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 schema has 100% coverage with basic descriptions, but the tool description adds crucial semantics: it emphasizes that commit_a is the earlier side and that reversing args inverts the diff. This goes beyond the schema by explaining the consequence of parameter order, which is essential for correct use.

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 ('Return'), the resource ('the unified diff of one file'), and the scope ('between two commit hashes'), distinguishing it from siblings like get_history (which shows that changed, not what) and diff_against_disk (which compares working tree). It is specific and 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?

The description explicitly says to use it after get_history and explains the benefit ('see WHAT changed, not just THAT it changed'). It also implies when not to use it (when you only need the history) and indicates the hashes typically come from get_history, providing clear context relative to alternatives.

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

get_historyA

Return the git commit history for one file (newest first), each entry with hash, message, date, and author. Reads the file's owning repo: the project's git repo for project files, the KB backup repo for KB files. Read-only; no side effects, auth, or rate limits. Returns {file_id, path, history}; an empty array means the file has not been committed yet. Use to understand a file's evolution before editing or restoring. Pair with get_diff to see exact line changes; use restore_file to roll back.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesID of the file

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description fully carries behavioral disclosure. It states the tool is read-only, has no side effects, auth, or rate limits; explains which repo is read based on file ownership; and clarifies the meaning of an empty result. This goes well beyond the structured schema.

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, each earning its place: the first states purpose and output, the second describes repo behavior and side-effect profile, the third defines the return contract and empty-array meaning, and the fourth gives usage guidance. It is tight, well-organized, and front-loaded with the most important 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 single-parameter tool with no output schema, the description is exceptionally complete. It covers what the tool returns, the structure of the response, the edge case of an uncommitted file, read-only safety, and use cases. Nothing important is missing.

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 schema only says file_id is the 'ID of the file,' but the description adds semantic value by explaining that the tool reads the file's owning repo (project repo vs KB backup repo). This gives the agent a better mental model of what file_id can refer to. The high schema coverage earns a baseline of 3, and this added context lifts it to 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?

The description opens with a specific verb ('Return') and precise resource ('git commit history for one file'), including ordering ('newest first') and returned fields. It also distinguishes itself from sibling tools by explicitly mentioning get_diff and restore_file for related but 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 Guidelines5/5

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

Provides clear when-to-use guidance: 'Use to understand a file's evolution before editing or restoring.' It also names alternatives ('Pair with get_diff to see exact line changes; use restore_file to roll back'), giving explicit context for choosing this tool vs siblings.

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

grep_in_fileA

Match a JS regex against one file's lines and return matched lines with line numbers (capped: default 100, max 500). Catches what FTS misses: URLs, hyphenated terms, code identifiers. Read-only; no side effects, auth, or rate limits. Invalid regex throws invalid regex. Returns {matches, match_count, truncated}. Use after read_file_outline when you know the file but need a specific reference; for cross-file regex use regex_search; for keyword/concept search use search.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID
patternYesPattern to match. Treated as a JavaScript RegExp source.
max_matchesNoCap on returned hits (default 100)
case_insensitiveNoAdd the 'i' flag (default false)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description takes full responsibility for behavioral disclosure. It states the tool is read-only with no side effects, auth, or rate limits, and specifies error behavior (invalid regex throws) and response shape. This is transparent and covers safety concerns.

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 dense but efficient, front-loading the core action and constraints. Each sentence adds distinct valueβ€”scope, use cases, safety, errors, return format, and guidanceβ€”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?

For a tool with no output schema, the description fully covers what the agent needs: what it does, its limitations (capped results), return structure, error behavior, and when to use it relative to siblings. It is complete enough 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% with descriptions for all four parameters, so the baseline is 3. The description adds minimal extra parameter-specific meaning beyond the schema, though it does clarify the regex matching context ('catches what FTS misses') and the default/max caps, which relate to max_matches. Overall, no significant additional parameter insight is provided.

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

Purpose5/5

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

The description clearly states the tool's functionβ€”matching a JS regex against one file's lines and returning line numbersβ€”and differentiates it from siblings like regex_search (cross-file) and search (keyword/concept). The mention of catching FTS misses adds specific use-case 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?

Provides explicit guidance: use after read_file_outline when you know the file and need a specific reference. It also names alternatives for cross-file regex (regex_search) and keyword search (search), making the decision criteria clear.

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

housekeep_journalA

Run journal retention/archival for a project. Idempotent. Prunes old raw .jsonl files and archives cold tasks per the configured retention policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_slugNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly discloses that the operation is 'idempotent' and names the concrete effects ('prunes old raw .jsonl files', 'archives cold tasks'), which informs the agent about the tool's side effects. It stops short of explaining reversibility or permission requirements, but the key behavioral traits are covered.

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 short, front-loaded sentences with no filler. The first sentence states the action, the second adds a safe-rerun guarantee, and the third details what gets pruned/archived. Every sentence earns its place.

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

Completeness4/5

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

Given the tool's modest complexity (one parameter, no output schema), the description is mostly complete: it states the action, the idempotency guarantee, and the high-level effects. It does not explain how the retention policy is configured or what the operation returns, but this is minor given the simple interface.

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

Parameters2/5

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

There is only one parameter, project_slug, and the schema just says it's a string with no description (0% coverage). The tool description mentions 'for a project' but never names or explains the project_slug parameter, its format, or whether it is required. The description fails to compensate for the schema's lack of detail.

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 names a specific verb ('Run') and resource ('journal retention/archival') and provides concrete details ('prunes old raw .jsonl files', 'archives cold tasks') that clearly distinguish it from sibling journal tools like journal_append and journal_status.

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

Usage Guidelines3/5

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

The usage context is implied by the word 'retention/archival' and 'per the configured retention policy', but the description does not state when to use this tool versus alternatives, nor does it provide exclusions or preconditions. It is adequate but lacks explicit guidance.

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

journal_appendA

Append a timestamped text entry to today's daily journal file in the Knowledge Base. Creates the file if it doesn't already exist. Both calls on the same calendar day return the same file_id. Returns { file_id }.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to append to today's journal entry
project_idNoOptional project ID context

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description discloses file creation and same-day file_id behavior, which is useful. However, it does not specify safety aspects (e.g., whether it's read-only or destructive), rate limits, or authentication requirements, leaving gaps.

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

Conciseness5/5

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

The description is extremely concise: two sentences covering purpose, creation behavior, and return value. Every sentence adds value with no redundant or filler content.

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 low complexity (2 params, no output schema, no nested objects), the description fully covers what an agent needs: what the tool does, what it returns, and the idempotency behavior within a day. No missing critical 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 coverage is 100%, so the schema fully documents the parameters. The description adds minimal value beyond stating the purpose of appending text and optional project context; it does not provide format or constraints 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 action (append timestamped text entry), the target (today's daily journal file), and key behaviors (creates file if missing, same file_id for same day). It effectively distinguishes from sibling tools like journal_note or distill_journal.

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

Usage Guidelines3/5

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

The description implies usage for appending to today's journal but provides no explicit guidance on when to use this tool versus alternatives (e.g., journal_note, journal_intent). No exclusion criteria or when-not-to-use context is given.

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

journal_intentA

Record a topic/intent pivot. Use when the user redirects what you're working on; the distillation step uses this to split task buckets correctly.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesOne-line summary of the new intent.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It clarifies that the tool records a pivot and that distillation uses this record, but it does not mention any permissions, side effects, or return values. For a simple journaling action this is adequate, though not rich.

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 with zero wasted words. It front-loads the action and resource, then immediately provides usage context and downstream rationale. 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 the tool's simplicity (one required parameter, no output schema, no nested objects), the description provides complete context: what it does, when to use it, and why it matters. There is no meaningful missing information for an agent to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the single 'summary' parameter is already well described in the schema. The description adds no additional parameter meaning beyond what the schema provides, so the 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 uses a specific verb ('Record') and a clear resource ('a topic/intent pivot'), and it distinguishes this tool from siblings like journal_append and journal_note by focusing on intent pivots. It immediately conveys what the tool does and when it is relevant.

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 the user redirects what you're working on') and explains the downstream effect on distillation. It does not provide explicit 'when not to use' guidance or name alternative tools, but the context is clear enough for most cases.

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

journal_noteA

Record a free-form decision/abandonment/observation note in the current project's journal. Stored as an agent_note event in Layer 1; surfaces in distilled task entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags for the note.
textYesBody of the note (markdown allowed).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It explains the persistence behavior (stored as an 'agent_note' event), the storage layer (Layer 1), and the downstream effect (surfaces in distilled task entries). This is meaningful and goes beyond a generic 'record a note' statement.

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 concise sentences, front-loaded with the core purpose, and every phrase adds relevant information. No filler or 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 low parameter count and no output schema, the description provides sufficient context: what the tool does, where the note is stored, and how it surfaces later. It does not mention return values, but that is not essential here. The description is complete enough for an agent to select and call the tool 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?

The input schema already documents both parameters ('text' as body with markdown allowed, 'tags' as optional array). The description does not add significant parameter-specific semantics beyond those already present, so the baseline of 3 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 opens with a specific action verb ('Record') and a clearly scoped resource ('free-form decision/abandonment/observation note in the current project's journal'). It also differentiates the tool from siblings like journal_append by describing the storage mechanism ('agent_note event in Layer 1') and downstream effect ('surfaces in distilled task entries').

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 conveys when to use the tool: for decision, abandonment, or observation notes in the current project's journal. It does not explicitly list alternatives or exclusion scenarios, but the context is strong enough to guide appropriate selection.

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

journal_statusB

Report the journal backlog and high-water mark for a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_slugNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states the tool 'report's status, implying a read-only operation, but does not mention side effects, authentication needs, rate limits, or return format. This is insufficient for a tool without annotation support.

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 a single, front-loaded sentence with no redundant information. Every word contributes to the purpose.

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 the tool's simplicity (one parameter, no output schema), the description provides the basic purpose. However, it does not explain what the 'report' output looks like or what statuses are available. For a reporting tool, this is a notable gap.

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

Parameters2/5

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

The schema has 0% coverage on parameter descriptions, but the tool description does not add any meaning to the sole parameter 'project_slug'. It is left implicit what value it should take or how it is used. The description fails to compensate for the lack of schema documentation.

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 a specific action ('Report') on a specific resource ('journal backlog and high-water mark') for a project. This distinguishes it from sibling tools like 'journal_append' or 'distill_journal' which perform different actions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'distill_journal' or 'housekeep_journal'. The description lacks any context about appropriate use cases or exclusions.

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

list_filesA

List file metadata with optional filters (project_id, tag, favorite, folder, untagged) and pagination. Read-only; no side effects, auth, or rate limits. Each row is annotated with tags, est_tokens, and size_bytes; the response includes total_est_tokens so you can budget before reading bodies. project_id: null returns ONLY Knowledge Base files; omit the field to span everything. Use to browse known structure; for keyword/content lookup use search; for a denser whole-vault dump use project_map.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by tag name
limitNoMaximum number of results
folderNoFilter by folder path
offsetNoOffset for pagination
favoriteNoFilter by favorite status
untaggedNoIf true, return only files that have no tags. Useful for bulk-tagging workflows.
project_idNoFilter by project ID. Pass null to list ONLY Knowledge Base files (project_id IS NULL).

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and fully delivers: it declares read-only, no side effects, auth, or rate limits. It also discloses response characteristics (`total_est_tokens`, row fields) enabling the agent to plan token usage. No contradictory annotations exist.

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 well-structured and every sentence adds value: function, filters, safety declaration, response details, semantic nuance, and tool differentiation. No filler or 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?

For a tool with 7 optional parameters and no output schema, the description is remarkably complete. It explains the response shape, the purpose of `total_est_tokens`, and provides usage context, making it easy for the agent to select and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description lists the filter parameters and adds the key `project_id: null` clarification, but this is already present in the schema. It doesn't substantially elevate parameter meaning 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 lists file metadata with specific filters and pagination, using a specific verb and resource. It explicitly distinguishes itself from siblings by directing users to `search` for content lookup and `project_map` for a denser dump.

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 guidance: 'Use to browse known structure' and names alternatives (`search`, `project_map`). Also clarifies the nuanced `project_id: null` vs omit behavior, which is crucial for correct usage.

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

list_foldersA

List folder paths under a project root (or the Knowledge Base when project_id is null/omitted). Returns {folders: string[], base_path} where folders are RELATIVE to base_path. Read-only; no side effects, auth, or rate limits. Throws if project_id references an unknown project. Use to discover where to drop a new file via create_file's folder argument or to navigate vault structure; to actually create one use create_folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoProject ID. Pass null or omit to list KB folders.

TDQS

A4.9/5.0
Behavior5/5

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

Even though no annotations are provided, the description fully discloses behavioral traits: 'Read-only; no side effects, auth, or rate limits' and 'Throws if project_id references an unknown project'. This covers safety, error handling, and permissions comprehensively.

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?

Five concise sentences, each serving a distinct purpose: core action, return shape, safety, error behavior, and usage guidance. No redundancy or filler; 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?

The description is fully self-contained for a 1-parameter tool with no output schema or annotations. It explains return format, relative path semantics, error behavior, and relationships to sibling tools, making external context unnecessary.

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 already documents project_id with 100% coverage ('Pass null or omit to list KB folders'). The description adds the error condition for unknown projects and clarifies the Knowledge Base context, providing extra value 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?

Description clearly states the action: 'List folder paths under a project root (or the Knowledge Base when project_id is null/omitted)'. It also distinguishes from create_folder by explicitly noting that to create a folder one should use create_folder.

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 use cases: discovering where to drop a new file via create_file's folder argument or navigating vault structure. It also names create_folder as the alternative for creation, guiding the agent on tool selection.

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

list_handsA

List every Hands command tool currently registered, with project scope, tool name, danger level, confirmation flag, and description. Hands tools come from per-project kontexta.json files loaded at register time. Read-only; no side effects, auth, or rate limits. Use to discover what side-effectful project commands the agent is permitted to run; for the kontexta.json schema see describe_hands_schema; reload after editing one with reload_hands.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden. It explicitly states 'Read-only; no side effects, auth, or rate limits', and explains the data source (per-project kontexta.json files), providing complete behavioral disclosure.

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

Conciseness5/5

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

The description is compact yet information-dense: purpose, source, safety, usage guidance, and pointers to related tools are all included in three sentences 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?

Despite no output schema, the description lists the fields returned and fully explains the tool's role, safety profile, and relationship to siblings. It is a complete and self-sufficient description.

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 the schema is empty (100% coverage), so there are no params to document. Baseline 4 is appropriate; description adds no parameter-specific info but isn't 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 explicitly states 'List every Hands command tool currently registered' with precise output fields (project scope, tool name, danger level, confirmation flag, description), and distinguishes itself from siblings like reload_hands and describe_hands_schema.

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 clearly explains when to use this tool ('discover what side-effectful project commands the agent is permitted to run') and points to alternatives: 'see describe_hands_schema' for schema and 'reload_hands' after editing.

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

list_projectsA

List every registered project with id, name, absolute path, and a derived has_hands flag (true when the path exists on disk AND contains a kontexta.json). Read-only; no side effects, auth, or rate limits. Use to find the project_id to pass to scoped tools (search, list_files, commit_backup, refresh_index, etc.). To register a new project use register_project; to inspect its Hands tools use list_hands.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so the description carries full burden. It discloses 'Read-only; no side effects, auth, or rate limits' and explains the derived has_hands flag condition, exceeding minimal requirements.

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, front-loaded with the action and output, then usage and alternatives. Every sentence provides unique value with no redundancy or padding.

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 low complexity and absence of output schema/annotations, the description fully covers return fields, behavioral assurances, and usage context. It is complete for a simple list operation.

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 the schema is empty (100% coverage vacuously). Per rubric, 0 parameters earns baseline 4; the description adds no parameter detail but none is needed.

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

Purpose5/5

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

States 'List every registered project' with specific output fields (id, name, absolute path, has_hands flag), making the action and resource unmistakable. It also distinguishes from siblings by explaining this tool provides the project_id for scoped tools and contrasting with register_project/list_hands.

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: 'Use to find the project_id to pass to scoped tools' and lists those tools. Also directs to register_project for registration and list_hands for Hands inspection, clearly covering alternatives.

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

list_tagsA

List every tag in the global SQLite database with id, name, and applied count. Read-only; no side effects, auth, or rate limits. Returns the entire taxonomy (not paginated). Use to discover existing labels before tagging (so you reuse rather than fork) or to find tag IDs to feed into remove_tags. For tags on a specific file, use describe_file.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full transparency burden and fully delivers. It discloses read-only behavior, no side effects, no auth or rate limits, and the non-paginated nature of the response, all of which are meaningful operational traits.

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 with no fluff. Purpose, safety, return behavior, and usage guidance are each addressed once and in a logical order, making the description easy to scan and act on.

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 and no output schema, the description covers everything an agent needs to select and invoke the tool: what it returns, how it behaves, and when to use it. It also connects to sibling tools like remove_tags and describe_file, completing the contextual picture.

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

Parameters4/5

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

The tool has zero parameters, so the schema provides complete coverage and parameter semantics are inherently unnecessary. The description still adds value by detailing the return fields (id, name, applied count), partially compensating for the missing output 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 names a specific verb ('List') and resource ('every tag in the global SQLite database') and states the returned fields (id, name, applied count). It also differentiates from siblings by explicitly pointing to describe_file for file-specific tags, making its scope unmistakable.

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 gives explicit when-to-use guidance: discover existing labels before tagging and find tag IDs for remove_tags. It also names an alternative (describe_file) for a different use case, providing clear decision criteria.

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

move_fileA

Move/rename a file. Destination 'new_path' must be absolute and resolve INSIDE the file's owning project or global knowledge directory. Cross-project moves are rejected. Operates locally with no auth or limits. Parameters: 'file_id' is a valid file ID. 'new_path' is an absolute path.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID
new_pathYesAbsolute destination path

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It states 'Operates locally with no auth or limits' and discloses cross-project rejection, which are key behavioral traits. However, it doesn't mention return values or error handling.

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, front-loaded with the action. It packs in constraints and operational details without fluff. The 'Parameters' section is slightly redundant but extends schema descriptions.

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

Completeness4/5

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

For a simple move operation, the description covers key constraints and local operation. However, it lacks details about return values, overwrite behavior, and error states, which would be helpful since no output schema exists.

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% for both parameters. The description adds the important constraint that new_path must resolve inside the owning project or global directory, which the schema doesn't specify. For file_id, it merely repeats 'valid file ID', adding little value.

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 opens with 'Move/rename a file.', clearly stating the verb and resource. This distinguishes it from sibling tools like update_file or delete_file. The mention of 'rename' clarifies the dual functionality.

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

Usage Guidelines3/5

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

The description gives constraints (absolute path, inside owning project, cross-project rejection) but doesn't explicitly state when to prefer this over alternatives. Usage is implied by the verb 'move' and the constraints.

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

onboard_agentA

Write or update the kontexta workflow rules block in a project's agent context file(s). Idempotent β€” uses fenced markers + version to skip no-op writes.

MANDATORY: This tool modifies project configuration files. You MUST seek explicit user consent before calling this tool. Set 'confirm: true' only after the user has agreed.

PARAMETERS:

  • project_id: number, required.

  • confirm: boolean, required. Must be true to proceed.

  • files: string[], optional. Paths relative to project root. For update mode, defaults to recommendation.target_files. Ignored when files is empty AND target_agent is provided (create mode).

  • target_agent: enum claude-code | codex | gemini | cursor | continue | aider | cline | copilot | generic. Required when files is empty AND no context file currently exists. Picks the canonical filename and the starter scaffold.

RETURNS: { written: [{ path, action: created|updated|skipped, version }], skipped: [{ path, reason }] }

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoProject-relative paths to update; defaults to detected context files
confirmYesMANDATORY: Set to true only after obtaining explicit user consent to modify context files.
project_idYesProject ID returned from register_project
target_agentNoRequired when files is empty AND no context file exists. Picks the canonical filename + scaffold.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses idempotency (fenced markers + version skip no-op writes), file modification (project configuration files), the mandatory user consent requirement, and the return structure. It does not mention if existing rules are overwritten, but the idempotency and versioning hint at safe behavior. This is good coverage for a mutating tool.

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: a one-sentence purpose, a mandatory consent warning, a concise parameter list with mode behavior, and a returns section. It is slightly longer than necessary due to repeating some parameter details that are also in the schema, but every section earns its place with the consent warning and mode logic being critical.

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

Completeness4/5

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

For a tool with 4 parameters, no annotations, and no output schema, the description covers all essential context: idempotency, consent, create/update mode behavior, parameter interactions, and the exact return format. It lacks error handling details (e.g., what happens if no context file exists and target_agent is omitted), but the description is sufficient for an agent to invoke the tool correctly in most scenarios.

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 the description adds context beyond the schema: it clarifies that files defaults to recommendation.target_files in update mode, that files is ignored when target_agent is provided (create mode), and specifies the exact condition for target_agent requirement. This adds practical meaning to the parameters, going beyond the schema descriptions.

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 starts with 'Write or update the kontexta workflow rules block in a project's agent context file(s)' – a specific verb+resource that clearly distinguishes from generic file tools like update_file. It names the exact domain (kontexta workflow rules) and the target (agent context files), leaving no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool: it explains create vs update modes, when files is ignored, when target_agent is required, and the mandatory consent step. However, it does not explicitly compare to sibling tools like update_file or create_file, so an agent may not know why to choose this over those alternatives. The guidance is strong but not fully explicit about alternatives.

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

project_mapA

Return a compact indented outline of folders, file titles, tags, and IDs in a single dense block β€” substantially fewer tokens than the equivalent list_files JSON for the same scope. Read-only; no side effects, auth, or rate limits. Capped at max_lines (default 5000); the response reports est_tokens and emits a warning field if it exceeds KONTEXTA_PROJECT_TOKEN_WARN. project_id: null = KB only; omit = everything. Defaults: include_tags=true, show_titles=true. Use to orient yourself in an unfamiliar vault or project; for keyword lookup use search.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_linesNoHard cap on output lines (each line β‰ˆ one folder or file). Default 5000.
project_idNoRestrict to a single project. Pass null for knowledge-base-only files. Omit for everything.
show_titlesNoShow file titles instead of filenames. Default true.
include_tagsNoAppend #tags inline. Default true. Set false to shrink the outline.

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it meets it thoroughly. It discloses read-only status, no side effects, no auth or rate limits, the `max_lines` cap, the `est_tokens` report, the warning-field behavior above `KONTEXTA_PROJECT_TOKEN_WARN`, and default values for flags. This is rich behavioral disclosure beyond what any structured field could infer.

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

Conciseness5/5

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

The description is compact yet information-denseβ€”four sentences cover purpose, benefit, safety profile, output limits, parameter semantics, and usage guidance. It front-loads the core purpose and immediately conveys value with the token-saving comparison. No sentence is wasted; every clause adds useful 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?

This tool has no output schema and no annotations, so the description alone must convey what the tool returns and how it behaves. It does: it describes the output form ('compact indented outline'), the included fields, the token estimate/warning mechanism, and the parameter options. Combined with explicit usage guidance and alternatives, the description is complete for an agent to safely and correctly invoke the 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?

Although the input schema already covers 100% of parameters, the description adds meaning beyond the schema: it explains the null/omit distinction for `project_id` ('KB only' vs. 'everything') and states the defaults for `include_tags=true` and `show_titles=true`. This directly aids an agent in choosing correct parameter values, exceeding schema-level explanations.

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 opens with a specific verb and resource: 'Return a compact indented outline of folders, file titles, tags, and IDs in a single dense block.' It distinguishes itself from siblings by explicitly noting it uses substantially fewer tokens than the equivalent `list_files` JSON and by contrasting with `search` for keyword lookup. This makes the tool's unique purpose unmistakable.

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 gives explicit when-to-use guidance: 'Use to orient yourself in an unfamiliar vault or project' and tells when not to use it: 'for keyword lookup use `search`.' It also clarifies nuanced selection behavior with `project_id: null` vs. omitted vs. a specific project, which serves as concrete usage guidance.

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

read_fileA

Read one file's full body and metadata by ID. Read-only; no side effects, auth, or rate limits. Returns title, path, content, tags, est_tokens (so you can budget context before opening more files), and timestamps. Throws if the ID is unknown. Use for a single known file. Prefer describe_file to inspect without paying body tokens; read_files for batches; read_file_lines/read_section for partial reads; read_file_by_path when you only have the absolute path.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description discloses read-only nature, no side effects/auth/rate limits, return fields including est_tokens for context budgeting, and error behavior ('Throws if the ID is unknown').

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 focused sentences front-load purpose, then add return/error details and alternatives; 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?

Despite no output schema, it lists key return fields, error behavior, side-effect profile, and usage boundaries, which is sufficient for a single-parameter tool with rich sibling 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 (id) at 100% with 'File ID'; description adds minimal semantic value beyond referencing 'by ID' and emphasizing a known file, meriting the baseline 3 for high schema coverage.

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

Purpose5/5

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

Description states 'Read one file's full body and metadata by ID' with a specific verb and resource, and explicitly distinguishes from siblings via 'Use for a single known file' and alternative tool mentions.

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 ('single known file'), and provides clear alternatives for inspection (describe_file), batch (read_files), partial (read_file_lines/read_section), and path-based (read_file_by_path) scenarios.

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

read_file_by_pathA

Look up a file by its absolute on-disk path and return the same shape as read_file. The path must EXACTLY match what Kontexta indexed β€” no symlink resolution, no path normalisation beyond what the OS does, no trailing-slash tolerance. Returns isError if no row matches (the file may exist on disk but not be indexed β€” try refresh_index). Read-only; no side effects, auth, or rate limits. Use when an agent has a path from its working directory but no file ID; if you have the ID, prefer read_file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path on disk (must match the path stored in Kontexta)

TDQS

A4.9/5.0
Behavior5/5

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

Despite the absence of annotations, the description discloses the read-only nature with 'no side effects, auth, or rate limits', details the strict path-matching behavior ('no symlink resolution, no path normalisation beyond what the OS does, no trailing-slash tolerance'), and specifies failure semantics ('Returns isError if no row matches'). This fully compensates for missing 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?

Each of the four sentences serves a distinct purpose: defining the operation, specifying path constraints, stating error behavior, and giving usage guidance with alternatives. There's no redundancy or filler.

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 single-parameter read tool with no output schema, the description covers its purpose, output shape (via reference to `read_file`), error handling, path requirements, and usage context. It also addresses the edge case of unindexed files. This is a complete and self-sufficient description.

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 schema's `path` description only states it must be an absolute path matching storage. The tool description adds critical operational semantics: the path must match exactly as indexed, with no symlink resolution or normalization and no trailing-slash tolerance. This is a substantial enrichment over the schema, though it stops short of providing format specifications or examples.

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 tool's description opens with a clear action: 'Look up a file by its absolute on-disk path' and explicitly ties the output to `read_file`. It differentiates itself from the closely related `read_file` by emphasizing path-based lookup versus ID-based lookup and states a preference: 'if you have the ID, prefer read_file'. This is specific and 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?

The description gives explicit when-to-use guidance: 'Use when an agent has a path from its working directory but no file ID' and contrasts with `read_file` when an ID is available. It also suggests a fallback when the file is not found: 'try refresh_index'.

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

read_file_linesA

Return a 1-indexed inclusive line slice of a file. Out-of-range bounds clamp silently to the file's actual length; to < from throws. Read-only; no side effects, auth, or rate limits. Returns the snippet plus its size_bytes and est_tokens. Use to inspect a stack-trace region or a chunk of a large file without pulling the whole body. Prefer read_section if you know the heading, grep_in_file if you know a pattern but not the line number.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID
toYesLast line (1-indexed, inclusive)
fromYesFirst line (1-indexed, inclusive)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses read-only nature, no side effects/auth/rate limits, silent clamping for out-of-range bounds, throws on to<from, and return contents (snippet plus size_bytes and est_tokens). This is exemplary transparency for an unannotated tool.

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

Conciseness5/5

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

Six sentences, each earning its place: core action, edge cases, side-effect declaration, return shape, use case, and sibling alternatives. Front-loaded with the primary verb and resource. No filler or repetition.

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 tool with 3 required params and no output schema, the description fully covers purpose, behavioral quirks, return values, and usage context. Nothing critical is missing; the tool is simple enough that this is 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%, so baseline is 3. The description reiterates 1-indexed inclusive semantics and adds clamping behavior tied to from/to, but does not materially expand parameter meaning beyond the schema. No missed parameters or ambiguity.

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 starts with a specific verb+resource+scope: 'Return a 1-indexed inclusive line slice of a file.' It clearly distinguishes from siblings by naming exact alternatives (read_section, grep_in_file), making the tool's unique purpose unmistakable.

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 to inspect a stack-trace region or a chunk of a large file without pulling the whole body.' It also names alternatives with specific conditions: 'Prefer read_section if you know the heading, grep_in_file if you know a pattern but not the line number.' This is exactly what the rubric requires.

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

read_file_outlineA

Return a flat list of markdown headings for one file (level, text, line, byteStart, byteEnd). Read-only; no side effects, auth, or rate limits. Use as a cheap probe before read_section or update_file_section so you don't spend tokens on the full body just to learn what sections exist. Empty outline means the file has no markdown headings (it may still have content β€” fall back to read_file or read_file_lines).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and states 'Read-only; no side effects, auth, or rate limits.' It also discloses the empty-outline meaning and that content may still exist, which is important behavioral context for an agent deciding on next steps. This exceeds what schema or annotations would 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?

Three sentences, each earning its place: what is returned, read-only/usage guidance, and empty-case fallback. The purpose is front-loaded in the first sentence, and there is zero wasted text.

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?

The tool is simple (1 param, no output schema), but the description still covers return format (list of headings with fields), safety profile, usage context, and edge case (empty outline). It fully equips an agent to decide when to call this tool and what the result means.

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

Parameters3/5

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

The schema already describes file_id as 'File ID' with 100% coverage, so the baseline is 3. The description's mention of 'one file' aligns with the parameter but adds no new syntactic detail above the schema. Since the single parameter is self-explanatory, the baseline rating 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 begins with a specific verb 'Return' and clearly identifies the resource as 'a flat list of markdown headings for one file' including exact fields (level, text, line, byteStart, byteEnd). It distinguishes itself from sibling tools like read_file (full body), read_section (section reading), and update_file_section (section editing).

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: 'Use as a cheap probe before read_section or update_file_section' and provides a clear fallback: 'fall back to read_file or read_file_lines' when the outline is empty. This gives direct usage guidance and names alternatives.

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

read_filesA

Batch read up to 200 files by ID in one call. Returns per-file annotated records, an aggregate total_est_tokens, and an isolated errors[] (one bad ID does NOT abort the batch). Read-only; no side effects, auth, or rate limits. Use instead of looping read_file to halve round-trips and get the combined token cost upfront. For >200 IDs, page yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesFile IDs to read (max 200 per call)

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility. It discloses the read-only nature, absence of side effects/auth/rate limits, the return structure (per-file records, total_est_tokens, errors[]), and the non-aborting error isolation. This is thorough and exceeds typical expectations.

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 concise sentences with no fluff. It front-loads the core purpose, then layers return details, safety, and usage guidance. 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 there is no output schema, the description explains the return values (per-file annotated records, total_est_tokens, errors[]) and error behavior. It also covers limitations and usage context, making it complete for a batch tool with a single parameter.

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?

Although the schema already describes `ids` as 'File IDs to read (max 200 per call)', the description adds meaningful context: the batching purpose, the aggregation of token estimates, and the paging strategy for >200 IDs. This goes beyond the schema's basic parameter 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 opens with a specific verb and resource: 'Batch read up to 200 files by ID in one call.' This clearly distinguishes it from the single-file sibling `read_file` and other file-reading tools. The scope and behavior are immediately evident.

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 explicitly states when to use this tool: 'Use instead of looping read_file to halve round-trips and get the combined token cost upfront.' It also provides a constraint: 'For >200 IDs, page yourself.' This gives clear actionable guidance on when and how to use it.

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

read_sectionA

Return the body of ONE heading (the heading line itself is excluded) plus level, line, size_bytes, and est_tokens. Heading match is case-insensitive but exact-string after trim β€” fuzzy / partial matches do NOT resolve. Returns isError if the heading is absent. Read-only; no side effects, auth, or rate limits. Pair with read_file_outline when you are unsure which headings exist; for non-heading line ranges use read_file_lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID
headingYesHeading text to extract (case-insensitive)

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states matching rules ('case-insensitive but exact-string after trim', 'fuzzy / partial matches do NOT resolve'), error behavior ('Returns isError if the heading is absent'), and safety ('Read-only; no side effects, auth, or rate limits').

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

Conciseness5/5

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

The description is compact (~80 words) and well-structured: it front-loads the core action and output, then clarifies matching semantics and error behavior, and ends with usage guidance. Every sentence adds value 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?

The description covers purpose, output fields, error condition, matching edge cases, and provides alternative tool references. Given the lack of output schema and annotations, this description is remarkably complete, giving the agent all necessary information to decide when to call this tool and what to expect.

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?

Both parameters are already documented in the schema, but the description adds critical semantics for the `heading` parameter: exact string match after trimming, case-insensitivity, and that fuzzy/partial matches fail. It also clarifies the return body and error condition, which are not in 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 explicitly states the action: 'Return the body of ONE heading' and lists the additional output fields. It clearly distinguishes this from sibling tools like `read_file_outline` and `read_file_lines`, which are mentioned as alternatives 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?

The description explicitly instructs when to use alternatives: 'Pair with `read_file_outline` when you are unsure which headings exist; for non-heading line ranges use `read_file_lines`.' This provides clear when-to-use and when-not-to-use guidance, naming specific sibling tools.

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

refresh_indexA

Reconcile the FTS index against disk. For a project (project_id set), re-runs discoverFiles. For the KB (project_id null/omitted), walks knowledge/, ingests new .md files, reindexes any whose content hash drifted, and PRUNES rows for files no longer on disk. SIDE-EFFECTFUL: writes/updates/deletes file and FTS rows (the prune is destructive on stale index rows but never deletes files from disk). Idempotent β€” running twice is a near no-op. Skips files >5MB and standard junk dirs (node_modules, .git, dist, build, etc.). No external auth or rate limits. Returns {scope, newly_indexed, refreshed, pruned}. Use after editing files outside Kontexta, or when diff_against_disk reports drift.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoProject ID. Pass null or omit to reindex the Knowledge Base.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries full weight and does so thoroughly. It discloses side-effectfulness ('SIDE-EFFECTFUL: writes/updates/deletes file and FTS rows'), the destructive prune behavior, idempotency ('running twice is a near no-op'), skip criteria (>5MB, junk dirs), and absence of auth/rate limits. It also states the return shape, which is beyond what any schema/annotation offers.

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

Conciseness5/5

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

The description is compact yet information-dense, front-loading the core action in the first sentence. Each subsequent sentence adds distinct value (scope, side effects, idempotency, limits, use cases) without redundancy or filler.

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 a single optional parameter and no output schema, the description is fully complete: it explains the two scopes, the exact operations performed, safety constraints (never deletes files from disk), skip conditions, and expected return fields. It also connects to sibling diff_against_disk and external workflows, making it self-sufficient for correct selection and 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?

Schema coverage is 100% with the parameter description 'Project ID. Pass null or omit to reindex the Knowledge Base.' The tool description adds behavioral nuance: for a set project_id it 're-runs discoverFiles', whereas for KB it walks knowledge/ and handles new/modified/pruned files. This enriches parameter semantics beyond the schema's simple null/omitted directive, though the schema already covers the core meaning.

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 opens with 'Reconcile the FTS index against disk', a specific verb and resource that clearly distinguishes this tool from sibling tools like search, diff_against_disk, or list_files. It explicitly contrasts with diff_against_disk by saying 'Use after editing files outside Kontexta, or when diff_against_disk reports drift', making the purpose unmistakable.

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 gives explicit when-to-use guidance: 'Use after editing files outside Kontexta, or when diff_against_disk reports drift.' It also clarifies scope (project vs KB) and states idempotency, helping the agent decide if this tool is appropriate versus alternatives.

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

register_projectA

Register a new project and link it to the Kontexta knowledge system.

SIDE EFFECTS: Writes project metadata to disk (persisted in the Kontexta data directory). Scans the project root recursively to discover and index all markdown files into the local database. Registers any kontexta.json-declared Hands tools found in the project root. This operation is idempotent β€” re-registering an existing project updates its metadata without data loss.

AUTH / RATE LIMITS: None. Operates entirely on the local file system.

PARAMETERS:

  • name: Human-readable project name.

  • path: Absolute path to the project root. Required. DO NOT guess or assume the path based on the active editor workspace unless the user explicitly asks to register the "current" or "open" project. If the user provides a project name but no path, ask them for the absolute path before calling this tool. Fails with a descriptive error if the path does not exist or is inaccessible.

  • description: Optional free-text description stored with the project metadata.

RETURNS: A JSON object containing:

  • project: { id, name, path, description, created_at }

  • discovered_files_count: number of markdown files indexed

  • discovered_files: array of { path, est_tokens, size_bytes } for each file

  • total_est_tokens: estimated total token cost of all discovered files

  • hands: { found, tools_registered, tools_disabled, warnings }

  • warnings: array of non-fatal issues (e.g. scan failures, token budget exceeded)

ERROR CONDITIONS: Returns isError=true if path is missing or unresolvable. Scan failures are non-fatal and reported in warnings rather than as errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
pathYesAbsolute path to the project root. Required. DO NOT guess from the active workspace unless asked. Ask the user if unsure.
descriptionNoOptional project description

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses side effects, including writing metadata to disk, recursive scanning, indexing markdown, registering Hands tools, and idempotency. It also states auth/rate limits (none), return format, and error conditions, providing complete transparency beyond what annotations would offer.

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 lengthy but well-structured with clear sections (SIDE EFFECTS, AUTH/RATE LIMITS, PARAMETERS, RETURNS, ERROR CONDITIONS). Every section adds value, and the use of headers improves scanability. It is slightly verbose but justified by the tool's complexity.

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?

This tool has no output schema and moderate complexity, but the description completely covers return values, error behavior, side effects, and prerequisites. The detailed RETURNS section lists every field, and ERROR CONDITIONS distinguishes fatal vs non-fatal issues. It is comprehensive enough for an agent to use the tool with confidence.

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 baseline is 3, but the description adds critical operational meaning beyond the schema. For the 'path' parameter, it explicitly warns against guessing from the editor workspace and instructs the agent to ask the user for the absolute path if uncertain. This goes beyond the schema's description and improves correct invocation.

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 function with a specific verb and resource: 'Register a new project and link it to the Kontexta knowledge system.' It distinguishes this from siblings like list_projects and refresh_index by detailing the registration and indexing side effects, 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 Guidelines4/5

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

The description provides clear usage context, such as requiring an absolute path and explicitly instructing to ask the user if only a project name is given. It does not explicitly name alternatives, but the tool's uniqueness among siblings makes this less critical. The guidance on when to ask for the path is a strong usage guideline.

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

reload_handsA

Re-scan every registered project's kontexta.json and rebuild the live Hands tool registry β€” newly-declared tools become callable immediately, removed tools disappear from tools/list. SIDE EFFECT is on the running MCP session's tool inventory only (no disk writes). Idempotent. No external auth or rate limits. Takes no parameters. Returns per-project load results (counts of registered/disabled tools and any validation warnings). Use after editing a kontexta.json mid-session; for the schema see describe_hands_schema.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: side effects limited to the running MCP session's tool inventory, no disk writes, idempotent, no external auth/rate limits, and return value summarized. Very thorough.

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

Conciseness5/5

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

The description is compact yet dense, with each sentence serving a purpose: main action, side effect, idempotence, auth/rate-limit note, return summary, and usage guidance. No filler or repetition.

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?

The tool is simple (zero params) but the description still covers all necessary context: what triggers it, what changes, side effects, return contents, and a pointer for schema details. It is complete 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.

Parameters4/5

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

The tool takes zero parameters and the schema confirms this. The description explicitly states 'Takes no parameters', which is a helpful reinforcement, but there is no additional parameter meaning to add beyond that.

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

Purpose5/5

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

States a specific verb ('Re-scan'/'rebuild') and resource ('live Hands tool registry'), explaining what changes: new tools become callable and removed tools disappear from tools/list. This clearly distinguishes it from sibling tools like list_hands or describe_hands_schema.

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 when to use it: 'Use after editing a kontexta.json mid-session'. It also directs users to a sibling tool for a related but distinct need ('for the schema see describe_hands_schema').

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

remove_tagsA

Detach one or more tag IDs from ONE file. Destructive on the link only β€” does NOT delete the file or the global tag definition (orphan tags survive in list_tags). Idempotent: removing an already-absent tag is a no-op. No external auth or rate limits. Returns {success: true}. Note: takes tag IDs (integers), not names β€” fetch them via list_tags. To remove ALL tags from many files via a query, see tag_search_results (additive only) β€” there is no bulk-untag-by-query tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID
tag_idsYesArray of tag IDs to remove

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: destructive only on the link, file and global tags preserved, idempotent no-op for absent tags, no auth/rate limits, and exact return value. It also clarifies the parameter type (integers) and that names are not accepted.

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 front-loaded with the core purpose, and every subsequent sentence adds distinct valueβ€”side effects, idempotence, return value, ID type, and alternativesβ€”without redundancy or filler.

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 two-parameter tool with no annotations and no output schema, the description is remarkably complete: it covers purpose, effects, return value, parameter semantics, and alternatives. No critical gaps remain for an agent to correctly select and invoke the 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?

Although schema coverage is 100%, the description adds meaning by specifying that tag_ids are integers and must be fetched via list_tags, and that multiple IDs can be passed. It also clarifies the semantics of removing an already-absent tag as a no-op.

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 opens with a specific verb+resource+scope: 'Detach one or more tag IDs from ONE file.' It distinguishes from siblings by explicitly naming tag_search_results as additive-only and noting there is no bulk-untag tool, and from add_tags by being the inverse operation.

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 when-to-use context: for detaching specific tags from a single file. It notes the alternative (tag_search_results) for bulk tag addition and clearly states there is no bulk-untag-by-query tool, preventing misuse. It also instructs to fetch IDs via list_tags.

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

restore_fileA

DESTRUCTIVE. Overwrite a file's current on-disk content with the version recorded at a specific git commit, then re-index FTS. The hash MUST come from get_history for THIS file (foreign hashes throw). The current uncommitted content is lost unless it was already committed elsewhere. The file watcher may also pick up the change before this returns. No external auth or rate limits. Returns {file_id, path, hash, success, message}. Use only to undo accidental edits or recover a known-good version.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesCommit hash to restore from (from get_history)
file_idYesID of the file

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses destructive behavior ('current uncommitted content is lost'), side effects ('file watcher may also pick up the change before this returns'), error cases ('foreign hashes throw'), and absence of external auth/rate limits. This far exceeds typical disclosure.

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

Conciseness5/5

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

The description is compact (~4 sentences) and front-loaded with 'DESTRUCTIVE.' Every sentence conveys a distinct fact: action, hash requirement, data loss risk, watcher side effect, auth/limits, return format, and use case. No fluff.

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?

Despite no output schema, the description states the return structure. It covers prerequisites, side effects, error conditions, and appropriate use cases. For a destructive restore operation with no annotations, this is thoroughly complete.

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

Parameters4/5

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

Schema coverage is 100% for both parameters, but the description adds crucial semantics beyond schema: the hash must come from get_history for this specific file, and foreign hashes cause an error. This is a meaningful addition to the schema's simple descriptions.

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

Purpose5/5

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

The description states a specific action: 'Overwrite a file's current on-disk content with the version recorded at a specific git commit, then re-index FTS.' This clearly distinguishes it from siblings like update_file (editing) and delete_file (removal), and explicitly limits its use to 'undo accidental edits or recover a known-good version.'

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 explicitly states when to use: 'Use only to undo accidental edits or recover a known-good version.' It also provides a critical prerequisite: 'The hash MUST come from get_history for THIS file (foreign hashes throw),' which guides correct invocation and avoids misuse.

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

set_favoriteA

Set or clear the favorite flag on one file (idempotent β€” re-setting the same value is a no-op; not a toggle, you pass the desired state). Persists to local SQLite. No external auth or rate limits. Returns {success: true}. Use to curate quick-access pins; list_files/search/bundle_search accept favorite: true to filter to the pinned set.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID
favoriteYesFavorite status

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses idempotency, SQLite persistence, no external auth/rate limits, and the return shape. It doesn't mention error behavior for nonexistent file_id, but for a simple setter this is reasonably rich.

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 cover purpose, idempotency, persistence, auth/rate limits, return value, and integration with other tools. No filler or 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?

For a simple two-parameter setter, the description covers behavior, return value, where it persists, and how it integrates with search/list filters. No output schema exists, but the return is explicitly stated. The tool is fully self-contained.

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% with basic descriptions like 'Favorite status'. The description adds critical meaning: 'not a toggle, you pass the desired state' and clarifies idempotency, which goes 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 'Set or clear the favorite flag on one file', a specific verb-resource pair. It also distinguishes this tool from siblings like add_tags/remove_tags by focusing on the favorite flag.

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

Usage Guidelines4/5

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

It provides clear context: 'Use to curate quick-access pins' and mentions that list_files/search/bundle_search accept favorite:true for filtering. However, it doesn't explicitly state when not to use this tool or name direct alternatives, so it stops short of full guidance.

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

statsA

Aggregate counts for a scope: file_count, untagged_count, favorite_count, top_tags. With project_id omitted (everything), also returns by_project breakdown. include_token_total: true stat()s every matching file on disk to compute a body-size estimate β€” measurably slower on large vaults; default false. project_id: null = KB only; omit = all. Read-only; no side effects, auth, or rate limits. Use as a cheap dashboard or to spot untagged content for cleanup; for live disk-vs-index drift use diff_against_disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_tagsNoHow many top tags to return (default 10)
project_idNoFilter to a single project. Pass null for KB-only. Omit for everything.
include_token_totalNoIf true, stat every matching file on disk to compute total est_tokens. Default false (cheap).

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It explicitly states 'Read-only; no side effects, auth, or rate limits' and adds performance behavior for include_token_total ('measurably slower on large vaults'). It also discloses the conditional by_project breakdown, providing rich behavioral context beyond any schema.

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 deliver high information density: purpose, parameters, side effects, performance caveat, and an alternative tool. Every clause earns its place, and the use of backticks for parameters improves scannability.

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 three optional parameters, no output schema, and no annotations, this description is remarkably complete. It covers purpose, usage, behavior, parameter nuances, side effects, auth, rate limits, performance, and alternatives, leaving little ambiguity for an agent.

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 schema already documents all three parameters (100% coverage), so the baseline is 3. The description adds value beyond the schema by explaining the performance impact of include_token_total and clarifying that omitting project_id yields an additional by_project breakdown. However, top_tags receives no extra semantic context beyond 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 starts with a specific verb and resource ('Aggregate counts for a scope') and lists concrete aggregates (file_count, untagged_count, favorite_count, top_tags). It also differentiates from sibling tools like diff_against_disk by referencing 'cheap dashboard' vs 'live disk-vs-index drift'.

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 the tool ('Use as a cheap dashboard or to spot untagged content for cleanup') and when not to, naming an alternative: 'for live disk-vs-index drift use diff_against_disk'. It also explains the distinction between omitting project_id vs passing null.

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

suggest_tagsA

Propose tags for a file by mining the existing tag corpus via FTS β€” picks distinctive terms from the file (β‰₯4 chars, stopword-filtered) and returns tags applied to other files that score high on those terms. No LLM, no network. Already-applied tags are excluded so the suggestions are net-new. Read-only; no side effects, auth, or rate limits. Returns {file_id, path, existing_tags, suggestions: [{tag, score, sources}]}. Empty suggestions = no distinctive terms or no overlap with the existing taxonomy yet β€” bootstrap with add_tags first. Default limit 10, max 50. Suggestions are NOT auto-applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax suggestions to return (default 10)
file_idYesFile ID to suggest tags for

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: read-only, no side effects, no auth or rate limits, returns net-new suggestions, and explains the algorithm (FTS mining, stopword-filtered).

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?

Every sentence adds value, the main action is front-loaded, and the description is concise yet comprehensive 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 simple parameters and no output schema, the description completely covers return format, edge cases (empty suggestions), and usage notes, making it self-sufficient.

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 covers both parameters with descriptions; description adds default limit of 10, maximum of 50, and clarifies that limit controls suggestion count, providing meaningful context 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 the tool suggests tags for a file using FTS, distinguishes from sibling add_tags by noting suggestions are not auto-applied, and specifies it is read-only with no LLM or network usage.

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 (tag suggestions for a file), when not (empty suggestions indicate need to bootstrap with add_tags), and mentions read-only nature and no side effects, aiding selection over siblings.

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

tag_search_resultsA

Bulk-tag β€” run an FTS search and append add_tags to every matching file in one call. Side effect: each match gets addTags applied (additive, idempotent per tag); the matched files themselves are NOT modified beyond their tag links. Per-file failures isolated to errors[]. No external auth or rate limits. There is NO dry-run flag, so ALWAYS run search with the same query first to verify the match set before tagging. The tags[] filter requires existing tags to ALL match (it scopes the search; it does not control which tags get added). Returns {matched_count, tagged_count, tags_applied, tagged_ids, errors}.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter β€” only matches that already carry ALL of these tags
queryYesFull-text search query
add_tagsYesTags to add to every matching file
favoriteNo
project_idNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description discloses side effects ('additive, idempotent per tag'), safety details (files not modified beyond tag links), failure isolation ('errors[]'), absence of dry-run, and no external auth/rate limits. This provides comprehensive behavioral 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?

The description is longer than average but every sentence carries essential detail, from side effects to verification warnings to return shape. It is front-loaded with the core purpose and efficiently structured.

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 output schema and no annotations, the description covers the return object, side effects, failure isolation, and usage constraints. It is nearly complete, but the untouched optional parameters (favorite, project_id) and the exact error format are minor omissions.

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 description adds meaning for add_tags (applied to every match), tags[] (scoping filter, not control), and query (FTS), complementing the schema's descriptions. However, it omits any mention of favorite or project_id, which lack schema descriptions, leaving a gap in parameter understanding.

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 opens with 'Bulk-tag β€” run an FTS search and append add_tags to every matching file in one call', clearly identifying the action, resource, and scope. It differentiates from sibling tools like search and add_tags by framing it as a combined bulk operation.

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 'ALWAYS run search with the same query first to verify the match set before tagging', providing a clear when-to-use alternative. Also clarifies that the tags[] filter scopes the search rather than controlling added tags, preventing misuse.

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

update_fileA

Update the entire content of an existing file by its ID. This replaces the file's content on disk and triggers an FTS5 re-index. Returns the updated file metadata including new estimated token counts. Operates locally with no external auth or rate limits. If you only need to modify a single section without replacing the entire file, use 'update_file_section' instead to save context budget. Parameters: 'id' must be a valid integer file ID. 'content' is the complete markdown string that will replace the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID
contentYesNew content

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description fully discloses behavior: replaces content on disk, triggers FTS5 re-index, returns metadata with token counts, and operates locally without external auth or rate limits. This is comprehensive for a mutating tool.

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

Conciseness5/5

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

The description is concise and front-loaded with the core purpose in the first sentence. Every subsequent sentence adds meaningful context (replacement behavior, re-indexing, return value, alternatives, param specifics) with no filler.

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 two-parameter tool with no output schema, the description covers all necessary aspects: purpose, effects, return value, alternative tool, and parameter constraints. It is fully sufficient for an 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 coverage is 100% with basic field descriptions ('File ID', 'New content'), but the description adds essential semantics: 'id' must be a valid integer, and 'content' is the complete markdown string that will replace the file. This clarifies constraints 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 states a specific verb and resource: 'Update the entire content of an existing file by its ID.' It clearly distinguishes from the sibling 'update_file_section' by explicitly contrasting full-file replacement vs. section modification.

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 and when-not-to-use guidance: 'If you only need to modify a single section without replacing the entire file, use "update_file_section" instead to save context budget.' Also notes local operation with no auth or rate limits.

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

update_file_sectionA

Surgical write β€” replace the body of ONE heading without touching siblings. The heading line itself is preserved verbatim; only its body is rewritten. Persists via the same path as update_file (writes to disk β†’ FTS reindex β†’ git commit). Throws if the heading does not exist (this tool will NOT create a new section β€” append the section text via update_file first). Heading match is case-insensitive exact-string. No external auth or rate limits. Returns the updated file metadata. Use to make targeted edits without re-sending the whole body; for full-file replacement use update_file.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew body content (heading line is preserved automatically)
file_idYesFile ID
headingYesHeading whose body to replace (case-insensitive)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden and delivers: persistence path (writes to disk β†’ FTS reindex β†’ git commit), error behavior (throws if heading doesn't exist), matching semantics (case-insensitive exact-string), and return value (updated file metadata). It also states 'No external auth or rate limits', which is a useful baseline disclosure.

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 front-loaded with a one-line summary and each subsequent sentence adds distinct value: preservation behavior, persistence, error condition, scoping, and alternatives. No redundant clauses; it's appropriately sized for the complexity.

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?

Despite no output schema, the description covers return value, side effects, error handling, edge cases (case-insensitivity), and sibling relationships. It is complete for a mutation tool with zero 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 clear descriptions for all three parameters. The description adds marginal context like 'exact-string' for heading and reinforces that content is the new body, but the schema already captures these meanings. Baseline 3 is appropriate since the schema does the heavy lifting.

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 opens with a specific verb+resource: 'Surgical write β€” replace the body of ONE heading without touching siblings.' It clearly distinguishes from `update_file` by scoping to one heading and explicitly mentions the alternative for full-file replacement.

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 when-to-use guidance: 'Use to make targeted edits without re-sending the whole body; for full-file replacement use `update_file`.' It also warns against using it to create new sections, directing to `update_file` instead, which serves as a clear exclusion.

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

whats_newA

List files created or modified since a checkpoint. since accepts ISO-8601 (2025-01-15T00:00:00Z) or relative durations (1h, 7d, 2w); invalid formats throw. Read-only; no side effects, auth, or rate limits. Returns annotated rows plus aggregate total_est_tokens so you can decide what to read next. CAVEAT: hard-deleted files are NOT surfaced β€” only mtime-driven changes. Defaults: include_tags=true, limit=200. project_id: null = KB only; omit = everything. Use at session start to catch up.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax files returned. Default 200.
sinceYesISO 8601 timestamp or relative duration (e.g. "1h", "7d", "2w").
project_idNoFilter to a single project. Pass null for knowledge-base-only files. Omit for all.
include_tagsNoAttach tags[] to each file. Default true.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers richly: it states 'Read-only; no side effects, auth, or rate limits,' warns that invalid `since` formats throw, explains the mtime-driven caveat for hard-deleted files, and discloses the return value including `total_est_tokens`. This is exemplary 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?

The description is dense but every sentence earns its place: the core action is front-loaded, followed by format specs, safety profile, return insight, caveat, defaults, and a usage hint. There is no repetition or filler.

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 read-only list tool with no output schema, the description covers the full context: when to use it, how to format parameters, what it returns, its safety, and its limitations. An agent can confidently select and invoke this tool based solely on this description.

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% for all four parameters, but the description adds significant meaning beyond the schema: it explains `since` accepts both ISO-8601 and relative durations, clarifies the distinction between `project_id: null` and omitting it, and states defaults for `include_tags` and `limit`. This goes above the baseline of 3.

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 opens with a specific verb+resource+scope: 'List files created or modified since a checkpoint.' This clearly distinguishes it from sibling tools like list_files (which probably lists all files) and search (which might be content-based). No ambiguity.

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

Usage Guidelines4/5

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

It provides a clear when-to-use: 'Use at session start to catch up,' and a when-not via the caveat 'hard-deleted files are NOT surfaced.' However, it does not explicitly name an alternative tool for when a different behavior is needed, like search or list_files, so it falls just short of a 5.

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

Tool Schema Changelog

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

  1. 48 tool updatesv4.2.0
    • Addedadd_tags
    • Addedbundle_search
    • Addedclip_url
    • Addedcommit_backup
    • Addedcreate_file
    • Addedcreate_folder
    • Addeddelete_file
    • Addeddelete_files
    • Addeddelete_folder
    • Addeddescribe_file
    • Addeddescribe_hands_schema
    • Addeddiff_against_disk
    • Addeddistill_journal
    • Addeddistill_journal_commit_upgrades
    • Addedfind_related
    • Addedget_diff
    • Addedget_history
    • Addedgrep_in_file
    • Addedhousekeep_journal
    • Addedjournal_intent
    • Addedjournal_note
    • Addedlist_files
    • Addedlist_folders
    • Addedlist_hands
    • Addedlist_projects
    • Addedlist_tags
    • Addedmove_file
    • Addedonboard_agent
    • Addedproject_map
    • Addedread_file
    • Addedread_file_by_path
    • Addedread_file_lines
    • Addedread_file_outline
    • Addedread_files
    • Addedread_section
    • Addedrefresh_index
    • Addedregex_search
    • Addedregister_project
    • Addedreload_hands
    • Addedremove_tags
    • Addedrestore_file
    • Addedsearch
    • Addedset_favorite
    • Addedstats
    • Addedtag_search_results
    • Addedupdate_file
    • Addedupdate_file_section
    • Addedwhats_new
  2. 48 tool updatesv3.3.0
    • Removedadd_tags
    • Removedbundle_search
    • Removedclip_url
    • Removedcommit_backup
    • Removedcreate_file
    • Removedcreate_folder
    • Removeddelete_file
    • Removeddelete_files
    • Removeddelete_folder
    • Removeddescribe_file
    • Removeddescribe_hands_schema
    • Removeddiff_against_disk
    • Removeddistill_journal
    • Removeddistill_journal_commit_upgrades
    • Removedfind_related
    • Removedget_diff
    • Removedget_history
    • Removedgrep_in_file
    • Removedhousekeep_journal
    • Removedjournal_intent
    • Removedjournal_note
    • Removedlist_files
    • Removedlist_folders
    • Removedlist_hands
    • Removedlist_projects
    • Removedlist_tags
    • Removedmove_file
    • Removedonboard_agent
    • Removedproject_map
    • Removedread_file
    • Removedread_file_by_path
    • Removedread_file_lines
    • Removedread_file_outline
    • Removedread_files
    • Removedread_section
    • Removedrefresh_index
    • Removedregex_search
    • Removedregister_project
    • Removedreload_hands
    • Removedremove_tags
    • Removedrestore_file
    • Removedsearch
    • Removedset_favorite
    • Removedstats
    • Removedtag_search_results
    • Removedupdate_file
    • Removedupdate_file_section
    • Removedwhats_new
  3. 53 tool updatesv0.1.0
    • First observedadd_tags
    • First observedbundle_search
    • First observedclip_url
    • First observedcommit_backup
    • First observedconfirm_hand
    • First observedcreate_file
    • First observedcreate_files
    • First observedcreate_folder
    • First observeddelete_file
    • First observeddelete_files
    • First observeddelete_folder
    • First observeddescribe_file
    • First observeddescribe_hands_schema
    • First observeddiff_against_disk
    • First observeddistill_journal
    • First observeddistill_journal_commit_upgrades
    • First observedfind_related
    • First observedget_diff
    • First observedget_history
    • First observedgrep_in_file
    • First observedhousekeep_journal
    • First observedjournal_append
    • First observedjournal_intent
    • First observedjournal_note
    • First observedjournal_status
    • First observedlist_files
    • First observedlist_folders
    • First observedlist_hands
    • First observedlist_projects
    • First observedlist_tags
    • First observedmove_file
    • First observedonboard_agent
    • First observedproject_map
    • First observedread_file
    • First observedread_file_by_path
    • First observedread_file_lines
    • First observedread_file_outline
    • First observedread_files
    • First observedread_section
    • First observedrefresh_index
    • First observedregex_search
    • First observedregister_project
    • First observedreload_hands
    • First observedremove_tags
    • First observedrestore_file
    • First observedsearch
    • First observedset_favorite
    • First observedstats
    • First observedsuggest_tags
    • First observedtag_search_results
    • First observedupdate_file
    • First observedupdate_file_section
    • First observedwhats_new

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (read vs update vs delete, file vs tag vs project vs journal), and the detailed descriptions help differentiate the many read/search variants. However, a few pairs like journal_append vs journal_note and list_files vs project_map have overlapping boundaries that could cause misselection.

Naming Consistency4/5

The dominant pattern is verb_noun in snake_case (create_file, read_files, delete_folder, list_projects), with batch variants marked by plurals. Notable outliers such as whats_new, project_map, stats, and distill_journal_commit_upgrades deviate from the pattern but remain readable and do not descend into chaos.

Tool Count1/5

With 53 tools, the server exceeds the 50-tool threshold for an extreme mismatch. The broad scope of knowledge management, project handling, journaling, and custom commands partially justifies the size, but many micro-tools like the six different read_file variants could be consolidated, making the surface unnecessarily heavy.

Completeness4/5

The surface covers the full file lifecycle (create, read in multiple granularities, update, delete, move), search, tagging, folders, git history/restore, project registration, journaling, and Hands management. Minor gaps like the absence of an unregister_project or a bulk untag-by-query tool do not significantly impair core workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides AI assistants with real-time visibility into your codebase's internal libraries, team patterns, naming conventions, and usage frequencies to generate code that matches your team's actual practices.
    11
    123
    62
    Elastic 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first knowledge base MCP server. Lets AI agents (Claude Code, Cursor, etc.) read and write your personal knowledge base through 20 MCP tools. Zero cloud dependency β€” all files stay on your machine.
    1,758
    664
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Local-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.
    37
    18
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP server that gives AI assistants long-term memory by storing, searching, and recalling notes as Markdown files on your machine.
    14
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/safiyu/kontexta'

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