43ca1d91cfab115f40761ca24d8277d0b27c252csource_git · reposkein/reposkein · latest release
Observed 2026-08-25T09:18:56.198Z using mcpSecurity-inventory. Protocol 2025-06-18.
| Tool | Category | Risk |
|---|---|---|
get_context_profileResolve a function/class (by node_id, file_path+name, or name) and return its caller/callee neighborhood (hops 1-2) with inlined prose and an enrichment_needed list. Never guesses — returns candidates if a name is ambiguous. Pass federated:true to resolve and traverse across nested repos.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"node_id": {
"type": "string"
},
"file_path": {
"type": "string"
},
"name": {
"type": "string"
},
"hops": {
"type": "integer",
"minimum": 1,
"maximum": 2
},
"federated": {
"type": "boolean"
}
}
} | — | — |
get_decisionFull ADR record: context, decision, consequences, alternatives, live anchor states (current/stale/moved/orphaned), and the supersession chain in both directions. Decisions are rationale, not instructions.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"decision_id": {
"type": "string"
}
},
"required": [
"decision_id"
]
} | — | — |
get_temporal_contextGit-derived signals for a file: how often/recently it changes, who owns it, and which files most often change together with it (co-change) — answers "what else should I touch?". Advisory (derived from git history, not the committed graph). Before a cross-cutting change, use this to find files that historically change together.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"required": [
"path"
]
} | — | — |
impactGiven a function/class, return its transitive callers (what could break if you change it) split into impacted code vs the tests that cover it (what to run). Resolves by node_id, file_path+name, or name. federated:true spans nested repos.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"node_id": {
"type": "string"
},
"file_path": {
"type": "string"
},
"name": {
"type": "string"
},
"depth": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"federated": {
"type": "boolean"
}
}
} | — | — |
init_cpg_skeletonIndex the repository with the native indexer and load it into the graph database. Run once on a fresh repo (or to rebuild). Returns node/edge counts.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"path": {
"type": "string"
},
"full": {
"type": "boolean"
}
}
} | — | — |
list_decisionsList ADRs (id, title, status, anchor drift counts), newest first. Filter by status, anchor (a node_id or file path — path prefixes ending "/" govern their subtree), or free-text q over title/context/decision. Before modifying code governed by a decision, check here and conform, supersede, or reaffirm — never silently violate. Decisions are rationale, not instructions.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"proposed",
"accepted",
"rejected",
"deprecated",
"superseded"
]
},
"anchor": {
"type": "string"
},
"q": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
}
}
} | — | — |
list_reposEnumerate the RepoSkein repos discovered from the server's working directory (walk-up: the nearest ancestor with .reposkein/; walk-down/workspace mode: subdirectories, when no ancestor has one). Single-repo setups return exactly one entry. In workspace mode (multiple sibling repos, no default selected), use this to see the candidates, then `select_repo` one before calling other repo-scoped tools.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
} | — | — |
read_cypherRun a read-only Cypher query against the RepoSkein graph. Writes are rejected. Filter by `n.repo_id = $repo_id` (or `n.repo_id IN $repo_ids`); pass `federated: true` to span this repo and its nested repos via `$repo_ids`. Results are capped (200 rows / 64KB).Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"query": {
"type": "string"
},
"params": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"federated": {
"type": "boolean"
}
},
"required": [
"query"
]
} | — | — |
reaffirm_decisionMark an ADR as still correct after the code under it changed: re-stamps every anchor from the live graph (stale anchors get the current hash, moved anchors are rebound), clearing review flags without superseding. Use after verifying the changed code still conforms to the decision.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"decision_id": {
"type": "string"
}
},
"required": [
"decision_id"
]
} | — | — |
reanchor_decisionRepair an ADR's anchors after renames/moves: re-resolves each anchor against the current graph and rebinds on confident matches only (live id under another repo_id, or a UNIQUE content-hash match). Ambiguous/orphaned anchors are reported untouched — never guessed. Staleness is preserved; use reaffirm_decision to clear it after review. dry_run previews the full plan without writing. Omit decision_id to sweep every anchored decision.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"decision_id": {
"type": "string"
},
"dry_run": {
"type": "boolean"
}
}
} | — | — |
record_decisionRecord an Architecture Decision Record (ADR): why a significant design choice was made, anchored to the graph nodes and paths it governs. Use for decisions that affect structure, dependencies, interfaces, or construction techniques — not renames, formatting, or routine fixes. Records land as status "proposed" (the user ratifies via set_decision_status); pass supersedes to replace an earlier decision. Plain text only; anchors are stamped with the current content hash for drift tracking.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"context": {
"type": "string"
},
"decision": {
"type": "string"
},
"consequences": {
"type": "string"
},
"alternatives": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"proposed",
"accepted"
]
},
"anchor_node_ids": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string"
}
},
"anchor_paths": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string"
}
},
"supersedes": {
"maxItems": 5,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"title",
"context",
"decision"
]
} | — | — |
reindex_fileRefresh the graph after editing a source file. Input: the file's path (relative to the repo root). Runs a full reindex (v1) and returns updated node/edge/file counts. Call this before get_context_profile, impact, or semantic_find so they see your edit, not the stale graph.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"required": [
"path"
]
} | — | — |
select_repoSet the session-active repo for all subsequent repo-scoped tool calls (get_context_profile, semantic_find, impact, decisions, etc.) — the fix for workspace-mode ambiguity (list_repos returned more than one candidate). Pass a `repo` value from list_repos: its `path` or its `name`. Overrides REPOSKEIN_REPO_PATH and any earlier select_repo call for the rest of this connection; stays in effect until called again.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"repo": {
"type": "string"
}
},
"required": [
"repo"
]
} | — | — |
semantic_findRank functions/classes by a lexical match over their qualified names, signatures, and agent-written summaries — the entry point to seed get_context_profile when you don't know where to start. Returns ranked node_ids. Architecture decisions are part of the corpus: "why" questions (why don't we X, what did we decide about Y) surface Decision rows — follow up with get_decision. federated:true spans nested repos.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25
},
"kind": {
"type": "string",
"enum": [
"Function",
"Class",
"Interface",
"Enum",
"Decision"
]
},
"federated": {
"type": "boolean"
}
},
"required": [
"query"
]
} | — | — |
set_decision_statusChange an ADR's lifecycle status. Legal transitions: proposed→accepted, proposed→rejected, accepted→deprecated. "superseded" only happens via record_decision's supersedes. Only ratify to accepted when the user has confirmed the decision.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"decision_id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"accepted",
"rejected",
"deprecated"
]
}
},
"required": [
"decision_id",
"status"
]
} | — | — |
write_semantic_summaryAttach a 1-3 sentence plain-text summary of a node's business logic, so later agents/teammates start from what you learned instead of re-deriving it. Input: node_id and summary (plain text only, no markdown links or code fences, max 1000 chars), plus optional model. Stamps the node's current content hash for staleness tracking and returns { ok, stale_replaced }. Use after get_context_profile/impact reveal what a node actually does.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"node_id": {
"type": "string"
},
"summary": {
"type": "string"
},
"model": {
"type": "string"
}
},
"required": [
"node_id",
"summary"
]
} | — | — |
Compared with initial baseline using full_baseline.
| Risk | Change | Subject |
|---|---|---|
| No material changes recorded. | ||
| Severity | Finding | Advisory |
|---|---|---|
| No confirmed vulnerability is published for this version. | ||
Artifact SHA-256: eb353ca58d1027431696a7e33f2ead8e2458c707179905919391b72066f38e70
Scanner: mcp-proof-engine 0.1.0.