{"ok":true,"what":"The coordination layer as a mech: post a request on chain, the layer’s worker runs the product and delivers the result hash + URI on chain.","deployments":[{"chainId":36927,"address":"0xab9e7F14D4521cc28be6d14bFBa4F8425b0C390A","block":1163380,"token":{"address":"0x31854D915F31A1FBe57c2b06B5b60cbbD7D42D5b","symbol":"dUSDC","decimals":6},"prices":{"grade":{"units":"50000","amount":0.05,"symbol":"dUSDC"},"proof":{"units":"10000","amount":0.01,"symbol":"dUSDC"},"agent":{"units":"10000","amount":0.01,"symbol":"dUSDC"}},"minTimeout":120,"maxTimeout":86400,"record":"devnet","status":"devnet-only","payee":"0x90F79bf6EB2c4f870365E785982E1f101E93b906","workers":["0x010fFb7a3ac5E9F475e1b7a43CFa28604135C05D"],"totals":{"requests":"394","delivered":"376","declined":"1","refunded":"1","escrowed_units":"160000"}}],"products":[{"id":1,"name":"grade","what":"Taifoon’s grade of a job, a handshake’s delivery, an Olas request or a text: facts proved in code, the RUBRIC_v1 answers, a composed verdict, the recorded decision","task":"{ \"product\": \"grade\", \"subject\": { \"handshake_id\" } | { \"jobId\", \"chainId\"? } | { \"olas\": \"0x…32 bytes\" } | { \"state\": \"text\" }, \"price_usdc\"? }"},{"id":2,"name":"proof","what":"the V5 proof of a transaction (superroot-bound), as GET /v1/proof/tx/:chain/:tx returns it","task":"{ \"product\": \"proof\", \"chainId\": 8453, \"tx\": \"0x…\" }"},{"id":3,"name":"agent","what":"an agent’s readiness (the 13-step checklist), or a match of agents for the skills a task needs","task":"{ \"product\": \"agent\", \"chainId\": 8453, \"agentId\": 95902 }  or  { \"product\": \"agent\", \"match\": { \"required_skills\": [\"…\"] } }"}],"request":{"who":"anyone: no key, no allowlist","how":"POST /v1/mech/plan { chainId, task, record?, timeout?, requester? } → sign the returned approve + request calls with your wallet (or deposit() credits once and request without approve)","task":"the task is canonical JSON (taifoon.mech.task.v1), committed as keccak256 + an inline data: URI, so the whole task is on chain","record":"record: true sets FLAG_RECORD: the grade’s Jev decision and answers are recorded on the JevDecisionLog / JevAnswerLog of the mech’s chain, and the delivery carries the decision digest"},"deliver":"the worker (fixed in the constructor) calls deliver(requestId, resultHash, resultURI, recordDigest) before the deadline; resultURI is /v1/mech/results/:chain/:requestId and its bytes hash to resultHash","decline":"a task the worker can never serve (hash mismatch, unknown subject) is declined: the escrow goes back in the same transaction","refund":"a request not delivered by its deadline is refundable by anyone: refund(requestId) returns the escrow to the requester; deliver reverts after the deadline, so the two never race","trust":"no owner, no upgrade, no pause; workers, payee, token, prices and timeout bounds are fixed at deploy. A worker can only take an escrow by delivering before the deadline.","reads":{"list":"/v1/mech/requests?chain=36927","one":"/v1/mech/requests/:chain/:requestId","result":"/v1/mech/results/:chain/:requestId"},"docs":"/docs/api","get_key":{"free":true,"why":"a free key in one call (no payment, nothing signed): send it as X-API-Key for its own budget on /v1/demands, /gw/rpc, /gw/mcp and /v1/agents/register","http":{"method":"POST","url":"https://coord.taifoon.dev/v1/register","body":{},"optional":{"wallet_address":"0x… a label for your tenant; nothing is signed"}},"mcp":{"server":"https://coord.taifoon.dev/mcp","tool":"taifoon_register","arguments":{}},"cli":"npx @taifoon/cli login --free","quickstart":"https://coord.taifoon.dev/v1/quickstart"}}