Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.Digital-Threads/token-pilot

NPM · TOKEN-PILOT

Save up to 80% tokens when AI reads code via AST-aware structural reading

Available components

0 this week 82 Trust /100

Last scanned (18 hours ago)

Scores higher than 72% of npm servers

Category Developer Tools

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security92
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Declares code that runs automatically (postinstall) and that we could not recognise. It may be perfectly ordinary, but we have not established what it does. View diagnostics → Partial
  • 30 of 109 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability72
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4648 tokens (~185/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 25 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 31 Oct 26 +1
    • Stability: 0.97 → pass security
  • 30 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 20 Oct 26 +1
    • Stability: 0.97 → pass security
  • 19 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +2
    • Stability: 0.87 → pass security
  • 16 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Oct 26 +42
    • Injection markers: unverified → pass ▲ security
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Stability: unverified → 0.80 ▲ functional
    • Package version: 1.0.3 → 1.0.4 functional
  • 12 Oct 26 −31
    • Stability: 0.80 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Known CVEs: unverified → pass ▲ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Dependency health: unverified → 0.88 ▲ functional
    • Package version: 1.0.3 → 1.0.4 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed npm/token-pilot@1.0.4

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
postinstall unreviewed node scripts/postinstall.mjs

Background: Why install scripts are a supply-chain risk →

Dependencies 109 packages
Packages resolved 109
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 25 exposed · ~3,857 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
call_tree ~98

Recursive depth-N call hierarchy for a function. Shows who calls who transitively — complements find_usages (flat one-level refs) by revealing full chains from leaf helpers to entry points. Use for debugging, refactor impact, and verifying reachability.

NameTypeReqDescription
depthnumber–Walk-up depth. Default 3, max 6.
symbolstringyesFunction / method name, unqualified (e.g. `fetchUser`).

No output schema declared.

No examples provided.

code_audit ~207

Find code quality issues: TODO/FIXME comments, deprecated symbols, structural code patterns (bare except:, print() calls). Use for project-wide audits.

NameTypeReqDescription
checkstringyesWhat to check: "pattern" (structural search via ast-grep, e.g. "except:", "print($$$ARGS)"), "todo" (TODO/FIXME comments), "deprecated" (deprecated symbols), "annotations" (find by decorator name), "…
langstring–Language filter for check="pattern" (e.g., "python", "typescript")
limitnumber–Max results (default: 50)
namestring–Decorator/annotation name for check="annotations". Example: "Deprecated", "Controller"
patternstring–Code pattern for check="pattern". ast-grep syntax: "except:" finds bare excepts, "print($$$ARGS)" finds print calls.

No output schema declared.

No examples provided.

explore ~167

One-shot ranked context + call/inheritance graph blast-radius for a query. Returns ranked symbols, the source heads of the top-ranked files, graph neighbours (callers + subclasses — the blast radius), and related test files in a single compact block. Use INSTEAD OF separate find_usages + read_symbol + call_tree when you need to understand an area fast — cheaper than chaining those three.

NameTypeReqDescription
graphboolean–Include call/inheritance graph neighbours (blast radius). Default: true. Set false to skip the graph walk.
max_filesnumber–Cap on the number of source file heads returned (default: binary's own limit)
querystringyesSearch terms (the binary splits the string into terms itself), e.g. "AstIndexClient buildIndex"

No output schema declared.

No examples provided.

explore_area ~158

One-call exploration of a directory: outline (all symbols), imports (external deps + who imports this area), tests (matching test files), recent git changes. Use INSTEAD OF separate outline + related_files + git log calls. Default since v0.30.0 returns only outline+changes — telemetry showed the all-4 default producing negative token reduction for small areas. Opt into imports/tests explicitly via `include` when you need them.

NameTypeReqDescription
includearray–Sections to include. Default: ["outline","changes"]. Add "imports" for dep graph, "tests" to map test files — both can be heavy on large areas.
pathstringyesDirectory path (or file path — will use its parent directory)

No output schema declared.

No examples provided.

find_unused ~80

Find dead code — functions, classes, and variables with no references across the project. Use for cleanup and refactoring.

NameTypeReqDescription
export_onlyboolean–Only check exported (capitalized) symbols
limitnumber–Max results (default: 30)
modulestring–Filter by module path (e.g., "src/services/")

No output schema declared.

No examples provided.

find_usages ~261

Use INSTEAD OF Grep for finding symbol references. Semantic search — groups by: definitions, imports, usages. Supports scope, kind, limit, lang filters. Use context_lines to include surrounding code. HINT: for very short / generic symbols (≤4 chars like `id`, `err`, `Cmd`, `db`) Grep is usually cheaper than find_usages — the semantic grouping doesn't pay off when the symbol resolves ambiguously across thousands of files.

NameTypeReqDescription
context_linesnumber–Lines of source context around each match (0-10). When set, shows surrounding code — saves follow-up read_symbol calls.
kindstring–Show only specific section (default: "all")
langstring–Filter by language/extension (e.g., "php", "typescript")
limitnumber–Max results per category (default: 50, max: 500)
modestring–Output mode: full (with context, default), list (file:line only, 5-10x smaller for initial discovery)
scopestring–Filter results by path prefix (e.g., "src/Domain/")
symbolstringyesSymbol name to find usages of

No output schema declared.

No examples provided.

module_info ~106

Analyze module dependencies, dependents, public API, and unused deps. Use for architecture understanding and dependency cleanup.

NameTypeReqDescription
checkstring–What to check: "deps" (dependencies), "dependents" (who depends on this), "api" (public symbols), "unused-deps" (dead dependencies), "all" (everything). Default: "all"
modulestringyesModule name or path pattern (e.g., "auth", "src/Domain/")

No output schema declared.

No examples provided.

module_route ~231

Show the transitive dependency path(s) between two modules — how module A reaches module B through the import graph. Use to answer 'how does X depend on Y?', trace coupling, or generate a dependency diagram. format='mermaid'/'dot' emits a diagram; default text lists the hops.

NameTypeReqDescription
allboolean–Show all simple paths instead of just the shortest (default: false)
formatstring–Output format: "text" (default, hop listing), "json", "mermaid" or "dot" (dependency diagram)
fromstringyesSource module — the one whose dependencies are followed (name or path, e.g. "auth", "apps/api")
maxDepthnumber–Cap on path length in hops (default: 20, max: 50)
maxPathsnumber–Cap on number of paths returned (default: 50, max: 200)
tostringyesTarget module to reach
viaKindstring–Restrict traversal to a dependency kind (default: "all")

No output schema declared.

No examples provided.

outline ~96

Use INSTEAD OF listing dir + reading each file. One call returns all symbols (classes, functions, methods, routes) for every code file in a directory. Supports recursive with max_depth.

NameTypeReqDescription
max_depthnumber–Max recursion depth when recursive=true (default: 2, max: 5)
pathstringyesDirectory path
recursiveboolean–Recursively outline subdirectories (default: false)

No output schema declared.

No examples provided.

project_overview ~72

START HERE for unfamiliar codebases. Shows project type, architecture, framework detection, quality tools, CI, directory map. Use include filter for specific sections.

NameTypeReqDescription
includearray–Sections to include (default: all). Use ["stack"] for quick type check, ["quality","ci"] for tooling overview.

No output schema declared.

No examples provided.

read_diff ~71

Use INSTEAD OF re-reading whole file after edits. Shows only changed hunks. REQUIRES: call smart_read or read_for_edit BEFORE editing to create baseline snapshot.

NameTypeReqDescription
context_linesnumber–Lines of context around changes (default: 3)
pathstringyesFile path

No output schema declared.

No examples provided.

read_for_edit ~286

Use INSTEAD OF Read when preparing an EDIT. Returns exact RAW code around a symbol or line — copy directly as old_string for Edit tool. Supports batch: pass "symbols" array to get multiple edit contexts in one call. Unlike read_symbols (for reading/understanding), this returns unformatted code optimized for copy-paste into Edit. Optional: include_callers, include_tests, include_changes for enriched context.

NameTypeReqDescription
contextnumber–Lines of context around target (default: 5)
include_callersboolean–Show top callers of this symbol (saves a separate find_usages call)
include_changesboolean–Show recent git changes in the target region
include_testsboolean–Show related test file and test names
linenumber–Line number to edit (alternative to symbol)
pathstringyesFile path
sectionstring–Section to edit: heading (Markdown), top-level key (YAML/JSON), or "rows:1-50" (CSV). Returns raw section content for Edit old_string.
symbolstring–Symbol name to edit (e.g. "UserService.updateUser")
symbolsarray–Array of symbol names for batch edit context (max 10). Alternative to single "symbol" — returns all symbols in one call.

No output schema declared.

No examples provided.

read_range ~109

Read a specific line range from a file. Use when you know exact lines — lighter than reading the whole file.

NameTypeReqDescription
end_linenumberyesEnd line (1-indexed, inclusive)
forceboolean–Bypass dedup (see smart_read.force).
pathstringyesFile path
session_idstring–Optional Claude Code session_id for cross-restart dedup (see smart_read).
start_linenumberyesStart line (1-indexed)

No output schema declared.

No examples provided.

read_section ~160

Read a specific section from Markdown, YAML, JSON, or CSV files. Markdown: by heading name. YAML/JSON: by top-level key. CSV: by row range (rows:1-50). Much cheaper than reading the whole file. DOCS/DATA ONLY — `heading` is required; this does NOT read code by line/symbol. For source files use read_range (line range) or read_symbol (one symbol).

NameTypeReqDescription
headingstringyesSection heading (Markdown), top-level key (YAML/JSON), or row range "rows:1-50" (CSV). Case-insensitive.
pathstringyesPath to .md, .yaml, .yml, .json, or .csv file

No output schema declared.

No examples provided.

read_symbol ~205

Read source code of ONE specific function/method/class — INSTEAD OF reading the whole file. Supports Class.method syntax.

NameTypeReqDescription
context_afternumber–Lines of context after (default: 0)
context_beforenumber–Lines of context before (default: 2)
forceboolean–Bypass dedup (see smart_read.force).
include_edit_contextboolean–Append raw code block for Edit old_string (saves a read_for_edit call)
pathstringyesFile path
session_idstring–Optional Claude Code session_id for cross-restart dedup (see smart_read).
showstring–Display mode: full (all lines), head (first 50), tail (last 30), outline (head + methods + tail). Default: auto (full ≤300 lines, outline >300)
symbolstringyesSymbol name, e.g. "UserService.updateUser"

No output schema declared.

No examples provided.

read_symbols ~194

Batch read MULTIPLE symbols from ONE file — saves N-1 round-trips vs calling read_symbol N times. BEST FIT: 3–8 symbols in one file when you need their bodies. For 1–2 symbols use read_symbol (simpler). If you'd request ≥70% of the file's symbols, the handler refuses and points you to smart_read — that's cheaper than a large batch. For edit preparation use read_for_edit.

NameTypeReqDescription
context_afternumber–Lines of context after each symbol (default: 0)
context_beforenumber–Lines of context before each symbol (default: 2)
pathstringyesFile path
showstring–Display mode for each symbol (default: auto)
symbolsarrayyesArray of symbol names (max 10), e.g. ["UserService.create", "UserService.update", "UserService.delete"]

No output schema declared.

No examples provided.

related_files ~65

Show ranked import graph for a file: imports, importers, and tests scored by relevance (test adjacency, import closeness, recent changes, path proximity). Files ranked into HIGH VALUE / MEDIUM / LOW to prioritize reading.

NameTypeReqDescription
pathstringyesFile path to analyze

No output schema declared.

No examples provided.

session_analytics ~72

Show token savings report: calls, tokens saved, per-tool breakdown, top files, cache hits. Use verbose=true for full breakdown (per-intent, decision insights, savings by category).

NameTypeReqDescription
verboseboolean–Show detailed breakdown: per-intent, savings by category, decision insights (default: false)

No output schema declared.

No examples provided.

session_budget ~101

META / info-only: reports Read-hook pressure for this session (suppressed tokens, reference budget, burn fraction, effective denyThreshold). Does NOT save tokens itself — this is diagnostic, use to decide when to tighten before a big read. NOTE: burnFraction measures hook activity, not actual context-window occupancy.

NameTypeReqDescription
sessionIdstringyesClaude Code session_id (same id that appears in hook-events.jsonl). Pass "" to read with no session filter.

No output schema declared.

No examples provided.

session_snapshot ~212

Capture current session state as a compact markdown block (<200 tokens). Call before compaction, when switching direction, or periodically in long sessions. Model provides the facts, tool formats them. Writes the block to .token-pilot/snapshots/<timestamp>.md (last 10 kept) and .token-pilot/snapshots/latest.md, which the next session start points to; pass persist=false to only return it.

NameTypeReqDescription
blockedstring–Current blocker or obstacle
confirmedarray–Established facts (what has been verified)
decisionsarray–Key decisions made and why (e.g., "removed sysfee step — caused double counting"). Prevents revisiting rejected approaches.
filesarray–Relevant file paths
goalstringyesSession goal — what and why
nextstring–Next step to take
persistboolean–Save to .token-pilot/snapshots/ (default: true). false = return the block only.

No output schema declared.

No examples provided.

smart_diff ~104

Use INSTEAD OF raw git diff. Shows changed files with AST symbol mapping — which functions/classes were modified/added/removed. Small diffs include hunks, large diffs show summary.

NameTypeReqDescription
pathstring–Filter to specific file or directory
refstring–Git ref — required for scope="commit" (commit hash) or scope="branch" (branch name)
scopestring–Diff scope (default: "unstaged")

No output schema declared.

No examples provided.

smart_log ~167

Use INSTEAD OF raw git log. Structured commit history with category detection (feat/fix/refactor/docs), file stats, author breakdown. Filters by path and ref. HEADS UP: two verification runs measured this tool at ~39% token reduction (borderline — vs 95-99% for outline/smart_diff). Cumulative data being gathered — tool may be dropped or redesigned in v0.30.0 if numbers don't improve. Prefer scoping with `path` or `count` to tighten savings.

NameTypeReqDescription
countnumber–Number of commits (default: 10, max: 50)
pathstring–Filter to specific file or directory
refstring–Git ref — branch, tag, or commit (default: HEAD)

No output schema declared.

No examples provided.

smart_read ~280

Use INSTEAD OF Read/cat for code files. Returns code structure (classes, functions, methods with signatures and line ranges) — 60-80% fewer tokens than raw content. Use read_symbol() to drill into specific code.

NameTypeReqDescription
depthnumber–Max depth for nested symbols (default: 2)
forceboolean–Bypass dedup — return full content even if the same path was already loaded earlier in this session. Use when the prior result was compacted out of context.
max_tokensnumber–Token budget. If output exceeds this, auto-downgrades: full → outline → compact. Use for context-constrained sessions.
pathstringyesFile path (absolute or relative to project root)
scopestring–Output scope: full (default, all details), nav (names + lines only, 2-3x smaller), exports (public API only)
session_idstring–Optional Claude Code session_id. When provided, dedup state (already-loaded files) persists across MCP server restarts and /clear, tied to that session. Omit to use ephemeral process-scoped dedup.
show_docsboolean–Include doc comments (default: true)
show_importsboolean–Include import details (default: true)

No output schema declared.

No examples provided.

smart_read_many ~116

Batch smart_read for multiple files at once — INSTEAD OF calling Read on each file. Returns structure for each file. Max 20 files.

NameTypeReqDescription
forceboolean–Bypass dedup (see smart_read.force).
max_tokensnumber–Token budget per file. If a file exceeds this, auto-downgrades to compact outline.
pathsarrayyesArray of file paths
session_idstring–Optional Claude Code session_id for cross-restart dedup (see smart_read).

No output schema declared.

No examples provided.

test_summary ~239

Run tests and return structured summary: total/passed/failed/skipped + failure details. 200 lines of raw output → 10-15 lines. Parsers: vitest, jest, pytest, phpunit, go test, cargo test, node --test (rspec/mocha fall back to generic patterns). The command runs through the shell (env prefixes and && work) in the server's environment (normally your terminal's) minus CLAUDE_PLUGIN_* / TOKEN_PILOT_* variables, with CI=1, NO_COLOR=1 and FORCE_COLOR=0 set so runners print plain output and skip watch mode (an env prefix in the command overrides them); on timeout the command and everything it started are killed (its process group; `taskkill /T` on Windows) and the result says TIMEOUT.

NameTypeReqDescription
commandstringyesTest command to run (e.g., "npm test", "pytest", "go test ./...")
runnerstring–Force specific parser (auto-detected if omitted)
timeoutnumber–Timeout in ms (default: 60000, max: 300000)

No output schema declared.

No examples provided.

Install

How do I install the io.github.Digital-Threads/token-pilot MCP server?

io.github.Digital-Threads/token-pilot runs locally as an npm package, launched with npx -y token-pilot. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · token-pilot

# add to Claude Code
claude mcp add digital-threads-token-pilot -- npx -y token-pilot
Common questions

What is the io.github.Digital-Threads/token-pilot MCP server?

io.github.Digital-Threads/token-pilot is an MCP server listed in the public MCP registry as io.github.Digital-Threads/token-pilot. Save up to 80% tokens when AI reads code via AST-aware structural reading. This page covers its npm package (token-pilot).

Is the io.github.Digital-Threads/token-pilot MCP server safe to use?

io.github.Digital-Threads/token-pilot scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.Digital-Threads/token-pilot MCP server expose?

io.github.Digital-Threads/token-pilot exposes 25 tools: smart_read, read_symbol, read_symbols, read_range, read_section, and 20 more. Their descriptions and schemas cost roughly 3,857 tokens of context every time the server is loaded.

Is the io.github.Digital-Threads/token-pilot MCP server still maintained?

io.github.Digital-Threads/token-pilot is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.Digital-Threads/token-pilot MCP server under?

io.github.Digital-Threads/token-pilot declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.