Skip to main content
Glama
Cesar514
by Cesar514

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.

scplus operator console

scplus serving contract

Table of Contents

Related MCP server: codemap

Key Features

  • Prepared exact-query tools for deterministic lookups such as symbol, word, outline, deps, status, and changes

  • Ranked 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-serve JSON-line transport

  • Repo-local SQLite machine state rooted at .scplus/, with active/pending generation promotion and explicit fresh, dirty, and blocked freshness states

  • Loud 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 development

  • Committed 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

scplus-mcp

Public MCP command

scplus-mcp

Public human CLI command

scplus-cli

Product/brand name

scplus

Repo-local state directory used by current source

.scplus/

Runtime env prefix used by current source

SCPLUS_

Important context:

  • The current source code uses .scplus/ as the repo-local state root via src/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/sdk over stdio

  • Prepared state store: SQLite at .scplus/state/index.sqlite

  • Parsing: web-tree-sitter and tree-sitter-wasms

  • Retrieval: 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 bunx when generating MCP config instead of npx

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.sh

Treat ./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:

  1. verifies node

  2. verifies npm

  3. verifies pixi

  4. runs npm install

  5. runs npm run build

  6. runs npm run build:cli

  7. runs npm link

  8. verifies that scplus-mcp points at build/index.js

  9. verifies that scplus-cli points at build/cli-launcher.js

  10. runs a lightweight scplus-mcp tree "$ROOT_DIR" check

  11. runs 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-mcp should be on your PATH

  • scplus-cli should be on your PATH

  • the 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:all

This 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 dev

The landing app serves on http://localhost:6767.

MCP Client Setup

Supported client targets

The init command can generate MCP config for:

  • claude

  • cursor

  • vscode

  • windsurf

  • opencode

  • codex

Generated config paths:

Target

Output path

claude

.mcp.json

cursor

.cursor/mcp.json

vscode

.vscode/mcp.json

windsurf

.windsurf/mcp.json

opencode

opencode.json

codex

.codex/config.toml

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 codex

Runner selection:

  • by default, the command prefers bunx when it detects Bun and otherwise falls back to npx

  • you can force a runner with --runner=npx or --runner=bunx

Examples:

scplus-mcp init codex --runner=npx
scplus-mcp init claude --runner=bunx

Manual 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" with args = ["-y", "scplus-mcp"], or

  • command = "bunx" with args = ["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:

  • mcpServers for Claude/Cursor/Windsurf-style configs

  • servers for VS Code’s .vscode/mcp.json

  • mcp for opencode.json

  • TOML 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-32k

  • nemotron-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

ollama

local/private embeddings

OpenAI-compatible

openai

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 serve

Then, 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-128k

OpenAI-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-small

Optional custom base URL:

export SCPLUS_OPENAI_BASE_URL=https://your-proxy.example.com/v1

Architecture

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 script

Runtime Surfaces

The repository exposes three distinct but connected runtime surfaces:

Surface

Purpose

Backing implementation

scplus-mcp

Agent-facing MCP server and CLI-style local commands

src/index.ts

bridge / bridge-serve

Structured local automation interface over the shared backend core

src/cli/commands.ts

scplus-cli

Human operator console and a few direct Go subcommands

cli/cmd/scplus-cli/main.go

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 response

For 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 output

Serving 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, or blocked

  • invalid 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, changes

  • Ranked lane: search with intent="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.ts defines the .scplus/ layout

  • embeddings.ts manages provider-backed embeddings, SQLite vector namespaces, runtime options, and generation-aware cache invalidation

  • tree-sitter.ts and parser.ts provide structural parsing

  • runtime-locks.ts coordinates cross-process ownership

  • process-lifecycle.ts manages idle shutdown, parent monitoring, and cleanup

src/tools/

  • index-codebase.ts, index-stages.ts, and index-reliability.ts drive indexing, validation, and repair

  • exact-query.ts implements the fast exact-query substrate

  • query-intent.ts, unified-ranking.ts, semantic-search.ts, and semantic-identifiers.ts implement ranked search

  • research.ts builds larger bounded subsystem reports

  • feature-hub.ts, hub-suggestions.ts, and cluster-artifacts.ts implement hub and cluster views

  • static-analysis.ts and blast-radius.ts provide diagnostics and usage tracing

  • propose-commit.ts and write-freshness.ts implement guarded writes and synchronous freshness repair

cli/

  • cli/cmd/scplus-cli/main.go is the Go entrypoint

  • cli/internal/backend/ is the bridge client layer

  • cli/internal/ui/ renders the operator console

  • cli/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-serve transport

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-serve

  • diagnostics 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

SCPLUS_EMBED_PROVIDER

No

Select embedding provider mode

ollama

OLLAMA_EMBED_MODEL

No

Ollama embedding model tag

qwen3-embedding:0.6b-32k

OLLAMA_CHAT_MODEL

No

Chat model used in generated config examples

nemotron-3-nano:4b-128k

OLLAMA_HOST

No

Override Ollama host

unset

OLLAMA_API_KEY

Conditional

Required only if your Ollama setup needs auth

unset

SCPLUS_OPENAI_API_KEY

Conditional

Preferred OpenAI-compatible API key when provider is openai

unset

OPENAI_API_KEY

Conditional

Fallback alias for API key

unset

SCPLUS_OPENAI_BASE_URL

No

Preferred OpenAI-compatible base URL

https://api.openai.com/v1

OPENAI_BASE_URL

No

Fallback alias for base URL

https://api.openai.com/v1

SCPLUS_OPENAI_EMBED_MODEL

No

Preferred OpenAI-compatible embedding model

text-embedding-3-small

OPENAI_EMBED_MODEL

No

Fallback alias for embedding model

text-embedding-3-small

Indexing, chunking, and refresh behavior

Variable

Required

Purpose

Default / source

SCPLUS_EMBED_BATCH_SIZE

No

Embedding batch size, clamped in code

8

SCPLUS_EMBED_CHUNK_CHARS

No

Chunk chars before vector merge, clamped in code

2000

SCPLUS_MAX_EMBED_FILE_SIZE

No

Max file size for embed-aware search paths

tool fallback in semantic-search.ts

SCPLUS_SCAN_MAX_DIRS_PER_TICK

No

Max directories scanned per bounded watcher tick

32

SCPLUS_SCAN_MAX_FILES_PER_TICK

No

Max files fingerprinted per bounded watcher tick

256

SCPLUS_SCAN_MAX_MS_PER_TICK

No

Max scanner milliseconds per tick

100

SCPLUS_SCAN_STAT_CONCURRENCY

No

Max concurrent file stat calls per scanner tick

16

SCPLUS_SCAN_RESCAN_INTERVAL_MS

No

Scanner tick interval cap used while watching

1000

SCPLUS_WATCH_MAX_PENDING_PATHS

No

Max detailed pending paths before escalating to full rebuild

5000

SCPLUS_WATCH_EVENT_PATH_SAMPLE

No

Max changed paths included in one streamed event payload

100

SCPLUS_IDLE_TIMEOUT_MS

No

Idle shutdown timeout for MCP process

unset

SCPLUS_PARENT_POLL_MS

No

Parent-process polling interval

unset

Advanced Ollama runtime options

Variable

Required

Purpose

SCPLUS_EMBED_NUM_GPU

No

Pass num_gpu into Ollama embed options

SCPLUS_EMBED_MAIN_GPU

No

Pass main_gpu into Ollama embed options

SCPLUS_EMBED_NUM_THREAD

No

Pass num_thread into Ollama embed options

SCPLUS_EMBED_NUM_BATCH

No

Pass num_batch into Ollama embed options

SCPLUS_EMBED_NUM_CTX

No

Pass num_ctx into Ollama embed options

SCPLUS_EMBED_LOW_VRAM

No

Pass low_vram into Ollama embed options

Available Scripts

Root package scripts

Command

Description

npm run build

Compile the TypeScript MCP server into build/

npm run build:cli

Use Pixi to build the Go Bubble Tea CLI

npm run build:all

Build both the TypeScript server and the Go CLI

npm run dev

Run TypeScript in watch mode

npm start

Start the built Node entrypoint

npm test

Run the main TypeScript test suite

npm run test:cli

Run the Go CLI test suite through Pixi

npm run test:demo

Run the demo/test harness

npm run test:all

Run all Node and Go test suites

Landing app scripts

Run these from landing/:

Command

Description

npm run dev

Start the Next.js landing app on port 6767

npm run build

Build the landing app

npm run start

Run the built landing app on port 6767

npm run lint

Lint the landing app

npm run cf:build

Build the OpenNext/Cloudflare target

npm run cf:preview

Build and run a Cloudflare preview

npm run cf:deploy

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

scplus-mcp init <target>

Generate client config for claude, cursor, vscode, windsurf, opencode, or codex

--runner=npx, --runner=bunx

scplus-mcp index [path]

Build or refresh prepared repo-local state

--mode=core, --mode=full

scplus-mcp tree [path]

Render the structural tree

--json, --headers-only, --max-tokens=<n>

scplus-mcp skeleton <file>

Render a file skeleton

--root=<repo>, --json

scplus-mcp validate-index [path]

Validate prepared state

--mode=core, --mode=full, --json

scplus-mcp validate_index [path]

Alias for validate-index

same flags as above

scplus-mcp repair-index [path] --target=<...>

Repair prepared state

--json

scplus-mcp repair_index [path] --target=<...>

Alias for repair-index

--json

scplus-mcp status [path]

Render a git-aware status summary

--limit=<n>, --json

scplus-mcp changes [path]

Render a git-aware changes summary

--path=<file>, --limit=<n>, --json

scplus-mcp cluster [path]

Render persisted semantic cluster output

--max-depth=<n>, --max-clusters=<n>, --json

scplus-mcp hubs [path]

Render hub output

--hub-path=<file>, --feature-name=<name>, --query=<text>, `--ranking-mode=<keyword

scplus-mcp find-hub [path]

Alias-style hub discovery entrypoint

same flags as hubs

scplus-mcp restore-points [path]

Render restore-point history

--json

scplus-mcp restore_points [path]

Alias for restore-points

--json

scplus-mcp doctor [path]

Print a combined health/observability report

--json

scplus-mcp bridge <subcommand>

Run one-shot structured backend commands

see bridge table below

scplus-mcp bridge-serve

Start the persistent JSON-line bridge service

no flags

scplus-mcp [path]

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-index and validate_index

  • repair-index and repair_index

  • restore-points and restore_points

  • hubs and find-hub

MCP Resource And Tool Catalog

Public MCP resource

The MCP server exposes one resource:

Resource

URI

Purpose

scplus_mcp_instructions

scplus-mcp://instructions

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

index

Create or refresh .scplus/ prepared state

`mode?: "core"

validate_index

Validate the prepared index for consistency and version compatibility

`mode?: "core"

repair_index

Repair a prepared index stage or full mode, then validate

`target: "core"

tree

Render the structural repository tree

target_path?, depth_limit?, include_symbols?, max_tokens?

skeleton

Show detailed signatures and type surfaces for one file

file_path

cluster

Render persisted semantic cluster and subsystem views

max_depth?, max_clusters?

find_hub

List, rank, inspect, or orphan-check manual/suggested hubs

hub_path?, feature_name?, query?, ranking_mode?, show_orphans?

Exact-query tools

Tool

Purpose

Key parameters

symbol

Exact symbol lookup from the prepared fast-query substrate

query, top_k?

word

Tiny indexed word/phrase lookup

query, top_k?

outline

Compact imports/exports/symbol outline for a known file

file_path

deps

Direct and reverse dependency info for one indexed file

target

status

Tiny git worktree summary

limit?

changes

Git change summary, optionally scoped to one file

path?, limit?

Search and research tools

Tool

Purpose

Key parameters

search

Intent-routed exact or related search over prepared artifacts

intent, search_type, query, retrieval_mode?, top_k?, include_kinds?

research

Broad bounded report combining retrieval, structure, clusters, and hubs

query

evaluate

Run the built-in real benchmark harness

no parameters

Analysis, write, and recovery tools

Tool

Purpose

Key parameters

blast_radius

Trace symbol usage before modification or deletion

symbol_name, file_context?

lint

Run native linter/compiler-backed analysis

target_path?

checkpoint

Guarded write path with restore-point creation

file_path, new_content

restore_points

List shadow restore points

no parameters

restore

Restore files from a specific restore point

point_id

Bridge And Automation Surface

The repository has two non-MCP local automation surfaces:

  • bridge <subcommand> for one-shot JSON output

  • bridge-serve for a persistent JSON-line session used by scplus-cli and local tooling

bridge subcommands

The one-shot bridge wrapper exposes these subcommands:

Subcommand

Purpose

Key flags / args

doctor

Return doctor output as JSON

--root=<repo>

tree

Return tree output as JSON

--root=<repo>, --headers-only, --max-tokens=<n>

status

Return worktree status as JSON

--root=<repo>, --limit=<n>

changes

Return change summaries as JSON

--root=<repo>, --path=<file>, --limit=<n>

restore-points

Return restore points as JSON

--root=<repo>

validate-index

Return validation report as JSON

--root=<repo>, `--mode=<core

cluster

Return cluster output as JSON

--root=<repo>, --max-depth=<n>, --max-clusters=<n>

hubs / find-hub

Return hub output as JSON

--root=<repo>, --hub-path=<file>, --feature-name=<name>, --query=<text>, `--ranking-mode=<keyword

symbol

Return exact symbol results plus freshness header

<query> or --query=<text>, --root=<repo>, --top-k=<n>

word

Return word results plus freshness header

<query> or --query=<text>, --root=<repo>, --top-k=<n>

outline

Return outline payload plus freshness header

<file> or --file-path=<file>, --root=<repo>

deps

Return dependency payload plus freshness header

<target> or --target=<file>, --root=<repo>

search

Return search report plus freshness header

<query> or --query=<text>, --root=<repo>, `--intent=<exact

research

Return research report plus freshness header

<query> or --query=<text>, --root=<repo>, --top-k=<n>, --include-kinds=a,b, --max-related=<n>, --max-subsystems=<n>, --max-hubs=<n>

lint

Return lint/static-analysis report

--root=<repo>, --target-path=<path>

blast-radius

Return blast-radius report

<symbol> or --symbol-name=<name>, --root=<repo>, --file-context=<file>

checkpoint

Return checkpoint report

<file> or --file-path=<file>, --root=<repo>, --new-content=<full file contents>

restore

Return restore payload

<point-id> or --point-id=<id>, --root=<repo>

repair-index

Return repair payload

--root=<repo>, `--target=<core

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

index

Trigger index or refresh work through the shared backend

job-control

Control queued work with cancel-pending, retry-last, or supersede-pending

watch-set

Enable or disable watching, optionally with debounce override

shutdown

Ask the persistent bridge service to shut down

Alias notes for the bridge layer:

  • find-hub and hubs normalize onto the same implementation

  • underscore forms are normalized to hyphen forms where applicable

  • validate-index and repair-index are the canonical bridge names

Persistent-only command arguments

Command

Key arguments

index

root, `mode?: "auto"

job-control

root, `action: "cancel-pending"

watch-set

root, enabled, debounceMs?

shutdown

none

Human CLI Surface

The Go operator console is exposed as scplus-cli.

Supported direct scplus-cli subcommands

Command

Purpose

Important args

scplus-cli

Launch the interactive operator console

optional --root=<repo>

scplus-cli doctor --root .

Print a plain-text health report

--root=<repo>

scplus-cli snapshot --root .

Render a one-shot UI snapshot and exit

--root=<repo>

`scplus-cli index --root . [auto

core

full]`

scplus-cli tree --root .

Print the prepared tree view

--root=<repo>

scplus-cli hubs --root .

Print hub output

--root=<repo>

scplus-cli cluster --root .

Print cluster output

--root=<repo>

scplus-cli restore-points --root .

Print restore-point history

--root=<repo>

scplus-cli hub-create --root . --title \"...\" --summary \"...\" --files \"a,b,c\"

Create a manual hub file

--title, --summary, --files, --root=<repo>

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-serve

  • backend-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

exit

Quit the operator console

local UI action

activity

Return to the main operator surface

local UI action

back

Move backward through navigation history

local UI action

forward

Move forward through navigation history

local UI action

overview

Open the health and observability overview

local UI view

tree

Open the prepared tree section

bridge-serve tree

hubs

Open manual and suggested hubs

bridge-serve hubs

issue

Open the current issue/detail view

local UI view

log

Open the backend log history pane

streamed bridge-serve events

restore

Open restore points and recovery state

bridge-serve restore-points

cluster

Open persisted semantic clusters

bridge-serve cluster

status

Open the git worktree status table

bridge-serve status

changes

Open changed-file stats and ranges

bridge-serve changes

search

Open ranked search output

bridge-serve search

symbol

Open exact symbol output

bridge-serve symbol

index

Trigger indexing through the shared backend

bridge-serve index

retry-index

Re-run the last sync strategy

bridge-serve job-control

refresh

Refresh visible backend-backed sections

repeated bridge refresh calls

cancel-pending

Drop queued watch work before it starts

bridge-serve job-control

supersede-pending

Replace stale queued work with the newest plan

bridge-serve job-control

watch

Enable or disable watcher-driven refreshes

bridge-serve watch-set

new-hub

Start the manual hub-creation flow

local UI wizard plus hub creation

export

Export the active pane or detail content to .scplus/exports/

local UI action

help

Open keybinding and behavior help

local UI overlay

find-hub

Rank hubs by natural-language query

bridge-serve hubs / find-hub

exact

Run exact mixed search

bridge-serve search

search-related

Run related ranked search

bridge-serve search

research

Build the broad explanation-backed report

bridge-serve research

file

Find an exact file/path hit and open it in Search

bridge-serve search

go-symbol

Find an exact symbol hit and open it in Search

bridge-serve search

symbol-lookup

Run exact symbol lookup directly

bridge-serve symbol

word

Run exact word lookup directly

bridge-serve word

outline

Load the prepared outline for one file

bridge-serve outline

deps

Load direct and reverse dependencies for one file

bridge-serve deps

lint

Run native lint diagnostics

bridge-serve lint

blast-radius

Trace symbol usage across the repo

bridge-serve blast-radius

checkpoint-detail

Save the current detail pane to a repo file via checkpoint flow

bridge-serve checkpoint

restore-point

Restore one shadow restore point by id

bridge-serve restore

Human CLI keybindings

The current UI wiring exposes these interaction patterns directly in the Go operator console:

  • : or Ctrl+P opens the command palette.

  • / starts in-section filtering.

  • b and f move backward and forward through navigation history.

  • e exports the current pane or detail content into .scplus/exports/.

  • ? opens the help overlay.

  • Tab and Shift+Tab move focus across panes and overlays.

  • Arrow keys plus j / k move through lists and tables.

  • Enter opens the selected row or confirms the active prompt action.

  • Esc exits 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/.

scplus benchmark overview

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:

  • 22 golden operator questions

  • 0/4 stale-after-write failures

  • 0/2 restore failures

  • 251 Tree-sitter parses

  • 247 parser 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 tools
blast_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_nameYesThe function, class, or variable name to trace across the codebase.
file_contextNoThe file where the symbol is defined. Excludes the definition line from results.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states a specific action ('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.

Usage Guidelines4/5

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

The description explicitly states when to use the tool: '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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional indexed file path to scope the change summary to one file.
limitNoMaximum number of changed files to render when path is omitted. Default: 20.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple read-only tool with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesWhere to save the file (relative to project root).
new_contentYesThe complete file content to save.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNoMaximum nesting depth of clusters. Default: 3.
max_clustersNoMaximum rendered child clusters per level. Default: 20.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description provides clear context on when to use the tool: 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesIndexed file path or close path fragment to resolve.

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

The description explicitly instructs when to use 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness4/5

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

Given the tool has no parameters 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.

Parameters4/5

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

The tool has zero parameters, and the schema 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoRank hubs against a natural-language feature or subsystem query.
hub_pathNoPath to a specific hub .md file (relative to root).
feature_nameNoFeature name to search for. Finds matching hub file automatically.
ranking_modeNoHow to rank hub query candidates. Defaults to both.
show_orphansNoIf true, lists all source files not linked to any feature hub.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness4/5

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.

Completeness4/5

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

Given the tool's complexity (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.

Parameters4/5

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.

Purpose5/5

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

The description clearly identifies the tool as 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoIndexing mode. Defaults to full and persists derived chunk and code-structure artifacts.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full 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.

Conciseness3/5

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.

Completeness4/5

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

Given the tool's complexity (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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool's function: '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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_pathNoSpecific file or folder to lint (relative to root). Omit for full project.

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a tool with no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the indexed file to inspect (relative to project root).

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description opens with a specific verb ('Return') and 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.

Usage Guidelines4/5

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

It provides a clear 'when to use' 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesRepair target. Use core/full for full pipeline rebuilds or a stage name for a targeted rerun.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language repository question to investigate.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness4/5

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

For a single-parameter tool with no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's function: 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
point_idYesThe restore point ID (format: rp-timestamp-hash). Get from restore_points.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a single-parameter tool with 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's action ('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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to inspect (relative to project root).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple tool with one parameter 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's function: 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of status entries to render. Default: 20.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple tool with one parameter 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesExact symbol name to look up.
top_kNoMaximum number of exact matches to return. Default: 10.

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_tokensNoMaximum tokens for output. Auto-prunes if exceeded. Default: 20000.
depth_limitNoHow many folder levels deep to scan. Use 1-2 for large projects.
target_pathNoSpecific directory or file to analyze (relative to project root). Defaults to root.
include_symbolsNoInclude function/class/enum names in the tree. Defaults to true.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoValidation mode. Defaults to full.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's function: '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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesWord or short phrase to look up.
top_kNoMaximum number of hits to return. Default: 10.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 21 tool updatesv1.0.9
    • First observedblast_radius
    • First observedchanges
    • First observedcheckpoint
    • First observedcluster
    • First observeddeps
    • First observedevaluate
    • First observedfind_hub
    • First observedindex
    • First observedlint
    • First observedoutline
    • First observedrepair_index
    • First observedresearch
    • First observedrestore
    • First observedrestore_points
    • First observedsearch
    • First observedskeleton
    • First observedstatus
    • First observedsymbol
    • First observedtree
    • First observedvalidate_index
    • First observedword

TDQS

B3.4/5.0
Disambiguation2/5

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.

Naming Consistency2/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A 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.
    9
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for local-first code intelligence, providing structural code graph, semantic search, and impact analysis to AI agents.
    2
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Provides a local-first code indexing and search engine for coding agents via MCP, enabling precise codebase queries, symbol lookup, and freshness-aware retrieval.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-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.
    23
    Apache 2.0

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cesar514/scplus-mcp'

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