{"uid":"cap_VHcmbXPq-6WxiSzM-9wlX","slug":"agent-exec-handoff-pay-per-use-agent-state-handoff-6d846fec","name":"Agent-Exec Handoff — Pay-Per-Use Agent State Handoff","description":"Accountless, pay-per-use code execution for software agents: submit source code, get stdout, stderr and exit code back from an isolated, network-less sandbox. No account, no API key -- possession of valid payment is sufficient.","url":"https://agent-exec.45.67.221.128.sslip.io/handoff","method":"POST","headers":{},"bodySchema":{"type":"object","required":["done","notDone","inFlight","pickUpFirst"],"properties":{"done":{"type":"array","description":"What is DONE. EVERY entry must have confidence 'measured' with non-null evidence -- a briefing cannot claim something is finished on unverified intent. Violating this is a free 400 (HANDOFF_DONE_REQUIRES_MEASURED), not a silent acceptance."},"notDone":{"type":"array","description":"What is NOT done. May be measured or unverified."},"inFlight":{"type":"array","description":"What was IN FLIGHT at the cut -- neither finished nor abandoned. May be measured or unverified."},"pickUpFirst":{"type":"string","description":"What the successor should do FIRST. Mandatory and non-empty: a briefing with no next action is not a handoff."}}},"responseSchema":{"type":"object","required":["id","expiresAt","payment"],"properties":{"id":{"type":"string","format":"uuid","description":"The handoff_id -- give this to the successor; it needs nothing else."},"payment":{"type":"object","properties":{"asset":{"type":"string"},"payer":{"type":"string","description":"The paying wallet's address."},"amount":{"type":"string","description":"Atomic units of the settlement asset that were charged."},"network":{"type":"string"},"transaction":{"type":"string","description":"On-chain settlement transaction hash."}}},"expiresAt":{"type":"integer","description":"Unix ms this briefing is swept. GET /handoff/{id} answers 410 between the deadline and the sweep, then 404."}}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.0053","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.0053/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0053","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0053","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_fOIrpLqbaperCg9XGZLKc","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.0053","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Creates a paid, time-limited handoff briefing that encodes task state (done, not-done, in-flight) so a successor AI agent can pick up exactly where a previous agent left off.","exampleAgentPrompt":"Create a handoff briefing for the next agent: mark 'database schema migration' as done (confirmed by migration log), mark 'write unit tests' as not done, note that 'seed script' is currently in flight, and tell the successor to start by running the seed script and verifying row counts.","exampleUseCases":[{"title":"Multi-agent pipeline task relay","prompt":"Store a handoff briefing for the next agent in the pipeline: 'fetch and parse RSS feeds' is done (confirmed by 47 items in the output file), 'generate summaries' is not done yet, 'deduplicate entries' is in flight, and tell the successor to finish deduplication first before starting on summaries."},{"title":"Long-running job checkpoint handoff","prompt":"I need to pass off my current work to a fresh agent — mark 'crawl product catalog pages 1–50' as done (evidence: 50 JSON files saved), 'crawl pages 51–200' as not done, nothing in flight, and tell the successor to start crawling from page 51."},{"title":"Agent failure recovery briefing","prompt":"Create a handoff so another agent can recover from where I crashed: 'authenticate with the payment API' is done (confirmed by token in env), 'submit invoices batch 1' is done (confirmed by receipt IDs), 'submit invoices batch 2' is in flight and may be incomplete, and tell the successor to check batch 2 status before retrying anything."}],"resultDescription":"Returns a UUID handoff ID the successor agent uses to retrieve the briefing via GET /handoff/{id}, along with an expiry timestamp (Unix ms) after which the record is swept, and a payment receipt showing the USDC amount charged, payer wallet, network, and on-chain transaction hash.","failureModes":["400 HANDOFF_DONE_REQUIRES_MEASURED — a 'done' entry lacks confidence='measured' or has null evidence; fix by ensuring all done items include verified evidence","402 Payment Required — the x402 payment header is missing, invalid, or insufficient funds","410 Gone — the handoff ID has passed its expiry deadline but not yet been swept; the briefing is no longer retrievable","404 Not Found — the handoff ID does not exist or has been swept after expiry","400 Bad Request — required fields (done, notDone, inFlight, pickUpFirst) are missing or pickUpFirst is empty string"],"whenToPreferThis":"Use this endpoint when you need accountless, pay-per-use agent state transfer with strict evidence requirements for completed tasks — ideal for multi-agent pipelines, agent failure recovery, or any scenario where a successor agent must pick up mid-task without shared memory or a central orchestration account. Prefer it over custom state-passing schemes when you want cryptographic payment proof of the handoff and a time-bounded, self-expiring briefing record.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T18:42:57.721Z","isFirstParty":false}