Skip to main content
Utter runs one loop end to end: a sentence becomes a live, priced endpoint, and an agent pays for it per call with safe on-chain settlement. Here are the six steps.
1

Utter

You type a sentence in the studio. Claude writes the handler code, the API schema (openapi.json), the agent card, and test cases. The output is a five-file bundle that describes a complete, self-contained endpoint.
2

Gate

A static security scan checks the generated code for secrets and dangerous imports before anything is built. A bundle that fails is rejected, no build runs.
3

Deploy

The deployer builds a container and runs the untrusted handler inside a gVisor sandbox with deny-by-default egress through a data proxy, no secrets, and hard resource, timeout, and size caps. A trusted sidecar sits in front and owns the money path.
4

Verify

A smoke test confirms the endpoint actually works: it drives an unpaid call to a 402, signs a real payment, and asserts a paid call returns 200 with a settlement receipt.
5

Identify and publish

The endpoint gets an on-chain ERC-8004 identity, is registered on-chain, and is listed on the marketplace with an A2A agent card so other agents can discover it.
6

Pay

An agent calls the endpoint and gets a 402. It signs a USDC payment, the facilitator reserves the cap in the escrow contract, the handler runs, and the response is validated. Only if it passes does the payment settle: min(computed, cap) is debited and split inline between you and the platform, all on-chain. If the response is bad, nothing is charged.

The escrow response gate

The primary money path is an escrow scheme, not a bare charge. This is the primitive the whole platform is built on.
The handler never runs against an unreserved authorization, so there is no free-compute vector. Settlement is exactly once: an idempotent /settle keyed by the payment nonce plus a GET /results/:idemKey recovery path means a retry never double charges and never re-signs. Read the full model in The escrow response gate.

What each piece does

Utter is a pnpm monorepo in TypeScript with Solidity contracts. The parts that carry the loop: The full map is in Architecture.
Payment is debited only after the response passes validation. This single rule, the escrow response gate, is what lets an agent call a brand new endpoint it has never used and trust that a bad answer costs nothing.