Skip to main content

πŸš€ Beta: All Pro and Team features are free. Install on GitHub β†’

CodeRifts Β· MCP server Β· for agents

Check an API change before you depend on it.

CodeRifts is a hosted MCP server that scores API and tool-schema changes before merge. Ask it whether a change is safe, who breaks, by what pattern, and at what cost β€” and get a signed authorize envelope back. Branch on execution_action: CONTINUE, CONTINUE_WITH_MONITORING, REQUEST_APPROVAL, or STOP (unrecognised values fail closed). decision (ALLOW / WARN / REQUIRE_APPROVAL / BLOCK) is explanation, not the branch key. MCP tools report; they do not prevent a call by themselves β€” see what each path does.

Endpoint

URL
https://app.coderifts.com/mcp
Transport
Streamable HTTP (protocol 2025-06-18)
Auth
Bearer API key β€” Authorization: Bearer <key> (from coderifts.com)
Manifest
coderifts.com/mcp.json
Registry
io.github.coderifts/api-governance

Connect

{
  "mcpServers": {
    "coderifts": {
      "url": "https://app.coderifts.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_CODERIFTS_API_KEY>"
      }
    }
  }
}
Add to Cursor Add to VS Code

Cursor and VS Code are one-click install URLs (auth is still a Bearer key after connect). Claude Desktop has no official one-click URL β€” paste the config above into claude_desktop_config.json and restart. Copilot cloud is Settings-paste (mcpServers) or coderifts copilot-setup for the developer surface. Claude Code: claude mcp add --transport http coderifts https://app.coderifts.com/mcp. Per-host table: app docs/mcp-one-click.md.

MCP Tools

ToolCall it when…
preflight_change_setBefore modifying contract artifacts in one change set. Requires preflight_mode: analyze (risk only β€” not permission) or authorize (needs context.operation; may mint a receipt). Mode-less requests return 400.
verify_receiptTo confirm a CodeRifts chain receipt you hold is authentic and unaltered. Verifies its signature and integrity. Not for deciding whether a change is safe β€” run preflight_change_set for that.
get_decision_detailsTo look up a past decision by decision_id or fingerprint. Returns the stored decision_result envelope and receipt. Read-only β€” not for making new safety decisions.

Only the three tools above are exposed through MCP. The REST rows below mirror that calling path (plus readiness) for agents that hit HTTP without MCP β€” the agent-relevant surface, not the full product API.

Agent-relevant REST endpoints

HTTP equivalents of the governance operations an agent actually calls. Not an exhaustive product API index.

EndpointDescription
POST /api/v1/preflightSame job as preflight_change_set. Pass preflight_mode (analyze | authorize). Authorize may return a signed receipt; analyze never does.
POST /api/v1/verify-receiptVerify a CodeRifts receipt (same job as verify_receipt).
POST /api/v1/decisions/lookup · GET /api/v1/decisions/:idRetrieve a previously issued decision (same job as get_decision_details).
POST /api/v1/agent-readiness-scoreStatic 0–100 readiness score for one OpenAPI/MCP document (advanced; not a change-set preflight).

Verify (connectivity)

MCP initialize proves the transport speaks MCP. GET /health is liveness. Neither is enforcement.

curl -sS https://app.coderifts.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'

Enforcement health-check

There is no MCP tool named health. After one-click + Bearer key, run this sequence (scaffold: app docs/mcp-health-check.json). Hidden alias governance_health is POST /api/v1/diff β€” not this check.

  1. GET https://app.coderifts.com/health β€” process up.
  2. MCP initialize (above) β€” transport up.
  3. MCP tools/list β€” exact set: preflight_change_set, verify_receipt, get_decision_details.
  4. First authorized action: preflight_change_set with preflight_mode: "authorize", context.operation, and at least one artifacts[] (authorize without a change set is 400). Branch on execution_action: CONTINUE | CONTINUE_WITH_MONITORING | REQUEST_APPROVAL | STOP. Unrecognised values fail closed.

Conformance 7/7 (trusted-executor, not a provider merge)

@coderifts/conformance@0.8.11 reports END_TO_END COVERED (7/7) via TARGET_STATE_TRANSITION_PROVEN: a governed ref moved to the authorized commit under a signed grant, observed afterwards by a separate read-only process. Boundary, exactly as the profile records it: proof_scope TRUSTED_EXECUTOR, provider_witness NOT_APPLICABLE, externally_witnessed false. CodeRifts did not witness or sign the provider state. This is trusted-executor-integrity, not PATH B, and not the GitHub provider-loop. Honesty table: What each proof proves. What is a gate today versus planned / on-request (never available): claim table.

Response contract (Decision Spec v2)

preflight_change_set is a mode-discriminated union on preflight_mode. Analyze is not permission. verify_receipt and get_decision_details return different shapes. Schema: preflight-response.v2.consumer.json.

ANALYZE (informational β€” branch on may_execute / analysis_outcome; no execution_action / decision / safe_for_agent):

{
  "preflight_mode": "analyze",
  "decision_spec_version": "2.0",
  "analysis_outcome": "BREAKS_DETECTED",  // NO_BREAK_DETECTED | BREAKS_DETECTED | ANALYSIS_FAILED
  "authorization_effect": "NONE",
  "may_execute": false,
  "receipt_kind": "NONE",
  "risk_score": 57,
  "breaking_changes": 1,
  "patterns": [ ... ]
}

AUTHORIZE (operation-bound β€” requires context.operation; branch on execution_action: CONTINUE | CONTINUE_WITH_MONITORING | REQUEST_APPROVAL | STOP; gates verify receipt conjunctively):

{
  "preflight_mode": "authorize",
  "decision_spec_version": "2.0",
  "receipt_kind": "operation_authorization",
  "decision": "BLOCK",
  "execution_action": "STOP",
  "safe_for_agent": false,
  "risk_score": 57,
  "chain_receipt": "...",
  "breaking_changes": 1,
  "patterns": [ ... ]
}

Mode-less request β†’ 400. Default is Decision Spec 2.0. A request that pins decision_spec_version: "1.0" still gets the pre-v2 analyze shape (decision / execution_action / safe_for_agent in the body and in x-coderifts-decision / x-coderifts-safe-for-agent). Deprecation headers fire. Announced sunset was 2026-09-07T00:00:00Z; the pin is still answering as of 2026-09-14. Do not pin 1.0. Permission still requires authorize + verified receipt (receipt AND currently_authorized AND operation AND fingerprint AND execution_action) β€” never analyze alone.