Developers

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.

6Tools in the surfaceNot fifty
~700Tool definition tokensPublished, because leanness is the whole claim
10kWhere we would loseA bloated tool list erases the advantage entirely
Step 1 — a key, in one clickno account, no email
Step 2 — make a machine-native call

A small tool set with tight schemas. Every response reports what it cost you in the x-agent-tokens header and in _meta.

Issue a key first.
Evaluate a public server-rendered pagediscover → read → bounded query

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.

Issue a key above first.
Step 3 — from your own code
# 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-tokens
Send 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.

Discovery

Everything an agent needs to find us.

Honest scope

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.