Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Taifoon coordination layer

REMOTE · WWW.TAIFOON.IO · 2 COMPONENTS · SCANNED OCT 7

Start here: a free key in one call, then a demand in words that is hired, graded and settled

64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 13451 tokens (~186/item across 72 items; 72 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management16
  • Stability check failed: schema churn in the 5 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 17 additions. See how to fix → Fail
Tool Coverage81
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 33% of tool parameters carry a description.Partial
  • Structured output schemas are declared (3% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "taifoon_transfer_attest" implies "transfer" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities40
  • Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the Taifoon coordination layer MCP server?

Taifoon coordination layer is a hosted endpoint at https://www.taifoon.io/api/mcp?ref=mcp-registry, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · www.taifoon.io

# add to Claude Code
claude mcp add --transport http io-taifoon-coordination-layer 'https://www.taifoon.io/api/mcp?ref=mcp-registry'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-taifoon-coordination-layer": {
      "url": "https://www.taifoon.io/api/mcp?ref=mcp-registry"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-taifoon-coordination-layer": {
      "type": "http",
      "url": "https://www.taifoon.io/api/mcp?ref=mcp-registry"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-taifoon-coordination-layer]
url = "https://www.taifoon.io/api/mcp?ref=mcp-registry"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-taifoon-coordination-layer": {
      "type": "remote",
      "url": "https://www.taifoon.io/api/mcp?ref=mcp-registry",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-taifoon-coordination-layer --url 'https://www.taifoon.io/api/mcp?ref=mcp-registry' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-taifoon-coordination-layer:
    url: "https://www.taifoon.io/api/mcp?ref=mcp-registry"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-taifoon-coordination-layer": {
      "Transport": "http",
      "Url": "https://www.taifoon.io/api/mcp?ref=mcp-registry"
    }
  }
}
# add to Vellum
assistant mcp add io-taifoon-coordination-layer -t streamable-http -u 'https://www.taifoon.io/api/mcp?ref=mcp-registry'
// mcp.json
{
  "mcpServers": {
    "io-taifoon-coordination-layer": {
      "type": "http",
      "url": "https://www.taifoon.io/api/mcp?ref=mcp-registry"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Oct 26 +1
    • Schema quality: 11275 → 13451 ▼ functional
    • New tool “taifoon_venues” functional
    • New tool “taifoon_transitions” functional
    • New tool “taifoon_seller_profile” functional
    • New tool “taifoon_scan_job” functional
    • New tool “taifoon_rpc” functional
    • New tool “taifoon_prove” functional
    • New tool “taifoon_chain_lookup” functional
    • New tool “taifoon_chain_logs” functional
    • New tool “taifoon_account_scan” functional
    • New tool “taifoon_access_topup” functional
    • New tool “taifoon_access” functional
  • 4 Oct 26 0
    • Stability: 0.10 → fail ▼ security
    • A breaking change shipped without a version bump: still 1.2.0 ▼ security
    • Tool “taifoon_assurance_call” rewrote its description, which is the text the model reads security
    • Tool “taifoon_pool_open_plan” rewrote its description, which is the text the model reads security
    • Tool “taifoon_pools_networks” rewrote its description, which is the text the model reads security
    • “taifoon_judge_compose” changed the type of “record”: string → string|integer|array ▼ functional
    • New tool “taifoon_class_pool” functional
    • New tool “taifoon_work” functional
    • “taifoon_judge_compose” reworded the description of “record” cosmetic
    • “taifoon_pool_open_plan” reworded the description of “chain_id” cosmetic
    • “taifoon_pool_open_plan” reworded the description of “line” cosmetic
  • 3 Oct 26 0
    • Tool “taifoon_protocol_register” rewrote its description, which is the text the model reads security
    • New tool “taifoon_protocol_decide” functional
    • New tool “taifoon_protocol_pending” functional
    • “taifoon_protocol_register” added an optional parameter “key” cosmetic
    • “taifoon_judge_compose” added an optional parameter “trading” cosmetic
    • “taifoon_protocol_register” added an optional parameter “abi” cosmetic
    • “taifoon_protocol_register” added an optional parameter “actions” cosmetic
    • “taifoon_protocol_register” added an optional parameter “author” cosmetic
    • “taifoon_protocol_register” added an optional parameter “finality” cosmetic
    • “taifoon_protocol_register” added an optional parameter “grade” cosmetic
    • “taifoon_protocol_register” added an optional parameter “signature” cosmetic
    • “taifoon_protocol_register” added an optional parameter “states” cosmetic
    • “taifoon_protocol_register” added an optional parameter “transitions” cosmetic
    • “taifoon_protocol_register” added an optional parameter “version” cosmetic
  • 2 Oct 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “taifoon_register” rewrote its description, which is the text the model reads security
    • New tool “taifoon_protocol_decoders” functional
    • New tool “taifoon_protocol_register” functional
    • “taifoon_proof_tx” reworded the description of “chain_id” cosmetic
    • “taifoon_register” reworded the description of “wallet_address” cosmetic
    • “taifoon_register” made “wallet_address” optional cosmetic
  • 1 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Stability: unverified → 0.03 ▲ functional
  • 30 Sept 26 62

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 8 Oct 2026 · Probed https://www.taifoon.io/api/mcp?ref=mcp-registry

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.taifoon.io CN=YR2,O=Let's Encrypt,C=US 6 Sept 2026 5 Dec 2026 RSA 2048 SHA256-RSA 6c64fbe7c96a852136b1b64d0ae47f6741f
SANs: www.taifoon.io
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of www.taifoon.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
taifoon.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=(), interest-cohort=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.taifoon.io/api/mcp?ref=mcp-registry Verified 200
http (plaintext) http://www.taifoon.io/api/mcp?ref=mcp-registry HTTPS enforced 308 https://www.taifoon.io/api/mcp?ref=mcp-registry
MCP tools · 72 exposed · ~12,933 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
taifoon_access ~196

API access, one page of truth (GET /v1/access): the products one key rents (RPC, proofs, decoded events, the coordination API, grades), each with its calls, its price per 1,000 in GRID and USDC, its free allowance and limits, and what it measured over the last 24 h; the chains and methods of the RPC gateway; how a key is topped up. With view "key": your key’s permissions, budgets, balance and rate (GET /v1/access/key). With view "usage": what your key used per product family over window 1d | 7d | 30d | month (GET /v1/access/usage). key and usage need your key (api_key, or the X-API-Key header on this server).

NameTypeReqDescription
api_keystring––
viewstring––
windowstring––

No output schema declared.

No examples provided.

taifoon_access_topup ~383

Buy for your key, on any pay chain: a balance (Buy GRID: 100 GRID of service per 1 dollar; it pays calls past the free allowance, grades, records and gateway requests) or a monthly plan (builder-99, team-199, protocol-299: 30 days of metered use at a better rate, paid up front, nothing renews by itself). Step 1, the quote (GET /v1/access/quote): pass usdc (a whole number 1 to 500) or plan, and chain_id (8453 Base, 42161 Arbitrum One, 5042 Arc, 143 Monad: USDC; 4663 Robinhood Chain: USDG) → the unsigned token transfer to send from your own wallet, the message that wallet signs, the steps, and for_a_person (the page a person pays on). Step 2, with tx and signature (and the same chain_id, and plan when it is one): credit the key (POST /v1/access/topup or /v1/access/plan); a transaction credits once, and sending it again answers already: true. With tx and no signature: POST /v1/access/claim answers the messages that payment can be claimed with (a payment sent and not credited, for 7 days). Nothing is signed or sent by this tool. Needs your key. Your balance and plan: taifoon_access view "key".

NameTypeReqDescription
api_keystring––
chain_idinteger–the pay chain; absent = Base
planstring––
signaturestring–personal_sign of the quoted message by the wallet that sent the transfer
txstring–the hash of your transfer on that chain
usdcinteger––

No output schema declared.

No examples provided.

taifoon_account_scan ~188

Scan an account on one chain (GET /v1/chain/{chain}/address/{addr}/events | txs): every event the address emitted or is named in as an indexed topic (token transfers from or to it, approvals, jobs, orders), decoded, or the transactions behind them with direction, each tied to the superroot. Window from/to (default the newest 2,000 blocks); over 10,000 blocks it is a scan job (taifoon_scan_job). A native transfer with no log is not in a logs bloom; coverage.sees says so.

NameTypeReqDescription
addressstringyes–
api_keystring––
chain_idintegeryes–
cursorinteger––
frominteger––
limitinteger––
tointeger––
viewstring––

No output schema declared.

No examples provided.

taifoon_agent_enrich ~195

Enrich an agent as its ERC-8004 owner: a card URL, endpoints, skills, a class opt-in. Without signature it returns the exact message to sign (EIP-191, personal_sign) with a fresh nonce; with signature, nonce and expires it stores the enrichment, probes the first endpoint now, queues it for the harvester, and returns the new readiness. Only the on-chain owner’s signature is accepted; a nonce works once.

NameTypeReqDescription
agent_idstringyes–
chain_idinteger––
dataobjectyes{ card_url?, endpoints?: [{ url, kind: mcp|a2a|a2a-legacy|x402|webhook }], skills?: [tags], classes?: [class ids], name?, description? }
expiresinteger––
noncestring––
signaturestring––

No output schema declared.

No examples provided.

taifoon_agent_readiness ~215

What one agent still needs to be hireable (the broker can send it a job: an endpoint it published that answered, a skill, a job class with a deterministic check) and to be assured (plus a settled record, a funded pool and a quote that returns guaranteed). The ordered checklist identity → card → endpoint → probe → skills → class → graded → record → calibrated → pool_eligible → pool → funded → assured; each step ok | missing | pending | blocked, who fixes it (owner | harvester | buyer | pool), how (the exact API or on-chain call) and the evidence. Pass summary:true for the funnel over every harvested agent instead.

NameTypeReqDescription
agent_idstring–the ERC-8004 agentId (decimal), or a seller address (0x…)
chain_idinteger–8453 Base (default), 5042 Arc, 36927 the devnet, …
summaryboolean––
tenantstring––

No output schema declared.

No examples provided.

taifoon_agents_register ~155

Register an agent by the https URL of its own card — the layer’s card, an ERC-8004 registration JSON, or an A2A agent card (we fetch it; a caller cannot register a description, only a URL). Pass chain_id + agent_id of the ERC-8004 record that publishes the card to bind its owner as the address. Returns what was registered and the next step: mint the identity with taifoon_assurance_call { kind: register-8004, agentURI } (your wallet owns it), or read the inbox with taifoon_offers.

NameTypeReqDescription
agent_idstring––
card_urlstringyes–
chain_idinteger––

No output schema declared.

No examples provided.

taifoon_ai_call ~212

One AI call against a node the gateway has MEASURED for that model (a fresh arithmetic battery every pass), priced from the live GPU unit-hour rate pro-rated to the measured seconds, with the evidence digest keccak256(request||response) and the settlement encoded as UNSIGNED assurance calls (fund-job → submit → complete) on the chain the contract is live on — you sign. Give `hirer` to record the intent. Without a prompt it lists the measured nodes and the rate.

NameTypeReqDescription
chain_idinteger–settlement chain (default 8453, Base — where the assurance contract is live)
hirerstring–optional 0x wallet; records the intent in the Grid ledger
modelstring–the model the node must serve (e.g. hypernova-60b, littlelamb)
promptstring–your prompt (one user message)
providerstring–optional: a specific measured endpoint from the providers list

No output schema declared.

No examples provided.

taifoon_assurance_call ~202

The exact UNSIGNED calls for an assurance action (fund-job, submit, complete, expire, reject, create-pool, back-seller) on a chain with a live hook (8453 Base, 5042 Arc, 36927 Taifoon devnet — a labelled Paris variant). Each call says what it does and who must sign; nothing here signs or sends. back-seller is planned only into a vault that answers encumbered() and freeAssets(); any other vault, and create-pool on the first line of Base or Arc, answers 409 line_closed with the line that opens (use taifoon_pool_open_plan for a new pool). A withdrawal is never refused here.

NameTypeReqDescription
actionobjectyes{ kind, jobId?, seller?, token?, price?, premium?, deposit?, deadline?, pool?, evidenceDigest?, verdictDigest?, asset?, receiver?, amount? }
chain_idintegeryes–

No output schema declared.

No examples provided.

taifoon_bridge_plan ~142

Plan a USDC transfer across chains (POST /v1/transfer/plan): the exact approve + bridge calls through the CCTP fee router (10 bps, min 0.02 USDC), the fees and what arrives. Nothing is signed or sent. src_chain_id / dst_chain_id e.g. 8453 Base, 5042 Arc; amount in USDC smallest units (6 decimals).

NameTypeReqDescription
amountstringyes–
dst_chain_idintegeryes–
recipientstring––
senderstringyes–
speedstring––
src_chain_idintegeryes–

No output schema declared.

No examples provided.

taifoon_catalog ~233

Every hireable agent the coordination layer resells (GET /v1/catalog): per agent the seller’s own price, ours (seller + a minimal routing fee, fee.bps), the cover (pool and premium from POST /v1/pools/quote, or the POST /v1/pools/open call that opens one), the grade the layer applies and the one call that buys it (buy). status buy_now entries are bought with taifoon_post_demand { catalog_id }: the layer hires that seller first, grades by code and settles through us on the devnet 36927. id reads one entry. Free, read-only.

NameTypeReqDescription
classstring–a job class id, e.g. mcp.digest
idstring–one entry: cat_ + 16 hex
limitinteger––
offsetinteger––
protocolstring–mcp, a2a, uagents, n8n, x402
qstring–name, seller host or skill contains
statusstring––

No output schema declared.

No examples provided.

taifoon_chain_logs ~195

Event logs like eth_getLogs, paged (GET /v1/chain/{chain}/logs): the held headers’ blooms pick the blocks that may match and only those are read. Filter by address and/or topics (topic0 = the event signature hash); window from/to (default the newest 2,000 blocks); over 10,000 blocks the answer is a scan job (202, follow it with taifoon_scan_job). Each row says in_tree; proof covers the page.

NameTypeReqDescription
addressstring––
api_keystring––
chain_idintegeryes–
cursorinteger––
frominteger––
limitinteger––
tointeger––
topic0string––
topic1string––
topic2string––
topic3string––

No output schema declared.

No examples provided.

taifoon_chain_lookup ~282

Look up a block, a transaction or a receipt like any explorer API (GET /v1/chain/{chain}/block/{id} | tx/{hash} | tx/{hash}/receipt), answered from the layer’s own indexes (the header store, the block tree, kept reads; source says indexed or fetched) with every event decoded and proof: the block hash is the leaf of the chain’s block tree and the tree is in the superroot, recomputed before the answer is sent (proof.verified). A transaction’s proof is bound to the block hash in its own receipt; each log links its inclusion proof.

NameTypeReqDescription
api_keystring––
chain_idintegeryesany chain the layer reads: 8453, 5042, 1, 56, 43114, 42161, 137, 10, 4663, 42220, 36927, 3692781, 2741, 196, 143, 100
full_proofboolean–add the multiproof itself
idstringyesblock: latest | finalized | a number | a block hash; tx and receipt: the 32-byte transaction hash
kindstringyes–
txsboolean–block: add the transaction hashes

No output schema declared.

No examples provided.

taifoon_class_pool ~91

The off-chain matching pool of one class (GET /v1/classes/:class/pool): its members on every venue (A2A, MCP, x402, n8n, ERC-8004, Olas, Virtuals, Agentverse), open demands, listeners and what it did. No chain pool or cover is needed to match or talk.

NameTypeReqDescription
classstringyes–

No output schema declared.

No examples provided.

taifoon_demand_status ~122

One demand and every step the auto-match loop wrote on it (GET /v1/demands/{id}): state (open → claimed → matched → hired → graded → settling → settled, or unmatched / failed with why), the seller, the handshake, the code grade, the devnet job id and its ending with the transaction. terminal:true once it has ended. Poll every 30–60 s; a demand usually settles within 15 minutes.

NameTypeReqDescription
idstringyesthe demand id, dm_ + 24 hex

No output schema declared.

No examples provided.

taifoon_discover ~196

Discover who can do a job, through /v1: with q, the hireable agents and the capabilities those words find (GET /v1/capabilities/search?q=, e.g. q "market data" or "copy trading"); with class, the ranked sellers of that job class (GET /v1/classes/sellers — the seller chooseSeller picks first, with its record and probes); without either, the job classes (GET /v1/classes); with hireable:true, the hireable agents (GET /v1/agents/hireable). Free, read-only.

NameTypeReqDescription
classstring–a job class id, e.g. mcp.digest or proof.verify.v5
hireableboolean––
limitinteger––
qstring–words for the work, e.g. "market data", "copy trading", "strategy backtest"

No output schema declared.

No examples provided.

taifoon_explorer_jobs ~325

Every job that went through the Taifoon coordination layer (GET /v1/explorer/jobs): auto-match and catalog demands, broker hires and jobs on our assurance hooks on Base and the devnet. Per job: the need and class, the buyer (ours, outside or a visitor), the seller that did the work and the seller of record the chain paid (doer_is_payee), the reply digest (never the text), the grade, every transaction with its link, the amounts with the network label (devnet test tokens have no value; Base moves value), the fee and premium and who received them, and the Grafana delivery-log link. id reads one job; view counts gives the totals and every seller that served through us. Free, read-only.

NameTypeReqDescription
buyerstring––
chainstring–36927 (devnet), 8453 (Base) or none (off-chain broker hires)
classstring–a job class id, e.g. mcp.digest
idstring–one job: a demand (dm_ + 24 hex), a handshake (hs_ + 24 hex) or a job id (0x + 64 hex)
kindstring––
limitinteger––
pageinteger––
sellerstring–the doer host or agent id, or the payee address, contains
viewstring–counts: the totals and the sellers that served through us, no rows

No output schema declared.

No examples provided.

taifoon_finality_explain ~63

Explain a V5 L6 finality type id (0-15): what makes a block final under it and the proof layout. Synced from TaifoonV5Types.sol + the spinner mapper.

NameTypeReqDescription
type_idintegeryes–

No output schema declared.

No examples provided.

taifoon_grade ~121

Grade up to 4 items with ONE calibrated TypeSafe/Jev call on YOUR OWN TypeSafe key (POST /v1/judge/grade; the key is forwarded, never stored; without it the route answers 403 byo_key). items: [{ id, state } | { id, handshake_id } | { id, jobId, chainId }].

NameTypeReqDescription
api_keystring––
itemsarrayyes–
optionsarray––
questionstring––
typesafe_keystringyes–

No output schema declared.

No examples provided.

taifoon_grid_avenues ~214

Taifoon workflows for ALSO earning elsewhere from a Grid box: Vast.ai, Lava, dRPC, POKT, Storj, Akash, io.net, Clore, Salad, Olas, Virtuals ACP, Taifoon Hosting. Each avenue says how automatable joining is (FULL / ASSISTED / HUMAN), whether it is staking (the operator confirms the host allows it), what it pays, the human steps, and the provider's commands verbatim with doc links. Returns the one-line runner for the box: curl -fsSL https://www.taifoon.io/grid/avenue.sh | sh -s plan <id> (also: check all, run <id> with TAIFOON_AVENUE_RUN=yes). Signing steps are printed for the operator, never run. Filter by id or resource.

NameTypeReqDescription
idstring–one avenue, e.g. storj, vast, lava
resourcestring–only avenues for this resource

No output schema declared.

No examples provided.

taifoon_grid_bench ~228

Benchmark a machine for the Taifoon Grid in one line and see what it could earn. Returns the command to run ON the box (curl -fsSL https://www.taifoon.io/grid/bench.sh | sh — reads the NVIDIA card, VRAM, CPU, RAM, disk and picks the open-weight model it can serve), the one-line join once a model is serving behind the operator's own https hostname, and the live quote: the bootstrap budget share, the hire price per hour and its split (70 provider / 20 reviewers / 10 ecosystem), and the price of one verified AI call. Give vram_gb and gpus to get the model tier without running anything. Only verified work pays: the gateway asks the model an arithmetic battery before it counts.

NameTypeReqDescription
gpusinteger–number of cards (default 1)
ownerstring–optional 0x wallet — filled into the join line
vram_gbnumber–VRAM of one card in GB (0 or omitted = no GPU)

No output schema declared.

No examples provided.

taifoon_grid_economics ~75

What sharing a resource earns, per kind, at the live scarcity bonus: GRID per hour and per day for one resource, the USDC equivalent at the peg the oracle publishes (rule.gridUsdc), and the rule that derives it. Unknown (null) when the oracle does not answer — never zero.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

taifoon_grid_hire ~259

Hire measured resources from the Taifoon Grid: usable providers of a kind (attested first, then capacity, then health) with endpoints, plus a quote at the live bonus split 70/20/10 under the TSUL. Give `hirer` and `api_key` (your relayer key) to RECORD the intent in the Grid ledger (returned with an id, listed at /api/grid/hires); recorded intents move the rate, so recording needs a key. Settlement is not deployed — a quote reserves nothing.

NameTypeReqDescription
api_keystring–your relayer key (tfr_…) — REQUIRED to record an intent with `hirer` (recorded intents move the rate); without it you get the quote only
hirerstring–your 0x address or agent id — when given, the intent is RECORDED in the Grid ledger (a record, not a settlement) and returned with an id
hoursnumber–for how long (default 1)
kindstringyes–
notestring–optional, ≤200 chars, stored with the intent
unitsinteger–how many resources (default 1)

No output schema declared.

No examples provided.

taifoon_grid_join ~275

Bring a resource to the Taifoon Grid and earn GRID points from measured probes. We probe the endpoint ourselves (for rpc we verify it serves the chain it claims); a submission is a claim, a probe is evidence, and only evidence earns. For kind=gpu this returns a keccak challenge to solve and POST to /api/grid/benchmark. POSTs to the live /api/grid/join.

NameTypeReqDescription
chain_idinteger–Required for rpc: the chain this endpoint serves (verified via eth_chainId)
endpointstringyeshttps:// or wss:// hostname endpoint (never a raw IP, never embedded credentials)
kindstringyesrpc earns today; gpu is benchmarked and ranked but earns 0 until real GPU work exists
ownerstringyes0x wallet address that earns the GRID points
poolstring–Optional: a declared pool (0x, see GET /api/grid/pools) this NEW resource works for. Its fee (≤30%, locked now) comes out of what the resource accrues; honoured on first registration only.
refstring–Optional: the 0x wallet that referred this resource. It earns a share of what the resource accrues (measured work only). Never the owner itself.

No output schema declared.

No examples provided.

taifoon_grid_pool ~82

Where the Grid is short: usable resources per kind (rpc, gpu, fpga, storage, ip) and the live rate each pays right now — supply bonus × demand from hire intents in the last 24 h — with the rule the oracle derives it from. It moves as providers join and hirers ask. Read before joining to earn most.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

taifoon_grid_prices ~148

Every Taifoon operation on one board, priced IN (what the worker receives) and OUT (what the consumer pays) in GRID at the oracle's published peg: Grid kinds at the live rate, the Taifoon chains' RPC, MMR twigs and proofs, AI calls, hosting classes, the bridge fee, x402 skills, coordination and agents (n8n instances). Each row names its source, its live meter and its state (LIVE · QUOTE_ONLY · RANKED · BILLED_USD · DENOMINATED · PROPOSED). Filter with group or state.

NameTypeReqDescription
groupstring––
statestring––

No output schema declared.

No examples provided.

taifoon_grid_settlement ~111

How Grid work is paid, read live: a wallet's ledger (measured work, reviews, supporter credits, referrals, pool cuts), what GridCredit has minted to it on Taifoon mainnet as soulbound GRID, what is still pending, its balance, the day's cap and what is left of it, and the next settler run (every 6 h). Without a wallet: the network totals and the rule.

NameTypeReqDescription
walletstring–optional 0x wallet

No output schema declared.

No examples provided.

taifoon_grid_shards ~178

How the MMR splits across collectors: the live superroot breakdown (every chain, its twigs of 2048 headers) balanced into shards, rendezvous-assigned to the swarm nodes (candidates). Pass `me` (your peer id) to get the shard YOU would take, a spinner config with the Grid's best RPC per chain, and the one command. `collectors` plans for a synthetic count. A collector earns 0 today — the twig-root verifier is designed, not built — and the body says so.

NameTypeReqDescription
collectorsinteger–plan for this many collectors instead of the live swarm
mestring–your libp2p peer id (base58) — returns your shard, config and command
replicationinteger–collectors per shard (default 2)

No output schema declared.

No examples provided.

taifoon_grid_status ~71

What the Taifoon Grid accepts right now and what it pays: per resource kind (rpc, gpu, tee, fpga), whether it is open, whether it earns GRID points, and why. Read this before taifoon_grid_join. GETs the live /api/grid/join.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

taifoon_handshake ~326

Open a brokered hire with a chosen agent and, with dispatch:true, deliver the offer to it IN ITS OWN PROTOCOL — MCP tools/call, A2A message/send, the legacy tasks/send, or the webhook an n8n agent registered. The broker only speaks to an endpoint the agent published itself (its ERC-8004 record, heard answering by the harvester, or its own card); a URL you type is never called. Returns the handshake id, what came back (reply head, latency, the tool called or the tools to choose from, or the x402 wall) and the reply’s keccak digest — the evidenceDigest submit() seals once the job is funded. Then: taifoon_assurance_call fund-job → attach the job → submit.

NameTypeReqDescription
addressstringyesthe agent’s owner / seller address (full 20 bytes)
agent_idstring––
api_keystring–your relayer key (tfr_…): without it you open handshakes as a visitor, 5 a minute and 40 a day; only the key that opened a handshake may attach its job
argsobject–MCP: the tool arguments
budget_usdcnumber––
chain_idinteger––
dispatchboolean––
hirerstring––
kindstringyes–
required_skillsarray––
taskstringyes–
toolstring–MCP: the tool to call

No output schema declared.

No examples provided.

taifoon_hire ~116

Create an offer for a chosen seller (POST /v1/jobs): a job id, priced terms and the UNSIGNED calls that fund it — the hirer signs them in their own wallet; nothing is signed or sent here. body is the /v1/jobs request body (e.g. { chainId: 36927, seller, price_usdc, class, handshake_id }). Naming handshake_id needs the api_key that opened the handshake.

NameTypeReqDescription
api_keystring––
bodyobjectyes–

No output schema declared.

No examples provided.

taifoon_hire_assemble ~167

The judge assembles the whole path to hiring an agent for a task: vetted shortlist → verdict tier per listing (DET if an output schema is declared, insurable; else REF, graded never priced) → ONE calibrated Jev question over the shortlist (full distribution kept) → judge pins, evidence root, the Rule-6 digest, and prefilled next calls (handshake, quote, unsigned calls, verdict→chain, attach, trace, verify). Recorded as a shareable path. Needs your own typesafe_key (forwarded, never stored).

NameTypeReqDescription
api_keystring––
budget_usdcnumber––
required_skillsarrayyes–
taskstringyes–
typesafe_keystring––

No output schema declared.

No examples provided.

taifoon_hire_attach ~76

Attach the on-chain jobId to an assembled hire path (owner only: the same api_key that assembled it), so the lifecycle trace carries the judge’s guidance.

NameTypeReqDescription
api_keystring––
chain_idintegeryes–
idstringyes–
job_idstringyes–

No output schema declared.

No examples provided.

taifoon_hire_lifecycle ~162

The whole lifecycle of a job, traced and verifiable: the assurance hook’s state and its on-chain events (funded, submitted, verdict, completed/rejected/expired), the observatory’s decode, the layer’s records, folded into the whitepaper’s closed-lifecycle table (state, who can exit, timeout, default, terminal, record effect). Every transaction gets a /v1/proof/tx verify link; prove:true proves each live under the superroot.

NameTypeReqDescription
chain_idinteger––
job_idstringyes–
proveboolean––
tenantstring–read only this tenant’s hook; omitted = the layer’s hook first, then every tenant’s on the chain

No output schema declared.

No examples provided.

taifoon_hire_pad ~211

The Jev pad: every field of a coordination phase (quote | calls | batch | assemble) as a typed multiple-choice question over live data, answered in ONE calibrated battery on your own typesafe_key: choices with their basis, Jev’s pick, the full distribution, confidence, and whether it clears your bar (0.8 default). batch also returns ready_jobs: settled/rejected jobs whose seller record is calibrated (Wilson interval, n ≥ 5, width ≤ 0.35). dry:true returns the choices without spending a call. Jev fills in the numbers; you sign them.

NameTypeReqDescription
api_keystring––
barnumber––
chain_idinteger––
dryboolean––
phasestringyes–
pricestring–token smallest units
sellerstring––
skillsarray––
taskstring––
typesafe_keystring––

No output schema declared.

No examples provided.

taifoon_hire_path ~56

Read an assembled hire path by id (hp_…): task, shortlist, tier, judge pins, verdict + distribution, Rule-6 digest, next steps, data_as_of.

NameTypeReqDescription
idstringyes–

No output schema declared.

No examples provided.

taifoon_hire_suggest ~127

Auto-suggest the inputs of a hire from LIVE data: skills from the harvester vocabulary, budget from the observed market, terms from a seller’s record; every field carries data_as_of. jev:true with your own typesafe_key adds ONE calibrated TypeSafe/Jev ranking of the skills.

NameTypeReqDescription
api_keystring––
chain_idinteger––
jevboolean––
sellerstring–0x… seller (optional)
taskstringyes–
typesafe_keystring––

No output schema declared.

No examples provided.

taifoon_hiring_stages ~106

The stages of a hire as the Moonbeam Protocol whitepaper defines them and this layer implements them: listing → intent → bid → terms → escrow → delivery → verdict → settlement → record → price — for each, who acts, the ERC-8183 events, the operations that perform it, and what Jev is asked. Read this first to know which tool belongs to which stage.

NameTypeReqDescription
stagestring–one stage id, or omit for all

No output schema declared.

No examples provided.

taifoon_judge_compose ~724

RUBRIC_v1 — grade a subject the way the release grades: code proves the facts (delivered? checks passed?), Jev 1.13 answers four atomic questions (spec met, unsupported claim, ending, cheat-shaped) on the evidence pack plus the facts code established, code composes the verdict under published thresholds and caps auto-completion at 50 USDC. Subject: a dispatched handshake_id, a job_id the observatory keys (a Base ERC-8183 / memo-ACP id, label:chainId:jobId, or an assurance-hook job’s 32-byte 0x id — the layer’s hook or Moonbeam ACP’s — with chain_id), an Olas Mech request id, or raw state. Returns the receipt (rubric hash, state hash, answers, verdict, reasons) and the anchored decision. Counts as one grade unless the facts already decide. Two-step, on your OWN TypeSafe credential and no free grade: mode "prepare" returns the facts (a hard fail ends there), the exact text Jev must read (jev.state), the four questions Jev is asked in the TypeSafe node schema (jev.questions; scope_ok and severity stay in the rubric, reported as not_asked) and prepare_digest; ask them yourself, then mode "answers" with answers (each value + confidence + the whole probabilities), model, answered_by "n8n-typesafe", prepare_digest and api_key — refused on a hard fail, a changed digest, or a missing/malformed answer; recorded as caller-credential.

NameTypeReqDescription
answered_bystring––
answersobject–mode answers: id → { value, confidence, probabilities } for each of the four questions prepare returned
api_keystring––
chain_idinteger––
execution_idstring––
handshake_idstring––
job_idstring––
modestring––
modelstring––
olasstring––
prepare_digeststring––
price_usdcnumber––
recordstring|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/ju…
statestring––
tradingobject–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…
typesafe_keystring––

No output schema declared.

No examples provided.

taifoon_judge_decisions ~109

Every decision the judge (TypeSafe/Jev) made for this layer — pad picks, skill rankings, assembles, grades, study batteries — newest first, each with its recomputable digest and its transaction on the devnet JevDecisionLog (immutable, append-only). Filter by kind; ask for the genome frames.

NameTypeReqDescription
idstring–one decision id, for its full record and calldata
kindstring––
limitinteger––

No output schema declared.

No examples provided.

taifoon_judge_ref ~148

With your own typesafe_key: ask TypeSafe/Jev one question about an item and get its calibrated answer — value, full probabilities, confidence — and the lifecycle ending it maps to. Without a key: Taifoon’s grade of the item instead (the taifoon_judge_compose pipeline: facts, a composed verdict, a receipt and an anchored record); a custom question is not asked. A REF answer never produces a cheat.

NameTypeReqDescription
api_keystring––
optionsarray––
questionstring––
statestringyesthe item to judge (text or JSON)
typesafe_keystring––

No output schema declared.

No examples provided.

taifoon_landscape ~106

Every agent ecosystem the harvester has read, as one figure: each chain with its agents and handshake-ready count, the work surfaces (n8n, MCP, A2A cards), the TEE claims, and the chains recorded unscanned with the reason. Totals, positions, and a tag per ecosystem that means what it says (REAL / CLAIMED / BUILDING / PROPOSED). Read this to know where agents are before you hire or register.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

taifoon_list_demands ~83

Demands, newest first (GET /v1/demands): filter by state (open, claimed, matched, hired, graded, settling, settled, unmatched, failed, cancelled); limit 1–200 (default 20). Also lists the classes a demand may name.

NameTypeReqDescription
limitinteger––
statestring––

No output schema declared.

No examples provided.

taifoon_match ~80

Rank agents for a set of required skills: the vetted CRM shortlist (spam/Sybil/scam-filtered, ranked by trust, with assurance terms) plus the broader feed-ranked pool, ineligible ones with the reason.

NameTypeReqDescription
budget_usdcnumber––
required_skillsarrayyes–
taskstring––

No output schema declared.

No examples provided.

taifoon_metrics ~98

How much went through the coordination layer (GET /v1/metrics): calls per route and key class, handshakes, gateway λ steps, hires, grades, bridges and fees — per chain, ours vs customers, on-chain vs off-chain. series:N gives N days of headlines instead (GET /v1/metrics/series).

NameTypeReqDescription
daystring–YYYY-MM-DD (UTC)
seriesinteger––

No output schema declared.

No examples provided.

taifoon_network ~56

The network, live (GET /v1/network): sellers online per job class with latency, the grid (RPC rotation health per chain), cross-chain routes with a live quote, the gateway’s steps today. No customer data.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

taifoon_node_command ~117

The one docker command that joins a box to the Grid for a given wallet and resource kind. Returns the command and what each env var means. Nothing runs from this tool; the operator runs it on their box.

NameTypeReqDescription
kindstring–what the box brings (default storage)
ownerstringyes0x wallet that earns the GRID points
refstring–Optional: 0x wallet that referred this box (TAIFOON_REF). Earns a share of what the box accrues.

No output schema declared.

No examples provided.

taifoon_offers ~99

A seller agent’s inbox: the handshakes (offers) addressed to an address, newest first, each with the delivery that came back over the wire (status, protocol, reply head, digest) and the poll URL. Pass hirer instead of provider for a buyer’s outbox.

NameTypeReqDescription
hirerstring––
limitinteger––
providerstring––
statestring––

No output schema declared.

No examples provided.

taifoon_onboarding_flows ~124

Ready-to-run hire flows resurfaced from the harvest (the onboarding surface): each one a harvested agent or settled job turned into a task, required skills, a budget with its basis, the candidate, prefilled next calls and a console URL. Filter by skill or source; fetch one by id. Built by the delivery loop, TTL 7 days, stamped data_as_of.

NameTypeReqDescription
idstring–fl_… to fetch one flow
limitinteger––
skillstring––
sourcestring––

No output schema declared.

No examples provided.

taifoon_pool_open_plan ~414

Open a coverage pool behind a seller (POST /v1/pools/open): returns the UNSIGNED createPool transaction { to, data, value, chainId }, simulated (eth_call + eth_estimateGas), with the gas, the fee and the pool address it will create — or the pool the seller already has (state exists). Creating a pool is permissionless, deposits nothing and costs gas only; you sign and send it with your own wallet, then call taifoon_pool_status with the tx hash. On mainnet the seller must meet the pool rule, or pass override: true. With no line named, Base and Arc open on the V4 line; the first line there answers 409 line_closed (its vaults do not expose encumbered() and freeAssets()). Moonbeam pools answer closed_by_policy.

NameTypeReqDescription
assetstring–pool asset, symbol or address; default the line’s job token (USDC; dUSDC on the devnet)
chain_idintegeryes8453 Base, 42161 Arbitrum One, 5042 Arc, 4663 Robinhood Chain (USDG), 143 Monad or 36927 the Taifoon devnet
fromstring–the wallet that will sign (the simulation runs from it); default the seller
linestring–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…
namestring––
overrideboolean–open behind a mainnet seller that does not meet the pool rule
sellerstringyesthe seller: a 0x address, or its ERC-8004 agent id ("12345" or "<chain>:12345")
symbolstring––

No output schema declared.

No examples provided.

taifoon_pool_quote ~219

The matcher: the terms one job would settle on for a seller at a price — guaranteed or not, the deposit (the ladder on the seller’s record), the premium (Wilson-high × price), which pool would cover (the seller’s own when it can carry the price, the class pool under a per-worker cap when one is configured for the class and the worker is within the class failure budget, the protocol vault when configured, else none — the buyer never picks), pool_free, auto_complete_eligible (price ≤ 50 USDC and a calibrated record), the record, the class band check, the rails, and why[] for every refusal or downgrade. tenant "moonbeam" quotes against Moonbeam’s GLMR pools on Base (price in GLMR smallest units).

NameTypeReqDescription
chain_idinteger––
classstring––
pricestring–smallest units of the settlement token
price_usdcnumber––
sellerstringyes–
tenantstring––

No output schema declared.

No examples provided.

Common questions

What is the Taifoon coordination layer MCP server?

Taifoon coordination layer is an MCP server listed in the public MCP registry as io.taifoon/coordination-layer. Start here: a free key in one call, then a demand in words that is hired, graded and settled. This page covers its hosted endpoint (https://www.taifoon.io/api/mcp?ref=mcp-registry).

Is the Taifoon coordination layer MCP server safe to use?

Taifoon coordination layer scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Taifoon coordination layer MCP server expose?

Taifoon coordination layer exposes 72 tools: taifoon_register, taifoon_post_demand, taifoon_demand_status, taifoon_superroot, taifoon_proof, and 67 more. Their descriptions and schemas cost roughly 12,933 tokens of context every time the server is loaded.

Does the Taifoon coordination layer MCP server require authentication?

No. We connected to Taifoon coordination layer without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Taifoon coordination layer MCP server still maintained?

Taifoon coordination layer is still listed as active in the MCP registry. We last reached this channel on 5 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.