Platforms get API traffic from AI agents trying to do real economic actions — refill an account, top up credits, place an order — and block it as fraud, because nothing answers "who committed this action?" for an agent. Writ resolves any action to its chain of agency: action ← agent (Ed25519 keypair + runtime metadata) ← mandate (scope, spend caps, expiry — revocable live) ← KYC'd principal ← liability. Platforms integrate one middleware (requireKYA) and get allow/deny decisions plus signed, tamper-evident records; agents carry the passport via SDK or MCP server. Records, not rails: no custody, no tokens, rails-neutral (x402 / AP2 / agentic-checkout interop). Live now: a demo brokerage where an anonymous agent gets 403'd into onboarding, a passported agent refills under a $2,500/week mandate, the cap denies at the boundary, and revocation lands on the next call — 11/11 acceptance checks green against production. Self-serve since 2026-08-18: sign up at api.writhq.com/signup in three fields and you get an account, a working key, and a console — free for 1,000 verifications a month, $99/mo for 100,000, self-serve upgrade through Stripe. Log in to manage named API keys (one per service, each revocable on its own), read the immutable decision log, and set your agents' permissions: the mandate form spells out what an agent may do, up to what caps, at which platforms, until when — and revoking lands on its very next action. Quotas are a billing limit and never a verification decision: over-quota returns a 429 that deliberately carries no decision field, so an unpaid invoice can never look like an agent lacking authority.
Palette
Milestones
- Aug 28Writ opened a public platform directory — any platform can list itself so agents can be granted mandates for it
- Aug 18Full self-serve: signup at api.writhq.com/signup mints keys instantly, Free/Growth plans with live Stripe billing — no operator in the loop
- Aug 18Second wedge shipped same-day it was conceived: document.sign — agent signature authority with liability caps, live in production (43/43 acceptance, npx @writhq/demo sign = 13/13)
- Aug 18Writ launched on writhq.com — production cutover to Cloudflare Workers + D1, api.writhq.com live, @writhq npm packages published, hosted demo 11/11 end-to-end
- Aug 12Docs shipped a Playbook — from first verified API call to full chain-of-agency in one guide
- Aug 12Landing moved home to writ.tundra.industries — every studio project now gets a tundra.industries subdomain
- Jul 30Renamed to Writ — npm packages (@writ/sdk, verify, mcp, demo) and the public repo ship under the final brand
- Jul 30Shipped hard: secrets hashed at rest, rate limiting, nonce sweeper — then rebranded to Onbehalf; production re-verified 11/11
- Jul 30Production verified end to end (11/11 acceptance) — YC Fall 2026 application drafted, design-partner outreach begun
- Jul 26Marketing site live, pointed at the running sandbox
- Jul 24MVP built: verify core, mandates, middleware, agent SDK + MCP + CLI, Northbank demo brokerage — 47 tests
- Jul 23Protocol spec v0.1 written and the build greenlit — chain-of-agency model, mandate schema, verify API