Skip to main content
Glama

ControlKeel

CI Release Smoke Latest Release npm bootstrap Socket Badge controlkeel MCP server

Turn the way your team works into enforceable memory for AI agents. - @arya_minus

ControlKeel is an agent control plane for day-to-day governed engineering. Through observation, findings and evaluation, it learns your intent rules, review taste and delivery habits, turning them into typed memory, policy checks and proof bundles. CK sits between your coding agents and production as a portable "company brain": comparing intended delivery against actual delivery and turning raw agent intent into policy-validated tasks.

If you're using an AI agent today, you probably have an *.md telling it how to behave. But a rules/specs file is just a promise made to the model. ControlKeel enforces the output. Beyond just catching bugs, CK solves the "Unknown Unknowns" problem: having to re-explain your domain knowledge in every single session.

Product loop

  1. Capture intent and policy — scope, risk, budget, domain pack, and human taste become CK state.

  2. Validate agent output — deterministic checks and optional advisory review produce findings before risky work reaches main.

  3. Gate only when needed — humans approve high-impact actions when intent, risk, or policy requires it.

  4. Persist evidence — findings, reviews, proofs, memory, cost, and task outcomes survive host switches.

  5. Improve with evals — traces and recurring failures become bounded regression evidence for specific suites and subjects.

The operating rule is simple: spend tokens on discovery, not rediscovery. Recurring behavior moves through a human-gated deterministic promotion path; once its regression evidence passes, checks, APIs, CLIs, or workflows handle the known case and agents handle only exceptions and genuinely new uncertainty.

ControlKeel transforms your domain knowledge from "raw" intent and "shelfware" documentation into a living system that remembers, enforces, and evolves.

Related MCP server: mcp-gatekeeper

Quick start

One-line setup via your agent

Copy/paste this into your agent (OpenCode, Codex, Claude, or another supported host):

Set up ControlKeel for this repository. Read and follow https://raw.githubusercontent.com/aryaminus/controlkeel/main/README.md, https://raw.githubusercontent.com/aryaminus/controlkeel/main/docs/getting-started.md, https://raw.githubusercontent.com/aryaminus/controlkeel/main/docs/support-matrix.md, and https://raw.githubusercontent.com/aryaminus/controlkeel/main/docs/agent-integrations.md. Install ControlKeel if missing, run `controlkeel setup`, detect this agent host, attach the strongest supported path with `controlkeel attach <host>`, then run `controlkeel attach doctor`, `controlkeel provider doctor`, `controlkeel status`, `controlkeel findings`, and the host-native MCP check. If CK is available only as MCP, call `ck_attach` for this host. Apply only safe local fixes and redact secrets from logs. Pause and ask before continuing if the host needs workspace trust, manual provider configuration, a restart after attach/plugin changes, or a plan-review approval that cannot auto-wait. Ensure the project is trusted and restart the host after attach/plugin changes.

CLI install

Install the CLI:

brew tap aryaminus/controlkeel && brew install controlkeel
# or
npm i -g @aryaminus/controlkeel
# or
curl -fsSL https://github.com/aryaminus/controlkeel/releases/latest/download/install.sh | sh

Windows PowerShell:

irm https://github.com/aryaminus/controlkeel/releases/latest/download/install.ps1 | iex

First governed run:

controlkeel
controlkeel setup
controlkeel attach opencode   # project scope by default; use another supported host as needed
controlkeel attach doctor
controlkeel provider doctor
controlkeel status
controlkeel findings

Run setup and attach from the repository you want to govern. Project scope writes host files only inside that repository. --scope user writes host-level files under your user configuration only for targets that explicitly support user scope; it does not turn project binding or proof state into global state.

For the complete first-run path, use docs/getting-started.md. For host truth, use docs/support-matrix.md and docs/agent-integrations.md.

Benchmark-backed evidence

ControlKeel includes a persisted benchmark engine. Current user-facing evidence is bounded to the named suite, subject, and scoring definition below; docs/benchmarks.md is the canonical reference for full tables, caveats, JSON exports, and agent-host protocols.

Verified with-vs-without-CK baseline (host_comparison_v1, 12 risky scenarios)

Verified with ControlKeel 0.3.45:

  • Risky suite host_comparison_v1: null_policy_baseline caught 0/12; controlkeel_validate caught 12/12, blocked 9/12, and hit expected rules 9/12 with median deterministic validation time 52 ms, 0 provider tokens.

  • Paired benign suite benign_baseline_v1: controlkeel_validate produced 0/10 catches, 0/10 blocks, FPR 0.000, median deterministic validation time 42 ms, 0 provider tokens.

Read the numbers precisely: deterministic scanner evidence is not the same as model-backed agent-host evidence. Reproduction commands and the OpenCode/Copilot/Claude/Codex comparison protocol live in docs/benchmarks.md.

What ships today

  • Local governance: CLI, the full local stdio MCP tool set, project binding, host attach/export bundles, scanner validation, findings, reviews, proof bundles, budgets, and typed memory.

  • Host and runtime support: native attach for supported hosts, runtime exports for headless/outer-loop systems, a narrower OAuth-scoped hosted MCP set, minimal A2A, and fallback validation/proxy paths.

  • Team/project operations: org membership, invitations, workspace GitHub repo bindings, service accounts, webhooks, workspace tool policy, and policy-set APIs.

  • Cloud evidence paths: opt-in cloud telemetry, workspace keys, cloud run packages, runtime callbacks, and dormant-until-configured bidirectional sync for findings, reviews, digests, and memory records.

  • Observability loop: timelines, memory quality, costs, trends, problem clusters, eval candidates, benchmark drafts/history, and promotion advisories.

Docs map

Development

mix setup
mix phx.server
mix test
mix precommit

Phoenix + Ecto on SQLite. Uses Req for HTTP. Single-binary builds ship through Burrito and GitHub Releases.

Available Tools

55 tools
ck_attachA

Wire ControlKeel into the current agent host (Claude Code, Cursor, Codex, OpenCode, etc.). Closes the gap for users who installed ControlKeel via a one-line MCP-add command but skipped controlkeel attach <host>. Installs the host-specific hooks (SessionStart, PreToolUse, PostToolUse, UserPromptSubmit), skills directory, slash commands, AGENTS.md/CLAUDE.md preamble, and subagent profiles for the requested host. Idempotent — re-running refreshes artifacts to the current version. Writes only inside project_root; no network egress. Call this once after a one-line MCP install when the host lacks ControlKeel hooks/skills. Use ck_mcp_discover first if unsure which host ID to pass.

Inputs: host (required), scope, project_root. Returns: host, lines, status, next_steps

ck_budgetA

Estimate, record, or check the cost of an agent operation against session and daily spend budgets. Three modes: estimate (read-only, returns headroom and projected cost); commit (write — deducts estimated_cost_cents from the session budget); status (read-only, returns remaining budget). For commit mode: pass session_id, estimated_cost_cents, provider, model, input_tokens, and output_tokens. Pass include_token_overhead: true with project_root to attach a token overhead audit (rule files, skill duplicates, tool schemas) to the response. Check ck_budget before expensive multi-agent work or large model calls. Use ck_cost_optimizer for model price comparisons without recording spend.

Inputs: session_id (required), mode, tool, model, +10 more. Returns: mode, decision, session_id, headroom_cents, +4 more

ck_checkpoint_createA

Create a workspace checkpoint capturing git state, workspace context, and metadata for migration or rollback.

Inputs: task_id (required), type, summary, created_by, +1 more. Returns: type, summary, created_at, checkpoint_id

ck_checkpoint_listB
Read-onlyIdempotent

List all checkpoints for a session, optionally filtered by type.

Inputs: type, limit, session_id. Returns: total, checkpoints

ck_checkpoint_restoreB
Destructive

Restore session state from a previous checkpoint, updating session metadata with checkpoint information.

Inputs: checkpoint_id (required), strict, session_id. Returns: summary, restored, checkpoint_id

ck_contextA
Read-onlyIdempotent

Fetch the full governed session state: mission, budget, active findings, proof summary, planning context, workspace snapshot, drift signals, recent transcript events, resume packet, and ControlKeel instruction hierarchy. Read-only. detail_level compact (default) returns a token-efficient summary; use full only when raw workspace, resume, or transcript payloads are required. session_id defaults to the active bound session; pass project_root to resolve it automatically. Call ck_context at the start of every task to reacquire state. Prefer ck_context_pack when you need a focused, citation-enriched bundle for a specific retrieval query rather than the full session snapshot.

Inputs: task_id, session_id, detail_level, project_root. Returns: precedent, risk_tier, session_id, detail_hint, +27 more

ck_context_packA
Read-onlyIdempotent

Build a compact, citation-enriched context bundle for the current session and task by combining task facts, proof state, resume highlights, and ranked memory excerpts. Read-only. query is an optional retrieval query; when omitted, ControlKeel synthesizes one from the current task title and session context. top_k controls how many memory hits to include (default 5). detail_level compact (default) keeps the bundle token-efficient. Prefer ck_context_pack over ck_context when you need a focused, query-driven bundle for a specific sub-task rather than the full session snapshot. Use ck_context at the start of a session for full mission state; use ck_context_pack mid-task to fetch targeted prior knowledge.

Inputs: query, top_k, task_id, session_id, +2 more. Returns: query, task_id, hit_count, count_only, +9 more

ck_copilotA

Real-time collaborative channel where human actions stream to the agent. Build software for humans and agents to use together — agents can see when a human is viewing, editing, or approving. Modes: subscribe (receive events), publish (emit an event), presence (who is active), history (recent events).

Inputs: session_id (required), mode, actor, limit, +3 more. Returns: mode, events, presence, published

ck_cost_optimizerA
Read-onlyIdempotent

Get cost optimization suggestions or compare AI provider/model prices for a task. Read-only — no budget records are written (use ck_budget to record actual spend). Two modes: suggest returns optimization tips based on recent session spending patterns; compare returns a side-by-side price breakdown for the given task. For suggest mode, pass session_id. For compare mode, pass task_description and estimated_tokens along with top_provider and top_model as the baseline. Use ck_cost_optimizer before choosing a model for expensive multi-agent work; use ck_budget to record and enforce spend limits.

Inputs: mode (required), spending, top_model, session_id, +3 more. Returns: mode, comparisons, suggestions

ck_delegateA

Hand off a governed task or session to another AI agent, transferring governance context (findings, budget, proofs) to the target. Mutates session state to reflect the delegation. Four modes: auto (ControlKeel picks the best agent), embedded (inline sub-agent), handoff (transfer session ownership), runtime (delegate to a pre-configured runtime agent). agent is the target agent ID (e.g., claude, opencode, cursor). Call ck_route first to identify the best agent, then ck_delegate to transfer. Prefer ck_route when you only need a recommendation without transferring; prefer ck_delegate when you are ready to hand off execution.

Inputs: mode, agent, task_id, session_id, +1 more. Returns: mode, agent, status, result_ref, +3 more

ck_deployment_advisorA

Analyze the project stack and suggest deployment platforms, or generate CI/CD and Docker configuration files. Three modes: analyze (read-only, returns platform recommendations based on detected stack); generate_files (write operation, creates Dockerfile and CI/CD configs in the project); dns_guide (read-only, returns DNS setup instructions for the recommended platform). project_root is required. Set dry_run: true with generate_files to preview what would be created without writing files. Use ck_deployment_advisor before deploying a new project or when setting up CI/CD for the first time. For budget and cost checks before deployment, use ck_budget.

Inputs: mode (required), project_root (required), dry_run. Returns: mode, platforms, files_created, dns_instructions

ck_execute_codeA

Execute generated code only inside a configured non-local sandbox. Defaults to Docker, denies network/filesystem/secrets/shell/deploy, validates source first, and supports dry_run for planning.

Inputs: code (required), dry_run, sandbox, task_id, +8 more. Returns: output, policy, allowed, command, +7 more

ck_experience_indexA
Read-onlyIdempotent

List recent prior sessions in the same workspace and the read-only experience artifacts available for each run. Pass query for freeform keyword search across session titles, task titles, and finding descriptions — useful for questions like 'has this deployment pattern caused a blocked finding before?'

Inputs: query, session_id, project_root, session_limit, +1 more. Returns: total, sessions

ck_experience_readA
Read-onlyIdempotent

Read one prior-run artifact such as a session summary, audit log, trace packet, or proof summary from the workspace experience archive.

Inputs: artifact_type (required), task_id, session_id, project_root, +1 more. Returns: data, artifact_type

ck_external_serviceA

Track and govern agent interactions with external SaaS APIs. Rate limits per service, cost attribution, and PII redaction. Modes: record (log an interaction with auto-redaction), summary (aggregated view per service), rate_limit_status (current rates against limits), top_services (ranked by volume and cost).

Inputs: session_id (required), mode, limit, method, +8 more. Returns: mode, summary, recorded, services, +1 more

ck_failure_clustersA
Read-onlyIdempotent

Cluster recurring failure modes across recent session traces in the same workspace and return reusable eval candidates.

Inputs: session_id, project_root, session_limit, same_domain_only. Returns: clusters, eval_candidates

ck_findingA

Record or disposition a governed finding. mode=create (default) persists a finding with a ruling decision (allow, warn, block, escalate_to_human); findings are the durable audit trail in ControlKeel. mode=resolve|dismiss|escalate disposition EXISTING findings so the agent that created them can also clear them: pass finding_id for a single finding, or rule_id/category/status to bulk-disposition all matching active findings in the session (resolve->approved, dismiss->rejected, escalate->escalated). Write operation. For create, required fields are session_id, category, severity, rule_id, plain_message; decision defaults to warn, use allow for an approved exception (which also auto-resolves matching open/blocked findings). Returns finding_id + status for create, or disposed_count + disposed_finding_ids for disposition. Use ck_finding to record and clear policy findings; use ck_memory_record for general knowledge not tied to a policy rule.

Inputs: session_id (required), mode, title, reason, +9 more. Returns: mode, status, summary, precedent, +8 more

ck_fs_findA
Read-onlyIdempotent

Find files or directories whose path contains a given fragment, searching within the bound project root. Read-only — no files are modified. query is the path fragment or glob pattern to match against file and directory names. path scopes the search to a subdirectory (relative to project root); omit to search the entire project. limit caps the number of results (default 50). Use ck_fs_find to locate files by name or path. Use ck_fs_grep to search by file content. Use ck_fs_read to read a file at a known path.

Inputs: query (required), path, limit, session_id, +1 more. Returns: total, results

ck_fs_grepA
Read-onlyIdempotent

Search file contents inside the bound project root using grep-style pattern matching. Read-only — no files are modified. query uses fixed-string search by default; set fixed_strings: false to treat it as a regex. Scope the search with path (a relative directory or glob); omit to search the entire project. Returns matching lines with file path and line numbers. limit caps results (default 50). Use ck_fs_grep to find code patterns or strings inside files. Use ck_fs_find to locate files by name fragment. Use ck_fs_read to read a specific file by path.

Inputs: query (required), path, limit, session_id, +3 more. Returns: total, matches

ck_fs_lsA
Read-onlyIdempotent

List files and directories inside the bound project root. Read-only — no files are modified. path is a relative directory path to list; omit to list the project root. Use ck_fs_ls to browse directory structure. Use ck_fs_find to locate files by name fragment. Use ck_fs_read to read a specific file. Use ck_fs_grep to search file contents.

Inputs: path, session_id, project_root. Returns: path, entries

ck_fs_readA
Read-onlyIdempotent

Read a file from the bound project root. Read-only — no files are modified or created. path is required and must be relative to the project root (e.g., lib/my_module.ex). start_line (1-indexed) and max_lines enable windowed reads for large files. Omit both to read the entire file. Use ck_fs_read to inspect a file at a known path. Use ck_fs_find to locate a file by name fragment. Use ck_fs_grep to search inside files by content pattern. Use ck_fs_ls to list directory contents.

Inputs: path (required), max_lines, session_id, start_line, +1 more. Returns: path, content, start_line, total_lines

ck_git_commitA
Destructive

Validate a commit message against CK governance policy and execute git commit if validation passes and no findings are blocked. Write operation — creates a git commit in the repository when validation succeeds. Returns validation result, any blocked findings, and the commit SHA on success. If blocked findings exist, the commit is not created and the findings are returned for remediation. Use ck_git_status first to confirm governance state, then ck_git_commit to create the commit. Does not push to remote — use git push separately after commit.

Inputs: message (required), session_id, project_root. Returns: sha, error, message, validation

ck_git_diffA
Read-onlyIdempotent

Generate a git diff and run CK validation on the resulting diff. Read-only — no commits are created. base_ref and head_ref are git refs (branch names, commit SHAs, or tags); omit both or pass empty strings to diff the working tree against HEAD. Returns the diff text and any CK validation findings raised against it. Use ck_git_diff to review changes before committing or submitting a review. Use ck_git_status for a summary without the full diff. Use ck_git_commit to create the commit after reviewing.

Inputs: base_ref, head_ref, session_id, project_root. Returns: diff, base_ref, head_ref, validation, +1 more

ck_git_statusA
Read-onlyIdempotent

Get git working tree status correlated with CK governance findings for the current session. Returns staged, unstaged, and untracked files alongside any blocked or open findings from ck_validate or ck_review_submit. Read-only and side-effect free — no findings are created or modified. Use before ck_git_commit to verify governance state. Prefer ck_git_diff when you need the actual diff content; prefer ck_git_commit when ready to commit.

Inputs: session_id, project_root. Returns: branch, status, findings_correlation

ck_goalA

Record, list, or update durable governed goals so long-running intent stays explicit, citable, and reviewable across sessions. Three modes: record (write — creates a new goal); list (read-only — returns goals filtered by status and horizon); update_status (write — updates an existing goal's status or progress). Required: session_id and mode. For record: provide goal (the statement text) and optionally title, horizon (task/session/workspace), and tags. For update_status: provide goal_id and the new status. horizon controls scope: task for short-lived intent, session for the current session, workspace for persistent cross-session goals. Use ck_goal for structured multi-session intent that should be explicitly tracked and reviewed. Use ck_memory_record for general decisions or notes not requiring status tracking.

Inputs: mode (required), session_id (required), body, goal, +12 more. Returns: goal, goals, title, status, +3 more

ck_load_resourcesA
Read-onlyIdempotent

Fallback for clients that do not support MCP resources or native bulk skill loading. Load one or more CK resource URIs such as skills://; pass multiple skills:// URIs to activate several skills in one governed CK call.

Inputs: uris (required), target, session_id, project_root. Returns: resources

ck_loopA

Create and govern a bounded iterative loop without executing worker code. The contract freezes verifier paths and hashes, separates mutable paths, classifies artifact longevity, and enforces metric, iteration, cost, duration, no-progress, blocked-finding, and lasting-code architecture stop conditions. Modes: create, record, status, stop, promote. Rejected iterations require an explicit audited rollback.

Inputs: task_id (required), session_id (required), mode, reason, +47 more. Returns: status, task_id, contract, decision, +7 more

ck_mcp_discoverA
Read-onlyIdempotent

Auto-discover tools from an external MCP server by querying its tools/list endpoint. This enables progressive discovery of MCP capabilities without manual configuration.

Inputs: server_url (required), timeout, transport. Returns: tools, total, server_url

ck_memory_archiveA

Archive a memory record so it is excluded from future ck_memory_search results. Write operation — marks the record as archived in the database; it is not deleted. memory_id is the integer ID returned by ck_memory_record or ck_memory_search. Use when a record is stale, superseded by a newer decision, or contains information that should no longer guide future agents. To update a record's content instead of archiving it, call ck_memory_record again with the same source_id.

Inputs: memory_id (required), session_id, project_root. Returns: archived, memory_id

ck_memory_recordA

Write a governed memory record so future agents can explicitly retrieve it via ck_memory_search. Write operation — persists to the database. Idempotent: re-submitting the same source_id updates the existing record rather than duplicating it. Pass memory as a plain string for quick notes, or as an object with body, title, summary, record_type, and tags for structured records. record_type controls retrieval filtering: use decision for architectural choices, finding for issues, proof for evidence, goal for intent, brief for task context. tags is a string or array of strings for categorization. source_id links the record to an external artifact (e.g., a review ID or commit SHA). Use ck_memory_record to persist knowledge that should survive session boundaries. Use ck_finding for policy violations with a ruling decision. Use ck_goal for durable multi-session intent.

Inputs: memory (required), body, tags, title, +8 more. Returns: title, task_id, recorded, memory_id, +2 more

ck_observabilityA
Read-onlyIdempotent

Read local observability reports for sessions, loop status, problems, memory, costs, trends, evals, generated benchmarks, history, and advisory promotion candidates. Read-only: no benchmark execution, draft approval, materialization, or promotion mutation.

Inputs: by, days, limit, report, +5 more. Returns: data, report

ck_outcome_trackerA

Record session outcomes or retrieve agent performance leaderboards to close the reinforcement-learning feedback loop. Three modes: record persists a session outcome (write operation); get_session reads a specific outcome by session_id (read-only); get_leaderboard returns ranked agent performance (read-only). For record mode: pass session_id, outcome (success/partial/failure), agent_id, and task_type. For get_leaderboard: pass workspace_id and optional window (days) and limit. Call after task completion before ending the session so ck_route and ck_cost_optimizer have fresh performance data for future routing decisions.

Inputs: mode (required), limit, window, outcome, +4 more. Returns: mode, entries, outcomes, recorded

ck_regression_resultA

Record external regression-test evidence from CI/CD systems (Bug0, Passmark, custom runners) so proof bundles and release-readiness checks account for external validation. Write operation — creates a DB record. Returns the recorded result ID. Required: session_id, engine (name of the test system), flow_name (test suite or flow identifier), outcome (passed/failed/flaky/skipped). Optional: commit_sha to link results to a specific revision, environment (ci/staging/production), external_run_id for cross-referencing the originating system, evidence for a structured payload. Use after an external test run to close the proof loop before calling ck_review_submit for a completion review. Retrieve past results with ck_memory_search using record_type: regression.

Inputs: engine (required), outcome (required), flow_name (required), session_id (required), +7 more. Returns: engine, outcome, recorded, flow_name, +1 more

ck_result_peekA
Read-onlyIdempotent

Peek at the full stdout of a previously completed ck_delegate embedded run without loading it all into context. Use result_ref and package_root returned by ck_delegate to locate the stored output. Supports byte-range reads: pass peek_bytes to limit how much to load, and offset to skip ahead. Use result_length (returned by ck_delegate) to decide whether to peek, pass the ref downstream, or skip loading entirely. This is the RLM variable-encapsulation pattern: treat large sub-agent outputs as named references, not inline blobs.

Inputs: package_root (required), offset, peek_bytes. Returns: output, truncated, bytes_read, total_bytes

ck_review_feedbackA

Approve or deny a submitted review and attach feedback notes or structured annotations. Write operation — updates the review record and unblocks or halts the execution gate. review_id (required) is the ID returned by ck_review_submit. decision must be approved or denied. feedback_notes is freeform text for the reviewer's rationale. annotations is a key-value object for machine-readable metadata. This tool is human-facing: agents call ck_review_submit to create a review, then a human (or authorized agent) calls ck_review_feedback to record the decision. After approval, the submitting agent can proceed with execution; after denial, the plan should be revised and resubmitted.

Inputs: decision (required), review_id (required), session_id, annotations, +2 more. Returns: updated, decision, review_id

ck_review_statusA
Read-onlyIdempotent

Fetch the latest decision status (pending/approved/denied), reviewer notes, and browser review URL for a previously submitted review. Read-only. Provide review_id (returned by ck_review_submit) for a specific review, or task_id to get the latest review for that task. review_type (plan/diff/completion) filters when task_id is used without review_id. Poll this after ck_review_submit to check whether a human has approved or denied the submission before proceeding with execution.

Inputs: task_id, review_id, session_id, review_type. Returns: status, decision, review_id, review_url, +1 more

ck_review_submitA

Submit a governed plan, diff, or completion packet for human review and execution gating. Write operation — creates a review record and returns a review_id and browser URL. review_type controls what is being submitted: plan (before implementation), diff (before merging), or completion (task done). submission_body is the full content: plan text, diff, or completion description. For iterative plan refinement, pass previous_review_id and plan_phase (ticket → research_packet → design_options → narrowed_decision → implementation_plan → code_backed_plan). The plan-quality scorer evaluates structured fields, not just submission_body — populate research_summary, options_considered, selected_option, rejected_options, implementation_steps, validation_plan, code_snippets, alignment_context, consulted_roles, codebase_findings, prior_art_summary, agent_spec_id, task_spec_id, agent_role, task_scope, out_of_scope, business_rules, domain_terms, allowed_actions, prohibited_actions, robustness_requirements, linked_policy_packs, linked_benchmark_suites, promotion_gates, allowed_semantic_changes, forbidden_semantic_changes, invariant_boundaries, requires_reapproval_if, harness_quality_checks, and scope_estimate for a strong score. Returns review_id, status (pending), and a URL where the human reviewer can approve or deny. After submission, poll ck_review_status until the decision is approved or denied before proceeding. Use ck_review_feedback (human-facing) to record a decision on an existing review.

Inputs: submission_body (required), title, task_id, metadata, +39 more. Returns: title, status, review_id, review_url

ck_rollbackA
Destructive

Execute a governed rollback of an agent's work. Records a git checkpoint before each task and provides a single action to revert. Safety-checked: refuses if downstream tasks depend on the changes. Creates an audit finding on every rollback. Modes: checkpoint (capture git HEAD before task), execute (revert agent's changes), status (check snapshot state), list (all snapshots for session).

Inputs: session_id (required), mode, reason, task_id, +1 more. Returns: sha, mode, status, task_id, +2 more

ck_routeA
Read-onlyIdempotent

Recommend the best available AI agent for a given task based on security tier, remaining budget, task type, and past performance data. Read-only — no session state is changed. task is a plain-language description of what needs to be done. risk_tier (low/medium/high/critical) filters out agents that are not cleared for the security level; defaults to medium. allowed_agents restricts routing to a specific subset of agent IDs; omit to allow all. Returns a ranked list of agent recommendations with rationale. Use ck_route to pick an agent, then ck_delegate to transfer the task. Use ck_cost_optimizer for a price-focused comparison without routing.

Inputs: task (required), risk_tier, allowed_agents, budget_remaining_cents. Returns: task, risk_tier, recommended

ck_sessionA

Enumerate and manage governed sessions. Three modes: list (enumerate sessions for the project); status (get current session details, resolves from project binding if session_id omitted); switch (change active session binding — REQUIRES confirm: true).

Inputs: mode, limit, confirm, session_id, +1 more. Returns: id, title, total, sessions, +4 more

ck_session_digestA

Generate a condensed, human-scannable digest of what happened in a session — tasks completed, findings raised, budget spent, reviews pending, and notable highlights. Three modes: generate (create a new digest), latest (return the most recent), list (paginated history). Designed for the forward-deployed engineer who needs an 'inbox that summarizes what happened' without reading raw event streams.

Inputs: session_id (required), mode, digest_type. Returns: highlights, session_id, digest_type, findings_raised, +3 more

ck_skill_evolutionA
Read-onlyIdempotent

Synthesize a deduplicated skill-evolution packet from recent traces and recurring failure clusters, including anti-patterns, reinforced practices, and a ready-to-merge skill draft. Set validate_only=true to run the Self-Harness validation stage (held-in/held-out + regression) without writing. Set install=true to validate and then materialize the draft into .agents/skills//SKILL.md under project_root, preserving the previous file as .bak.

Inputs: install, session_id, project_root, session_limit, +4 more. Returns: install, guidance, validation, anti_patterns, +3 more

ck_skill_listA
Read-onlyIdempotent

List all available AgentSkills for this project. Returns names, descriptions, and scopes. Call this to discover capabilities you can activate, then use ck_skill_load to load a skill's full instructions.

Inputs: format, target, project_root, include_duplicate_copies. Returns: total, skills, target, usage_hint, +4 more

ck_skill_loadA
Read-onlyIdempotent

Load the full instructions for a named AgentSkill. Returns the SKILL.md body wrapped in <skill_content> tags plus a list of bundled resource files. Call after ck_skill_list to activate a specific skill.

Inputs: name (required), target, task_id, session_id, +1 more. Returns: name, scope, source, target, +12 more

ck_skill_validateA
Read-onlyIdempotent

Validate skill output against a JSON Schema defined in the skill's result-schema frontmatter field. Skills can define a result_schema in their frontmatter; agents call this tool after running a skill to enforce typed, structured output. Accepts output + schema directly, or output + skill_name to validate against the skill's built-in schema.

Inputs: output (required), schema, skill_name, project_root. Returns: valid, errors, skill_name

ck_taskA

Manage governed tasks within a session. Six modes: status (return task details for a given task_id); claim (claim an available task for execution); complete (mark a task as done, blocked if unresolved findings exist); heartbeat (signal the agent is alive and working on a task); checks (record task quality check results); report (submit a task report with output and metadata).

Inputs: session_id (required), mode, note, checks, +7 more. Returns: count, title, run_id, status, +8 more

ck_token_auditA
Read-onlyIdempotent

Audit project rule files (AGENTS.md, CLAUDE.md, etc.) and skills for token overhead. Returns word counts, token estimates, duplicate detection, and optimization recommendations.

Inputs: mode, project_root. Returns: mode, duplicates, word_counts, recommendations, +1 more

ck_tool_healthA
Read-onlyIdempotent

Analyze governance coverage across recent sessions in the workspace — which CK governance tools (ck_validate, ck_review_submit, ck_budget, ck_memory_record, ck_goal) are load-bearing, active, low-usage, or unused — and return actionable recommendations for gaps.

Inputs: session_id, project_root, session_limit. Returns: coverage, recommendations

ck_trace_packetB
Read-onlyIdempotent

Export a structured session or task trace packet with failure patterns and eval candidates for trace-centered improvement loops.

Inputs: task_id, session_id, events_limit, project_root. Returns: events, task_id, session_id, eval_candidates, +1 more

ck_validateA
Read-onlyIdempotent

Validate proposed code, config, shell commands, or text against CK policy before execution. Read-only — no changes are applied to the project. Returns a validation result with any policy violations as findings. content is required. kind classifies the artifact (code/config/shell/text) for policy routing. source_type identifies the content's origin (developer, tool_output, human_review, issue, pull_request, web) for trust-boundary checks; untrusted sources receive stricter scrutiny. domain_pack applies a domain-specific policy pack (e.g., hipaa, owasp). requested_capabilities declares what the content needs (network, filesystem, shell, deploy) so the trust boundary can evaluate the request. Call ck_validate before writing files, running shell commands, or executing generated code. If validation returns blocked findings, do not proceed — use ck_finding to record them.

Inputs: content (required), kind, path, task_id, +10 more. Returns: allowed, summary, advisory, decision, +5 more

ck_workspace_agentA

Manage workspace agent roles: one primary 'super-agent' per workspace maintained by a forward-deployed engineer, specialized agents for specific domains, and ephemeral agents for short-lived tasks. Modes: register (create agent, only one primary per workspace), update (change scope/budget/status), list (all agents for workspace), health (aggregated health indicator), retire (deactivate agent).

Inputs: mode, name, role, scope, +7 more. Returns: mode, name, role, agents, +3 more

ck_worktree_listB
Read-onlyIdempotent

List all git worktrees in the current repository with their branch, HEAD, and status information.

Inputs: project_root. Returns: worktrees

ck_worktree_switchB
Destructive

Switch the current session to a different git worktree and update session metadata accordingly.

Inputs: worktree_path (required), session_id. Returns: branch, switched, worktree_path

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 55 tools

    Disambiguation3/5

    Most tools have distinct purposes (git, fs, review, memory), but there is significant conceptual overlap: ck_memory_search vs ck_experience_search both perform freeform search over findings/tasks; ck_context vs ck_context_pack are adjacent and rely on descriptions to separate; several ck_experience_* tools overlap with ck_memory_search. Multi-mode tools like ck_task and ck_session pack many actions into one tool, making boundaries fuzzier.

    Naming Consistency4/5

    Strong consistent ck_<domain>_<action> pattern (ck_fs_read, ck_git_diff, ck_memory_record, ck_review_submit). Minor deviations exist where domain is dropped (ck_validate, ck_route, ck_delegate, ck_copilot, ck_loop), but these are still readable and follow the ck_ prefix convention.

    Tool Count2/5

    55 tools is heavy, well beyond the 15-tool sweet spot, and the surface spans many sub-domains (git, fs, memory, review, budget, delegate, deploy, skills, checkpoints, worktrees, copilot). This breadth makes selection costly and increases the chance of picking the wrong tool.

    Completeness4/5

    Coverage is broad and deep, with CRUD/lifecycle for memory, findings, reviews, goals, checkpoints, sessions, and git. Read-only exploration is well covered. Some operations are missing or indirect (e.g., no direct memory update tool—only re-record with source_id; no push tool), but most workflows can be completed.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides a governed execution boundary for AI agents, enforcing deterministic policy, one-shot human approvals, and signed receipts for MCP tool effects.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides a governance layer for MCP servers, enforcing policy-based allow/deny/approval rules, requiring human approval for risky calls, and recording an auditable trail of every AI agent tool call.
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables AI coding providers to run structured multi-agent workflows with tracked tasks, specifications, handoffs, and health-gated completion. It exposes MCP tools for task claiming, action logging, repairs, document validation, and lifecycle evidence.
      29 npm
      MIT