{"name":"io.github.davesheffer/hunch","slug":"davesheffer-hunch","title":null,"description":"Shared records for AI agents: engineering decisions, bug history, rules, and work state through MCP.","url":"https://mcp.market/server/davesheffer-hunch","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":45,"stars":10,"forks":1,"downloads_week":2483,"last_push_at":"2026-09-19T20:58:46.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/davesheffer/hunch","website":"https://www.hunchmemory.com","version":"1.38.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@davesheffer/hunch","version":"1.38.1","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"Start the Hunch MCP server (stdio) for the current repository.","value":"mcp","type":"positional"}]}],"tools":[{"name":"hunch_blast_radius","description":"Given a file you're about to change, return its dependency blast radius (files whose code depends on it) AND any invariants reached THROUGH that radius — 'near-violations' you could break indirectly without touching their own scope. Call before editing a widely-depended-on file. Mirrors `hunch check --blast`. Not for a bare dependent list (hunch_get_dependents) or constraints scoped to the target ","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_bug_lineage","description":"Given a symptom description or a symbol, return matching bugs with their lineage (introduced → fixed → recurrence) so the agent doesn't re-discover past root causes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_capture_decision","description":"Start a decision-capture interview: returns the grilling protocol (interrogate ONE question at a time until the decision tree is resolved) plus a capture-session token. Grill the human, then commit via hunch_record_decision with the token + confirmed topic. Use for '/capture', 'record this decision', 'grill me on this'. The token proves the write is the tail of an interview, not a silent guess. Re","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_change_identity","description":"Content-address the exact Git tree delta between two revisions. Commit messages, authors and squash metadata do not affect the identity; whitespace, paths, modes and blob bytes do. Read-only and deterministic.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_change_proof","description":"Bind an exact committed Git transition to its change identity, Project DNA, base/result semantic graphs, current decisions and constraints, blast radius, conformance, guard verdict, and explicit gaps. Read-only and deterministic; grants no execution, CI, deployment, merge, ranking, promotion, or policy authority. Needs two committed refs. Not for a verdict on staged work (hunch_merge_verdict) or a","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_check_constraints","description":"Return constraints whose scope matches a glob/path, sorted by severity. Call this BEFORE editing code to avoid breaking intentional invariants. Returns each constraint's id, severity, enforcement, statement, and rationale. Not for who-depends-on-this (hunch_get_dependents) or invariants reachable only through dependents (hunch_blast_radius).","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_compare","description":"Given several candidate branches/commits (e.g. N solutions to one task), replay each against engineering memory and RANK them best-fit first — the candidate that trips the fewest in-force invariants, reverses no decisions, and adds the least sprawl wins. Deterministic (the same merge-verdict per candidate, no LLM). Use to choose among multiple solutions before committing to one.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_conformance","description":"Intent-conformance (the inversion of a normal guard): for every in-force decision carrying a conformance predicate, deterministically verify the CODE still satisfies its intent over the dependency graph — e.g. 'pay still reaches verifySession'. Returns the violations: intent the code has silently drifted away from, with NO diff required. Run before a refactor or merge to catch intent erosion a dif","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_behavior_candidates","description":"Derive a bounded private review packet from human-grounded rejected structural proxies and newly added literal node:test cases in their exact fixing commits. Read-only: candidates remain unselected and create no policy, corpus, proof, authority, warning, or block.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_behavior_materialization","description":"Bind the complete current private behavior review and exact selected attestations, then report whether their durable meanings are expressible by the supported Policy IR. Read-only and fail-closed: unsupported behavior creates no policy, corpus, plan, proof, authority, warning, or block.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_behavior_policy_materialize","description":"Materialize every current exact selected behavior attestation into a separate private Policy IR v2 proposal, exact corpus and plan, and P3 executable proof. Writes private non-authoritative artifacts only; activation remains a separate explicit human action.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_behavior_replay","description":"Execute one exact behavior candidate without a shell in disposable known-bad and known-good worktrees, transplanting the hash-bound known-good test file into both. Diagnostic only: writes no Constitution artifact and grants no policy or G2 authority.","write_action":true,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_candidates","description":"Return a bounded private review packet of exact structural candidates from fix-labeled git history, including the current append-only human selection/rejection when present. Read-only: proposed before/after corpus refs are not replayed evidence, and the tool creates no attestation, policy, proof, corpus, authority, warning, or block.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_operational_drill","description":"Execute the selected private G2 runbook's exact safety regression and return a content-addressed hash-only receipt. Diagnostic only: it writes no rehearsal or shadow evidence, grants no authority, and never signs off G2.","write_action":true,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_readiness","description":"Return the exact private G2 dogfood evidence packet: human-selected policies, bound proof/corpus/shadow evidence, operational runbook rehearsals, and blockers. Read-only; it never creates evidence, signs off G2, activates policy, warns, or blocks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g2_shadow_queue","description":"Return a bounded private queue of exact-current-proof G2 shadow violations that still require human classification. Read-only; it never records an observation or disposition, changes lifecycle, grants authority, warns, or blocks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_constitution_g3_readiness","description":"Return the exact private G3 advisory packet: human-selected policies and clients, immutable experiment preregistrations, proof-card comprehension/review measurements, executable adapter conformance, scorecard, and blockers. Read-only; it never records evidence, activates policy, or signs off G3.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_context","description":"Given a file, symbol, or task phrase you're about to work on, return the MINIMAL relevant memory — invariants to preserve, decisions explaining the design, bug history not to reintroduce, and the blast radius — as a compact brief. Call this FIRST when starting work on something. A task phrase that resolves to no file/symbol falls back to the closest graph matches. Returns a budgeted brief plus a d","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_current_decision","description":"Decision-grounding: return the single CURRENT (accepted, non-superseded) decision anchored to a topic — the authoritative answer a doc or diff is checked against, plus what it rejected. A shared-store miss is confirmed against fresh team memory before Hunch says the topic has no current decision. If freshness is unavailable, or a topic has an unresolved collision (>1 live), it injects nothing (fai","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_escalations","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_evidence_map","description":"Compile supplied red-target/green-control, execution, and intervention observations into a bounded read-only evidence map. Useful for bugs, regressions, design invariants, and any other testable behavior. This tool executes no code, mutates nothing, and never converts behavioral influence into an exact correction-owner claim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_findings","description":"List LIVE findings (observed gaps/debt with no fix yet — triage open/accepted-risk/scheduled) concerning a file, glob, or symbol; omit scope for the whole ledger. Call before planning work in an area to inherit past audits instead of re-discovering them. Advisory; resolved/stale findings are excluded unless all:true. Not for invariants (hunch_check_constraints) or bug history (hunch_bug_lineage): ","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_get_dependents","description":"Return everything that transitively depends on a symbol/component (callers + dependent components) so a change's blast radius is known before editing. Returns dependents nearest first with depth and edge kind. Not for the invariants those dependents carry (hunch_blast_radius) or constraints on the target itself (hunch_check_constraints).","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_merge_verdict","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_now","description":"What just happened and what's next, straight from the graph: the last N decisions, the ROADMAP, and any inline human question such as an imported ADR awaiting explicit approve/decline. Call at session start to orient, or before planning what to work on. Same data as the wiki's now.md. Public store only, EXCEPT a queued commit-repair's liveness is checked against the full store (so a private-overla","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_path","description":"How does A reach B? Returns the shortest chain of call/import/dependency/contains edges connecting two symbols, files, or components — walked in either direction. Use to understand coupling before a refactor, to verify the actual route behind a must-reach invariant, or to explain why editing A shows up in B's blast radius. Deterministic, read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_candidates","description":"List compiled/proposed deterministic Policy IR candidates. Read-only; candidates carry no authority and cannot block. Uses the same Git-native policy store for every MCP client.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_card","description":"Return the deterministic proof-card view for a policy: exact assertion/scope, raw evidence vector, uncertainty, blocking readiness, authority, limitations, and next actions. Read-only and grants no authority.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_evaluate","description":"Evaluate one or all deterministic Policy IR records and return canonical neutral receipts (satisfied, violated, not_applicable, unknown, error). This is the same evaluator used by CLI and strict CI; models never decide the verdict.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_plan","description":"Return the canonical Git-native ProofPlan for a policy candidate: immutable source/current commits, known-good/bad corpus, mutation operators, expectations, and budgets. Planning executes no replay, model, test, or authority transition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_proof","description":"Return the full content-addressed proof artifact for a policy. Read-only; exposes baseline, mutations, proof class, artifact hashes, and limitations without changing authority.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_shadow","description":"Return the append-only shadow evaluation ledger, current human dispositions, raw precision counts, unknown/error rate, thresholds, and P4-review recommendation for one policy. Read-only: it never records a sample, changes lifecycle, activates, warns, or blocks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_policy_upgrade_correction","description":"Upgrade the exact supported static ESM import-declaration package projection of one captured correction into a deterministic review packet when the baseline is clean. Writes proposal, plan, proof, and evidence artifacts only; never activates, warns, blocks, or grants authority. Unsupported corrections keep their immediate legacy guard and create no policy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_pr_impact","description":"Given a change (staged, working tree, a branch vs base, or a single commit), return its IMPACT SURFACE: the files whose code transitively depends on the changed files, the invariants directly in scope and those reached via blast radius, and the recorded decisions concerning the touched files. Read-only and advisory — use hunch_merge_verdict for the gate. Call before review to know what a PR can br","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_project_dna","description":"Derive a bounded, deterministic profile of how this repository communicates, reviews, and builds from one exact committed revision. Read-only: observations remain advisory and are never adopted into graph authority automatically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_project_dna_delta","description":"Return a sealed, explainable delta between two immutable Project DNA profiles. Read-only: reports observation drift and never rewrites history or graph authority.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_project_match","description":"Explainably score a commit subject, PR, issue, or message using only deterministic checks supported by an exact-revision Project DNA profile. Advisory: never changes policy or enforcement authority.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_query","description":"Full-text + graph search across the engineering memory (decisions, bugs, constraints, components, symbols). Returns ranked records with provenance. Use this to ask 'why' questions about the codebase. Not for orienting on a known file or symbol (hunch_context / hunch_why give the curated slice with its blast radius) or for finding where code lives (hunch_structure).","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_record_correction","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_record_decision","description":"Persist a new Decision (ADR) into Hunch with provenance. Use after making a non-trivial design choice so future sessions are grounded in it. Set private:true to keep a SENSITIVE decision out of a (possibly public) repo — it is written to the HUNCH_PRIVATE_DIR overlay store and stays queryable locally, never committed here. Returns the stored id, home, and status. Not for a rule the agent must obey","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_record_finding","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_report","description":"Read task reports: exact delivered memory, agent-reported applications, observed command results and explicit unknowns, as a bounded summary (identities and verdicts, not envelope text; the full report is `hunch report <id> --json`). Supply lesson for exact revision history across tasks. With neither task_id nor lesson, lists recent tasks without guessing which is yours. html writes a local privat","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_review_imported_adr","description":"Use ONLY after the human explicitly answers the currently surfaced imported-ADR question with approve or decline in this conversation. Never infer approval from silence, continued work, a generic earlier sign-off, or the ADR file's own status. The source and review hashes bind the answer to both the exact bytes and mapped meaning shown. Approve grants human-confirmed authority; decline records rev","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_runbook","description":"Look up the proven 'how-to' (ordered steps + files) for a recurring task — runbook-SCOPED retrieval (searches within runbooks, not the whole graph). Use at the START of a task to reuse a known procedure instead of re-deriving it. Advisory. Not for design rationale (hunch_why) or free-text memory search (hunch_query).","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_shortlist","description":"Experimental, deterministic, read-only repository-adaptive diagnostic for a schema/validation issue or reproduction. Preserves a flat top five, adds a transfer-tested hierarchical inspection view, and emits an efficiency-tested advisory progressive inspection queue capped at eleven declarations with deterministic receipts. Optional authenticated same-claim evidence is annotated but cannot reorder ","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_structure","description":"Orient WITHOUT grep/glob rounds: the graph already holds the repo's structure. No target → repo map (components + directories by symbol weight). A directory → its files with their symbols. A file → its outline (symbols, fan-in/out, callers). An exact symbol name → its definition site(s) with one-hop neighbors. Call this FIRST when exploring unfamiliar code — it tells you exactly which file to read","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_task","description":"Start once per user task; pass the returned task_id to hunch_context. Finish before your final response and include the returned concise contribution card, without asking the user. Applications are explicitly agent-reported and must name an exact delivered occurrence and record hash. Completion never implies successful verification. Not for storing decisions or claiming tests passed; use the CLI t","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_timeline","description":"Time-travel: the decisions touching a file/symbol over time — what was believed, its valid-time window, and what superseded it. Use to understand how (and why) the design changed, and to avoid re-introducing a deliberately-retired approach.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_why","description":"Return the decisions, bugs, and constraints that explain a file path or symbol — the 'why' and the 'what must not break', with evidence. Pass `as_of` (a commit/tag/branch) to time-travel: see what was believed at that point in history. Use when you need the full rationale for ONE target. Not for a budgeted task brief (hunch_context), keyword search (hunch_query), or where-is-it questions (hunch_st","write_action":false,"price_micros":0,"input_schema":null},{"name":"hunch_wiki_status","description":"Which generated wiki pages are fresh vs stale (graph moved, source doc changed, hand-edited), plus the specs ledger's doc grades. Call before trusting wiki pages or when deciding whether `hunch wiki --heal` is needed. Public home only — the private overlay wiki is a local concern.","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_capabilities","description":"Negotiate before depending on anything: returns the contract version, the capability list (verbs + record schemas), the repository partition this store serves, and which partition kinds it can hold. A capability you need that is missing here is a typed refusal on use, never a degraded answer.","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_capture","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_capture_batch","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_read","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_records","description":"Fetch state records by id (from a subscribe event, a read ref, or a write result). Every id is accounted for: found (with its facet), denied (its scope is outside your grants — named, never described) or missing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_subscribe","description":"Return the change events for a scope with seq > after_seq, strictly ordered. Unfiltered, the events are contiguous (a gap means resynchronize); with facets/subjects filters the response is a subsequence and head_seq is still your next cursor. Each event names the record, its hash, what changed, what it invalidates, and the cause.","write_action":false,"price_micros":0,"input_schema":null},{"name":"nuryel_write","description":"","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-19T21:08:09.772Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:08:09.708Z","components":{"code":{"score":20,"max":25,"notes":["454 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/cli/index.js: …); } store.close(); }); // ---- eval (retrieval quality; measures the graph-st…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@davesheffer/hunch","version":"1.38.1","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":11,"publishedAt":"2026-09-16T15:13:17.796Z","repositoryUrl":"git+https://github.com/davesheffer/hunch.git","weeklyDownloads":2483}],"repo":{"found":true,"owner":"davesheffer","repo":"hunch","archived":false,"pushedAt":"2026-09-19T20:58:46Z","stars":10,"forks":1,"openIssues":14,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/26892525?v=4","ownerCreatedAt":"2017-04-04T06:40:12Z","license":"Apache-2.0"},"icon":{"url":"https://www.hunchmemory.com/hunch-mark.svg","source":"registry"},"presence":{"stars":10,"forks":1,"downloadsWeek":2483,"license":"Apache-2.0","lastPushAt":"2026-09-19T20:58:46.000Z","score":45}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"A","reason":"score 85: eval / new Function used","createdAt":"2026-09-19T21:08:10.564Z"}],"reviews":[]}