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.Mibayy/token-savior

PYPI · TOKEN-SAVIOR-RECALL · SCANNED SEP 21

Structural codebase MCP server with persistent memory: navigate by symbol, recall across sessions.

−15 this week 66 Trust /100
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 Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 0 of 34 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency45
Schema Quality & AI Usability75
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 6320 tokens (~91/item across 69 items; 69 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage94
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 81% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "memory_delete" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 69 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
Install

How do I install the io.github.Mibayy/token-savior MCP server?

io.github.Mibayy/token-savior runs locally as a PyPI package, launched with uvx token-savior-recall. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · token-savior-recall

# add to Claude Code
claude mcp add mibayy-token-savior -- uvx token-savior-recall
// .cursor/mcp.json
{
  "mcpServers": {
    "mibayy-token-savior": {
      "command": "uvx",
      "args": [
        "token-savior-recall"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "mibayy-token-savior": {
      "command": "uvx",
      "args": [
        "token-savior-recall"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add mibayy-token-savior -- uvx token-savior-recall
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mibayy-token-savior": {
      "type": "local",
      "command": [
        "uvx",
        "token-savior-recall"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add mibayy-token-savior --command uvx --arg token-savior-recall
# ~/.hermes/config.yaml
mcp_servers:
  mibayy-token-savior:
    command: "uvx"
    args: ["token-savior-recall"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "mibayy-token-savior": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "token-savior-recall"
      ]
    }
  }
}
# add to Vellum
assistant mcp add mibayy-token-savior -t stdio -c uvx -a token-savior-recall
// mcp.json
{
  "mcpServers": {
    "mibayy-token-savior": {
      "command": "uvx",
      "args": [
        "token-savior-recall"
      ]
    }
  }
}
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.

  • 21 Sept 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.

  • 19 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 18 Sept 26 +1
    • Stability: 0.97 → pass security
  • 17 Sept 26 −15
    • Malware scan: pass → unverified security
  • 16 Sept 26 +16
    • Malware scan: unverified → pass security
  • 15 Sept 26 −15
    • Malware scan: pass → unverified security
  • 14 Sept 26 +16
    • Malware scan: unverified → pass security
  • 13 Sept 26 −15
    • Malware scan: pass → unverified security
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 21 Sept 2026 · Analysed pypi/token-savior-recall@4.13.0

Provenance No attestation

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

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

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

Dependencies 34 packages
Packages resolved 34
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 69 exposed · ~6,320 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
add_field_to_model ~130

Add a field to a model/class/interface. Supports .prisma, .py (dataclass, SQLAlchemy), .ts/.tsx.

NameTypeReqDescription
afterstringInsert after the line containing this string.
field_namestringyesName of the new field.
field_typestringyesType of the field (e.g. 'String', 'DateTime?', 'number').
file_pathstringOptional file path to disambiguate.
modelstringyesModel/class/interface name.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

analyze_config ~99

Audit config files (.env/.yaml/.toml/.json): duplicates, secrets, orphans.

NameTypeReqDescription
checksarrayChecks to run
file_pathstringSpecific config file
max_issuesintegerCap total issues shown (default 10, 0 = unlimited). Raise for full audit.
projectstringProject name/path (default: active).
severitystringSeverity filter

No output schema declared.

No examples provided.

analyze_docker ~45

Audit Dockerfiles: base images, stages, exposed ports, ENV/ARG, cross-ref with config files.

NameTypeReqDescription
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

build_commit_summary ~68

Compact commit/review narrative with stats, hotspots, suggested type.

NameTypeReqDescription
changed_filesarrayyes
max_filesintegerDefault 20.
max_symbols_per_fileintegerDefault 20.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

capture_aggregate ~88

Aggregate over a capture: stats|count_lines|unique_lines|extract:<re>|count:<re>.

NameTypeReqDescription
idintegeryes
patternstringRegex when transform is 'extract' or 'count' without inline regex.
transformstringstats (default) | count_lines | unique_lines | extract | count | extract:<regex> | count:<regex>

No output schema declared.

No examples provided.

capture_get ~71

Read a capture (range: head/tail/all/preview/line:N-M).

NameTypeReqDescription
idintegeryesCapture id (from search/list).
max_bytesintegerCap returned content size.
rangestringhead | tail | all | preview | line:start-end (default preview).

No output schema declared.

No examples provided.

capture_list ~53

List recent captures (newest first).

NameTypeReqDescription
limitintegerMax rows (default 50).
project_rootstring
session_idstring
tool_namestring

No output schema declared.

No examples provided.

capture_purge ~51

Delete captures by age/session/project (filter required).

NameTypeReqDescription
older_than_secintegerDelete captures older than this many seconds.
project_rootstring
session_idstring

No output schema declared.

No examples provided.

capture_put ~127

Sandbox a verbose tool output to FTS5 store; returns id + preview.

NameTypeReqDescription
args_summarystringShort human description of the call (URL, command, query).
metaobjectFree-form metadata stored alongside the capture.
outputstringyesFull raw output to capture.
project_rootstringOptional active project root.
session_idstringOptional session id to scope retrieval.
tool_namestringyesLogical tool name (e.g. 'Bash', 'WebFetch', 'mcp__playwright__snapshot').

No output schema declared.

No examples provided.

capture_search ~85

BM25 search across sandboxed tool outputs. Returns id, snippet, bytes.

NameTypeReqDescription
limitintegerMax rows (default 20).
project_rootstring
querystringyesFTS5 query (terms ANDed by default).
session_idstring
tool_namestringRestrict to a single source tool.

No output schema declared.

No examples provided.

checkpoint ~134

Unified checkpoint CRUD. op = create | list (default) | restore | delete | prune | compare.

NameTypeReqDescription
checkpoint_idstringFor op=restore/delete/compare: checkpoint identifier.
file_pathsarrayFor op=create: project files to snapshot.
keep_lastintegerFor op=prune: how many recent checkpoints to keep (default 10).
max_filesintegerFor op=compare: max files compared (default 20).
opstringOperation to perform (default 'list').
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

corpus_build ~70

Build a thematic corpus from observations filtered by type / tags / symbol.

NameTypeReqDescription
filter_symbolstring
filter_tagsarray
filter_typestring
namestringyesUnique per project.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

corpus_query ~68

Format all observations of a named corpus as markdown context + a question, ready for answering.

NameTypeReqDescription
namestringyesCorpus name previously built via corpus_build.
projectstringProject name/path (default: active).
questionstringyesQuestion to answer with the corpus context.

No output schema declared.

No examples provided.

detect_breaking_changes ~75

Breaking API changes vs a git ref: removed funcs/params, added required params, signature changes.

NameTypeReqDescription
projectstringProject name/path (default: active).
since_refstringGit ref to compare against (default: "HEAD~1"). Can be a commit SHA, branch, or tag.

No output schema declared.

No examples provided.

discover_project_actions ~42

Detect conventional project actions from build files (tests, lint, build, run) without executing.

NameTypeReqDescription
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

edit_lines_in_symbol ~137

Exact string-replace inside an indexed symbol's body (like Edit but symbol-scoped, no Read first needed).

NameTypeReqDescription
file_pathstringOptional file path to disambiguate symbols.
new_stringstringyesReplacement text.
old_stringstringyesExact text to find inside the symbol body (must be unique within the symbol unless replace_all=true).
projectstringProject name/path (default: active).
replace_allbooleanIf true, replace every occurrence in the symbol body (default false).
symbol_namestringyesFunction/method/class name to edit inside.

No output schema declared.

No examples provided.

find_dead_code ~76

Project-wide audit of unreferenced functions/classes (zero callers, excludes entry points, tests, route handlers).

NameTypeReqDescription
max_resultsintegerMaximum number of dead symbols to report (default: 20). Header always shows true total; raise for full audit.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

find_hotspots ~103

Rank functions by hotspot kind. complexity (all langs) | allocation (Java) | performance (Java).

NameTypeReqDescription
kindstringHotspot category (default 'complexity').
max_resultsintegerMaximum number of functions to report (default: 20).
min_scorenumberMinimum score to include (default: 0 for complexity, 1 for Java kinds).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

find_impacted_test_files ~63

Infer pytest files likely impacted by changed files or symbols.

NameTypeReqDescription
changed_filesarray
max_testsintegerDefault 20.
projectstringProject name/path (default: active).
symbol_namesarray

No output schema declared.

No examples provided.

find_import_cycles ~66

Detect import cycles (strongly-connected components) in the file-level import graph (Tarjan's).

NameTypeReqDescription
max_cyclesintegerMaximum number of cycles to return (default 20, 0 = unlimited).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

find_semantic_duplicates ~190

Find duplicate functions. method='ast' (fast, hash-based, catches copy-paste) or 'embedding' (Nomic cosine, catches conceptual clones, tagged sim=min..mean per cluster).

NameTypeReqDescription
max_groupsintegerMax duplicate groups to return (default 10). Raise for full audit.
methodstringast (default, fast, exact) or embedding (slower, catches conceptual clones). Embedding reuses the symbol_vectors index from search_codebase(semantic=True) — first call triggers a ~2min reindex.
min_linesintegerSkip functions shorter than this (default 2). Applies to method='ast'.
min_similaritynumberCosine threshold for method='embedding' (default 0.90). Lower = more recall + more noise.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

find_symbol ~186

Locate a symbol: file, line, signature, minimal preview. Searches functions and classes by default — pass kinds=["variable"] for module globals, constants, and class attributes. A miss reports which kinds were searched.

NameTypeReqDescription
compressbooleanCompact rows (default true).
hintsbooleanAdd a `_hints` key with next-step tool calls (default true).
kindsarraySymbol kinds to search. Default: function+class (plus variable when TOKEN_SAVIOR_VARIABLES=search).
levelinteger0 full, 1 no preview, 2 minimal.
namestring
namesarrayBatch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_call_chain ~99

Shortest dependency path between two symbols (BFS through the dep graph).

NameTypeReqDescription
from_namestringyesStarting symbol name.
levelintegerPer-hop verbosity: 0=full (source_preview), 1=sig+file, 2=minimal name+file+line. Default 2.
projectstringProject name/path (default: active).
to_namestringyesTarget symbol name.

No output schema declared.

No examples provided.

get_change_impact ~82

Impact analysis: direct + transitive dependents of a symbol.

NameTypeReqDescription
max_directinteger0=all.
max_total_charsintegerDefault 50000.
max_transitiveinteger0=all.
namestringyes
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_changed_symbols ~74

Symbol-level summary of worktree changes (or HEAD vs ref).

NameTypeReqDescription
max_filesintegerDefault 20.
max_symbols_per_fileintegerDefault 20.
projectstringProject name/path (default: active).
refstringCompare base (omit=worktree).

No output schema declared.

No examples provided.

get_class_source ~135

Fetch a class source body (including methods).

NameTypeReqDescription
file_pathstring
force_fullbooleanBypass symbol cache.
hintsbooleanAppend a one-line get_full_context hint (default true).
levelinteger
max_linesintegerCap lines (0=all, level=0 only).
namestring
namesarrayBatch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_classes ~116

List classes (name, lines, methods, bases, file).

NameTypeReqDescription
compressbooleanCompact rows (default true).
file_pathstringFilter to file (omit=all).
hintsbooleanAppend a `_hints` entry with next-step tool calls (default true).
max_resultsintegerDefault 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_db_schema ~107

Condensed SQL-migration snapshot: tables (cols, types, nullability, defaults), PKs, FKs, indexes, RLS policies.

NameTypeReqDescription
dialectstringSQL dialect -- currently only 'postgres' is implemented.
migrations_dirstringRelative or absolute path to the migrations directory (default: auto-detect).
projectstringProject name/path (default: active).
tablesarrayOptional filter: only return these table names.

No output schema declared.

No examples provided.

get_dependencies ~104

Outgoing deps of a symbol: what X calls/uses (downstream).

NameTypeReqDescription
compressbooleanCompact rows (default true).
depthintegerTransitive BFS depth (default 1).
max_resultsintegerDefault 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count.
namestringyes
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_dependents ~80

Incoming deps: who calls/uses X, direct references only.

NameTypeReqDescription
compressbooleanCompact rows (default true).
max_resultsinteger0=all.
max_total_charsintegerDefault 50000.
namestringyes
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_edit_context ~72

Pre-edit bundle: source + direct deps + callers + same-file siblings + impacted tests.

NameTypeReqDescription
max_callersintegerDefault 10.
max_depsintegerDefault 10.
namestringyes
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_entry_points ~61

Score functions by likelihood of being execution entry points: routes, handlers, main, exported APIs.

NameTypeReqDescription
max_resultsintegerMaximum number of entry points to return (default 20).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_env_usage ~87

Cross-reference an env var across code, .env files, and workflow configs. Shows where it's defined, read, written.

NameTypeReqDescription
max_resultsintegerMax results (0 = all, default 0).
projectstringProject name/path (default: active).
var_namestringyesEnvironment variable name (e.g. HELLOASSO_CLIENT_ID).

No output schema declared.

No examples provided.

get_feature_files ~61

Files matching a feature keyword + traced imports, classified by role (core, test, config).

NameTypeReqDescription
keywordstringyes
max_resultsinteger0=all.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_file_dependencies ~71

Files imported by this file (outgoing file-level import edges).

NameTypeReqDescription
file_pathstringyesRelative path to the file.
max_resultsintegerMaximum number of results to return (0 = unlimited, default 0).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_file_dependents ~71

Files that import this file (incoming file-level import edges).

NameTypeReqDescription
file_pathstringyesRelative path to the file.
max_resultsintegerMaximum number of results to return (0 = unlimited, default 0).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_full_context ~172

Symbol bundle: location + source + deps/dependents (depth=1) or + change_impact (depth=2).

NameTypeReqDescription
depthinteger0=symbol+source, 1=+deps/dependents (default), 2=+change_impact.
max_linesintegerCap source lines (default 200).
modestringcompact (default): source head 80 lines + deps/dependents as names only. full: raw payload.
namestringSymbol name (function, method, class).
namesarrayBatch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_function_source ~145

Fetch a function/method source body.

NameTypeReqDescription
file_pathstring
force_fullbooleanBypass symbol cache.
hintsbooleanAppend a one-line get_full_context hint (default true).
levelinteger
max_linesintegerCap lines (0=all, level=0 only).
namestringFunction or method (e.g. 'MyClass.method').
namesarrayBatch mode: list of names (max 10). Returns {name: result} dict. Mutually exclusive with 'name'.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_functions ~118

List functions in a file (file_path=...) or across the project.

NameTypeReqDescription
compressbooleanCompact rows (default true).
file_pathstringFilter to file (omit=all).
hintsbooleanAppend a `_hints` entry with next-step tool calls (default true).
max_resultsintegerDefault 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_git_status ~41

Structured git status: branch, ahead/behind, staged, unstaged, untracked.

NameTypeReqDescription
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_imports ~91

List imports (module, names, line).

NameTypeReqDescription
compressbooleanCompact rows (default true).
file_pathstringFilter to file (omit=all).
max_resultsintegerDefault 100. 0=unlimited. Truncated results carry a trailing `_truncated` marker with total count.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_project_summary ~38

Project overview: file count, packages, top classes/functions, infra dirs.

NameTypeReqDescription
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_routes ~64

Detect API routes and pages in a Next.js App Router project: path, file, HTTP methods, type.

NameTypeReqDescription
max_resultsintegerMax routes to return (0 = all, default 0).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_stats ~116

Unified stats dispatcher. category = usage (default) | session_budget | tca | dcp | linucb | warmstart | leiden | speculation | lattice.

NameTypeReqDescription
budget_tokensintegerFor category=session_budget: soft budget cap (default 200000).
categorystringWhich stats subsystem to report (default 'usage').
context_typestringFor category=lattice: filter to one context (navigation/edit/review/unknown).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

get_structure_summary ~67

Structure of one file (functions, classes, imports, line counts), or project-wide if file omitted.

NameTypeReqDescription
file_pathstringRelative path to a file in the project. Omit for project-level summary.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

insert_near_symbol ~73

Insert content before or after an indexed symbol.

NameTypeReqDescription
contentstringyes
file_pathstring
positionstring'before' or 'after' (default after).
projectstringProject name/path (default: active).
symbol_namestringyes

No output schema declared.

No examples provided.

list_files ~69

List indexed files, optionally filtered by glob.

NameTypeReqDescription
max_resultsintegerMaximum number of results to return (0 = unlimited, default 0).
patternstringGlob pattern to filter files (uses fnmatch).
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

list_projects ~17

List all registered workspace projects with index status.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

memory_admin ~100

Single dispatch for all memory admin / maintenance ops (status, doctor, dedup_sweep, distill, roi_gc, consistency, vector_reindex, etc.).

NameTypeReqDescription
dry_runbooleanPreview-only mode for sweeps/garbage collectors.
limitintegerPagination/limit (where applicable).
opstringyesWhich memory-admin sub-operation to run.
project_rootstringFilter by project (where applicable).

No output schema declared.

No examples provided.

memory_delete ~45

Soft-delete an observation by ID (sets archived=1).

NameTypeReqDescription
idintegeryesObservation ID to archive.
projectstringProject name/path (default: active).

No output schema declared.

No examples provided.

Common questions

What is the io.github.Mibayy/token-savior MCP server?

io.github.Mibayy/token-savior is an MCP server listed in the public MCP registry as io.github.Mibayy/token-savior. Structural codebase MCP server with persistent memory: navigate by symbol, recall across sessions. This page covers its PyPI package (token-savior-recall).

Is the io.github.Mibayy/token-savior MCP server safe to use?

io.github.Mibayy/token-savior scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 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.Mibayy/token-savior MCP server expose?

io.github.Mibayy/token-savior exposes 69 tools: list_projects, switch_project, get_git_status, get_changed_symbols, build_commit_summary, and 64 more. Their descriptions and schemas cost roughly 6,320 tokens of context every time the server is loaded.

Is the io.github.Mibayy/token-savior MCP server still maintained?

io.github.Mibayy/token-savior is still listed as active in the MCP registry. We last reached this channel on 21 September 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.Mibayy/token-savior MCP server under?

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