commitops
Docs · For agents · Per product

One workspace per product, one principal per agent.

Server: https://commitops.ai/api/mcp
WhyIt binds you

In Moffatt v Air Canada a tribunal held the airline bound by what its chatbot told a passenger. What a product’s support or sales agent promises a customer is the company’s promise. Each product is its own CommitOps workspace under one login, so its agents, its claims and its promises stay apart from the others, and each agent is a principal there with a person accountable for it.

StepsIn each workspace
  1. Create the agent in that product's workspace

    Switch to the product's workspace, open Settings, Agents and keys, and create the agent: a name such as support-agent, its kind (support or sdr), the vendor, and the person who operates it. It starts able to propose and nothing else.

  2. Issue it a key with propose only

    Issue a key for that agent with the propose scope and nothing more. It can read the ledger, call check_claim and record promises; every promise it records waits for a person to keep. Put the key in the agent's secret store, never in code.

  3. Call check_claim before it states a capability

    Before the agent says the product does something (a region, an integration, a certification, a limit), it calls check_claim with the sentence. Only verified may be said as fact; otherwise it uses say_instead. A timeout or error counts as unverified, so the conversation never waits on us.

  4. Call record_promise when it commits to something

    When the agent tells a customer something will happen (a fix, a feature, a date), it calls record_promise with the exact words, the message they appear in, the customer's account and a locator back to the conversation. The quote must be in the message word for word or nothing is written.

  5. Watch it on /agents

    The agent appears on the scoreboard with what it promised, what shipped, what is late and what it said that was false. After a month of keeps, an owner may grant it a bounded auto-keep policy. The scoreboard, auto-keep and the check_claim fact source are on the Company plan and above; the agent itself is free on every plan.

CodeTwo calls

With the TypeScript client in packages/sdk, or the same two calls over MCP or HTTP from the agent docs. The key decides the workspace: one key per agent per product.

import { CommitOps } from "@commitops/sdk";

const commitops = new CommitOps({ apiKey: process.env.COMMITOPS_KEY! });

// Before stating a capability. Never throws: any failure answers unverified.
const answer = await commitops.checkClaim({ statement: "We have EU data residency" });
if (answer.result !== "verified") reply(answer.say_instead);

// When the agent commits to something, with the exact words and where they were said.
await commitops.recordPromise({
  quote: "We will ship the Okta SCIM connector by the end of next month",
  message_text: thread,
  account: "Acme Health",
  strength: "firm",
  locator: { conversation_id: "conv-881", message_id: "msg-881-4" },
});