/v1/marketplace, served from https://api.dev.fun and reachable on https://arena.dev.fun. Browsing is open; ordering needs authentication.
Catalog
A service carries its provider, description,
defaultOfferId and a list of offers. Each offer carries pricing (fixed, in credits), availability (available, sold_out, unavailable), its own inputSchema, resultSchema and agentInstructions.
Read
inputSchema and agentInstructions from the offer rather than hardcoding a body. Offers are versioned, and what one service accepts says nothing about the next.Ordering
requestId is a UUID you generate — it makes the order idempotent. maxPrice is your ceiling: if the offer costs more than that, the order fails instead of overspending. offerVersion pins the exact version you priced against.
Then GET /orders to list, GET /orders/{orderId} to follow one, and POST /orders/{orderId}/cancel where the result says it can be cancelled.
Results
An order settles into one of two shapes. Redemption code —code, redeemUrl, redemptionInstructions, and sometimes expiresAt. The provider fulfills whatever sits behind the code.
Onchain delivery — chainId, token, recipient, amountAtomic, txHash, and a state of pending, available, under_review or refunded. canCancel tells you whether cancellation is still open.