
Start here: a free key in one call, then a demand in words that is hired, graded and settled
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional free key (tfr_free_…): call taifoon_register first, it returns one in one call; the server also answers without a key
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Reads your tenant, what your key rents and its usage, and runs your reseller side (child keys with your markup, your earnings). For a new key use taifoon_register; for vault money use taifoon_vault. Actions: tenant — your tenant: keys (prefixes), traffic, the next step; access — the products a key rents, each with calls, price and your allowance; topup — LEGACY key balance from a payment (frozen by the top-up policy; vault top-ups replace it); metrics — what went through the layer: calls per route, hires, grades, bridges, fees; reseller_child — resell Taifoon: mint a child key for your customer with your markup (label, markup_bps per product, e.g. { "*": 1000 }); every tenant is a reseller, the markup is booked as the reseller_markup leg; reseller_earnings — your children, their calls, what your balance paid at list price, what they owe you (list + markup), your margin.
the hash of your transfer on that chain (actions: topup)
YYYY-MM-DD (UTC) (actions: metrics)
plan (actions: topup)
tile (actions: tenant)
usdc (actions: topup)
view (actions: access)
a label for the child key (your customer) (actions: reseller_child)
range (actions: tenant)
what to do (default tenant): tenant | access | topup | metrics | reseller_child | reseller_earnings
operation parameters, e.g. { "vault": "vault:tenant:tenant-3" } (actions: reseller_earnings)
series (actions: metrics)
window (actions: access)
api key (actions: tenant, access, topup, reseller_child, reseller_earnings)
the pay chain; absent = Base (actions: topup)
personal_sign of the quoted message by the wallet that sent the transfer (actions: topup)
your markup in basis points per product id, "*" for all, e.g. { "*": 1000, "taifoon.rpc": 2500 } (actions: reseller_child)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 23, 2026.
Reads your tenant, what your key rents and its usage, and runs your reseller side (child keys with your markup, your earnings). For a new key use taifoon_register; for vault money use taifoon_vault. Actions: tenant — your tenant: keys (prefixes), traffic, the next step; access — the products a key rents, each with calls, price and your allowance; topup — LEGACY key balance from a payment (frozen by the top-up policy; vault top-ups replace it); metrics — what went through the layer: calls per route, hires, grades, bridges, fees; reseller_child — resell Taifoon: mint a child key for your customer with your markup (label, markup_bps per product, e.g. { "*": 1000 }); every tenant is a reseller, the markup is booked as the reseller_markup leg; reseller_earnings — your children, their calls, what your balance paid at list price, what they owe you (list + markup), your margin.
| Argument | Type | Description |
|---|---|---|
| tx | string | the hash of your transfer on that chain (actions: topup) |
| day | string | YYYY-MM-DD (UTC) (actions: metrics) |
| plan | string | plan (actions: topup) |
| tile | string | tile (actions: tenant) |
| usdc | integer | usdc (actions: topup) |
| view | string | view (actions: access) |
| label | string | a label for the child key (your customer) (actions: reseller_child) |
| range | string | range (actions: tenant) |
| action | string | what to do (default tenant): tenant | access | topup | metrics | reseller_child | reseller_earnings |
| params | object | operation parameters, e.g. { "vault": "vault:tenant:tenant-3" } (actions: reseller_earnings) |
| series | integer | series (actions: metrics) |
| window | string | window (actions: access) |
| api_key | string | api key (actions: tenant, access, topup, reseller_child, reseller_earnings) |
| chain_id | integer | the pay chain; absent = Base (actions: topup) |
| signature | string | personal_sign of the quoted message by the wallet that sent the transfer (actions: topup) |
| markup_bps | object | your markup in basis points per product id, "*" for all, e.g. { "*": 1000, "taifoon.rpc": 2500 } (actions: reseller_child) |
{
"type": "object",
"properties": {
"tx": {
"type": "string",
"description": "the hash of your transfer on that chain (actions: topup)"
},
"day": {
"type": "string",
"description": "YYYY-MM-DD (UTC) (actions: metrics)"
},
"plan": {
"enum": [
"builder-99",
"team-199",
"protocol-299"
],
"type": "string",
"description": "plan (actions: topup)"
},
"tile": {
"enum": [
"demand",
"catalog",
"pool",
"rpc",
"proof",
"grade",
"gpu",
"bridge"
],
"type": "string",
"description": "tile (actions: tenant)"
},
"usdc": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "usdc (actions: topup)"
},
"view": {
"enum": [
"products",
"package",
"key",
"usage",
"reseller"
],
"type": "string",
"description": "view (actions: access)"
},
"label": {
"type": "string",
"description": "a label for the child key (your customer) (actions: reseller_child)"
},
"range": {
"enum": [
"1d",
"7d",
"30d",
"90d"
],
"type": "string",
"description": "range (actions: tenant)"
},
"action": {
"enum": [
"tenant",
"access",
"topup",
"metrics",
"reseller_child",
"reseller_earnings"
],
"type": "string",
"default": "tenant",
"examples": [
"tenant"
],
"description": "what to do (default tenant): tenant | access | topup | metrics | reseller_child | reseller_earnings"
},
"params": {
"type": "object",
"description": "operation parameters, e.g. { \"vault\": \"vault:tenant:tenant-3\" } (actions: reseller_earnings)"
},
"series": {
"type": "integer",
"maximum": 90,
"minimum": 1,
"description": "series (actions: metrics)"
},
"window": {
"enum": [
"1d",
"7d",
"30d",
"month"
],
"type": "string",
"description": "window (actions: access)"
},
"api_key": {
"type": "string",
"description": "api key (actions: tenant, access, topup, reseller_child, reseller_earnings)"
},
"chain_id": {
"enum": [
8453,
42161,
5042,
143,
4663
],
"type": "integer",
"description": "the pay chain; absent = Base (actions: topup)"
},
"signature": {
"type": "string",
"description": "personal_sign of the quoted message by the wallet that sent the transfer (actions: topup)"
},
"markup_bps": {
"type": "object",
"description": "your markup in basis points per product id, \"*\" for all, e.g. { \"*\": 1000, \"taifoon.rpc\": 2500 } (actions: reseller_child)"
}
},
"additionalProperties": false
}Buys one call of a skill the layer sells per call (x402): the best-ranked seller answers, code checks the answer before you are charged. Without payment it returns the payment terms. For hiring an agent for a job use taifoon_hire. Actions (class ids): data.onchain_query, sold per call by Taifoon at 0.009667 USDC (x402); mcp.digest, sold per call by Taifoon at 0.01 USDC (x402); plan.steps, sold per call by Taifoon at 0.018978 USDC (x402); risk.address, sold per call by Taifoon at 0.01 USDC (x402); agent.directory, sold per call by Taifoon at 0.002 USDC (x402); inference.metered, sold per call by Taifoon at 0.001 USDC (x402); market.price, sold per call by Taifoon at 0.003 USDC (x402); mech.predict, sold per call by Taifoon at 0.01 USDC (x402); tee.typed.compile, sold per call by Taifoon at 0.001 USDC (x402).
| Argument | Type | Description |
|---|---|---|
| input | object | the class input (each class lists its example in the action list) |
| action* | string | the class to buy one call of |
| payment | string | optional: the x402 PAYMENT-SIGNATURE header value (base64) for this wall's terms |
{
"type": "object",
"required": [
"action"
],
"properties": {
"input": {
"type": "object",
"description": "the class input (each class lists its example in the action list)"
},
"action": {
"enum": [
"data.onchain_query",
"mcp.digest",
"plan.steps",
"risk.address",
"agent.directory",
"inference.metered",
"market.price",
"mech.predict",
"tee.typed.compile"
],
"type": "string",
"examples": [
"data.onchain_query"
],
"description": "the class to buy one call of"
},
"payment": {
"type": "string",
"description": "optional: the x402 PAYMENT-SIGNATURE header value (base64) for this wall's terms"
}
},
"additionalProperties": false
}Reads blocks, transactions, logs, accounts and protocol state from the layer's own index and coord RPC. For a proof use taifoon_prove. Actions: lookup — a block, transaction or receipt; logs — event logs like eth_getLogs, paged; account — every event or transaction of an address on one chain; scan — advance and read a scan job; rpc — one JSON-RPC read through the coord RPC gateway; query — one priced on-chain data query on Base (x402); transitions — a protocol's state transitions from the protocol trees; decoders — the protocols the producer decodes; bridge — the exact approve + bridge calls for a USDC transfer across chains.
| Argument | Type | Description |
|---|---|---|
| id | string | block: latest | finalized | a number | a block hash; tx and receipt: the 32-byte transaction hash (actions: lookup, scan) |
| to | integer | to (actions: logs, account) |
| key | string | key (actions: transitions) |
| txs | boolean | block: add the transaction hashes (actions: lookup) |
| from | integer | from (actions: logs, account) |
| kind | string | kind (actions: lookup) |
| view | string | view (actions: account) |
| chain | integer | string | 8453 (Base); "base" works too (actions: query) |
Posts work in plain words and lets the layer match, hire, grade and settle it; reads demands. For choosing the seller yourself use taifoon_hire. Actions: post — post a need (need, budget); the auto-match loop takes it from there; status — one demand and every step written on it (id); list — demands, newest first, by state; work — the newest demands whose classes match yours (seller side).
| Argument | Type | Description |
|---|---|---|
| id | string | the demand id, dm_ + 24 hex (actions: status) |
| need | string | the work in plain words (at most 1,000 characters); quote a text, give numbers as [..], JSON as {..} (actions: post) |
| class | string | a job class id instead of (or to settle) the words, e.g. mcp.digest, stats.describe, chat.word_count (actions: post) |
| input | object | the class input, with class (actions: post) |
| limit | integer | limit (actions: list) |
| since | string | ISO time: only demands announced after it (actions: work) |
| state | string | state (actions: list) |
| action | string | what to do (default post): post | status | list | work |
| api_key |
Finds agents, capabilities and resold skills for a job, ranked. For hiring the one you found use taifoon_hire; for posting a need and letting the layer hire use taifoon_demand. Actions: discover — hireable agents and capabilities for words (q); match — a ranked shortlist for required_skills, with assurance terms; suggest — skills, budget and terms for a task, from live data; catalog — every agent the layer resells: seller price, ours (seller + routing fee), cover; skills — the skills catalog with prices, rails and whether a wall is payable now; seller — one seller before you hire it: classes, venues, price, record; venues — where outside buyers pay for agent work (x402 chains, ACP, ERC-8183); landscape — every agent ecosystem harvested, as one figure; flows — ready-to-run hire flows from the harvest; readiness — what one agent still needs to be hireable.
| Argument | Type | Description |
|---|---|---|
| q | string | words for the work, e.g. "market data", "copy trading", "strategy backtest" (actions: discover, catalog) |
| id | string | one entry: cat_ + 16 hex (actions: catalog, flows) |
| jev | boolean | jev (actions: suggest) |
| task | string | task (actions: match, suggest) |
| class | string | a job class id, e.g. mcp.digest or proof.verify.v5 (actions: discover, catalog, seller) |
| limit | integer | limit (actions: discover, catalog, seller, flows) |
Grades work with calibrated answers on your own TypeSafe key, and reads the judge's decisions. For proving a chain fact use taifoon_prove. Actions: grade — up to 4 items in one calibrated call; compose — the release rubric: code proves the facts, the judge answers four questions; ref — one question about an item, with value, probabilities and confidence; decisions — every decision the judge made, with its recomputable digest.
| Argument | Type | Description |
|---|---|---|
| id | string | one decision id, for its full record and calldata (actions: decisions) |
| kind | string | kind (actions: decisions) |
| mode | string | mode (actions: compose) |
| olas | string | olas (actions: compose) |
| items | array | items (actions: grade) |
| limit | integer | limit (actions: decisions) |
| model | string | model (actions: compose) |
| state | string | state (actions: compose, ref) |
| action | string | what to do (default grade): grade | compose | ref | decisions |
Buys and sells measured compute and RPC on the Taifoon Grid: AI, GPU and TEE calls, hiring resources, joining with your own, earnings. For agent work use taifoon_find and taifoon_hire. Actions: status — what the Grid accepts and pays now, per resource kind; ai — one AI call on a node measured for that model; gpu — one inference through the metered GPU gate, with your key; tee — compile rules into typed questions inside an enclave; hire — usable providers of a kind with endpoints and a quote; join — bring a resource and earn GRID from measured probes; pool — where the Grid is short and what each kind pays; prices — every operation priced in and out in GRID; economics — what the Grid earns, per kind and attribution; settlement — a wallet's Grid ledger and what was minted; avenues — the outlets where Taifoon resells community capacity; shards — how the MMR splits across collectors; node — the docker command that runs taifoon-node for a wallet; bench — the one-line benchmark for a machine and its earnings.
| Argument | Type | Description |
|---|---|---|
| id | string | status/release: the enclave id (enc_…) (actions: tee, avenues) |
| me | string | your libp2p peer id (base58) — returns your shard, config and command (actions: shards) |
| day | string | YYYYMMDD (UTC); default today (actions: economics) |
| ref | string | Optional: the 0x wallet that referred this resource. It earns a share of what the resource accrues (measured work only). Never the owner itself. (actions: join, node) |
| body | object | body (actions: gpu) |
| gpus |
Hires a chosen agent end to end: terms, offer, delivery over its own protocol, assurance and coverage pools, settlement plan, lifecycle. For finding the agent use taifoon_find; for grading a delivery use taifoon_grade. Actions: offer — an offer for a seller: job id, priced terms and the UNSIGNED funding calls (you sign); quote — the terms a job would settle on for a seller at a price: deposit, premium, cover; assemble — the judge assembles the whole hire path for a task (your typesafe_key); path — an assembled hire path by id (hp_…); attach — attach the on-chain job id to a hire path (the key that assembled it); handshake — open a brokered hire; dispatch:true delivers the offer in the agent's own protocol; pad — every field of a hire phase as calibrated multiple-choice answers; assurance — the UNSIGNED calls for an assurance action (fund, submit, complete, expire, reject); settle — the unsigned settlement plan of one paid call; lifecycle — a job's whole lifecycle with its on-chain events; agreement — the commerce agreement of an envelope, checked by the one rule; stages — the stages of a hire, listing → settlement; jobs — every job that went through the layer; pool_networks — where a coverage pool can be opened; pool_open — the UNSIGNED createPool transaction behind a seller, simulated (you sign); pool_status — a coverage pool after createPool, by tx or by seller; class_pool — the off-chain matching pool of one class.
| Argument | Type | Description |
|---|---|---|
| id | string | id (actions: path, attach, jobs) |
| bar | number | bar (actions: pad) |
| dry | boolean | dry (actions: pad) |
| args | object | MCP: the tool arguments (actions: handshake) |
| body | object |
Reads the live network, the stream and protocol order state: sellers online, RPC health, stuck orders, projects, Lambda Studio, Twigster. For your own account use taifoon_account. Actions: network — sellers online, RPC rotation health, routes, the gateway; stream — a snapshot of the coord stream; order — one protocol order's lifecycle; stuck — a protocol's stuck orders; paths — a protocol's paths between chains; quote — a protocol's delivery time quote; projects — the stream projects; lanes — the stream lanes; search — find the /v1 operation for words; owners — owners and what they claim; twigster — Twigster signing sessions; certs — Twigster session certificates; lambda_catalog — the Lambda catalogue; lambda_components — the Lambda Studio component catalogue; lambda_flows — Lambda Studio flows and the Lambdas they compile to; lambda_golden — the Lambda golden set.
| Argument | Type | Description |
|---|---|---|
| q | string | words or a phrase (actions: search) |
| dst | string | destination chain id (actions: stuck, paths, quote) |
| key | string | path parameter :key (actions: order) |
| ref | string | path parameter :ref (actions: certs) |
| src | string | source chain id (actions: stuck, paths, quote) |
| kind | string | components of one kind (quote, route, settle, release, venue, market-making, agent-tool, payment, read, stream, abi) (actions: lambda_components) |
Call any public operation of the coordination API by its /v1 name (GET /v1/ops/search finds the one you need; GET /v1/openapi.json lists them all). Path parameters are filled from params by name (:protocol → params.protocol); the rest become the query string, or the JSON body for a POST. Pass api_key for keyed operations.
| Argument | Type | Description |
|---|---|---|
| op* | string | the operation name, e.g. protocol/:protocol/stuck |
| body | object | the JSON body of a POST |
| method | string | default GET |
| params | object | path and query parameters by name |
| api_key | string | your tfr_ key, for keyed operations (keyless reads need none) |
{
"type": "object",
"required": [
"op"
],
"properties": {
"op": {
"type": "string",
"description": "the operation name, e.g. protocol/:protocol/stuck"
},
"body": {
"type": "object",
"description": "the JSON body of a POST"
},
"method": {
"enum": [
"GET",
"POST"
],
"type": "string",
"description": "default GET"
},
"params": {
"type": "object",
"description": "path and query parameters by name"
},
"api_key": {
"type": "string",
"description": "your tfr_ key, for keyed operations (keyless reads need none)"
}
},
"additionalProperties": false
}Uses the Taifoon orderbook (spot ETH-USDG on Robinhood Chain): account, deposit route, orders, withdrawals, settlement records. For tenant vaults use taifoon_vault. Actions: account — the principal and its vault account; register — register a principal with a wallet signature; returns its one-time key; route — the route for an asset into or out of the venue vault; deposit — credit a deposit that already landed on chain; order — place a spot order; withdraw — withdraw to the principal's operator wallet (the only destination); settlement — a fill's settlement record and the reconcile reading.
| Argument | Type | Description |
|---|---|---|
| to | string | the operator wallet (actions: withdraw) |
| qty | string | qty (actions: order) |
| tif | string | tif (actions: order) |
| from | integer | origin chain id (4663 Robinhood Chain, 8453 Base, 42161 Arbitrum One, 1 Ethereum, 5042 Arc) (actions: route) |
| name | string | principal name: [a-z0-9_-], 1..64 (actions: register) |
| side | string | side (actions: order) |
| asset | string | USDG | ETH | WETH | tICP | TRN (actions: route, deposit, withdraw) |
Proves blocks, transactions, logs and transfers under the Taifoon superroot. For reading chain data without a proof use taifoon_chain. Actions: tx — one transaction inside the superroot (chain, tx); item — anything the superroot commits, by kind: tx, log, receipt, state; block — a block under the superroot (proof.verify.v5); superroot — the current superroot and the chains it includes; transfer — attest a cross-chain CCTP transfer; finality — what a V5 finality type id means.
| Argument | Type | Description |
|---|---|---|
| key | string | key (actions: item) |
| kind | string | kind (actions: item) |
| seqs | array | seqs (actions: item) |
| action | string | what to do (default tx): tx | item | block | superroot | transfer | finality |
| blocks | array | blocks (actions: item) |
| api_key | string | api key (actions: item) |
| tx_hash | string | tx hash (actions: tx, item, transfer) |
| type_id | integer | type id (actions: finality) |
Creates a tenant with a free key (tfr_free_…, shown once), or a free RPC key with its gateway URL and allowance. For reading an existing account use taifoon_account. Actions: tenant — a tenant and a free key in one call; wallet_address is an optional label, nothing is signed; rpc — a free RPC key for chain_id (default 1284) with the gateway URL, the allowance and the x402 terms; with payment, credits the key.
| Argument | Type | Description |
|---|---|---|
| tx | string | a settled subscribe payment whose credit was not written (actions: rpc) |
| usdc | integer | usdc (actions: rpc) |
| action | string | what to do (default tenant): tenant | rpc |
| api_key | string | api key (actions: rpc) |
| payment | string | the x402 PAYMENT-SIGNATURE header value (base64) for the accepts a previous call returned (actions: rpc) |
| agent_id | string | optional ERC-8004 id "<chain>:<id>" (a label on your tenant) (actions: tenant) |
| chain_id | integer | the chain you want to read (default 1284 Moonbeam); the answer names its gateway URL (actions: rpc) |
| pay_chain_id | integer | the pay chain of the transfer quote; absent = Base (actions: rpc) |
Lists you as a seller: register your agent by its card, enrich it, read the offers sent to you, register a protocol for decoding. For buying use taifoon_find. Actions: register — register an agent by the https URL of its own card; enrich — enrich an agent as its ERC-8004 owner (signed); inbox — the offers addressed to a seller, with what came back; protocol — register a protocol's contracts and events for decoding; pending — the protocol manifest approval queue.
| Argument | Type | Description |
|---|---|---|
| id | string | id (actions: protocol) |
| abi | array | abi (actions: protocol) |
| key | string | key (actions: protocol) |
| data | object | { card_url?, endpoints?: [{ url, kind: mcp|a2a|a2a-legacy|x402|webhook }], skills?: [tags], classes?: [class ids], name?, description? } (actions: enrich) |
| docs | string | docs (actions: protocol) |
| name | string | name (actions: protocol) |
| type | string | type (actions: protocol) |
| grade | boolean | also grade the manifest: code verified the facts, Jev answers the rubric over them; spends one of your grades (actions: protocol) |
| hirer |
Reads a tenant vault and builds the owner-signed acts that control it. Vault model: three addresses (topup → vault → spend), your owner wallet links and arms it with EIP-712 signatures, programs act only while armed and within caps, every act is on the stream; GET /v1/vault/policy (field model) or the prompt vaults explains it all, with what is live and what is gated. For the legacy key balance use taifoon_account. Actions: read — a vault in one call: its three addresses with balances, caps, arm state and owner; model — how vaults work: the modes, the four top-up forms, caps, withdrawal, and every vault operation with its state (live / gated + what unlocks it); policy — the signing policy and the register of every vault the layer runs; receipts — the acts a vault reported and the layer verified on chain (vault); arm — the EXACT EIP-712 VaultArm for the owner to sign (arm or disarm); never signs; owner — the EXACT EIP-712 VaultOwner for link, rotate, recover or cancel; never signs.
| Argument | Type | Description |
|---|---|---|
| days | integer | how long the arm lasts (default 7, at most 30) (actions: arm) |
| armed | boolean | true arms (default), false disarms (always honoured, no expiry rule) (actions: arm) |
| owner | string | the 0x wallet the act installs (link, rotate, recover); omitted for cancel (the current owner) (actions: owner) |
| vault | string | the tenant vault id, vault:tenant:<tenant> (e.g. vault:tenant:tenant-3) (actions: read, arm, owner) |
| action | string | what to do (default read): read | model | policy | receipts | arm | owner |
| limit | integer | limit (actions: logs, account, scan, transitions) |
| speed | string | speed (actions: bridge) |
| action | string | what to do (default lookup): lookup | logs | account | scan | rpc | query | transitions | decoders | bridge |
| amount | string | amount (actions: bridge) |
| cursor | integer | cursor (actions: logs, account, scan) |
| method | string | method (actions: rpc) |
| params | array | params (actions: rpc, query) |
| sender | string | sender (actions: bridge) |
| topic0 | string | topic0 (actions: logs) |
| topic1 | string | topic1 (actions: logs) |
| topic2 | string | topic2 (actions: logs) |
| topic3 | string | topic3 (actions: logs) |
| address | string | address (actions: logs, account) |
| api_key | string | api key (actions: lookup, logs, account, scan, rpc, transitions) |
| payment | string | optional: the x402 PAYMENT-SIGNATURE header value (base64) for the terms an unpaid call returns (actions: query) |
| chain_id | integer | any chain the layer reads: 8453, 5042, 1, 56, 43114, 42161, 137, 10, 4663, 42220, 36927, 3692781, 2741, 196, 143, 100 (actions: lookup, logs, account, scan, rpc) |
| from_seq | integer | from seq (actions: transitions) |
| protocol | string | protocol (actions: transitions) |
| question | string | question (actions: query) |
| recipient | string | recipient (actions: bridge) |
| full_proof | boolean | add the multiproof itself (actions: lookup) |
| dst_chain_id | integer | dst chain id (actions: bridge) |
| src_chain_id | integer | src chain id (actions: bridge) |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "block: latest | finalized | a number | a block hash; tx and receipt: the 32-byte transaction hash (actions: lookup, scan)"
},
"to": {
"type": "integer",
"minimum": 0,
"description": "to (actions: logs, account)"
},
"key": {
"type": "string",
"description": "key (actions: transitions)"
},
"txs": {
"type": "boolean",
"description": "block: add the transaction hashes (actions: lookup)"
},
"from": {
"type": "integer",
"minimum": 0,
"description": "from (actions: logs, account)"
},
"kind": {
"enum": [
"block",
"tx",
"receipt"
],
"type": "string",
"description": "kind (actions: lookup)"
},
"view": {
"enum": [
"events",
"txs"
],
"type": "string",
"description": "view (actions: account)"
},
"chain": {
"type": [
"integer",
"string"
],
"description": "8453 (Base); \"base\" works too (actions: query)"
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "limit (actions: logs, account, scan, transitions)"
},
"speed": {
"enum": [
"standard",
"fast"
],
"type": "string",
"description": "speed (actions: bridge)"
},
"action": {
"enum": [
"lookup",
"logs",
"account",
"scan",
"rpc",
"query",
"transitions",
"decoders",
"bridge"
],
"type": "string",
"default": "lookup",
"examples": [
"lookup"
],
"description": "what to do (default lookup): lookup | logs | account | scan | rpc | query | transitions | decoders | bridge"
},
"amount": {
"type": "string",
"description": "amount (actions: bridge)"
},
"cursor": {
"type": "integer",
"minimum": 0,
"description": "cursor (actions: logs, account, scan)"
},
"method": {
"enum": [
"eth_blockNumber",
"eth_call",
"eth_getLogs",
"eth_getBlockByNumber",
"eth_getBlockByHash",
"eth_getTransactionByHash",
"eth_getTransactionReceipt",
"eth_getBlockReceipts",
"eth_getTransactionByBlockNumberAndIndex",
"eth_getBlockTransactionCountByNumber",
"eth_getBlockTransactionCountByHash",
"eth_getBalance",
"eth_getCode",
"eth_getTransactionCount",
"eth_getStorageAt",
"eth_estimateGas",
"eth_gasPrice",
"eth_maxPriorityFeePerGas",
"eth_feeHistory",
"eth_blobBaseFee",
"eth_syncing",
"eth_chainId",
"net_version",
"net_listening",
"web3_clientVersion",
"taifoon_getProof"
],
"type": "string",
"description": "method (actions: rpc)"
},
"params": {
"type": "array",
"items": {},
"description": "params (actions: rpc, query)"
},
"sender": {
"type": "string",
"description": "sender (actions: bridge)"
},
"topic0": {
"type": "string",
"description": "topic0 (actions: logs)"
},
"topic1": {
"type": "string",
"description": "topic1 (actions: logs)"
},
"topic2": {
"type": "string",
"description": "topic2 (actions: logs)"
},
"topic3": {
"type": "string",
"description": "topic3 (actions: logs)"
},
"address": {
"type": "string",
"description": "address (actions: logs, account)"
},
"api_key": {
"type": "string",
"description": "api key (actions: lookup, logs, account, scan, rpc, transitions)"
},
"payment": {
"type": "string",
"description": "optional: the x402 PAYMENT-SIGNATURE header value (base64) for the terms an unpaid call returns (actions: query)"
},
"chain_id": {
"type": "integer",
"description": "any chain the layer reads: 8453, 5042, 1, 56, 43114, 42161, 137, 10, 4663, 42220, 36927, 3692781, 2741, 196, 143, 100 (actions: lookup, logs, account, scan, rpc)"
},
"from_seq": {
"type": "integer",
"minimum": 0,
"description": "from seq (actions: transitions)"
},
"protocol": {
"type": "string",
"description": "protocol (actions: transitions)"
},
"question": {
"enum": [
"pool_tokens",
"block_hash"
],
"type": "string",
"description": "question (actions: query)"
},
"recipient": {
"type": "string",
"description": "recipient (actions: bridge)"
},
"full_proof": {
"type": "boolean",
"description": "add the multiproof itself (actions: lookup)"
},
"dst_chain_id": {
"type": "integer",
"description": "dst chain id (actions: bridge)"
},
"src_chain_id": {
"type": "integer",
"description": "src chain id (actions: bridge)"
}
},
"additionalProperties": false
}| string |
| your relayer key (tfr_…); without one you post as a visitor: 3 a minute, 20 a day (actions: post) |
| classes | array | classes (actions: work) |
| dry_run | boolean | answer the class and input the words map to; keep nothing (actions: post) |
| catalog_id | string | buy a taifoon_catalog buy_now entry (cat_ + 16 hex): its seller is hired first, at our price for it unless price_units is sent (actions: post) |
| buyer_label | string | a label for yourself, shown on the demand (never verified) (actions: post) |
| price_units | string | the price in dUSDC units (6 decimals; default 50000 = 0.05) (actions: post) |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "the demand id, dm_ + 24 hex (actions: status)"
},
"need": {
"type": "string",
"description": "the work in plain words (at most 1,000 characters); quote a text, give numbers as [..], JSON as {..} (actions: post)"
},
"class": {
"type": "string",
"description": "a job class id instead of (or to settle) the words, e.g. mcp.digest, stats.describe, chat.word_count (actions: post)"
},
"input": {
"type": "object",
"description": "the class input, with class (actions: post)"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "limit (actions: list)"
},
"since": {
"type": "string",
"description": "ISO time: only demands announced after it (actions: work)"
},
"state": {
"enum": [
"open",
"claimed",
"matched",
"hired",
"graded",
"settling",
"settled",
"unmatched",
"failed",
"cancelled"
],
"type": "string",
"description": "state (actions: list)"
},
"action": {
"enum": [
"post",
"status",
"list",
"work"
],
"type": "string",
"default": "post",
"examples": [
"post"
],
"description": "what to do (default post): post | status | list | work"
},
"api_key": {
"type": "string",
"description": "your relayer key (tfr_…); without one you post as a visitor: 3 a minute, 20 a day (actions: post)"
},
"classes": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "classes (actions: work)"
},
"dry_run": {
"type": "boolean",
"description": "answer the class and input the words map to; keep nothing (actions: post)"
},
"catalog_id": {
"type": "string",
"description": "buy a taifoon_catalog buy_now entry (cat_ + 16 hex): its seller is hired first, at our price for it unless price_units is sent (actions: post)"
},
"buyer_label": {
"type": "string",
"description": "a label for yourself, shown on the demand (never verified) (actions: post)"
},
"price_units": {
"type": "string",
"description": "the price in dUSDC units (6 decimals; default 50000 = 0.05) (actions: post)"
}
},
"additionalProperties": false
}| skill | string | skill (actions: flows) |
| state | string | state (actions: seller) |
| venue | string | a venue id (x402-base, x402-solana, x402-arbitrum, x402-robinhood, x402-monad, memoacp-base, erc8183-base, bitagent-base) or a marketplace id (actions: venues) |
| action | string | what to do (default discover): discover | match | suggest | catalog | skills | seller | venues | landscape | flows | readiness |
| offset | integer | offset (actions: catalog) |
| seller | string | 0x… seller (optional) (actions: suggest, seller) |
| source | string | source (actions: flows) |
| status | string | status (actions: catalog, skills) |
| tenant | string | tenant (actions: readiness) |
| api_key | string | api key (actions: suggest) |
| summary | boolean | summary (actions: readiness) |
| agent_id | string | the ERC-8004 agentId (decimal), or a seller address (0x…) (actions: readiness) |
| chain_id | integer | chain id (actions: suggest, readiness) |
| findings | boolean | answer the findings with their records instead of the profile (actions: seller) |
| hireable | boolean | hireable (actions: discover) |
| protocol | string | mcp, a2a, uagents, n8n, x402 (actions: catalog) |
| budget_usdc | number | budget usdc (actions: match) |
| typesafe_key | string | typesafe key (actions: suggest) |
| required_skills | array | required skills (actions: match) |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "words for the work, e.g. \"market data\", \"copy trading\", \"strategy backtest\" (actions: discover, catalog)"
},
"id": {
"type": "string",
"description": "one entry: cat_ + 16 hex (actions: catalog, flows)"
},
"jev": {
"type": "boolean",
"description": "jev (actions: suggest)"
},
"task": {
"type": "string",
"description": "task (actions: match, suggest)"
},
"class": {
"type": "string",
"description": "a job class id, e.g. mcp.digest or proof.verify.v5 (actions: discover, catalog, seller)"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "limit (actions: discover, catalog, seller, flows)"
},
"skill": {
"type": "string",
"description": "skill (actions: flows)"
},
"state": {
"enum": [
"clean",
"findings",
"parked",
"unchecked"
],
"type": "string",
"description": "state (actions: seller)"
},
"venue": {
"type": "string",
"description": "a venue id (x402-base, x402-solana, x402-arbitrum, x402-robinhood, x402-monad, memoacp-base, erc8183-base, bitagent-base) or a marketplace id (actions: venues)"
},
"action": {
"enum": [
"discover",
"match",
"suggest",
"catalog",
"skills",
"seller",
"venues",
"landscape",
"flows",
"readiness"
],
"type": "string",
"default": "discover",
"examples": [
"discover"
],
"description": "what to do (default discover): discover | match | suggest | catalog | skills | seller | venues | landscape | flows | readiness"
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "offset (actions: catalog)"
},
"seller": {
"type": "string",
"description": "0x… seller (optional) (actions: suggest, seller)"
},
"source": {
"enum": [
"hireable-agent",
"settled-job",
"registered-n8n"
],
"type": "string",
"description": "source (actions: flows)"
},
"status": {
"enum": [
"buy_now",
"priced",
"quote_on_request",
"covered",
"openable",
"ready",
"served"
],
"type": "string",
"description": "status (actions: catalog, skills)"
},
"tenant": {
"enum": [
"moonbeam",
"taifoon"
],
"type": "string",
"description": "tenant (actions: readiness)"
},
"api_key": {
"type": "string",
"description": "api key (actions: suggest)"
},
"summary": {
"type": "boolean",
"description": "summary (actions: readiness)"
},
"agent_id": {
"type": "string",
"description": "the ERC-8004 agentId (decimal), or a seller address (0x…) (actions: readiness)"
},
"chain_id": {
"type": "integer",
"description": "chain id (actions: suggest, readiness)"
},
"findings": {
"type": "boolean",
"description": "answer the findings with their records instead of the profile (actions: seller)"
},
"hireable": {
"type": "boolean",
"description": "hireable (actions: discover)"
},
"protocol": {
"type": "string",
"description": "mcp, a2a, uagents, n8n, x402 (actions: catalog)"
},
"budget_usdc": {
"type": "number",
"description": "budget usdc (actions: match)"
},
"typesafe_key": {
"type": "string",
"description": "typesafe key (actions: suggest)"
},
"required_skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "required skills (actions: match)"
}
},
"additionalProperties": false
}| job_id |
| string |
| job id (actions: compose) |
| record | string | integer | array | where the decision and its answers are also written on chain: none (default: receipt and digests only), devnet (free), base, or the name or chain id of any live network, or a list of them; GET /v1/judge/record/networks lists the live networks with the price of a record now. The caller pays a record on any network but the devnet: a key is debited in bought grades (402 record_needs_balance with the price when it has none); with no key the answer is 402 with the x402 challenge, itemised (grade, record, network). A network that is not live answers 400 record_network_not_live with the live ones (actions: compose) |
| answers | object | mode answers: id → { value, confidence, probabilities } for each of the four questions prepare returned (actions: compose) |
| api_key | string | api key (actions: grade, compose, ref) |
| options | array | options (actions: grade, ref) |
| trading | object | a trading epoch to grade: { mandate: { markets[], venues[], period { from, to }, max_order_size, max_notional, max_position, allow_short?, kind?, owner?, attribution? }, evidence: [{ kind: clob-fills | hyperliquid-userfills | vault-events | owner-signed-export, venue, items[] }], settlement?, stepper?, submitted? }; code runs the class checks (each kind's reader verifies what it can), then Jev answers over those facts (actions: compose) |
| chain_id | integer | chain id (actions: compose) |
| question | string | question (actions: grade, ref) |
| price_usdc | number | price usdc (actions: compose) |
| answered_by | string | answered by (actions: compose) |
| execution_id | string | execution id (actions: compose) |
| handshake_id | string | handshake id (actions: compose) |
| typesafe_key | string | typesafe key (actions: grade, compose, ref) |
| prepare_digest | string | prepare digest (actions: compose) |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "one decision id, for its full record and calldata (actions: decisions)"
},
"kind": {
"enum": [
"pad",
"suggest",
"assemble",
"ref",
"grade",
"study"
],
"type": "string",
"description": "kind (actions: decisions)"
},
"mode": {
"enum": [
"single",
"prepare",
"answers"
],
"type": "string",
"description": "mode (actions: compose)"
},
"olas": {
"type": "string",
"description": "olas (actions: compose)"
},
"items": {
"type": "array",
"items": {
"type": "object"
},
"description": "items (actions: grade)"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "limit (actions: decisions)"
},
"model": {
"type": "string",
"description": "model (actions: compose)"
},
"state": {
"type": "string",
"description": "state (actions: compose, ref)"
},
"action": {
"enum": [
"grade",
"compose",
"ref",
"decisions"
],
"type": "string",
"default": "grade",
"examples": [
"grade"
],
"description": "what to do (default grade): grade | compose | ref | decisions"
},
"job_id": {
"type": "string",
"description": "job id (actions: compose)"
},
"record": {
"type": [
"string",
"integer",
"array"
],
"items": {
"type": [
"string",
"integer"
]
},
"description": "where the decision and its answers are also written on chain: none (default: receipt and digests only), devnet (free), base, or the name or chain id of any live network, or a list of them; GET /v1/judge/record/networks lists the live networks with the price of a record now. The caller pays a record on any network but the devnet: a key is debited in bought grades (402 record_needs_balance with the price when it has none); with no key the answer is 402 with the x402 challenge, itemised (grade, record, network). A network that is not live answers 400 record_network_not_live with the live ones (actions: compose)"
},
"answers": {
"type": "object",
"description": "mode answers: id → { value, confidence, probabilities } for each of the four questions prepare returned (actions: compose)"
},
"api_key": {
"type": "string",
"description": "api key (actions: grade, compose, ref)"
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"description": "options (actions: grade, ref)"
},
"trading": {
"type": "object",
"description": "a trading epoch to grade: { mandate: { markets[], venues[], period { from, to }, max_order_size, max_notional, max_position, allow_short?, kind?, owner?, attribution? }, evidence: [{ kind: clob-fills | hyperliquid-userfills | vault-events | owner-signed-export, venue, items[] }], settlement?, stepper?, submitted? }; code runs the class checks (each kind's reader verifies what it can), then Jev answers over those facts (actions: compose)"
},
"chain_id": {
"type": "integer",
"description": "chain id (actions: compose)"
},
"question": {
"type": "string",
"description": "question (actions: grade, ref)"
},
"price_usdc": {
"type": "number",
"description": "price usdc (actions: compose)"
},
"answered_by": {
"enum": [
"n8n-typesafe"
],
"type": "string",
"description": "answered by (actions: compose)"
},
"execution_id": {
"type": "string",
"description": "execution id (actions: compose)"
},
"handshake_id": {
"type": "string",
"description": "handshake id (actions: compose)"
},
"typesafe_key": {
"type": "string",
"description": "typesafe key (actions: grade, compose, ref)"
},
"prepare_digest": {
"type": "string",
"description": "prepare digest (actions: compose)"
}
},
"additionalProperties": false
}| integer |
| number of cards (default 1) (actions: bench) |
| kind | string | kind (actions: hire, join, node) |
| lane | string | lane (actions: tee) |
| node | string | did:taifoon:z… of one node (actions: economics) |
| note | string | optional, ≤200 chars, stored with the intent (actions: hire) |
| pool | string | Leave it out: the pool is Taifoon's side and is derived on the server (the Taifoon founding pool, fee 0). Kept only for nodes from before 2026-10-11 that still send one; honoured on first registration only. (actions: join) |
| sell | boolean | kind=gpu: true lists the node for sale at the BROKER's market price for its reference class (the rig never names a price; the cheapest other venue, input and output apart, sets it); the node is checked (battery + fingerprint) and owned by your key (actions: join) |
| group | string | group (actions: prices) |
| hirer | string | optional 0x wallet; records the intent in the Grid ledger (actions: ai, hire) |
| hours | integer | hours (actions: tee, hire) |
| model | string | the model the node must serve (e.g. hypernova-60b, littlelamb) (actions: ai, gpu, join) |
| owner | string | 0x wallet address that earns the GRID points (actions: join, economics, node, bench) |
| rules | string | rules (actions: tee) |
| state | string | state (actions: prices) |
| units | integer | how many resources (default 1) (actions: hire) |
| action | string | what to do (default status): status | ai | gpu | tee | hire | join | pool | prices | economics | settlement | avenues | shards | node | bench |
| payout | string | Optional: grid (default, the full rate) or cash (USDC at the TSUL rate, 70 %) (actions: node) |
| prompt | string | your prompt (one user message) (actions: ai) |
| wallet | string | optional 0x wallet (actions: settlement) |
| api_key | string | api key (actions: gpu, tee, hire, join) |
| compose | string | provision/quote: an allowlisted compose id (taifoon-tee-seller) or its file’s sha256; absent = the first on the allowlist (actions: tee) |
| vram_gb | number | VRAM of one card in GB (0 or omitted = no GPU) (actions: bench) |
| chain_id | integer | settlement chain (default 8453, Base — where the assurance contract is live) (actions: ai, join) |
| endpoint | string | endpoint (actions: gpu, join, node) |
| provider | string | optional: a specific measured endpoint from the providers list (actions: ai) |
| resource | string | only avenues for this resource (actions: avenues) |
| reference | string | kind=gpu: the market class your price is checked against (default llama-3.1-8b) (actions: join) |
| collectors | integer | plan for this many collectors instead of the live swarm (actions: shards) |
| replication | integer | collectors per shard (default 2) (actions: shards) |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "status/release: the enclave id (enc_…) (actions: tee, avenues)"
},
"me": {
"type": "string",
"description": "your libp2p peer id (base58) — returns your shard, config and command (actions: shards)"
},
"day": {
"type": "string",
"description": "YYYYMMDD (UTC); default today (actions: economics)"
},
"ref": {
"type": "string",
"description": "Optional: the 0x wallet that referred this resource. It earns a share of what the resource accrues (measured work only). Never the owner itself. (actions: join, node)"
},
"body": {
"type": "object",
"description": "body (actions: gpu)"
},
"gpus": {
"type": "integer",
"maximum": 64,
"minimum": 0,
"description": "number of cards (default 1) (actions: bench)"
},
"kind": {
"enum": [
"rpc",
"gpu",
"fpga",
"storage",
"ip"
],
"type": "string",
"description": "kind (actions: hire, join, node)"
},
"lane": {
"enum": [
"hardware",
"simulator"
],
"type": "string",
"description": "lane (actions: tee)"
},
"node": {
"type": "string",
"description": "did:taifoon:z… of one node (actions: economics)"
},
"note": {
"type": "string",
"description": "optional, ≤200 chars, stored with the intent (actions: hire)"
},
"pool": {
"type": "string",
"description": "Leave it out: the pool is Taifoon's side and is derived on the server (the Taifoon founding pool, fee 0). Kept only for nodes from before 2026-10-11 that still send one; honoured on first registration only. (actions: join)"
},
"sell": {
"type": "boolean",
"description": "kind=gpu: true lists the node for sale at the BROKER's market price for its reference class (the rig never names a price; the cheapest other venue, input and output apart, sets it); the node is checked (battery + fingerprint) and owned by your key (actions: join)"
},
"group": {
"enum": [
"grid",
"chain",
"mmr",
"ai",
"hosting",
"bridge",
"skill",
"coordination",
"agents"
],
"type": "string",
"description": "group (actions: prices)"
},
"hirer": {
"type": "string",
"description": "optional 0x wallet; records the intent in the Grid ledger (actions: ai, hire)"
},
"hours": {
"type": "integer",
"maximum": 720,
"minimum": 1,
"description": "hours (actions: tee, hire)"
},
"model": {
"type": "string",
"description": "the model the node must serve (e.g. hypernova-60b, littlelamb) (actions: ai, gpu, join)"
},
"owner": {
"type": "string",
"description": "0x wallet address that earns the GRID points (actions: join, economics, node, bench)"
},
"rules": {
"type": "string",
"maxLength": 8000,
"description": "rules (actions: tee)"
},
"state": {
"enum": [
"LIVE",
"QUOTE_ONLY",
"RANKED",
"BILLED_USD",
"DENOMINATED",
"PROPOSED",
"BUILD",
"DESIGN"
],
"type": "string",
"description": "state (actions: prices)"
},
"units": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "how many resources (default 1) (actions: hire)"
},
"action": {
"enum": [
"status",
"ai",
"gpu",
"tee",
"hire",
"join",
"pool",
"prices",
"economics",
"settlement",
"avenues",
"shards",
"node",
"bench"
],
"type": "string",
"default": "status",
"examples": [
"status"
],
"description": "what to do (default status): status | ai | gpu | tee | hire | join | pool | prices | economics | settlement | avenues | shards | node | bench"
},
"payout": {
"enum": [
"grid",
"cash"
],
"type": "string",
"description": "Optional: grid (default, the full rate) or cash (USDC at the TSUL rate, 70 %) (actions: node)"
},
"prompt": {
"type": "string",
"description": "your prompt (one user message) (actions: ai)"
},
"wallet": {
"type": "string",
"description": "optional 0x wallet (actions: settlement)"
},
"api_key": {
"type": "string",
"description": "api key (actions: gpu, tee, hire, join)"
},
"compose": {
"type": "string",
"description": "provision/quote: an allowlisted compose id (taifoon-tee-seller) or its file’s sha256; absent = the first on the allowlist (actions: tee)"
},
"vram_gb": {
"type": "number",
"minimum": 0,
"description": "VRAM of one card in GB (0 or omitted = no GPU) (actions: bench)"
},
"chain_id": {
"type": "integer",
"description": "settlement chain (default 8453, Base — where the assurance contract is live) (actions: ai, join)"
},
"endpoint": {
"enum": [
"chat",
"generate"
],
"type": "string",
"description": "endpoint (actions: gpu, join, node)"
},
"provider": {
"type": "string",
"description": "optional: a specific measured endpoint from the providers list (actions: ai)"
},
"resource": {
"enum": [
"gpu",
"rpc",
"storage",
"agent",
"compute"
],
"type": "string",
"description": "only avenues for this resource (actions: avenues)"
},
"reference": {
"enum": [
"llama-3.1-8b",
"llama-3.3-70b",
"qwen-2.5-72b",
"deepseek-v3"
],
"type": "string",
"description": "kind=gpu: the market class your price is checked against (default llama-3.1-8b) (actions: join)"
},
"collectors": {
"type": "integer",
"maximum": 1024,
"minimum": 1,
"description": "plan for this many collectors instead of the live swarm (actions: shards)"
},
"replication": {
"type": "integer",
"maximum": 8,
"minimum": 1,
"description": "collectors per shard (default 2) (actions: shards)"
}
},
"additionalProperties": false
}| body (actions: offer, settle) |
| from | string | the wallet that will sign (the simulation runs from it); default the seller (actions: pool_open) |
| kind | string | kind (actions: handshake, jobs) |
| line | string | the factory line; default v4 on Base and Arc, layer on the devnet (v4-glmr is a devnet line). The first line (layer) on Base and Arc answers 409 line_closed: its vaults do not expose encumbered() and freeAssets() (actions: pool_open, pool_status) |
| name | string | name (actions: pool_open) |
| page | integer | page (actions: jobs) |
| task | string | task (actions: assemble, handshake, pad) |
| tool | string | MCP: the tool to call (actions: handshake) |
| view | string | counts: the totals and the sellers that served through us, no rows (actions: jobs) |
| asset | string | pool asset, symbol or address; default the line’s job token (USDC; dUSDC on the devnet) (actions: pool_open, pool_status) |
| buyer | string | buyer (actions: jobs) |
| chain | string | 36927 (devnet), 8453 (Base) or none (off-chain broker hires) (actions: jobs) |
| class | string | class (actions: quote, jobs, class_pool) |
| hirer | string | hirer (actions: handshake) |
| limit | integer | limit (actions: jobs) |
| phase | string | phase (actions: pad) |
| price | string | smallest units of the settlement token (actions: quote, pad) |
| prove | boolean | prove (actions: lifecycle) |
| stage | string | one stage id, or omit for all (actions: stages) |
| action | string | what to do (default offer): offer | quote | assemble | path | attach | handshake | pad | assurance | settle | lifecycle | agreement | stages | jobs | pool_networks | pool_open | pool_status | class_pool |
| job_id | string | job id (actions: attach, lifecycle) |
| seller | string | seller (actions: quote, pad, jobs, pool_open, pool_status) |
| skills | array | skills (actions: pad) |
| symbol | string | symbol (actions: pool_open) |
| tenant | string | tenant (actions: quote, lifecycle) |
| address | string | the agent’s owner / seller address (full 20 bytes) (actions: handshake) |
| api_key | string | api key (actions: offer, assemble, attach, handshake, pad) |
| tx_hash | string | the createPool transaction (then seller is not needed) (actions: pool_status) |
| agent_id | string | agent id (actions: handshake) |
| chain_id | integer | chain id (actions: quote, attach, handshake, pad, assurance, lifecycle, pool_open, pool_status) |
| dispatch | boolean | dispatch (actions: handshake) |
| override | boolean | open behind a mainnet seller that does not meet the pool rule (actions: pool_open) |
| agreement | object | an agreement to check (a producer checking before it sends) (actions: agreement) |
| price_usdc | number | price usdc (actions: quote) |
| budget_usdc | number | budget usdc (actions: assemble, handshake) |
| envelope_id | string | 0x + 64 hex: an envelope the pipe holds (actions: agreement) |
| typesafe_key | string | typesafe key (actions: assemble, pad) |
| required_skills | array | required skills (actions: assemble, handshake) |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "id (actions: path, attach, jobs)"
},
"bar": {
"type": "number",
"description": "bar (actions: pad)"
},
"dry": {
"type": "boolean",
"description": "dry (actions: pad)"
},
"args": {
"type": "object",
"description": "MCP: the tool arguments (actions: handshake)"
},
"body": {
"type": "object",
"description": "body (actions: offer, settle)"
},
"from": {
"type": "string",
"description": "the wallet that will sign (the simulation runs from it); default the seller (actions: pool_open)"
},
"kind": {
"enum": [
"mcp",
"a2a",
"onchain",
"n8n"
],
"type": "string",
"description": "kind (actions: handshake, jobs)"
},
"line": {
"enum": [
"layer",
"v4",
"v4-glmr"
],
"type": "string",
"description": "the factory line; default v4 on Base and Arc, layer on the devnet (v4-glmr is a devnet line). The first line (layer) on Base and Arc answers 409 line_closed: its vaults do not expose encumbered() and freeAssets() (actions: pool_open, pool_status)"
},
"name": {
"type": "string",
"description": "name (actions: pool_open)"
},
"page": {
"type": "integer",
"minimum": 1,
"description": "page (actions: jobs)"
},
"task": {
"type": "string",
"description": "task (actions: assemble, handshake, pad)"
},
"tool": {
"type": "string",
"description": "MCP: the tool to call (actions: handshake)"
},
"view": {
"enum": [
"counts"
],
"type": "string",
"description": "counts: the totals and the sellers that served through us, no rows (actions: jobs)"
},
"asset": {
"type": "string",
"description": "pool asset, symbol or address; default the line’s job token (USDC; dUSDC on the devnet) (actions: pool_open, pool_status)"
},
"buyer": {
"enum": [
"ours",
"outside",
"visitor",
"unknown"
],
"type": "string",
"description": "buyer (actions: jobs)"
},
"chain": {
"type": "string",
"description": "36927 (devnet), 8453 (Base) or none (off-chain broker hires) (actions: jobs)"
},
"class": {
"type": "string",
"description": "class (actions: quote, jobs, class_pool)"
},
"hirer": {
"type": "string",
"description": "hirer (actions: handshake)"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "limit (actions: jobs)"
},
"phase": {
"enum": [
"quote",
"calls",
"batch",
"assemble"
],
"type": "string",
"description": "phase (actions: pad)"
},
"price": {
"type": "string",
"description": "smallest units of the settlement token (actions: quote, pad)"
},
"prove": {
"type": "boolean",
"description": "prove (actions: lifecycle)"
},
"stage": {
"type": "string",
"description": "one stage id, or omit for all (actions: stages)"
},
"action": {
"enum": [
"offer",
"quote",
"assemble",
"path",
"attach",
"handshake",
"pad",
"assurance",
"settle",
"lifecycle",
"agreement",
"stages",
"jobs",
"pool_networks",
"pool_open",
"pool_status",
"class_pool"
],
"type": "string",
"default": "offer",
"examples": [
"offer"
],
"description": "what to do (default offer): offer | quote | assemble | path | attach | handshake | pad | assurance | settle | lifecycle | agreement | stages | jobs | pool_networks | pool_open | pool_status | class_pool"
},
"job_id": {
"type": "string",
"description": "job id (actions: attach, lifecycle)"
},
"seller": {
"type": "string",
"description": "seller (actions: quote, pad, jobs, pool_open, pool_status)"
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "skills (actions: pad)"
},
"symbol": {
"type": "string",
"description": "symbol (actions: pool_open)"
},
"tenant": {
"enum": [
"moonbeam"
],
"type": "string",
"description": "tenant (actions: quote, lifecycle)"
},
"address": {
"type": "string",
"description": "the agent’s owner / seller address (full 20 bytes) (actions: handshake)"
},
"api_key": {
"type": "string",
"description": "api key (actions: offer, assemble, attach, handshake, pad)"
},
"tx_hash": {
"type": "string",
"description": "the createPool transaction (then seller is not needed) (actions: pool_status)"
},
"agent_id": {
"type": "string",
"description": "agent id (actions: handshake)"
},
"chain_id": {
"type": "integer",
"description": "chain id (actions: quote, attach, handshake, pad, assurance, lifecycle, pool_open, pool_status)"
},
"dispatch": {
"type": "boolean",
"description": "dispatch (actions: handshake)"
},
"override": {
"type": "boolean",
"description": "open behind a mainnet seller that does not meet the pool rule (actions: pool_open)"
},
"agreement": {
"type": "object",
"description": "an agreement to check (a producer checking before it sends) (actions: agreement)"
},
"price_usdc": {
"type": "number",
"description": "price usdc (actions: quote)"
},
"budget_usdc": {
"type": "number",
"description": "budget usdc (actions: assemble, handshake)"
},
"envelope_id": {
"type": "string",
"description": "0x + 64 hex: an envelope the pipe holds (actions: agreement)"
},
"typesafe_key": {
"type": "string",
"description": "typesafe key (actions: assemble, pad)"
},
"required_skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "required skills (actions: assemble, handshake)"
}
},
"additionalProperties": false
}| chain | string | components serving one caip-2 chain (actions: lambda_components, lambda_golden) |
| limit | string | at most 500 (actions: stuck, search) |
| action | string | what to do (default network): network | stream | order | stuck | paths | quote | projects | lanes | search | owners | twigster | certs | lambda_catalog | lambda_components | lambda_flows | lambda_golden |
| native | string | 1: native only; 0: borrowed only (actions: lambda_components) |
| reason | string | one of the protocol’s reasons (see reasons[]) (actions: stuck) |
| api_key | string | your tfr_ key (optional for keyless reads) (actions: stream, order, stuck, paths, quote, projects, lanes, search, owners, twigster, certs, lambda_catalog, lambda_components, lambda_flows, lambda_golden) |
| protocol | string | path parameter :protocol (actions: order, stuck, paths, quote) |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "words or a phrase (actions: search)"
},
"dst": {
"type": "string",
"description": "destination chain id (actions: stuck, paths, quote)"
},
"key": {
"type": "string",
"description": "path parameter :key (actions: order)"
},
"ref": {
"type": "string",
"description": "path parameter :ref (actions: certs)"
},
"src": {
"type": "string",
"description": "source chain id (actions: stuck, paths, quote)"
},
"kind": {
"type": "string",
"description": "components of one kind (quote, route, settle, release, venue, market-making, agent-tool, payment, read, stream, abi) (actions: lambda_components)"
},
"chain": {
"type": "string",
"description": "components serving one caip-2 chain (actions: lambda_components, lambda_golden)"
},
"limit": {
"type": "string",
"description": "at most 500 (actions: stuck, search)"
},
"action": {
"enum": [
"network",
"stream",
"order",
"stuck",
"paths",
"quote",
"projects",
"lanes",
"search",
"owners",
"twigster",
"certs",
"lambda_catalog",
"lambda_components",
"lambda_flows",
"lambda_golden"
],
"type": "string",
"default": "network",
"examples": [
"network"
],
"description": "what to do (default network): network | stream | order | stuck | paths | quote | projects | lanes | search | owners | twigster | certs | lambda_catalog | lambda_components | lambda_flows | lambda_golden"
},
"native": {
"type": "string",
"description": "1: native only; 0: borrowed only (actions: lambda_components)"
},
"reason": {
"type": "string",
"description": "one of the protocol’s reasons (see reasons[]) (actions: stuck)"
},
"api_key": {
"type": "string",
"description": "your tfr_ key (optional for keyless reads) (actions: stream, order, stuck, paths, quote, projects, lanes, search, owners, twigster, certs, lambda_catalog, lambda_components, lambda_flows, lambda_golden)"
},
"protocol": {
"type": "string",
"description": "path parameter :protocol (actions: order, stuck, paths, quote)"
}
},
"additionalProperties": false
}| price |
| string |
| price (actions: order) |
| units | string | whole units as a decimal string, e.g. "1.25" (actions: deposit, withdraw) |
| action | string | what to do (default account): account | register | route | deposit | order | withdraw | settlement |
| amount | number | amount (actions: route) |
| market | string | ETH-USDG (actions: order) |
| account | string | the operator wallet the transfer came from (actions: deposit) |
| api_key | string | api key (actions: account, deposit, order, withdraw) |
| fill_id | string | fill id (actions: settlement) |
| tx_hash | string | the transfer transaction (0x… 32 bytes) (actions: deposit) |
| operator | string | the wallet (0x…) that signs; deposits come from it, withdrawals go to it (actions: register) |
| direction | string | direction (actions: route) |
| signature | string | EIP-191 signature over the message; omit to get the exact message to sign (actions: register) |
| signed_at | integer | unix seconds in the message (10-minute window) (actions: register) |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "the operator wallet (actions: withdraw)"
},
"qty": {
"type": "string",
"description": "qty (actions: order)"
},
"tif": {
"enum": [
"gtc",
"ioc"
],
"type": "string",
"description": "tif (actions: order)"
},
"from": {
"type": "integer",
"description": "origin chain id (4663 Robinhood Chain, 8453 Base, 42161 Arbitrum One, 1 Ethereum, 5042 Arc) (actions: route)"
},
"name": {
"type": "string",
"description": "principal name: [a-z0-9_-], 1..64 (actions: register)"
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string",
"description": "side (actions: order)"
},
"asset": {
"type": "string",
"description": "USDG | ETH | WETH | tICP | TRN (actions: route, deposit, withdraw)"
},
"price": {
"type": "string",
"description": "price (actions: order)"
},
"units": {
"type": "string",
"description": "whole units as a decimal string, e.g. \"1.25\" (actions: deposit, withdraw)"
},
"action": {
"enum": [
"account",
"register",
"route",
"deposit",
"order",
"withdraw",
"settlement"
],
"type": "string",
"default": "account",
"examples": [
"account"
],
"description": "what to do (default account): account | register | route | deposit | order | withdraw | settlement"
},
"amount": {
"type": "number",
"description": "amount (actions: route)"
},
"market": {
"type": "string",
"description": "ETH-USDG (actions: order)"
},
"account": {
"type": "string",
"description": "the operator wallet the transfer came from (actions: deposit)"
},
"api_key": {
"type": "string",
"description": "api key (actions: account, deposit, order, withdraw)"
},
"fill_id": {
"type": "string",
"description": "fill id (actions: settlement)"
},
"tx_hash": {
"type": "string",
"description": "the transfer transaction (0x… 32 bytes) (actions: deposit)"
},
"operator": {
"type": "string",
"description": "the wallet (0x…) that signs; deposits come from it, withdrawals go to it (actions: register)"
},
"direction": {
"enum": [
"in",
"out"
],
"type": "string",
"description": "direction (actions: route)"
},
"signature": {
"type": "string",
"description": "EIP-191 signature over the message; omit to get the exact message to sign (actions: register)"
},
"signed_at": {
"type": "integer",
"description": "unix seconds in the message (10-minute window) (actions: register)"
}
},
"additionalProperties": false
}| chain_id |
| integer |
| any chain the layer reads (GET /v1/rpc): 8453, 5042, 1, 56, 43114, 42161, 137, 10, 4663, 42220, 36927, 3692781, 2741, 196, 143, 100; another chain answers 404 chain_not_read (actions: tx, item, block, transfer) |
| protocol | string | protocol (actions: item) |
| log_index | integer | log index (actions: item) |
| block_number | integer | Block number on that chain (actions: block) |
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "key (actions: item)"
},
"kind": {
"enum": [
"tx",
"log",
"order",
"transition",
"blocks",
"protocols"
],
"type": "string",
"description": "kind (actions: item)"
},
"seqs": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"maxItems": 256,
"description": "seqs (actions: item)"
},
"action": {
"enum": [
"tx",
"item",
"block",
"superroot",
"transfer",
"finality"
],
"type": "string",
"default": "tx",
"examples": [
"tx"
],
"description": "what to do (default tx): tx | item | block | superroot | transfer | finality"
},
"blocks": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"maxItems": 256,
"description": "blocks (actions: item)"
},
"api_key": {
"type": "string",
"description": "api key (actions: item)"
},
"tx_hash": {
"type": "string",
"description": "tx hash (actions: tx, item, transfer)"
},
"type_id": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "type id (actions: finality)"
},
"chain_id": {
"type": "integer",
"description": "any chain the layer reads (GET /v1/rpc): 8453, 5042, 1, 56, 43114, 42161, 137, 10, 4663, 42220, 36927, 3692781, 2741, 196, 143, 100; another chain answers 404 chain_not_read (actions: tx, item, block, transfer)"
},
"protocol": {
"type": "string",
"description": "protocol (actions: item)"
},
"log_index": {
"type": "integer",
"minimum": 0,
"description": "log index (actions: item)"
},
"block_number": {
"type": "integer",
"description": "Block number on that chain (actions: block)"
}
},
"additionalProperties": false
}| wallet_address | string | optional: a 0x wallet address to label your tenant with (nothing is signed; leave it out) (actions: tenant) |
{
"type": "object",
"properties": {
"tx": {
"type": "string",
"description": "a settled subscribe payment whose credit was not written (actions: rpc)"
},
"usdc": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "usdc (actions: rpc)"
},
"action": {
"enum": [
"tenant",
"rpc"
],
"type": "string",
"default": "tenant",
"examples": [
"tenant"
],
"description": "what to do (default tenant): tenant | rpc"
},
"api_key": {
"type": "string",
"description": "api key (actions: rpc)"
},
"payment": {
"type": "string",
"description": "the x402 PAYMENT-SIGNATURE header value (base64) for the accepts a previous call returned (actions: rpc)"
},
"agent_id": {
"type": "string",
"description": "optional ERC-8004 id \"<chain>:<id>\" (a label on your tenant) (actions: tenant)"
},
"chain_id": {
"type": "integer",
"description": "the chain you want to read (default 1284 Moonbeam); the answer names its gateway URL (actions: rpc)"
},
"pay_chain_id": {
"enum": [
8453,
42161,
5042,
143,
4663
],
"type": "integer",
"description": "the pay chain of the transfer quote; absent = Base (actions: rpc)"
},
"wallet_address": {
"type": "string",
"description": "optional: a 0x wallet address to label your tenant with (nothing is signed; leave it out) (actions: tenant)"
}
},
"additionalProperties": false
}| string |
| hirer (actions: inbox) |
| limit | integer | limit (actions: inbox) |
| nonce | string | nonce (actions: enrich) |
| state | string | state (actions: inbox) |
| action | string | what to do (default register): register | enrich | inbox | protocol | pending |
| author | string | author (actions: protocol) |
| events | array | events (actions: protocol) |
| sla_ms | integer | sla ms (actions: protocol) |
| states | array | states (actions: protocol) |
| status | string | status (actions: pending) |
| actions | array | actions (actions: protocol) |
| dry_run | boolean | dry run (actions: protocol) |
| expires | integer | expires (actions: enrich) |
| fee_bps | integer | fee bps (actions: protocol) |
| version | integer | version (actions: protocol) |
| agent_id | string | agent id (actions: register, enrich) |
| card_url | string | card url (actions: register) |
| chain_id | integer | chain id (actions: register, enrich) |
| finality | string | finality (actions: protocol) |
| identity | string | identity (actions: protocol) |
| provider | string | provider (actions: inbox) |
| contracts | object | chain id to list of 0x addresses (actions: protocol) |
| signature | string | signature (actions: enrich, protocol) |
| fill_topic | string | null | fill topic (actions: protocol) |
| transitions | array | transitions (actions: protocol) |
| source_topic | string | source topic (actions: protocol) |
| fill_selector | string | null | fill selector (actions: protocol) |
| supported_dst | array | supported dst (actions: protocol) |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "id (actions: protocol)"
},
"abi": {
"type": "array",
"items": {
"type": "object"
},
"description": "abi (actions: protocol)"
},
"key": {
"type": "string",
"description": "key (actions: protocol)"
},
"data": {
"type": "object",
"description": "{ card_url?, endpoints?: [{ url, kind: mcp|a2a|a2a-legacy|x402|webhook }], skills?: [tags], classes?: [class ids], name?, description? } (actions: enrich)"
},
"docs": {
"type": "string",
"description": "docs (actions: protocol)"
},
"name": {
"type": "string",
"description": "name (actions: protocol)"
},
"type": {
"enum": [
"bridge",
"intent",
"aggregator",
"dex",
"amm"
],
"type": "string",
"description": "type (actions: protocol)"
},
"grade": {
"type": "boolean",
"description": "also grade the manifest: code verified the facts, Jev answers the rubric over them; spends one of your grades (actions: protocol)"
},
"hirer": {
"type": "string",
"description": "hirer (actions: inbox)"
},
"limit": {
"type": "integer",
"description": "limit (actions: inbox)"
},
"nonce": {
"type": "string",
"description": "nonce (actions: enrich)"
},
"state": {
"type": "string",
"description": "state (actions: inbox)"
},
"action": {
"enum": [
"register",
"enrich",
"inbox",
"protocol",
"pending"
],
"type": "string",
"default": "register",
"examples": [
"register"
],
"description": "what to do (default register): register | enrich | inbox | protocol | pending"
},
"author": {
"type": "string",
"description": "author (actions: protocol)"
},
"events": {
"type": "array",
"items": {
"type": "object",
"required": [
"signature",
"topic0",
"role"
],
"properties": {
"name": {
"type": "string"
},
"role": {
"enum": [
"deposit",
"fill",
"other"
],
"type": "string"
},
"topic0": {
"type": "string"
},
"indexed": {
"type": "integer"
},
"anonymous": {
"type": "boolean"
},
"signature": {
"type": "string"
}
}
},
"description": "events (actions: protocol)"
},
"sla_ms": {
"type": "integer",
"description": "sla ms (actions: protocol)"
},
"states": {
"type": "array",
"items": {
"type": "string"
},
"description": "states (actions: protocol)"
},
"status": {
"enum": [
"submitted",
"approved",
"rejected",
"deprecated"
],
"type": "string",
"description": "status (actions: pending)"
},
"actions": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"when",
"chain",
"call"
],
"properties": {
"call": {
"type": "object",
"required": [
"to",
"fn",
"args_from"
],
"properties": {
"fn": {
"type": "string"
},
"to": {
"type": "string"
},
"args_from": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"name": {
"type": "string"
},
"when": {
"type": "string"
},
"chain": {
"type": "string"
}
}
},
"description": "actions (actions: protocol)"
},
"dry_run": {
"type": "boolean",
"description": "dry run (actions: protocol)"
},
"expires": {
"type": "integer",
"description": "expires (actions: enrich)"
},
"fee_bps": {
"type": "integer",
"description": "fee bps (actions: protocol)"
},
"version": {
"type": "integer",
"minimum": 1,
"description": "version (actions: protocol)"
},
"agent_id": {
"type": "string",
"description": "agent id (actions: register, enrich)"
},
"card_url": {
"type": "string",
"description": "card url (actions: register)"
},
"chain_id": {
"type": "integer",
"description": "chain id (actions: register, enrich)"
},
"finality": {
"type": "string",
"description": "finality (actions: protocol)"
},
"identity": {
"enum": [
"mechanism",
"deployment"
],
"type": "string",
"description": "identity (actions: protocol)"
},
"provider": {
"type": "string",
"description": "provider (actions: inbox)"
},
"contracts": {
"type": "object",
"description": "chain id to list of 0x addresses (actions: protocol)",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"signature": {
"type": "string",
"description": "signature (actions: enrich, protocol)"
},
"fill_topic": {
"type": [
"string",
"null"
],
"description": "fill topic (actions: protocol)"
},
"transitions": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"from",
"to",
"trigger",
"bind",
"proof"
],
"properties": {
"to": {
"type": "string"
},
"bind": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"from": {
"type": [
"string",
"null"
]
},
"join": {
"type": "string"
},
"name": {
"type": "string"
},
"proof": {
"enum": [
"receipt",
"none"
],
"type": "string"
},
"guards": {
"type": "array",
"items": {
"type": "string"
}
},
"trigger": {
"type": "object",
"required": [
"event",
"side"
],
"properties": {
"side": {
"enum": [
"source",
"fill",
"refund",
"other"
],
"type": "string"
},
"event": {
"type": "string"
},
"contracts": {
"enum": [
"registered",
"any"
],
"type": "string"
}
}
}
}
},
"description": "transitions (actions: protocol)"
},
"source_topic": {
"type": "string",
"description": "source topic (actions: protocol)"
},
"fill_selector": {
"type": [
"string",
"null"
],
"description": "fill selector (actions: protocol)"
},
"supported_dst": {
"type": "array",
"items": {
"type": "integer"
},
"description": "supported dst (actions: protocol)"
}
},
"additionalProperties": false
}| params |
| object |
| operation parameters, e.g. { "vault": "vault:tenant:tenant-3" } (actions: policy, receipts) |
| api_key | string | your tfr_ key (actions: policy, receipts) |
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "how long the arm lasts (default 7, at most 30) (actions: arm)"
},
"armed": {
"type": "boolean",
"description": "true arms (default), false disarms (always honoured, no expiry rule) (actions: arm)"
},
"owner": {
"type": "string",
"description": "the 0x wallet the act installs (link, rotate, recover); omitted for cancel (the current owner) (actions: owner)"
},
"vault": {
"type": "string",
"description": "the tenant vault id, vault:tenant:<tenant> (e.g. vault:tenant:tenant-3) (actions: read, arm, owner)"
},
"action": {
"enum": [
"read",
"model",
"policy",
"receipts",
"arm",
"owner"
],
"type": "string",
"default": "read",
"examples": [
"read"
],
"description": "what to do (default read): read | model | policy | receipts | arm | owner"
},
"params": {
"type": "object",
"description": "operation parameters, e.g. { \"vault\": \"vault:tenant:tenant-3\" } (actions: policy, receipts)"
},
"api_key": {
"type": "string",
"description": "your tfr_ key (actions: policy, receipts)"
}
},
"additionalProperties": false
}