Get a key. Try a synthetic transaction.
No account, no sales call. Issue a sandbox key, call the intent endpoint, and watch the escrow state machine enforce its own rules — including refusing a decimal amount instead of quietly rounding it.
A small tool set with tight schemas. Every response reports what it cost you in the x-agent-tokens header and in _meta.
Use a public URL without credentials or private data. It looks for a machine-native surface first, and only reads the document if there is not one. Then it returns the affordances for one intent, and what that cost against swallowing the page.
# 1. get a key
KEY=$(curl -s -XPOST https://operator.worldauth.com/api/keys -H 'content-type: application/json' \
-d '{"label":"my agent"}' | jq -r .key)
# 2. list the tools (this is the whole surface)
curl -s -XPOST https://operator.worldauth.com/api/intent \
-H "authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq
# 3. open a synthetic escrow — integer minor units, idempotent
curl -si -XPOST https://operator.worldauth.com/api/intent \
-H "authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"lock_escrow","arguments":{
"asset":"GBP","amountMinor":42000,
"payer":"agent:me","payee":"carrier:northgate",
"ttlSeconds":86400,"idempotencyKey":"order-1"}}}' | grep -i x-agent-tokensSend amountMinor as a decimal, or as a string, and you will get a refusal rather than a rounding or a coercion — that is the point. Run the whole Level 1 kit with curl -sO https://operator.worldauth.com/kit/l1.mjs && node l1.mjs https://operator.worldauth.com.Everything an agent needs to find us.
- /llms.txt — plain-language instructions for agents
- /.well-known/agent-card.json — A2A agent card
- /.well-known/api-catalog — RFC 9727 catalog
- /.well-known/mcp/server-card.json — MCP server card
- /api/demo — live market snapshot
What this sandbox now is.
Keys and escrows are stored in Postgres and survive a restart. The amount, asset, TTL floor and idempotency rules are database constraints, not only application checks, so a bug in this process cannot violate them.
This used to read differently. State was in memory and per-instance, which meant a key we had forgotten had to be accepted anyway — refusing it would have been the worse lie — so the key gate was decoration and the escrow machine was a demonstration of one. A review said so plainly and it was right. The amount, asset, TTL floor and idempotency rules are now database constraints rather than checks in this process, which adds a separate enforcement boundary, and a key we did not issue is refused.
What is still missing for production: a replay store, witness nodes, settlement on a real rail, and a charter naming who is liable for what. These are not part of the evaluation beta. Discuss feasibility through a pilot.