{"service":"liberty-agent-settlement","mode":"demo","money":false,"path":"/api/v0/simulate","methods":["POST","OPTIONS"],"auth":{"required":false,"mode":"demo","headers":["Authorization: Bearer <key>","X-Liberty-Key"],"key_id":"sha256 hex prefix (k_ + 12 chars). Raw key is never stored.","missing":"key_optional"},"persistence":false,"dry_run":false,"actions":["create","fund","submit","release","dispute"],"note":"One-shot demo lifecycle. Runs create → fund → submit → release|dispute through the same engine as POST /api/v0/transition. Create assigns a real as_… id. Optional Idempotency-Key (or body idempotency_key) makes that create id stable for retries; Liberty does not replay stored responses. Returns ordered steps, final job, payer_credits, agent_credits_delta, and the terminal receipt. Does not persist jobs or receipts. Not live escrow custody. Optional demo API key identifies the adapter; omit it and the route still works (key_optional). Not production auth.","idempotency":{"header":"Idempotency-Key","body":"idempotency_key","persistence":false,"replay":false,"note":"Optional. On create, SHA-256 of the key plus title/amount/criteria yields as_ + 10 hex. Same key and create fields = same job id. Different keys = different ids. Missing key = random as_ + 10 hex. Echoed on success; idempotent is true when the id came from the key. Later actions echo the key only. Liberty does not replay stored responses. No persistence. No SSRF. No real money."},"protocol":"/api/settlement.json","discovery":"/.well-known/agent.json","quote":"/api/v0/quote","commit":"/api/v0/transition","verify":"/api/v0/verify","simulate":"/api/v0/simulate","terminals":["release","dispute"]}