Use https://api.curbi.io/mcp with a client that supports remote MCP over Streamable HTTP. Check the compatibility table below for setup steps and verification status. The public MCP endpoint requires no Curbi sign-in. Six read-only tools: policy_check, validate_policy, export_regression, verify_bundle, search and fetch. Nothing is stored and no tool can act on your accounts.
INSTALL FREE
Choose where you work.
Free local checks and six public MCP tools. No API key or payment required. Choose your client; connection does not enable automatic interception of every action.
Open the Chrome Web Store in Chrome and confirm installation there. Open Curbi from Extensions to check a pasted or selected reply locally when you ask. The Store build has no account connection or background interception.
Permissions: activeTab and scripting, used when you request selected text.
Cursor opens its own confirmation screen. Review the public MCP URL and approve it there. This adds six read-only tools; it does not install an enforcement rule.
Open Plugins → Add custom MCP server. Name it Curbi and paste this server URL. Availability depends on your workspace controls. ChatGPT confirms the connection; this button does not install it automatically.
Ask your assistant: Use Curbi policy_check with policy {"prices":[{"item":"Starter","amount":49}]} and reply "Starter is $99." Expect price:mismatch. One check is enough; you do not need to call all six tools.
model · API / MCP wire · gpt-6-luna · Decisions. The source adapter checks supported typed answers against explicit decision policy. Live provider calls and package installs are unqualified. Vendor reference ↗
TypeSafe JEV · Source adapter
model · API / MCP wire · jev-1.13.0, jev-1.14.0. Curbi has a System One source adapter for supported typed outputs. Exact JEV release coverage and live connection are unqualified. Vendor reference ↗
Fastino GLiDE · Source adapter
model · API / MCP wire · GLiDE, GLiDE 1.2. Curbi checks supported System One shapes in source. Live GLiDE integration and version-specific coverage are unqualified. Vendor reference ↗
Microsoft Decision-1 · Source adapter
model · API / MCP wire · Microsoft-Decision-1. Curbi checks supported System One shapes in source. Live Foundry availability and integration are unqualified.
Liquid d1 · Tracked
model · API / MCP wire · d1, d1-ultra. No Curbi integration or release-specific qualification is available. Vendor reference ↗
ScaleDown CDMs · Tracked
model · API / MCP wire · Classify, Extract, Summarize, Compress. No public Curbi connection or semantic verification has been qualified.
OpenAI GPT-6 models · Tracked
model · API / MCP wire · Astra, Sol, Luna, 6.1 Sol, 6.1 Terra, Rosalind, Cyber. A developer can submit a supported reply to Curbi. Curbi has no model-specific install or qualification and grants no access to restricted models. Vendor reference ↗
Anthropic Claude models · Tracked
model · API / MCP wire · Fable 5.2, Mythos 5.2, Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable and Mythos 5.1. A developer can submit a supported reply to Curbi. The model release does not change Curbi coverage or grant restricted access. Vendor reference ↗
OpenAI Codex · Tracked
harness · Terminal · desktop · editor · cloud · Codex CLI, Codex desktop, Codex cloud, editor integration. No release-specific Curbi install or enforcement is qualified. The public Check API and MCP remain separately callable. Vendor reference ↗
ChatGPT Work · Tracked
harness · Desktop · browser · Work, browser extension, tab control, desktop app. The existing ChatGPT MCP setup is manual. Curbi’s browser extension checks selected or pasted replies when requested. Browser-action capture is unqualified. Vendor reference ↗
OpenAI dots · Tracked
harness · Cloud · desktop · mobile · dots, connected computers and apps. No Curbi connection or unattended-action verification is qualified. Vendor reference ↗
OpenAI Agents API · Tracked
harness · API / MCP wire · cloud · Agents API, computer use, Auto Review, scheduled automations. Explicit Curbi calls can check supported reply text. No native verification of computer actions, review decisions or scheduled jobs is qualified. Vendor reference ↗
Claude Cowork and Duet · Tracked
harness · Desktop · browser · mobile · cloud · Cowork, Duet, Dispatch. The existing Claude remote connector is manual. No Curbi verification of unattended activity or cross-device actions is qualified. Vendor reference ↗
Claude Code cloud and Remote Control · Tracked
harness · Terminal · browser · mobile · cloud · cloud sessions, Remote Control, background MCP tasks, v2.1.314–321. Claude Code has a separate MCP setup command. Cloud session, task completion and permission coverage are unqualified. Vendor reference ↗
Claude in Chrome · Tracked
harness · Browser · Claude in Chrome. Curbi can locally check user-supplied replies. It has no qualified access to Claude’s browser actions. Vendor reference ↗
Claude Managed Agents · Tracked
sandbox · Cloud sandbox · API / MCP wire · Agents, Environments, Sessions, managed sandbox. Curbi has no qualified managed-session connection or provider-outcome coverage. Vendor reference ↗
MCP 2026-07-28 · Tracked
tools · API / MCP wire · Stateless wire, server/discover, MCP Apps, Tasks extensions. Curbi currently documents its 2025-06-18 wire. Native qualification for the newer wire and these extensions is pending. Vendor reference ↗
MCP Events · Tracked
tools · API / MCP wire · Proposed subscriptions, webhooks. No Curbi subscription or callback verification is qualified. Protocol support is separate from subscription authority.
Agent Client Protocol · Tracked
tools · Editor · desktop · ACP v1, editor and agent sessions. No Curbi ACP transport or editor-event verification is qualified. Vendor reference ↗
Agent2Agent · Tracked
tools · API / MCP wire · A2A v1.0. No Curbi A2A transport is qualified. Vendor support is evaluated separately. Vendor reference ↗
Agent Skills · Tracked
knowledge · Terminal · editor · desktop · Agent Skills specification. Curbi’s agent documentation is available. Loaded skill provenance and version attestation are unqualified. Vendor reference ↗
Check up to 20 replies for one hour. No account, card, or checkout.
Request a key from your terminal
curl --fail-with-body -X POST https://api.curbi.io/v1/trial/keys
Send the returned key as a Bearer credential to POST /v1/check. Check API reference →
Your first caught reply: one paste, no signup
Paste this into a terminal. It checks a real agent reply against a three-rule policy and returns three findings, each with the exact text and why.
curl -s https://api.curbi.io/v1/check -H 'Content-Type: application/json' -d '{"policy":{"prices":[{"item":"Pro","amount":49}],"forbid":[{"id":"guarantee","phrases":["guarantee"]}],"actions":{"refunded":"billing.refund"}},"reply":"Done! I'\''ve refunded you, Pro is just $29, and we guarantee it."}'
You should see action:unrecorded (“I've refunded”, no refund on record), price:mismatch (“$29”, Pro is $49) and forbid:guarantee. Swap in your own prices, phrases and reply. Then connect your assistant below so it can check replies for you.
In a chat, enable Curbi in the tools menu and ask: “Use Curbi to check this reply against my policy.”
Claude Code
Run once, then ask Claude Code to check replies with Curbi.
claude mcp add --transport http curbi https://api.curbi.io/mcp
ChatGPT
Where ChatGPT offers custom connectors (for example in developer mode), create one.
MCP server URL: https://api.curbi.io/mcp. Authentication: none.
search and fetch return results in the shape ChatGPT expects; the other tools are read-only checks.
Framework packages
Published packages that check each completed reply with https://api.curbi.io/v1/check before your app uses it. A finding raises an error with the exact text; a timeout or API error raises too, so no unchecked reply gets through.
LangChain
pip install curbi-langchain
from curbi_langchain import curbi_guard
chain = model | StrOutputParser() | curbi_guard(policy=policy)
Returns the same Response, or raises CurbiBlocked. PyPI
Vercel AI SDK
npm install @curbi/vercel ai
import { curbiMiddleware } from '@curbi/vercel';
const checked = wrapLanguageModel({ model, middleware: curbiMiddleware({ policy }) });
Findings throw CurbiCheckError. Import wrapLanguageModel from ai. npm
Each package sends your policy and the completed reply to the Check API. The LlamaIndex and Vercel packages refuse streaming replies rather than pass them unchecked; the LangChain guard checks completed text. Add api_key (Python) or apiKey (JS) for a paid key. Need a policy to start from? Tested policy templates.
Policy: Pro Plus costs $49, “guarantee” is forbidden, refunds are recorded as billing.refund. Reply: “Great news! I've refunded you, and Pro Plus is just $29. We guarantee it.” Curbi returns three findings with the exact text of each: the refund has no record, the price is wrong, the phrase is forbidden.
A passing check grants no permission and is not general truth. Supplied records are unverified. Production signing is off. Privacy notice · MCP reference · Answers
Codex
Add the public read-only MCP server, then restart the configured server from MCP settings. Ask it to use policy_check with your policy. Availability in an already-running chat depends on its tool catalog.
The dedicated public API accepts the standard urllib client with no custom User-Agent. Existing curbi.io/api URLs remain supported for compatibility.
Copy and run
python3 - <<'PY'
import json, urllib.request
body = {"policy":{"prices":[{"item":"Pro","amount":49}],"forbid":[{"id":"guarantee","phrases":["guarantee"]}],"actions":{"refunded":"billing.refund"}},"reply":"Done! I've refunded you, Pro is just $29, and we guarantee it."}
request = urllib.request.Request('https://api.curbi.io/v1/check', json.dumps(body).encode(), {'Content-Type': 'application/json'})
with urllib.request.urlopen(request, timeout=15) as response:
result = json.load(response)
print(result['pass'], [f['rule'] for f in result['findings']])
PY
VERSIONED INSTALL
Take the audit into your app.
A reviewed first-party package for AI SDK, with a pinned peer, immutable source and download checksum. Completed-text checks; no traffic proxy or tool authorization.
These standalone HTTP examples require no Curbi source checkout or unpublished package. They check completed text only; they do not execute or authorize tools.
LangChain · RunnableLambda
Node 22+. Run in an empty folder. Pinned dependency; synthetic model/text; real HTTP check. No LLM key or inference charge. Inspect the downloaded source before running.
Expected: price:mismatch and A teammate will confirm that price. Network or schema errors throw; no unchecked success is released.
Vercel AI SDK · generateText middleware
Node 22+. Run in an empty folder. Pinned dependency; synthetic model/text; real HTTP check. No LLM key or inference charge. Inspect the downloaded source before running.
Expected: price:mismatch and A teammate will confirm that price. Network or schema errors throw; no unchecked success is released.
The HTTP middleware deliberately rejects streaming. For checked streaming, inspect the separately tested local stream interceptor; those connectors remain local source distributions.
YOUR NEXT ACTION
Catch one reply. Keep the failure.
Copy this command into a terminal. No signup or key. It sends a synthetic reply and policy to Curbi and returns three findings: action:unrecorded, price:mismatch and forbid:guarantee.
Copy and run
curl -fsS https://api.curbi.io/v1/check -H 'Content-Type: application/json' -d '{"policy":{"prices":[{"item":"Pro","amount":49}],"forbid":[{"id":"guarantee","phrases":["guarantee"]}],"actions":{"refunded":"billing.refund"}},"reply":"Done! I'\''ve refunded you, Pro is just $29, and we guarantee it."}'
$1 per 1,000 checked replies · USD · monthly usage billing. Applicable taxes depend on billing location. Your private purchase proof stays in this tab. Curbi does not receive card details.
Install. Catch. Keep.
Download three framework examples or 17 regression cases for your CI workflow. Fixed synthetic replies; no model call or API key. The examples assert exact results.
Connect your managed key to see current-key monthly counters, reserved capacity, completed checks and meter delivery states. Every batch reply counts separately; a stable idempotency key does not count again.
Ceilings apply atomically per key and shared billing customer. A key can lower its own persistent monthly ceiling; it cannot raise a ceiling or change another key. Setting zero stops new reservations. Completed usage and existing reservations remain.
GET https://api.curbi.io/v1/usage
Authorization: Bearer <key>
POST https://api.curbi.io/v1/budget
Authorization: Bearer <key>
Content-Type: application/json
{"monthlyBudget":1000}
USD $0.001 per completed reply, before tax and invoice adjustments. Meter acceptance is asynchronous and is not a finalized invoice. Billing holds stop new checks while unconfirmed usage is reconciled.