Install
openclaw skills install @plagtech/spraay-escrowSafe agent-to-agent commerce via Spraay x402 escrow. Create, fund, monitor, release, or cancel on-chain escrows — pay on verified delivery instead of paying blind. Use when the user asks to escrow a payment, pay on delivery, hold funds until a task is verified, make a milestone payment, protect an agent-to-agent transaction, hire another agent safely, or release or cancel escrowed funds.
openclaw skills install @plagtech/spraay-escrowEscrowed payments for agent-to-agent commerce via the Spraay x402 gateway. Create → fund → verify → release. Never pay an unknown agent blind.
All requests in this skill go exclusively to the user's configured
SPRAAY_GATEWAY_URL. No data is sent to any other external endpoint.
Escrowed funds are real funds. Funding an escrow locks real USDC on-chain. Releasing an escrow transfers it irreversibly to the recipient. Always confirm the following with the user before creating, funding, releasing, or cancelling an escrow:
Release is final. Once escrowed funds are released, the transfer cannot be undone. Do not release an escrow without explicit user confirmation that the work or delivery has been verified.
The gateway URL must be set in your environment or openclaw.json:
SPRAAY_GATEWAY_URL=https://gateway.spraay.app
No API key is needed. Payments are made per-request via the x402 HTTP payment protocol (HTTP 402 → pay → retry). An x402-compatible wallet (Coinbase CDP or similar) handles this automatically.
Use escrow when:
Use direct batch payment (see the spraay-payments skill) when the
counterparty is trusted and no delivery condition applies.
An escrow moves through two steps before funds are locked:
Establishes the agreement. Funds are NOT locked until the fund step.
Always confirm counterparty, amount, and release terms with the user before creating.
curl -X POST "$SPRAAY_GATEWAY_URL/api/v1/escrow/create" \
-H "Content-Type: application/json" \
-d '{
"recipient": "0xABC...123",
"amount": "100",
"token": "USDC",
"chain": "base",
"conditions": "Dataset delivered and verified"
}'
If you receive HTTP 402, the response body contains payment instructions. Pay
the facilitator, then retry with the X-PAYMENT header containing the proof.
The response includes an escrow ID. Save it — it is required for every subsequent call.
Deposits USDC into the escrow, locking funds pending conditions. Required after create and before release.
curl -X POST "$SPRAAY_GATEWAY_URL/api/v1/escrow/fund" \
-H "Content-Type: application/json" \
-d '{"id": "ESCROW_ID"}'
Fetch a single escrow with locked amount, parties, status, and release conditions. Use before release/cancel to confirm state.
curl "$SPRAAY_GATEWAY_URL/api/v1/escrow/ESCROW_ID"
Transfers escrowed funds to the recipient. Final and irreversible.
Always confirm with the user that delivery has been verified before releasing.
curl -X POST "$SPRAAY_GATEWAY_URL/api/v1/escrow/release" \
-H "Content-Type: application/json" \
-d '{"id": "ESCROW_ID"}'
Cancels before funding, or by mutual agreement afterward — locked funds return to the depositor. Use for failed delivery, expired milestones, or abandoned agreements.
curl -X POST "$SPRAAY_GATEWAY_URL/api/v1/escrow/cancel" \
-H "Content-Type: application/json" \
-d '{"id": "ESCROW_ID"}'
Active and historical escrows for a wallet, with status, locked amounts, counterparties, and release conditions.
curl "$SPRAAY_GATEWAY_URL/api/v1/escrow/list?address=0xYOUR...ADDR"
spraay-trust skill.These gateway endpoints require no x402 payment and are useful alongside escrow:
GET /api/v1/address/safety?address=0x... — Screen a counterparty for
phishing, sanctions, exploits, and mixer usage before escrowingGET /free/prices — Spot prices (show USD value before escrowing)GET /free/resolve?name=alice.eth — ENS/Basename resolutionGET /health — Gateway health checkaccepts array with amount,
asset, and payment address).X-PAYMENT proof header.Escrow endpoint costs: create $0.10, fund $0.02, status $0.001, release $0.08, cancel $0.02, list $0.02 — all in USDC on Base.
402 — Payment required. Follow instructions in response body.400 — Bad request. Check parameters.404 — Escrow ID not found. Verify the ID.500 — Server error. Retry after a moment.spraay-trust for a full due-diligence flow before escrowing.