scplus-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@scplus-mcpshow me the outline of the project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
scplus-mcp
Prepared-index code intelligence for agents and operators.
scplus-mcp is the repository and npm package for scplus, a local code-intelligence engine that serves structural, exact-query, related-search, and research workflows from a validated repo-local index. It ships three connected surfaces: the scplus-mcp MCP server for coding agents, a persistent local bridge for automation, and the scplus-cli Bubble Tea operator console for humans.
The project is built around one operating contract: build a prepared local index, read from one validated active generation at a time, and fail loudly when freshness or validation is broken instead of quietly answering from stale state.
Table of Contents
Related MCP server: codemap
Key Features
Prepared exact-query tools for deterministic lookups such as
symbol,word,outline,deps,status, andchangesRanked related search and broad research over persisted file, chunk, identifier, structure, cluster, and hub artifacts
One shared backend core for MCP and the human CLI, with the CLI connected over the persistent
bridge-serveJSON-line transportRepo-local SQLite machine state rooted at
.scplus/, with active/pending generation promotion and explicitfresh,dirty, andblockedfreshness statesLoud failure semantics for invalid prepared state instead of silent fallback behavior
Suggested hubs and semantic clusters generated from the prepared full index
Shadow restore points for reversible AI-authored edits without mutating git history
A separate Next.js landing/docs app under
landing/, wired to the local package during developmentCommitted real benchmark artifacts under
docs/benchmarks/
Naming And Product Surfaces
This repository uses a few names that matter in different contexts:
Surface | Current name |
Public npm package |
|
Public MCP command |
|
Public human CLI command |
|
Product/brand name |
|
Repo-local state directory used by current source |
|
Runtime env prefix used by current source |
|
Important context:
The current source code uses
.scplus/as the repo-local state root viasrc/core/project-layout.ts.The runtime environment prefix used by current code is
SCPLUS_.
If code and docs disagree, treat the code as authoritative.
Tech Stack
Primary language: TypeScript (ESM)
MCP transport:
@modelcontextprotocol/sdkover stdioPrepared state store: SQLite at
.scplus/state/index.sqliteParsing:
web-tree-sitterandtree-sitter-wasmsRetrieval: lexical plus embedding-backed retrieval persisted into SQLite vector collections
Embedding backends: Ollama by default, OpenAI-compatible embeddings optionally
Human CLI: Go + Bubble Tea
Go toolchain management: Pixi (
go = 1.24.*)Landing/docs app: Next.js 16, React 19, Tailwind CSS 4, OpenNext/Cloudflare tooling
Primary package manager: npm
Prerequisites
Install these before working on the repository:
Node.js
npm
Pixi
Git
Usually also needed for semantic indexing:
Ollama, unless you explicitly choose an OpenAI-compatible embedding backend
Optional:
Bun, if you prefer
bunxwhen generating MCP config instead ofnpx
Notes:
The repository does not currently ship a checked-in
.env.example.The canonical onboarding path for the core package is the install script, not manual npm and pixi commands typed from memory.
Getting Started
Canonical install path
For the main developer/operator workflow, start with the installer:
git clone https://github.com/Cesar514/scplus-mcp.git
cd scplus-mcp
./install-scplus.shTreat ./install-scplus.sh as the primary local setup path for the package and CLI. Manual build steps are documented below so you understand what the installer is doing, but the intended bootstrap flow is through the script.
What ./install-scplus.sh does
The installer:
verifies
nodeverifies
npmverifies
pixiruns
npm installruns
npm run buildruns
npm run build:cliruns
npm linkverifies that
scplus-mcppoints atbuild/index.jsverifies that
scplus-clipoints atbuild/cli-launcher.jsruns a lightweight
scplus-mcp tree "$ROOT_DIR"checkruns a lightweight
scplus-cli doctor --root "$ROOT_DIR"check
If any prerequisite is missing, the script exits fatally instead of guessing.
What you should have after install
After a successful run:
scplus-mcpshould be on yourPATHscplus-clishould be on yourPATHthe TypeScript build output should exist under
build/the Bubble Tea launcher should exist under
build/scplus-cli
Quick verification:
scplus-mcp doctor .
scplus-cli doctor --root .Rebuilding after edits
After editing the TypeScript or Go sources, rebuild both shipped entrypoints with:
npm run build:allThis updates the already linked scplus-mcp and scplus-cli commands in place because npm link points them at this checkout’s build output.
Bootstrapping prepared state for the repository
Once the commands are installed, create prepared repo-local state:
scplus-mcp index .Then validate it:
scplus-mcp validate-index .The strongest success signal is a valid prepared index with:
one active generation
no pending generation unless a rebuild is in progress
serving freshness reported as
fresh
Verifying the user-facing surfaces
Run these from the repository root:
scplus-mcp tree .
scplus-mcp status .
scplus-cli snapshot --root .
scplus-cli doctor --root .What these confirm:
the MCP entrypoint is runnable
the exact-query/git-aware surfaces are reachable
the shared backend can serve the Go operator console
the linked human CLI works against the same backend state
Working on the landing app
The landing/docs application under landing/ is a separate app with its own dependencies. Only do this if you are editing the site itself:
cd landing
npm install
npm run devThe landing app serves on http://localhost:6767.
MCP Client Setup
Supported client targets
The init command can generate MCP config for:
claudecursorvscodewindsurfopencodecodex
Generated config paths:
Target | Output path |
|
|
|
|
|
|
|
|
|
|
|
|
Generate config files automatically
Examples:
scplus-mcp init claude
scplus-mcp init cursor
scplus-mcp init vscode
scplus-mcp init windsurf
scplus-mcp init opencode
scplus-mcp init codexRunner selection:
by default, the command prefers
bunxwhen it detects Bun and otherwise falls back tonpxyou can force a runner with
--runner=npxor--runner=bunx
Examples:
scplus-mcp init codex --runner=npx
scplus-mcp init claude --runner=bunxManual Codex TOML configuration
If you want to configure Codex manually after using the local install script, add this to ~/.codex/config.toml:
[mcp_servers."scplus-mcp"]
command = "scplus-mcp"
args = []
[mcp_servers."scplus-mcp".env]
OLLAMA_EMBED_MODEL = "qwen3-embedding:0.6b-32k"
OLLAMA_CHAT_MODEL = "nemotron-3-nano:4b-128k"
OLLAMA_API_KEY = "YOUR_OLLAMA_API_KEY"
SCPLUS_EMBED_BATCH_SIZE = "8"If you prefer running through npx or bunx instead of the locally linked command, the generated Codex config follows the same structure but sets:
command = "npx"withargs = ["-y", "scplus-mcp"], orcommand = "bunx"withargs = ["scplus-mcp"]
Example JSON-style MCP config
For clients that use JSON config files, the generated config follows this general shape:
{
"mcpServers": {
"scplus-mcp": {
"command": "bunx",
"args": ["scplus-mcp"],
"env": {
"OLLAMA_EMBED_MODEL": "qwen3-embedding:0.6b-32k",
"OLLAMA_CHAT_MODEL": "nemotron-3-nano:4b-128k",
"OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY",
"SCPLUS_EMBED_BATCH_SIZE": "8"
}
}
}
}The exact top-level key differs by client:
mcpServersfor Claude/Cursor/Windsurf-style configsserversfor VS Code’s.vscode/mcp.jsonmcpforopencode.jsonTOML tables for Codex
Models And Embedding Providers
Important note on the Ollama model names in this repo
The model tags shown in this repository, especially:
qwen3-embedding:0.6b-32knemotron-3-nano:4b-128k
should be read as local Ollama variants used in the maintainer environment, not as a claim that these are wholly bespoke model families invented by the project.
Per the current maintainer workflow:
the base models were downloaded from official Ollama sources
the local setup then modified the context window configuration
So in practice, the README examples are documenting the project’s current local runtime tags and expectations, not asserting that the repository itself distributes new model architectures.
Provider overview
The code supports two embedding-provider modes:
Provider mode | Env value | Typical use |
Ollama |
| local/private embeddings |
OpenAI-compatible |
| API-backed embeddings through OpenAI-compatible endpoints |
Ollama path
The default code path is Ollama. A typical local setup looks like:
ollama pull qwen3-embedding:0.6b
ollama pull nemotron-3-nano:4b
ollama serveThen, if your local environment uses extended-context variants or custom local tags, configure the env values that scplus-mcp should actually use:
export OLLAMA_EMBED_MODEL=qwen3-embedding:0.6b-32k
export OLLAMA_CHAT_MODEL=nemotron-3-nano:4b-128kOpenAI-compatible path
For API-backed embeddings:
export SCPLUS_EMBED_PROVIDER=openai
export SCPLUS_OPENAI_API_KEY=YOUR_API_KEY
export SCPLUS_OPENAI_EMBED_MODEL=text-embedding-3-smallOptional custom base URL:
export SCPLUS_OPENAI_BASE_URL=https://your-proxy.example.com/v1Architecture
Directory Structure
.
├── src/ # TypeScript MCP server, backend core, indexing, retrieval, and tool implementations
│ ├── cli/ # Shared backend core, bridge commands, doctor/report formatting
│ ├── core/ # Project layout, embeddings, parser runtime, locks, lifecycle helpers
│ ├── git/ # Shadow restore-point logic
│ └── tools/ # Public indexing, query, lint, research, hub, and recovery tools
├── cli/ # Go Bubble Tea operator console
│ ├── cmd/scplus-cli/ # Go CLI entrypoint
│ └── internal/ # Backend client, hubs flow, watcher integration, UI rendering
├── landing/ # Separate Next.js marketing/docs application
├── docs/ # Architecture notes, benchmark artifacts, snapshots, and images
├── test/ # TypeScript tests, demos, and fixtures
├── .scplus/ # Generated repo-local prepared state
├── package.json # Root package metadata and Node build/test scripts
├── pixi.toml # Project-local Go toolchain and CLI tasks
└── install-scplus.sh # Canonical local install scriptRuntime Surfaces
The repository exposes three distinct but connected runtime surfaces:
Surface | Purpose | Backing implementation |
| Agent-facing MCP server and CLI-style local commands |
|
| Structured local automation interface over the shared backend core |
|
| Human operator console and a few direct Go subcommands |
|
Important constraint:
the Go CLI is not a second indexing engine
it is a client of the same backend core used by the MCP server
Request Lifecycle
For agent/MCP requests:
Agent or MCP client
-> scplus-mcp (src/index.ts)
-> shared backend core / tool implementation
-> prepared index in .scplus/state/index.sqlite
-> formatted MCP responseFor human operator requests:
scplus-cli
-> Go backend client
-> persistent bridge-serve session
-> shared backend core
-> prepared index in .scplus/state/index.sqlite
-> operator UI panes / plain-text outputServing And Generation Contract
The prepared-state contract documented by current code and architecture docs is:
one active generation is the serving source of truth
rebuilds and repairs can write a pending generation first
pending generations are promoted only after validation succeeds
serving freshness is explicit and can be
fresh,dirty, orblockedinvalid or blocked prepared state is supposed to fail loudly rather than degrade silently
The short authoritative architecture summary lives in architecture.md.
Query Model
The codebase implements a two-lane query model:
Exact lane:
symbol,word,outline,deps,status,changesRanked lane:
searchwithintent="related"Broad report lane:
research
The product contract is that exact lookups remain the cheapest deterministic path and broader retrieval only runs when exact lookup is insufficient.
Project State Layout
Current code uses this repo-local state root:
.scplus/
├── state/
│ └── index.sqlite
├── hubs/
│ └── suggested/
└── locks/Observed in the current checkout after indexing:
.scplus/state/index.sqlite.scplus/hubs/suggested/.scplus/locks/
Current source code uses .scplus/.
Core Component Map
src/core/
project-layout.tsdefines the.scplus/layoutembeddings.tsmanages provider-backed embeddings, SQLite vector namespaces, runtime options, and generation-aware cache invalidationtree-sitter.tsandparser.tsprovide structural parsingruntime-locks.tscoordinates cross-process ownershipprocess-lifecycle.tsmanages idle shutdown, parent monitoring, and cleanup
src/tools/
index-codebase.ts,index-stages.ts, andindex-reliability.tsdrive indexing, validation, and repairexact-query.tsimplements the fast exact-query substratequery-intent.ts,unified-ranking.ts,semantic-search.ts, andsemantic-identifiers.tsimplement ranked searchresearch.tsbuilds larger bounded subsystem reportsfeature-hub.ts,hub-suggestions.ts, andcluster-artifacts.tsimplement hub and cluster viewsstatic-analysis.tsandblast-radius.tsprovide diagnostics and usage tracingpropose-commit.tsandwrite-freshness.tsimplement guarded writes and synchronous freshness repair
cli/
cli/cmd/scplus-cli/main.gois the Go entrypointcli/internal/backend/is the bridge client layercli/internal/ui/renders the operator consolecli/internal/hubs/powers manual hub creation
Operator Console Behavior
The shipped human CLI is more than a thin wrapper. The previous README’s high-value description is still accurate enough to preserve at a high level:
it has a navigation pane, overview/content pane, detail pane, and jobs/logs area
it exposes operator health, serving state, queue state, history, and observability
it supports a command palette, filtering, export, and navigation history
it streams backend events over the persistent
bridge-servetransport
The committed plain snapshot is in cli-snapshot.txt.
Watcher And Scheduler Semantics
The backend, not the Go frontend, owns watcher behavior:
native recursive filesystem watchers are not used by default
a bounded backend scanner covers repositories in budgeted directory and file ticks
bursty path changes are deduped
the scheduler can queue or supersede stale pending work
ordinary edits can become refresh jobs
dependency/config changes can escalate to full index jobs
job, watch, and log events are streamed over
bridge-servediagnostics report scanner status, native watch count, scanner queue sizes, and last full coverage time
Environment Variables
The repository does not have a checked-in .env.example, so the source is the authority. The table below reflects variables verified in src/core/embeddings.ts, src/index.ts, and the generated config helpers.
Provider selection and model configuration
Variable | Required | Purpose | Default / source |
| No | Select embedding provider mode |
|
| No | Ollama embedding model tag |
|
| No | Chat model used in generated config examples |
|
| No | Override Ollama host | unset |
| Conditional | Required only if your Ollama setup needs auth | unset |
| Conditional | Preferred OpenAI-compatible API key when provider is | unset |
| Conditional | Fallback alias for API key | unset |
| No | Preferred OpenAI-compatible base URL |
|
| No | Fallback alias for base URL |
|
| No | Preferred OpenAI-compatible embedding model |
|
| No | Fallback alias for embedding model |
|
Indexing, chunking, and refresh behavior
Variable | Required | Purpose | Default / source |
| No | Embedding batch size, clamped in code |
|
| No | Chunk chars before vector merge, clamped in code |
|
| No | Max file size for embed-aware search paths | tool fallback in |
| No | Max directories scanned per bounded watcher tick |
|
| No | Max files fingerprinted per bounded watcher tick |
|
| No | Max scanner milliseconds per tick |
|
| No | Max concurrent file stat calls per scanner tick |
|
| No | Scanner tick interval cap used while watching |
|
| No | Max detailed pending paths before escalating to full rebuild |
|
| No | Max changed paths included in one streamed event payload |
|
| No | Idle shutdown timeout for MCP process | unset |
| No | Parent-process polling interval | unset |
Advanced Ollama runtime options
Variable | Required | Purpose |
| No | Pass |
| No | Pass |
| No | Pass |
| No | Pass |
| No | Pass |
| No | Pass |
Available Scripts
Root package scripts
Command | Description |
| Compile the TypeScript MCP server into |
| Use Pixi to build the Go Bubble Tea CLI |
| Build both the TypeScript server and the Go CLI |
| Run TypeScript in watch mode |
| Start the built Node entrypoint |
| Run the main TypeScript test suite |
| Run the Go CLI test suite through Pixi |
| Run the demo/test harness |
| Run all Node and Go test suites |
Landing app scripts
Run these from landing/:
Command | Description |
| Start the Next.js landing app on port |
| Build the landing app |
| Run the built landing app on port |
| Lint the landing app |
| Build the OpenNext/Cloudflare target |
| Build and run a Cloudflare preview |
| Build and deploy the Cloudflare target |
scplus-mcp local command surface
When you run scplus-mcp as a shell command after ./install-scplus.sh, it supports both CLI-style local commands and the MCP stdio server mode.
Command | Purpose | Important flags / forms |
| Generate client config for |
|
| Build or refresh prepared repo-local state |
|
| Render the structural tree |
|
| Render a file skeleton |
|
| Validate prepared state |
|
| Alias for | same flags as above |
| Repair prepared state |
|
| Alias for |
|
| Render a git-aware status summary |
|
| Render a git-aware changes summary |
|
| Render persisted semantic cluster output |
|
| Render hub output |
|
| Alias-style hub discovery entrypoint | same flags as |
| Render restore-point history |
|
| Alias for |
|
| Print a combined health/observability report |
|
| Run one-shot structured backend commands | see bridge table below |
| Start the persistent JSON-line bridge service | no flags |
| Start the MCP stdio server rooted at the given path or current directory | path only |
The shell-entry aliases currently implemented in src/cli/commands.ts are:
validate-indexandvalidate_indexrepair-indexandrepair_indexrestore-pointsandrestore_pointshubsandfind-hub
MCP Resource And Tool Catalog
Public MCP resource
The MCP server exposes one resource:
Resource | URI | Purpose |
|
| Fetch the current repo instruction markdown from the published instructions source URL |
Full public MCP tool list
Current public MCP tools registered in src/index.ts:
Index and navigation tools
Tool | Purpose | Key parameters |
| Create or refresh | `mode?: "core" |
| Validate the prepared index for consistency and version compatibility | `mode?: "core" |
| Repair a prepared index stage or full mode, then validate | `target: "core" |
| Render the structural repository tree |
|
| Show detailed signatures and type surfaces for one file |
|
| Render persisted semantic cluster and subsystem views |
|
| List, rank, inspect, or orphan-check manual/suggested hubs |
|
Exact-query tools
Tool | Purpose | Key parameters |
| Exact symbol lookup from the prepared fast-query substrate |
|
| Tiny indexed word/phrase lookup |
|
| Compact imports/exports/symbol outline for a known file |
|
| Direct and reverse dependency info for one indexed file |
|
| Tiny git worktree summary |
|
| Git change summary, optionally scoped to one file |
|
Search and research tools
Tool | Purpose | Key parameters |
| Intent-routed exact or related search over prepared artifacts |
|
| Broad bounded report combining retrieval, structure, clusters, and hubs |
|
| Run the built-in real benchmark harness | no parameters |
Analysis, write, and recovery tools
Tool | Purpose | Key parameters |
| Trace symbol usage before modification or deletion |
|
| Run native linter/compiler-backed analysis |
|
| Guarded write path with restore-point creation |
|
| List shadow restore points | no parameters |
| Restore files from a specific restore point |
|
Bridge And Automation Surface
The repository has two non-MCP local automation surfaces:
bridge <subcommand>for one-shot JSON outputbridge-servefor a persistent JSON-line session used byscplus-cliand local tooling
bridge subcommands
The one-shot bridge wrapper exposes these subcommands:
Subcommand | Purpose | Key flags / args |
| Return doctor output as JSON |
|
| Return tree output as JSON |
|
| Return worktree status as JSON |
|
| Return change summaries as JSON |
|
| Return restore points as JSON |
|
| Return validation report as JSON |
|
| Return cluster output as JSON |
|
| Return hub output as JSON |
|
| Return exact symbol results plus freshness header |
|
| Return word results plus freshness header |
|
| Return outline payload plus freshness header |
|
| Return dependency payload plus freshness header |
|
| Return search report plus freshness header |
|
| Return research report plus freshness header |
|
| Return lint/static-analysis report |
|
| Return blast-radius report |
|
| Return checkpoint report |
|
| Return restore payload |
|
| Return repair payload |
|
Persistent bridge-serve protocol
bridge-serve runs a long-lived JSON-line session with these frame shapes:
{"type":"request","id":1,"command":"doctor","args":{"root":"."}}
{"type":"response","id":1,"ok":true,"result":{...}}
{"type":"event","kind":"log","message":"..."}The persistent shared command executor supports everything listed above plus these backend-control commands:
Persistent command | Purpose |
| Trigger index or refresh work through the shared backend |
| Control queued work with |
| Enable or disable watching, optionally with debounce override |
| Ask the persistent bridge service to shut down |
Alias notes for the bridge layer:
find-hubandhubsnormalize onto the same implementationunderscore forms are normalized to hyphen forms where applicable
validate-indexandrepair-indexare the canonical bridge names
Persistent-only command arguments
Command | Key arguments |
|
|
|
|
|
|
| none |
Human CLI Surface
The Go operator console is exposed as scplus-cli.
Supported direct scplus-cli subcommands
Command | Purpose | Important args |
| Launch the interactive operator console | optional |
| Print a plain-text health report |
|
| Render a one-shot UI snapshot and exit |
|
`scplus-cli index --root . [auto | core | full]` |
| Print the prepared tree view |
|
| Print hub output |
|
| Print cluster output |
|
| Print restore-point history |
|
| Create a manual hub file |
|
scplus-cli only has the direct shell subcommands listed above. The much larger operator-facing command set lives inside the interactive UI and is routed over the persistent bridge-serve backend session.
Human CLI capabilities
Based on the current UI implementation and the previous README’s still-useful context:
animated/operator-branded top shell
typed navigation across overview, tree, hubs, restore points, clusters, dependencies, search, research, lint, blast-radius, checkpoint, status, and changes
detail views for selected items and export-ready content
jobs and log panes fed by backend events
command palette, filtering, history, and export actions
shared backend session over
bridge-servebackend-owned watcher/scheduler state surfaced in the operator experience
Interactive operator commands exposed inside scplus-cli
The Bubble Tea UI exposes a broader action catalog than the direct shell subcommands. These commands are available from the command palette and, where applicable, from the sidebar action list.
Operator command | What it does | Backing surface |
| Quit the operator console | local UI action |
| Return to the main operator surface | local UI action |
| Move backward through navigation history | local UI action |
| Move forward through navigation history | local UI action |
| Open the health and observability overview | local UI view |
| Open the prepared tree section |
|
| Open manual and suggested hubs |
|
| Open the current issue/detail view | local UI view |
| Open the backend log history pane | streamed |
| Open restore points and recovery state |
|
| Open persisted semantic clusters |
|
| Open the git worktree status table |
|
| Open changed-file stats and ranges |
|
| Open ranked search output |
|
| Open exact symbol output |
|
| Trigger indexing through the shared backend |
|
| Re-run the last sync strategy |
|
| Refresh visible backend-backed sections | repeated bridge refresh calls |
| Drop queued watch work before it starts |
|
| Replace stale queued work with the newest plan |
|
| Enable or disable watcher-driven refreshes |
|
| Start the manual hub-creation flow | local UI wizard plus hub creation |
| Export the active pane or detail content to | local UI action |
| Open keybinding and behavior help | local UI overlay |
| Rank hubs by natural-language query |
|
| Run exact mixed search |
|
| Run related ranked search |
|
| Build the broad explanation-backed report |
|
| Find an exact file/path hit and open it in Search |
|
| Find an exact symbol hit and open it in Search |
|
| Run exact symbol lookup directly |
|
| Run exact word lookup directly |
|
| Load the prepared outline for one file |
|
| Load direct and reverse dependencies for one file |
|
| Run native lint diagnostics |
|
| Trace symbol usage across the repo |
|
| Save the current detail pane to a repo file via checkpoint flow |
|
| Restore one shadow restore point by id |
|
Human CLI keybindings
The current UI wiring exposes these interaction patterns directly in the Go operator console:
:orCtrl+Popens the command palette./starts in-section filtering.bandfmove backward and forward through navigation history.eexports the current pane or detail content into.scplus/exports/.?opens the help overlay.TabandShift+Tabmove focus across panes and overlays.Arrow keys plus
j/kmove through lists and tables.Enteropens the selected row or confirms the active prompt action.Escexits overlays, prompts, or focus modes.Mouse wheel and pointer focus are supported across sidebar, content, detail, jobs, and logs panes.
Benchmarks
The committed benchmark artifacts are produced by the real evaluation harness under docs/benchmarks/.
Human-readable summary: latest.md
Machine-readable report: latest.json
Current committed numbers from the checked-in benchmark summary:
Lane | Samples | p50 ms | p95 ms | p99 ms |
Exact | 5 | 3.14 | 4.07 | 4.07 |
Related | 7 | 55.95 | 57.64 | 57.64 |
Research | 3 | 63.52 | 64.23 | 64.23 |
Quality category | Passed | Total |
Scenario coverage | 10 | 10 |
Exact lookup accuracy | 5 | 5 |
Related-search relevance | 4 | 4 |
Symbol resolution accuracy | 3 | 3 |
Dependency graph accuracy | 3 | 3 |
Hub suggestion quality | 4 | 4 |
Research quality | 3 | 3 |
The current committed run also records:
22golden operator questions0/4stale-after-write failures0/2restore failures251Tree-sitter parses247parser reuses
This matters because the benchmark suite is exercising not just indexing latency, but also validation quality, rename/write freshness, and broken-state behavior.
References
zilliztech/claude-context: prior art for codebase-context workflows, repository navigation patterns, and agent-facing context tooling that influenced the product direction.
License
This project is licensed under the MIT License. See LICENSE for the full text.
Available Tools
21 toolsblast_radiusA
Before deleting or modifying code, check the BLAST RADIUS. Traces every file and line where a specific symbol (function, class, variable) is imported or used. Prevents orphaned code. Also warns if usage count is low (candidate for inlining).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol_name | Yes | The function, class, or variable name to trace across the codebase. | |
| file_context | No | The file where the symbol is defined. Excludes the definition line from results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: its scope ('every file and line'), its purpose ('prevents orphaned code'), and an additional warning behavior for low usage. It lacks details on return format or potential performance implications, but for a read-only analysis tool, the disclosed behaviors are sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose and usage context. Every sentence adds value, with no waste or redundancy. The structure is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two parameters, no annotations, and no output schema. The description covers the tool's purpose, usage timing, and an additional behavior, which is adequate for an agent to invoke it. It does not explicitly describe the return format, but this is inferable from the described tracing behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters having clear descriptions. The description adds no parameter-specific guidance beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Traces every file and line where a specific symbol is imported or used') on a specific resource (symbols across the codebase). It also frames the tool's purpose in context ('Before deleting or modifying code') and differentiates it from general search/deps tools by focusing on blast radius and orphaned code prevention.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Before deleting or modifying code, check the BLAST RADIUS.' It also adds a secondary use case for low-usage symbols. However, it does not name alternative tools or specify when NOT to use it, so it stops 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.
changesA
Return a tiny git change summary, optionally for one file. Use this for exact changed-file inspection and line-range summaries instead of broader repository search.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional indexed file path to scope the change summary to one file. | |
| limit | No | Maximum number of changed files to render when path is omitted. Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the output is a 'tiny' summary with 'line-range summaries,' but doesn't mention side effects, permissions, or behaviors when no path is given (e.g., limit default). This is adequate but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a clear action verb and no fluff. The second sentence provides useful usage guidance without redundancy, and it is front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional params and no output schema, the description gives purpose and usage, but omits details like default limit behavior and output format. It is adequate but could be more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both params (path and limit) described in the schema. The description adds only that the file scope is optional, which is already in the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Return a tiny git change summary' with a specific verb and resource, and distinguishes from siblings by noting 'instead of broader repository search.' It also mentions the optional file scoping, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this for exact changed-file inspection and line-range summaries instead of broader repository search,' providing clear usage context and an alternative category. However, it does not name a specific sibling tool, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkpointA
The ONLY way to write code. Validates the code against strict rules before saving: 2-line header comments, FEATURE tags, max nesting depth, max file length. Creates a shadow restore point before writing. REJECTS code that violates formatting rules.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Where to save the file (relative to project root). | |
| new_content | Yes | The complete file content to save. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several important behaviors beyond a simple write operation: it validates against specific formatting rules (2-line header comments, FEATURE tags, max nesting depth, max file length), creates a shadow restore point before writing, and rejects non-conforming code. With no annotations provided, the description fully carries the transparency burden and does so thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary purpose. Every sentence adds distinct value: exclusivity claim, validation rules, restore point behavior, and rejection outcome. The use of ALL-CAPS for key phrases ('ONLY' and 'REJECTS') emphasizes critical points without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with no output schema, the description covers all essential context: validation rules, safety mechanism (shadow restore point), and failure behavior (rejection). It gives the agent a complete mental model of what happens when the tool is invoked, including edge-case handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with clear descriptions for both parameters (file_path and new_content). The description adds no additional parameter-specific details beyond what the schema states. Since the schema handles parameter semantics effectively, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear, specific purpose: 'The ONLY way to write code.' It identifies the resource (code files) and the action (write/save), and differentiates from siblings like restore and lint by claiming exclusivity for write operations. It further clarifies the validation function, making the tool's role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'The ONLY way to write code' is an explicit when-to-use directive. It signals that this is the required tool for any write action, implicitly excluding alternatives for the same operation. While it doesn't name alternative tools, the absolute wording provides strong guidance and distinguishes clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clusterA
Browse the codebase by MEANING, not directory structure. Renders persisted semantic clusters, subsystem summaries, and related-file neighborhoods from the full index instead of recomputing them on demand.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | Maximum nesting depth of clusters. Default: 3. | |
| max_clusters | No | Maximum rendered child clusters per level. Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explicitly states that clusters are 'persisted' and rendered from the 'full index' rather than 'recomputing them on demand', indicating a read-only operation on precomputed data. It does not mention potential side effects, authentication, or failure modes, but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core verb and purpose, and every phrase adds value. It avoids fluff and is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, no output schema, no annotations), the description is fairly complete: it states the purpose, the data source, and the behavior. It does not explain the return format in detail, but mentions the key outputs. Minor gaps like error handling or index staleness are not addressed, but for a browsing tool this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters (max_depth and max_clusters) with clear descriptions. The tool description does not add additional parameter-level detail, but it does contextually imply they control rendering depth and breadth. Schema coverage is 100%, so the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Browse') and resource ('codebase by MEANING') and lists concrete outputs ('semantic clusters, subsystem summaries, and related-file neighborhoods'). It also distinguishes itself from directory structure navigation, contrasting with sibling tools like 'tree'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: when you want to explore by meaning rather than directory structure. It implies the alternative (use directory structure, e.g., 'tree') but does not explicitly name other tools or state when not to use it. The mention of 'persisted' and 'full index' hints that the index should be built.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depsA
Return compact direct and reverse dependency information for one indexed file. Use this for exact dependency tracing instead of broader related search.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Indexed file path or close path fragment to resolve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full transparency burden. It does disclose the output's compactness and the direct/reverse dependency scope, but it does not mention error handling (e.g., what if the file is not indexed), whether the operation is read-only, or any potential side effects. This is partial disclosure, not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first front-loads the action and object, the second provides a concise usage directive. No redundant wording or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (only 1 parameter, no output schema), but the description omits the exact return format (only says 'compact') and does not address edge cases like missing index or invalid target. Since there is no output schema, the description should have provided more detail about the response structure to be truly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole parameter 'target,' which is already well described in the schema. The tool description adds no extra parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Return') and resource ('compact direct and reverse dependency information for one indexed file'). It also differentiates from siblings by explicitly contrasting with 'broader related search,' making its purpose distinct from tools like 'search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to use this tool: 'Use this for exact dependency tracing instead of broader related search.' This provides both a clear use case and an alternative, giving an agent strong guidance on selecting it over rivals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluateA
Run the built-in real benchmark harness across small, medium, monorepo, polyglot, ignored-tree, broken-state, and rename-freshness scenarios. Reports golden-query accuracy, validation rates, freshness reliability, and p50/p95/p99 query latency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core behavior (running benchmark scenarios and reporting metrics) but does not mention potential side effects, performance implications, or prerequisites such as whether an index must be built first. This is a modest gap for a benchmark tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but efficiently packs two logical parts: the scenarios covered and the metrics reported. It is front-loaded with the main action and contains no fluff or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately explains what it does and what it returns (metrics list). It could further clarify whether output is a JSON object or if any setup is required, but overall it is contextually sufficient for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema property list is empty, so there is no parameter information to add. The description correctly omits parameter details, which is appropriate for a tool with no inputs. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a built-in real benchmark harness across specific named scenarios (small, medium, monorepo, polyglot, ignored-tree, broken-state, rename-freshness) and reports concrete metrics. This specific verb+resource combination distinguishes it from sibling tools like 'validate_index' or 'search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: for benchmarking accuracy, validation rates, freshness reliability, and latency. While it doesn't explicitly name alternative tools or exclusions, the context is clear that this is for evaluation/measurement, not for direct operations like indexing or searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_hubA
Obsidian-style feature hub navigator. Hub files are .md files containing [[path/to/file]] wikilinks that act as a Map of Content. Modes: (1) No args = list all hubs plus persisted suggested hubs and feature-group candidates, (2) hub_path or feature_name = show hub with bundled skeletons of all linked files, (3) query = rank candidate hubs by keyword, semantic, or mixed retrieval, (4) show_orphans = find files not linked to any hub. Prevents orphaned code and enables graph-based codebase navigation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Rank hubs against a natural-language feature or subsystem query. | |
| hub_path | No | Path to a specific hub .md file (relative to root). | |
| feature_name | No | Feature name to search for. Finds matching hub file automatically. | |
| ranking_mode | No | How to rank hub query candidates. Defaults to both. | |
| show_orphans | No | If true, lists all source files not linked to any feature hub. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains the tool's read-only navigation behavior, multiple modes, and what each mode produces (list, show skeletons, rank candidates, find orphans). It does not detail return formats or edge cases, but for a navigation/search tool this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but dense, fitting four usage modes plus a purpose statement into a few sentences. It is structured with numbered modes, making it easy to parse. Slightly long but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 4 modes, no output schema, no annotations), the description covers all modes, parameter relationships, and intended outcomes. It does not explicitly describe the return format, but the mode descriptions imply what is returned. Sufficiently complete for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds valuable inter-parameter semantics: hub_path and feature_name are alternative ways to select a hub, query is used with ranking_mode, and show_orphans is a standalone mode. It also explains defaults (ranking_mode defaults to both) and behavior expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an 'Obsidian-style feature hub navigator' that works with .md files containing wikilinks. It specifies distinct modes (no args, hub_path/feature_name, query, show_orphans), which differentiates it from sibling tools like tree, deps, or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit mode-based usage: no args for listing all hubs, hub_path/feature_name for showing a hub, query for ranking, and show_orphans for finding unlinked files. It also explains intent ('prevents orphaned code and enables graph-based codebase navigation') but does not directly compare to sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indexA
Create or refresh the .scplus project state for this repo. Builds the repo-local scplus layout, writes project config plus a context-tree snapshot into the durable sqlite substrate at .scplus/state/index.sqlite, persists stage state, indexing status, embedding caches, restore points, and file/identifier indexes there, and in full mode also persists chunk and code-structure artifacts with explicit contract metadata and no JSON mirrors.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Indexing mode. Defaults to full and persists derived chunk and code-structure artifacts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that the tool writes to a durable SQLite substrate at .scplus/state/index.sqlite, persists various artifacts (project config, stage state, indexing status, caches, restore points, indexes), and that full mode persists additional artifacts. It also notes 'no JSON mirrors,' a specific behavioral trait. This goes beyond simple 'indexes the repo' and gives a clear picture of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense, run-on sentence that combines many details. While every clause adds relevant information, it lacks clear structural breaks (e.g., separate sentences or bullets) that would improve readability. It is not overly long, but the phrasing 'and in full mode also persists...' could be better organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple artifacts, modes, persistence details) and the absence of an output schema and annotations, the description provides a thorough account of what happens and where. It explains the two modes, storage location, and what is persisted. However, it does not mention return values or error conditions, but for an indexing tool this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has full coverage (100%) with mode's enum and description, so baseline is 3. The description adds significant value by explaining that mode defaults to full and that full mode persists chunk and code-structure artifacts with contract metadata. This clarifies the practical difference between core and full beyond the schema's simple enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create or refresh the .scplus project state for this repo.' It specifies a concrete action (create/refresh), a specific resource (.scplus project state), and the scope (repo-local). This distinguishes it from sibling tools like status, validate_index, and repair_index, which operate on or query existing state rather than building it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: run this to (re)build or refresh project state, but it does not explicitly state when to use this vs. alternatives. It does not mention that status, validate_index, or repair_index are for checking or fixing an existing index, nor does it provide when-not-to-use guidance. Thus, usage context is present but relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lintA
Run the project's native linter/compiler to find unused variables, dead code, type errors, and syntax issues. Delegates detection to deterministic tools instead of LLM guessing. Supports TypeScript, Python, Rust, Go.
| Name | Required | Description | Default |
|---|---|---|---|
| target_path | No | Specific file or folder to lint (relative to root). Omit for full project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses that the tool delegates to native linters/compilers and supports multiple languages, but it does not mention potential side effects, requirements (e.g., installed linters), output format, or whether it is read-only. This is partial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with action and resource, and every sentence adds value: purpose, deterministic approach, and supported languages. No redundancy or waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description fails to explain what the tool returns (e.g., diagnostics, exit codes, formatted report). It is adequate for selection but incomplete for understanding results. Given minimal schema and annotations, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the parameter completely (100% coverage) with a clear description. The tool description adds language support details (TypeScript, Python, Rust, Go), which clarifies valid values for target_path and thus adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Run') and resource ('project's native linter/compiler'), and clearly states the types of issues found (unused variables, dead code, type errors, syntax issues). It also distinguishes the tool from siblings by emphasizing deterministic delegation over LLM guessing, and lists supported languages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever deterministic linting/compilation is needed, explicitly contrasting with LLM guessing. This gives clear context for selection, though it does not mention specific alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outlineA
Return a compact file outline from the prepared fast-query substrate. Use this when you know the file and want imports, exports, and symbols without broader search or full-body reads.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to the indexed file to inspect (relative to project root). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must communicate behavioral traits. It mentions the 'prepared fast-query substrate,' hinting that the file must be indexed, but it doesn't explain what happens if the file is not indexed or how errors are handled. The read-only nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the primary action and result, the second gives the use case. No filler or repetition. Front-loaded with the verb and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description covers what it does, when to use it, and what the outline contains. It does not explicitly state that the file must be indexed beforehand, but the phrase 'prepared fast-query substrate' partially implies it. Overall, quite complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents the file_path parameter well. The tool description adds no further parameter-level details beyond the schema's own description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Return') and resource ('compact file outline'), and clarifies the content (imports, exports, symbols). It distinguishes itself from sibling tools by explicitly noting this is for a known file and avoids broader search or full-body reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear 'when to use' statement ('when you know the file and want imports, exports, and symbols') and implies exclusions ('without broader search or full-body reads'). However, it does not name alternative tools explicitly, which would have earned a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_indexA
Repair the prepared index by rerunning the full pipeline or a specific durable stage, then validate the repaired state.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Repair target. Use core/full for full pipeline rebuilds or a stage name for a targeted rerun. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses that the operation reruns pipeline/stages and then validates, but does not mention potential destructive effects, permissions, reversibility, or what 'durable stage' means. This is moderate transparency but leaves gaps about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the purpose and method. Every word earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description covers the action and validation step, but lacks explicit mention of return values or post-conditions. Given the schema and sibling context, it is nearly complete but could add a note about what the validation returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema describes the 'target' parameter well. The tool description adds no extra parameter details beyond the schema, which is acceptable given the high coverage. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: repair the prepared index, and the mechanism: rerunning the full pipeline or a specific durable stage, followed by validation. This distinguishes it from sibling tools like 'index' (build), 'validate_index' (validates), and 'status' (informs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when an index needs repair and offers a choice between full pipeline or specific stage rerun. The schema description reinforces this with 'Use core/full for full pipeline rebuilds or a stage name for a targeted rerun.' It lacks explicit exclusions or comparisons to alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
researchA
Aggregate ranked code retrieval, structure-backed related files, subsystem summaries, and relevant hubs into one bounded report. Use this for broad subsystem understanding after exact lookup or related-item search is no longer enough.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language repository question to investigate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it aggregates multiple sources into a bounded report, which is helpful. However, it doesn't mention whether the operation is read-only, potential cost/latency, or what 'bounded' precisely means, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence front-loads the core action and output; the second provides usage context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description explains what is aggregated and when to use it. The output is described as a 'bounded report', which is sufficient at a high level, though 'bounded' is somewhat ambiguous and could benefit from clarification on size or scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter 'query' with a clear description, so baseline is 3. The tool description reinforces that the query is for broad subsystem understanding, but adds no additional parameter details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it aggregates ranked code retrieval, related files, subsystem summaries, and relevant hubs into a bounded report. It distinguishes itself from sibling tools by positioning it for broad subsystem understanding after exact lookup or related-item search fails, which is a specific and differentiated purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this when exact lookup or related-item search is no longer enough, providing clear when-to-use guidance. It doesn't name specific sibling tools, but it gives a strong contextual signal that this is for broader understanding, which effectively guides tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restoreA
Restore files to their state before a specific AI change. Uses the shadow restore point system. Does NOT affect git history. Call restore_points first to find the point ID.
| Name | Required | Description | Default |
|---|---|---|---|
| point_id | Yes | The restore point ID (format: rp-timestamp-hash). Get from restore_points. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full transparency burden. It does disclose one key behavioral trait: 'Does NOT affect git history' and references the 'shadow restore point system.' However, it does not clearly state that this is a mutating operation that will overwrite current files, nor does it mention reversibility or side effects beyond git. This adds some context but is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earn their place. The first sentence states purpose, the second explains the system behavior, and the third gives a clear prerequisite. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a clear schema and prerequisite, the description is mostly complete. It covers purpose, usage prerequisite, and a key non-effect (git). It does not mention what the return value looks like or potential destructive consequences, but given the simple tool shape, these are minor omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description for point_id ('The restore point ID (format: rp-timestamp-hash). Get from restore_points.'). The tool description repeats this guidance ('Call restore_points first'), adding no new syntax or format details. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Restore files'), the specific scope ('to their state before a specific AI change'), and the mechanism ('shadow restore point system'). It distinguishes from siblings like restore_points (which lists points) and checkpoint (which creates points).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit prerequisite guidance: 'Call restore_points first to find the point ID.' This clearly instructs when to use this tool relative to its sibling. It also notes a caveat ('Does NOT affect git history') that helps decide between restore and git-based alternatives. Absence of explicit 'when not to use' 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.
restore_pointsA
List all shadow restore points created by checkpoint. Each point captures the file state before the AI made changes. Use this to find a restore point ID for undoing a bad change.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explains that points capture state before AI changes, which adds context. However, it doesn't explicitly state whether this is a read-only operation or disclose any side effects, order, or other behavioral details that would enrich transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, information-dense sentences. The first states the action and source; the second explains the purpose and usage. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description is sufficient to understand the purpose and how to use the result. It lacks explicit return format or ordering details, but these are minor for a simple listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the schema coverage is 100% by default. The description adds meaning by explaining what a restore point is and how it relates to the 'checkpoint' tool, which is useful despite having no params to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('shadow restore points'), and clarifies it is a read operation for finding restore point IDs. This clearly distinguishes it from the sibling 'restore' tool which actually performs the restoration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use this tool ('Use this to find a restore point ID for undoing a bad change'), providing clear context. It doesn't explicitly contrast with alternatives, but the purpose implies the distinction from 'restore'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Route repository search by explicit intent. Use intent='exact' for deterministic fast-substrate answers when you know the exact symbol or file target, and intent='related' for ranked related-item and pattern discovery over the prepared full-engine artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language intent to rank against the prepared full-engine artifacts. | |
| top_k | No | How many ranked hits to return. Default: 5. | |
| intent | Yes | Query intent. exact = deterministic fast lookup, related = ranked discovery. | |
| search_type | Yes | Select file results, symbol results, or both together. | |
| include_kinds | No | Optional symbol-kind filter, e.g. ["function", "method", "variable"]. | |
| retrieval_mode | No | For related search, force semantic-only, keyword-only, or mixed retrieval. Defaults to both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It mentions that 'exact' is a deterministic fast lookup and 'related' operates over 'prepared full-engine artifacts', offering some insight into behavior. However, it does not describe potential side effects, prerequisites like index readiness, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core routing concept, and contains no unnecessary verbiage. Every phrase contributes to understanding the tool's function and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters and no output schema, the description is too sparse. It does not explain what results look like, whether an index must be built first, or how retrieval_mode relates to the 'related' intent. This leaves important gaps for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions, so the baseline is 3. The description adds a bit of extra meaning for the 'intent' parameter by elaborating on exact versus related behavior, but other parameters are already well-documented in the schema and need no further clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a repository search tool and explains the two intent modes: exact for deterministic symbol/file lookup and related for ranked pattern discovery. It is specific about the resource and behavior, though it does not explicitly differentiate from sibling tools like 'symbol' or 'research'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use each intent: use 'exact' when you know the exact symbol or file target, and 'related' for ranked related-item discovery. This is clear context for choosing the right mode, though it does not mention when to prefer this tool over alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skeletonA
Get detailed function signatures, class methods, and type definitions of a specific file WITHOUT reading the full body. Shows the API surface: function names, parameters, return types, and line ranges. Perfect for understanding how to use code without loading it all.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to the file to inspect (relative to project root). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool does NOT read the full body, and it specifies the exact output elements (function names, parameters, return types, line ranges). This is transparent about its behavior, though it doesn't mention error handling or behavior on non-code files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and outcome. No filler words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately explains the return content (function signatures, methods, types, line ranges) and the key constraint (not reading full body). It lacks details about edge cases, but for the tool's simplicity, it's nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'file_path' is fully described in the schema (100% coverage), so the description doesn't add much parameter-specific meaning. It simply refers to 'specific file' which is redundant with the schema. Baseline of 3 is appropriate given schema completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: extracting function signatures, class methods, and type definitions from a file without reading the full body. It distinguishes itself from siblings like 'symbol' and 'outline' by emphasizing the API surface focus and the explicit avoidance of loading full file contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear use case: 'Perfect for understanding how to use code without loading it all.' However, it does not explicitly mention alternatives or situations where another tool would be more appropriate, so it misses the 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusA
Return a tiny git worktree status summary for the current repository. Use this for branch and dirty-file checks instead of reading broader change context.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of status entries to render. Default: 20. |
TDQS
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. The word 'Return' implies a read-only operation, and 'tiny' suggests a concise summary, but it does not explicitly state that it makes no modifications, nor does it mention what happens if the current directory is not a git repository. This is adequate but leaves some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and includes a usage direction. Every word earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 and no output schema, the description covers the purpose, when to use it, and hints at output content ('branch and dirty-file checks'). It does not detail the exact output format or edge cases, but that is acceptable given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full coverage for the single parameter ('limit' with description and default). The description does not add any additional parameter semantics, which is acceptable given the 100% schema coverage. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and a specific resource ('tiny git worktree status summary') with a defined scope ('current repository'). It also distinguishes from sibling tools by explicitly saying 'for branch and dirty-file checks instead of reading broader change context', which differentiates it from 'changes'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool ('for branch and dirty-file checks') and an explicit exclusion ('instead of reading broader change context'). However, it does not name the alternative sibling tool (e.g., 'changes') directly, so it falls just short of full explicit alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbolA
Run a tiny exact symbol lookup over the prepared fast-query substrate. Use this when you already know the symbol name and want deterministic exact matches instead of ranked related search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Exact symbol name to look up. | |
| top_k | No | Maximum number of exact matches to return. Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It adds 'exact', 'deterministic', and 'tiny' qualifiers, and hints at a prerequisite with 'prepared fast-query substrate', but it does not explain failure modes, return behavior when no match exists, or whether the substrate must be explicitly indexed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and followed by usage guidance. Every word contributes to understanding the tool's purpose or selection criteria, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with full schema coverage and no output schema, the description covers purpose, usage, and key behavioral traits. The only minor gap is the unexplained 'prepared fast-query substrate', but the tool is simple enough that the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for both parameters (query and top_k), so schema coverage is 100%. The description adds no additional parameter-level detail beyond what the schema already states, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool runs an exact symbol lookup against a prepared fast-query substrate, using a specific verb and resource. It also contrasts this with ranked related search, distinguishing it from the likely 'search' sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the user when to use this tool: when the exact symbol name is known and deterministic exact matches are needed, instead of ranked related search. This provides clear selection criteria relative to alternative search behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treeA
Get the structural tree of the project with file headers, function names, classes, enums, and line ranges. Automatically reads 2-line headers for file purpose. Dynamic token-aware pruning: Level 2 (deep symbols) -> Level 1 (headers only) -> Level 0 (file names only) based on project size.
| Name | Required | Description | Default |
|---|---|---|---|
| max_tokens | No | Maximum tokens for output. Auto-prunes if exceeded. Default: 20000. | |
| depth_limit | No | How many folder levels deep to scan. Use 1-2 for large projects. | |
| target_path | No | Specific directory or file to analyze (relative to project root). Defaults to root. | |
| include_symbols | No | Include function/class/enum names in the tree. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. It discloses non-obvious behaviors: automatic reading of 2-line headers and dynamic token-aware pruning with three levels. This provides meaningful insight beyond the basic 'get' action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the core purpose and output content, the second clarifies the automatic header reading and pruning behavior. No wasted words, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's output content and adaptive behavior, sufficient for a read-only structural tool with fully described optional parameters. Without an output schema, it gives enough about return values (symbols, headers, line ranges) to guide the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds value by explaining the adaptive pruning mechanism (Level 2 to 0) which connects to max_tokens and include_symbols, giving context on how parameter choices affect output detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: returning a structural tree of the project with file headers, function names, classes, enums, and line ranges. The specific verb "Get" plus resource details distinguishes it from siblings like outline or skeleton.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies when to use the tool (to inspect project structure at varying levels of detail) and notes behavior based on project size. However, it does not explicitly contrast with alternatives like outline or skeleton, nor mention 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.
validate_indexB
Validate that the prepared sqlite-backed index is present, version-compatible, and internally consistent for core or full mode.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Validation mode. Defaults to full. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of transparency. While 'validate' implies a read-only operation, it does not explicitly state whether it modifies anything, whether it requires specific permissions, or what happens on failure. The description focuses on what is checked, not on the tool's side effects or outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately states the purpose. It contains no filler and is appropriately sized for the tool's low complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's low complexity, the description is incomplete. Since there is no output schema, it should at least mention what the tool returns (e.g., pass/fail, error details, validation report) or how the result is communicated. It also omits behavioral details like side effects, making it insufficient for an agent to fully anticipate the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% because the only parameter 'mode' is fully described in the schema. The description repeats the mode options ('core or full mode') but adds no additional meaning beyond the schema, so it provides no extra value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Validate that the prepared sqlite-backed index is present, version-compatible, and internally consistent.' It specifies the verb (validate), resource (sqlite-backed index), and scope (presence, version compatibility, consistency), which distinguishes it from siblings like 'repair_index' and 'index.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like 'repair_index' or 'status.' It does not mention prerequisites (e.g., that the index must be prepared already) or typical use cases, leaving the decision of when to invoke it unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordA
Run a tiny indexed word lookup over paths, headers, symbols, and content snippets. Use this for exact words or short phrases before escalating to broader ranked search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Word or short phrase to look up. | |
| top_k | No | Maximum number of hits to return. Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the tool is lightweight ('tiny'), indexed, and searches specific content types, adding context beyond the schema. Minor gaps remain (e.g., matching behavior, no result handling), but for a simple lookup tool this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with a clear verb, and no wasted words. Each sentence provides distinct value: what it does and when to use it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only 2 parameters and no output schema, the description covers functionality, scope, and usage guidance. It does not explain return format, but the simplicity of the tool and sibling context (e.g., search) make it sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters adequately described. The description reinforces 'word or short phrase' but adds no new semantic detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Run a tiny indexed word lookup') and defines the exact scope ('over paths, headers, symbols, and content snippets'), clearly distinguishing it from broader sibling tools like search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use it ('for exact words or short phrases') and when not to ('before escalating to broader ranked search'), providing clear guidance relative to alternatives.
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.
21 tool updates
v1.0.9- First observed
blast_radius - First observed
changes - First observed
checkpoint - First observed
cluster - First observed
deps - First observed
evaluate - First observed
find_hub - First observed
index - First observed
lint - First observed
outline - First observed
repair_index - First observed
research - First observed
restore - First observed
restore_points - First observed
search - First observed
skeleton - First observed
status - First observed
symbol - First observed
tree - First observed
validate_index - First observed
word
TDQS
Several tools have overlapping purposes, such as tree/skeleton/outline for file structure and symbol/word/search for lookup, making it easy for an agent to select the wrong one. Descriptions help but do not fully resolve the ambiguity, and groups like research/cluster/find_hub blur boundaries further.
Names are a mix of single words (status, tree, symbol, outline, lint) and verb_noun phrases (validate_index, repair_index, restore_points, find_hub, blast_radius) with no consistent pattern. This inconsistency makes it harder to predict related tool names or infer their function.
At 21 tools, the surface is borderline heavy, though the server covers a broad and complex domain. Some tools could be consolidated (e.g., skeleton vs outline), but the count is not extreme enough to be problematic.
The toolset covers the full lifecycle of indexing, validation, repair, retrieval, dependency tracing, linting, code writing, and restoration. The main gap is the absence of a raw file-content read tool, but this appears to be an intentional design to favor structural summaries over full-body reads.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Related MCP Servers
- AlicenseAqualityAmaintenanceA local-first MCP server that enables AI tools to safely inspect and search code repositories, providing indexing, deterministic BM25 search, code outlining, and context bundles without code modification.91MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for local-first code intelligence, providing structural code graph, semantic search, and impact analysis to AI agents.2MIT
- FlicenseNot gradedqualityAmaintenanceProvides a local-first code indexing and search engine for coding agents via MCP, enabling precise codebase queries, symbol lookup, and freshness-aware retrieval.-
- AlicenseNot gradedqualityAmaintenanceLocal-first code intelligence MCP server that enables coding agents to search code, inspect structure, read exact ranges, and explore Git history with explicit token budgets.23Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cesar514/scplus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server