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

coldstart

NPM · @CSTART/COLDSTART · SCANNED AUG 3

Codebase memory for AI agents: an AST index plus agent-written notes that self-stale.

Available components

+53 this week 76 Trust /100
Trust breakdown (6 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 →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (108 of 112), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (108 of 112), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to AkashGoenka/coldstart). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability56
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3384 tokens (~423/item across 8 items; 8 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 Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @cstart/coldstart

# add to Claude Code
claude mcp add akashgoenka-coldstart -- npx -y @cstart/coldstart
# add to Codex CLI
codex mcp add akashgoenka-coldstart -- npx -y @cstart/coldstart
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "akashgoenka-coldstart": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@cstart/coldstart"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add akashgoenka-coldstart --command npx --arg -y --arg @cstart/coldstart
# ~/.hermes/config.yaml
mcp_servers:
  akashgoenka-coldstart:
    command: "npx"
    args: ["-y", "@cstart/coldstart"]
// mcp.json
{
  "mcpServers": {
    "akashgoenka-coldstart": {
      "command": "npx",
      "args": [
        "-y",
        "@cstart/coldstart"
      ]
    }
  }
}
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.

  • 3 Aug 26 +1

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

  • 2 Aug 26 +10
    • Provenance: pass → unverified security
    • Known CVEs: partial → unverified security
    • Malware scan: pass → unverified security
    • Install scripts: pass → unverified security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • The attested source repository moved: AkashGoenka/coldstart security
    • Schema quality: 2710 → 3384 functional
    • Capabilities: pass → unverified functional
    • License: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Dependency health: partial → unverified functional
    • Maintenance: pass → unverified functional
    • Stability: unverified → 0.23 functional
    • Schema quality: unverified → excellent functional
    • Licence: MIT functional
    • Package version: 2.2.8 → 2.2.12 functional
  • 1 Aug 26 +43
    • Malware scan: unverified → pass security
    • Install scripts: unverified → pass security
    • Provenance: unverified → pass security
    • Known CVEs: unverified → partial security
    • The attested source repository moved: AkashGoenka/coldstart security
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • Licence: MIT functional
  • 31 Jul 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +15
    • Dependency health: partial → unverified functional
    • Tool coverage: unverified → 100 functional
  • 28 Jul 26 −15
    • Tool coverage: 100 → unverified functional
    • Dependency health: unverified → partial functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 23

    First indexed and scored.

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 3 Aug 2026 · Analysed npm/@cstart/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
AkashGoenka/coldstart
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/AkashGoenka/coldstart/.github/workflows/npm-publish.yml@refs/tags/v2.2.12
Rekor log index:
2326814024
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:82f792da807a371b33b92c04e25ad778a52ebf6c9303105020f5349c6b33892bd2211a7dbf8e6ab68c3f5522cd312eb57256986fd2c5695c66769c271
Discovery method:
attestation_endpoint
Dependencies 108 packages

108 packages in the resolved dependency tree · 108 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 8 exposed · ~3,192 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.

Tool Tokens
find ~464

Locate the files relevant to a task. Pass `query` = EVERY salient identifier from the task (symbol names, domain nouns, the rare token you half-remember) — not one distilled keyword. Recall is bounded by the terms you give: a one-token query cannot out-rank lookalikes, so over-supply rather than under-supply. Reach for find BEFORE Read/Grep/Glob. HOW IT WORKS: find greps every term across the repo body AND matches declared names (filenames, path segments, exported symbols), then ranks files by DISTINCT-TERM COVERAGE — the file that covers MORE of your query rises above its lookalikes. This catches body-level matches (nested defs, dynamic refs, string literals) that a declared-name index misses. OUTPUT: a ranked page. Top files get an inline preview — their indexed symbols (with line ranges) plus the body lines where your rare terms CLUSTER (def/class/assignment lines first), so you often answer WITHOUT a follow-up Read. Lower-ranked files list as bare paths. Prose/doc and stylesheet matches are partitioned into secondary lists so they do not crowd out source. Related files (sharing a rare identifier with a top hit, no import edge between them) are surfaced as first-class neighbors. NAMING: case- and separator-insensitive (`LoadStaging` ≡ `load_staging`). It does NOT expand synonyms or plurals for you — that is your job: if the concept could be named two ways, pass both tokens. AFTER THE RESULT: 1. A path + its inline symbols/preview answer the question → done, no Read needed. 2. Path looks right but you need shape/usage → `gs` on it (symbols + imports + per-symbol callers + importers in one shot). 3. "no indexed file contains any of [...]" → those identifiers do not exist in the repo; reformulate or grep for a phrase/regex find cannot index. Do not grep spelling variants of a token find already reported absent.

NameTypeReqDescription
querystringyesSpace-separated identifiers for the thing you are looking for — pass every salient token from the task, not one keyword. camelCase/snake_case both accepted. More discriminating tokens = sharper ranki…

No output schema declared.

No examples provided.

gs ~939

Drill into a known file. Returns these sections as compact text: - Symbols — top-level + per-class methods (name, kind, line range, extends/implements). With cross-file callers attached per exported symbol (inline if 1 caller; newline-per-caller block if ≥2). For huge files (>20 symbols, no `match`), symbols are reordered by caller count (most-used first) and truncated to top 15. - Imports — 1-hop internal outbound dependencies (library imports stripped). - Importers — 1-hop reverse: files in this repo that import this one. With `match`, additionally lists EVERY indexed file (importer or not, any language) whose CONTENT references the matched term even when its filename does not (a registry, admin, or config file using the symbol — or a frontend file referencing a backend name). That subsection IS the complete "who uses <symbol>" answer: it is exhaustive over indexed content, so a subsystem absent from it does NOT use the symbol — do not grep to enumerate or re-verify use-sites, and do not keep hunting in subsystems the section rules out. - Related — files sharing rare identifier/string-literal tokens with this file (with `match`: with the matched symbols' code region), shown only when NO import edge connects them. These are name-reference relations the import graph cannot see — Django migrations↔models, config-by-name registration, cross-language (JS↔Python) pairs. Treat them as first-class neighbors: the shared token shown is the reason they are related. Use this AFTER find surfaces a candidate file. This is the right tool for "who uses this file" / "who calls this symbol" — no separate call needed. `view` controls which sections you get (default `full` = all four). `symbols`, `imports`, `importers`, `callers` each return one section in isolation when you want a byte-light answer. For god-files (large classes, large routers, large config modules), pass `match` to filter symbols/imports/importers/callers to one area — e.g. `match: "auth"` or `match: "/^handle/"`…

NameTypeReqDescription
file_pathstringyesRelative path to the file (e.g. "src/auth/service.ts"). Suffix matches are accepted.
matchstringFilter all sections by name. Substring (case-insensitive) by default; use `|` to OR substrings (`match: "resource|tile"`); wrap in slashes for regex (`match: "/^handle/"`). Use this on large/god-file…
symbolstringDeliver the BODY of the named symbol(s) inline, sliced from their indexed line range — so you read a method WITHOUT a Read at a guessed offset. Comma/pipe-separate names (`serialize,restore_state`).…
viewstringWhich sections to return. Default "full" = symbols (with inline callers) + imports + importers. Use one of the narrower views to halve or quarter the output when you know what you need: "symbols" (sh…

No output schema declared.

No examples provided.

kb_lookup ~256

Read everything the NOTEBOOK knows at ONE exact address — the file you are about to edit. Address-keyed, not concept-keyed: unlike kb_search (fuzzy, ranked), this filters notes by exact anchor path, so it is exhaustive at that path. Returns the file note's facets, every cross-file flow that passes THROUGH this file, and lessons/absences anchored here — each with a live freshness stamp against the current code. Reach for this the moment you have DECIDED on a file and are about to modify it: it surfaces the flow you might break, the absence you are about to violate, the rationale for the code's shape. A clean result ("nothing known here") is itself a positive signal — proceed. Anything marked [evidence changed: <path>] drifted since it was verified; re-verify before relying on it, and correct the note with kb_write if it proved wrong. Pass an optional `symbol` to narrow to one top-level symbol at that path.

NameTypeReqDescription
pathstringyesExact repo-relative path of the file (e.g. "src/auth/service.ts").
symbolstringOptional top-level symbol name to narrow the lookup to notes anchored at that symbol.

No output schema declared.

No examples provided.

kb_repair ~170

List the notebook notes that are WRITTEN BUT UNFINDABLE — missing the fields a note cannot be retrieved without (identityAliases, anchor symbols, a flow's verified paths). Notes written before those fields were required are correct but unreachable, and this is how they get found. Returns a worklist, never a change: repairing is your work, because every gap needs a judgement about the code (which words a reader would search for, which symbols the note is actually about, which files you can honestly claim to have read). Fix each one with kb_write, passing the note's `id` — fields merge, so nothing already in the note is lost. A clean notebook returns "Nothing to repair here." Run it when the user asks to repair, fix, or clean up the notebook.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

kb_repair_aliases ~244

List file/flow notes whose identityAliases may no longer describe them — a DIFFERENT problem from kb_repair: that one finds notes with NO aliases at all, this one is for aliases that exist but have gone stale (a note rewritten several times can carry words that were really symptoms of an earlier write, not stable facts). Paginated 10 notes at a time. Each entry shows the current (capped) identityAliases AND the full historical union hidden past the render cap — read both before retracting anything, because dropping a visible alias can resurface an older hidden one on the next fold. Re-read the note's code, then reconcile via kb_write (retract stale entries, re-put the rest) — never mechanically, every judgement needs the current code. Returns "No file/flow notes to reconcile." when done. If the response includes `more`, call again with `offset` set to `more.nextOffset` for the next batch.

NameTypeReqDescription
limitnumberNotes per page. Defaults to 10.
offsetnumberPagination offset (0-based). Use `more.nextOffset` from the previous response to continue.

No output schema declared.

No examples provided.

kb_search ~227

Search the repo's NOTEBOOK — durable notes past agents wrote after finishing tasks here (file purposes, cross-file flows, traps/lessons, established absences). Try this BEFORE find when the task might have been seen before: a hit can answer outright or point straight at the right files, skipping a search. Pass plain task words (symptoms work: "logout loop after refresh"), symbol names, or file names. Results are inlined in full with a freshness stamp computed against the CURRENT code: [fresh] = the cited file is byte-identical to when the note was verified; [evidence changed: <path>] = that file drifted since — re-verify before relying on it (and correct the note if it proved wrong: `coldstart kb write`). Absence notes ("there is no X") are re-checked live. No hits or an empty notebook → fall through to find, no tax.

NameTypeReqDescription
querystringyesPlain task words, symptoms, symbol names, or file names. Same over-supply rule as find: pass every salient token.

No output schema declared.

No examples provided.

kb_status ~120

Notebook overview: how many notes exist (by type: file/flow/lesson), how many are flagged stale (their anchored files drifted since verification), and how many are superseded/retracted. Pass `paths` (array of repo-relative paths) to instead list the notes anchored at each of those exact paths with their freshness state — a quick "is anything known here?" check across several files at once.

NameTypeReqDescription
pathsarrayOptional repo-relative paths. When given, returns per-path anchored notes + freshness instead of the whole-notebook overview.

No output schema declared.

No examples provided.

kb_write ~772

Save or correct a NOTEBOOK note after finishing real work here — you have the files in context, so no future agent is better placed to record what you learned. Write a file note (what a file is for), a flow note (how a task spans files), or an absence lesson (a confirmed "there is no X"). Also the tool to FIX or RETRACT a note you used that proved wrong (`op: "put"` replaces, `op: "retract"` removes). TWO-PHASE reuse gate: a flow/lesson `spec` sent WITHOUT an `id` first searches the notebook for the same concept. If plausible matches exist, kb_write returns `{status:"candidates", candidates:[...]}` INSTEAD of writing — re-call with `into: "<id>"` to merge into an existing note, or `is_new: true` to declare a genuinely new one. This makes note identity reliable (matching, not guessing an exact title). File notes skip the gate (id derives from the path). The `spec` shape: `type` ("file"|"flow"|"lesson", or sugar "file-hub"/"file-single"), `title`, `summary`, `anchors` ([{path, symbols?}] — the addresses the note is about, which drive freshness), plus type-specific fields (file: facets/character; flow: steps/verified; lesson: kind:"absence"/scope/body). Call with NO arguments to get the full spec guide. REQUIRED for the note to be findable at all — file-single: identityAliases + anchors[].symbols; file-hub: identityAliases + facets[].symbol; flow: identityAliases + steps + verified; lesson: scope.terms. A note missing these is written but unreachable: identityAliases are the only STABLE search surface besides the exact title (incidentAliases are optional — symptom words for a write that describes one, replaced by the next such write, never required), and anchor symbols are the only channel that answers a query typed as an identifier. This tool WRITES to the repo notebook; it never commits to git — publishing notes is a human-only step (`coldstart kb commit`).

NameTypeReqDescription
intostringPhase-2 answer: merge this write into the existing note with this id (from a prior `candidates` response).
is_newbooleanPhase-2 answer: declare this a genuinely new concept, bypassing the candidate matches from a prior `candidates` response.
sessionstringOptional session id (given in a capture prompt). Enables the flow-evidence check: a flow whose step files this session never actually read gets a warning.
specobjectThe note spec (JSON object). Fields: type, title, summary, identityAliases (stable — unions forever), incidentAliases (this write's symptom words — replaced by the next write that changes summary/bod…

No output schema declared.

No examples provided.