{"base_readiness_score":100,"commercial_next_step":{"billing_boundary":"No contact form, scope call, invoice, subscription, wallet signature, or payment is created by this handoff. Free routing never authorizes spending.","charged_now":false,"free_first":{"body_template":{"free_preflight_complete":false,"task":"<your public task>","wallet_enabled":false},"charged_now":false,"id":"ontario_purchase_router","label":"Match your task to a free or paid capability","method":"POST","url":"https://ontarioprotocol.com/api/agent/tool-quote"},"human_required":false,"next_steps":["Use the existing report evidence and remediation first; report access is free.","If another capability is needed, supply an explicit public task to the free router.","Do not pay solely because a report is ready, incomplete, or failed.","Only consider payment after free validation, task fit, an explicit budget and local wallet policy allow it."],"payment_recommended_now":false,"qualified_offers":[],"recommended_offer":null,"report_url":"https://ontarioprotocol.com/api/verify/reports/vrf_a8def2437a857884","required_inputs":["task"],"schema":"ontario.report_commercial_next_step.v1","status":"task_required_no_paid_recommendation","trust_boundary":"This commercial handoff is not part of the signed readiness evidence. It does not guarantee safety, traffic, ranking, listing acceptance, revenue, or future endpoint behavior."},"duration_ms":711,"evidence":{"homepage":{"reachable":true,"schema_org_present":true,"status_code":200},"openapi":{"body":{"components":{"parameters":{"runId":{"description":"The run id returned by POST /api/v1/runs.","in":"path","name":"id","required":true,"schema":{"type":"string"}}},"responses":{"BadRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request failed validation."},"NotFound":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"No such object (or not yours)."},"Unauthorized":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid credentials."}},"schemas":{"Account":{"properties":{"balance":{"description":"Credit balance.","type":"integer"},"plan":{"type":"string"}},"type":"object"},"AgentRegistration":{"properties":{"agent_id":{"example":"agt_1a2b3c4d5e6f7080","type":"string"},"already_registered":{"type":"boolean"},"next":{"type":"string"}},"type":"object"},"AgentState":{"properties":{"agent_id":{"nullable":true,"type":"string"},"registered":{"type":"boolean"},"signup_open":{"type":"boolean"},"user_id":{"type":"string"}},"type":"object"},"ApiKey":{"properties":{"id":{"type":"integer"},"key":{"description":"The raw key \u2014 returned ONCE, hash-stored, unrecoverable.","type":"string"},"prefix":{"example":"sk_swarm_1a2b3c","type":"string"}},"type":"object"},"AuthConfig":{"properties":{"provider":{"example":"supabase","type":"string"},"supabase_anon_key":{"type":"string"},"supabase_url":{"type":"string"}},"type":"object"},"BirthData":{"properties":{"city":{"example":"Leeds","type":"string"},"date":{"description":"YYYY-MM-DD","example":"1990-06-15","type":"string"},"lat":{"example":53.8,"type":"number"},"lon":{"example":-1.55,"type":"number"},"time":{"description":"HH:MM local \u2014 optional; omit when unknown.","example":"14:30","type":"string"},"tz":{"description":"IANA name (use /api/v1/geo/tz to resolve coordinates \u2192 zone).","example":"Europe/London","type":"string"}},"required":["date","tz"],"type":"object"},"CryptoTerms":{"properties":{"asset":{"example":"USDC","type":"string"},"chain_id":{"example":8453,"type":"integer"},"contract":{"example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","type":"string"},"credits_per_usd":{"type":"number"},"enabled":{"type":"boolean"},"how":{"type":"string"},"min_usd":{"type":"number"},"network":{"example":"base","type":"string"},"pay_to":{"description":"The receiving address \u2014 present only when enabled.","type":"string"}},"type":"object"},"Error":{"properties":{"error":{"type":"string"}},"type":"object"},"LedgerEntry":{"properties":{"amount":{"type":"integer"},"created_at":{"format":"date-time","type":"string"},"kind":{"type":"string"},"note":{"type":"string"}},"type":"object"},"Pulse":{"properties":{"as_of":{"format":"date-time","type":"string"},"attribution":{"type":"string"},"free":{"description":"Always true.","type":"boolean"},"news":{"properties":{"as_of":{"nullable":true,"type":"string"},"digest":{"description":"The newest published news digest, parsed: {title, as_of, report_url, stories:[{headline, link, source, excerpt}]}. Null when none ran in the last 36 hours.","nullable":true,"type":"object"},"headlines":{"items":{"description":"{headline, link, publisher, published, summary}","type":"object"},"type":"array"}},"type":"object"},"next":{"description":"How to get the same data over MCP and how to commission a real report.","type":"object"},"prices":{"items":{"properties":{"as_of":{"type":"string"},"change_pct":{"description":"Session change in percent; null where the source has no session.","nullable":true,"type":"number"},"currency":{"type":"string"},"price":{"type":"number"},"source":{"description":"yahoo | pyth","type":"string"},"symbol":{"type":"string"}},"required":["symbol","price","currency","source","as_of"],"type":"object"},"type":"array"},"prices_as_of":{"nullable":true,"type":"string"},"symbols":{"items":{"type":"string"},"type":"array"}},"required":["as_of","prices","news"],"type":"object"},"Report":{"properties":{"all_sources":{"items":{"type":"object"},"type":"array"},"report_text":{"description":"The finished report body (markdown, with citations).","type":"string"},"rounds":{"type":"integer"}},"type":"object"},"RouteDecision":{"properties":{"confidence":{"type":"number"},"from_llm":{"type":"boolean"},"mode":{"type":"string"}},"type":"object"},"Run":{"properties":{"created_at":{"format":"date-time","type":"string"},"id":{"type":"string"},"mode":{"type":"string"},"status":{"enum":["queued","running","completed","failed","cancelled"],"type":"string"},"title":{"type":"string"}},"type":"object"},"RunCreate":{"properties":{"input":{"description":"Your question. Aliases: question | prompt | query | target. Astrology modes take constraint lines \u2014 see llms.txt.","type":"string"},"max_workers":{"description":"Optional parallelism override.","type":"integer"},"mode":{"description":"research | news | product | trips | trainer | finance | astrology | horoscope | \u2026","type":"string"}},"required":["mode"],"type":"object"},"TopupResult":{"properties":{"balance":{"type":"integer"},"confirmations":{"type":"integer"},"credited":{"type":"boolean"},"credits":{"type":"integer"},"duplicate":{"type":"boolean"},"usdc":{"type":"number"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"description":"An sk_swarm_ API key (long-lived; self-mint via /api/v1/account/api-keys) or a Supabase access_token (short-lived; from signup).","scheme":"bearer","type":"http"}}},"info":{"contact":{"url":"https://ioswarm.io"},"description":"AI that does real work for you. One POST kicks off a job that searches the web, reads sources, and writes a cited report; poll for the result.\n\nAgent onboarding (no browser, no human): 1) GET /api/v1/auth/config \u2192 Supabase url + anon key. 2) POST {supabase_url}/auth/v1/signup \u2192 access_token (email confirmation off). 3) POST /api/v1/agent/register \u2192 agent id. 4) POST /api/v1/account/api-keys \u2192 sk_swarm_ key (shown once). 5) Authorization: Bearer sk_swarm_\u2026 on everything else. Starter credits land automatically on the first authenticated call.\n\nThe full agent doc is https://ioswarm.io/llms.txt; the A2A agent card is at /.well-known/agent-card.json; an MCP facade is at /mcp.","title":"SwarmIO Cloud API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/v1/account":{"get":{"operationId":"getAccount","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Account state."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Balance and plan state."}},"/api/v1/account/api-keys":{"post":{"operationId":"mintApiKey","requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"description":"A label for the key, e.g. your agent's name.","type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}},"description":"The minted key."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Mint an sk_swarm_ API key. The raw key is returned ONCE \u2014 store it. Requires the Supabase access_token."}},"/api/v1/account/transactions":{"get":{"operationId":"getTransactions","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LedgerEntry"},"type":"array"}}},"description":"Ledger entries, newest first."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Your credit ledger."}},"/api/v1/agent/me":{"get":{"operationId":"getAgentMe","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentState"}}},"description":"Agent state."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Registration state for the caller (API key or access_token)."}},"/api/v1/agent/register":{"post":{"operationId":"registerAgent","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRegistration"}}},"description":"Already registered."},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRegistration"}}},"description":"Newly registered."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Open agent registration is currently closed by the operator."}},"summary":"Stamp the caller's account as an agent. Idempotent. Requires the Supabase access_token (not an API key)."}},"/api/v1/astro/birth":{"post":{"operationId":"saveBirth","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BirthData"}}},"required":true},"responses":{"200":{"description":"Saved."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Save your own birth details so horoscope runs fold in your chart automatically."}},"/api/v1/auth/config":{"get":{"operationId":"getAuthConfig","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthConfig"}}},"description":"Supabase project coordinates."}},"security":[],"summary":"Discover the auth backend. Public."}},"/api/v1/billing/checkout":{"post":{"operationId":"createCheckout","requestBody":{"content":{"application/json":{"schema":{"properties":{"credits":{"minimum":1,"type":"integer"}},"required":["credits"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"amount_cents":{"type":"integer"},"checkout_url":{"type":"string"},"credits":{"type":"integer"}},"type":"object"}}},"description":"The hosted checkout URL."},"401":{"$ref":"#/components/responses/Unauthorized"},"503":{"description":"Card payments not configured."}},"summary":"Start a Stripe Checkout for a credit purchase. A human with a browser completes it; agents should use /api/v1/billing/crypto-topup instead."}},"/api/v1/billing/crypto":{"get":{"operationId":"getCryptoTerms","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoTerms"}}},"description":"Top-up terms. `enabled:false` means the operator has not published a receiving address yet."}},"security":[],"summary":"Machine-payable top-up terms: network, asset, receiving address, rate, minimum. Public."}},"/api/v1/billing/crypto-topup":{"post":{"operationId":"claimCryptoTopup","requestBody":{"content":{"application/json":{"schema":{"properties":{"tx_hash":{"description":"The Base transaction hash of your USDC transfer.","pattern":"^0x[0-9a-fA-F]{64}$","type":"string"}},"required":["tx_hash"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupResult"}}},"description":"Credited (or already claimed)."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"422":{"description":"The transaction failed verification (not confirmed yet, wrong asset/recipient, or below the minimum). Retry once it confirms."},"503":{"description":"Crypto top-ups not configured."}},"summary":"Claim a USDC top-up: send USDC on Base to the pay_to address, then POST the transaction hash here. Verified on-chain; idempotent per tx hash."}},"/api/v1/chats":{"get":{"operationId":"listChats","responses":{"200":{"description":"Chat list."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Your chats."},"post":{"operationId":"createChat","responses":{"200":{"description":"The new chat."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Open a chat."}},"/api/v1/chats/{id}/messages":{"post":{"operationId":"sendChatMessage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"content":{"type":"string"}},"required":["content"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"text/event-stream":{}},"description":"SSE reply stream."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}},"summary":"Send a chat turn; the reply streams back as SSE."}},"/api/v1/geo/tz":{"get":{"operationId":"geoTz","parameters":[{"in":"query","name":"lat","required":true,"schema":{"type":"number"}},{"in":"query","name":"lon","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tz":{"example":"Europe/London","type":"string"}},"type":"object"}}},"description":"The IANA zone."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Offline coordinates \u2192 IANA timezone. Never charged."}},"/api/v1/llm/v1/chat/completions":{"post":{"description":"Metered per call on the engine the platform runs (no per-call floor; 402 only when the wallet cannot cover a small gate). stream:true answers with OpenAI SSE framing. Roles: system, user, assistant. Content may be a string or an array of text parts.","operationId":"chatCompletions","requestBody":{"content":{"application/json":{"schema":{"properties":{"max_tokens":{"maximum":8192,"type":"integer"},"messages":{"items":{"properties":{"content":{"description":"A string, or OpenAI content parts (text parts are read)."},"role":{"enum":["system","user","assistant"],"type":"string"}},"required":["role","content"],"type":"object"},"type":"array"},"model":{"example":"swarmio","type":"string"},"stream":{"type":"boolean"},"temperature":{"maximum":2,"minimum":0,"type":"number"}},"required":["messages"],"type":"object"}}},"required":true},"responses":{"200":{"description":"An OpenAI chat.completion object (usage.swarmio.credits_charged carries the metered charge)."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Insufficient credits."}},"summary":"OpenAI-compatible chat completion on your credits. Point any OpenAI SDK at baseURL <site>/api/v1/llm/v1 with your API key; model may be \"swarmio\"."}},"/api/v1/llm/v1/models":{"get":{"operationId":"listLlmModels","responses":{"200":{"description":"An OpenAI models list."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"The model name the LLM endpoint serves (swarmio)."}},"/api/v1/news/brief":{"get":{"operationId":"describeNewsBrief","responses":{"200":{"description":"Machine payments are not configured \u2014 the plain discovery document, nothing to sell."},"402":{"description":"The payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED) with the discovery document merged in: endpoint, price, empty body (the brief needs no input), response shape, the x402 how, and the bazaar extension."}},"security":[],"summary":"Describe this x402 primitive. A bare GET on a paid resource answers the 402 challenge (never a bare doc page \u2014 that fails CDP's /validate preflight); the discovery document rides inside the 402 body."},"post":{"operationId":"newsBrief","parameters":[{"description":"v1: the signed payment payload, base64.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"v2: the signed payment payload, base64.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"Optional and empty \u2014 the brief needs no input. A garbage body with a payment header is a 400; without one the 402 quotes the price.","type":"object"}}},"required":false},"responses":{"200":{"description":"{as_of, brief, digest, headlines, usage, paid block + settlement header}."},"400":{"description":"Garbage body with a payment header present \u2014 refused before the facilitator is asked. Without a payment header the 402 quotes the price instead."},"402":{"description":"The payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED)."},"502":{"description":"Settled but the model did not answer \u2014 the transaction hash is quoted for support."},"503":{"description":"No fresh news material in the window (digest lands on the operator's schedule) \u2014 no payment was taken."}},"security":[],"summary":"Today's market-news brief in one call: the platform's newest published news digest synthesized with the live market wire into a cited bullet brief (every finding ends with its source URL). Pay-only (\u2248 $0.05): 402, sign, POST again with the payment header. No account; no input required."}},"/api/v1/pulse":{"get":{"operationId":"getPulse","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pulse"}}},"description":"The current pulse."}},"security":[],"summary":"Free live data, no key and no account: prices for BTC-USD, ETH-USD, SOL-USD, AMZN and NVDA with the session's change, today's stories from the platform's newest published news digest (with a link to the full cited report), and the market wire's latest headlines. Prices refresh every minute, news every ten minutes. Fixed symbol list. The same document is the MCP tool market.pulse."}},"/api/v1/route":{"post":{"operationId":"routePrompt","requestBody":{"content":{"application/json":{"schema":{"properties":{"prompt":{"type":"string"}},"required":["prompt"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteDecision"}}},"description":"The routing decision."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Classify a freeform request into the right mode before spending a run. Never charged."}},"/api/v1/runs":{"get":{"operationId":"listRuns","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Run"},"type":"array"}}},"description":"Run records."},"401":{"$ref":"#/components/responses/Unauthorized"}},"summary":"Your runs, newest first."},"post":{"description":"Common modes: research, news, product, trips, trainer, finance, astrology, horoscope. Astrology/horoscope take server-parsed constraint lines (Birth date: YYYY-MM-DD etc.) \u2014 see llms.txt for the exact input contract.","operationId":"launchRun","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunCreate"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}},"description":"The run record. Poll GET /api/v1/runs/{id} for completion."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Insufficient credits \u2014 top up via /api/v1/billing/crypto-topup (machine) or /api/v1/billing/checkout (human)."}},"summary":"Launch a run. Billed from your credits. Input aliases: question | prompt | query | target."}},"/api/v1/runs/{id}":{"get":{"operationId":"getRun","parameters":[{"$ref":"#/components/parameters/runId"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}},"description":"The run record."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}},"summary":"Run detail: status, then the report reference when finished."}},"/api/v1/runs/{id}/artifacts":{"get":{"operationId":"listArtifacts","parameters":[{"$ref":"#/components/parameters/runId"}],"responses":{"200":{"description":"Artifact listing."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}},"summary":"Everything the run wrote to disk."}},"/api/v1/runs/{id}/cancel":{"post":{"operationId":"cancelRun","parameters":[{"$ref":"#/components/parameters/runId"}],"responses":{"200":{"description":"Cancelled."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}},"summary":"Stop a running job."}},"/api/v1/runs/{id}/events":{"get":{"operationId":"runEvents","parameters":[{"$ref":"#/components/parameters/runId"}],"responses":{"200":{"content":{"text/event-stream":{}},"description":"SSE stream of progress events."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}},"summary":"Live progress as a Server-Sent Events stream."}},"/api/v1/runs/{id}/report":{"get":{"operationId":"getReport","parameters":[{"$ref":"#/components/parameters/runId"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Report"}}},"description":"The report."},"202":{"content":{"application/json":{"schema":{"properties":{"status":{"type":"string"}},"type":"object"}}},"description":"Run not finished yet \u2014 poll again."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}},"summary":"The finished, cited report (JSON). 202 while the run is still going."}},"/api/v1/search":{"get":{"operationId":"searchGet","parameters":[{"description":"What to search for (alias: q).","in":"query","name":"query","required":true,"schema":{"type":"string"}},{"description":"Results to return (default 8; the free leg clamps to 5, the paid leg to 20).","in":"query","name":"k","required":false,"schema":{"type":"integer"}},{"in":"query","name":"freshness","required":false,"schema":{"enum":["all","day","week","month","year"],"type":"string"}},{"description":"Comma-separated domain allowlist, e.g. reuters.com,apnews.com.","in":"query","name":"domains","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Answered. Free leg: organic results (\u22645) plus a quota block. Paid leg: results (\u226420) plus a paid block and the settlement header."},"400":{"description":"Missing or oversized query when a payment header is present \u2014 refused before the facilitator is asked. Without a payment header the 402 quotes the price instead."},"402":{"description":"Over the free quota \u2014 the payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED). A bare GET (no query parameter) always answers this challenge: the discovery document (free quota, body shape, bazaar extension) rides inside the 402 body, which is what directory validators (CDP /validate among them) read."}},"security":[],"summary":"Keyless web search. 25 free searches a day per caller (\u22645 results, quota block echoed); over the quota the 402 carries x402 payment requirements (\u2248 $0.02, \u226420 results, no daily cap). No account."},"post":{"operationId":"searchPost","parameters":[{"description":"v1: the signed payment payload, base64.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"v2: the signed payment payload, base64.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"domains":{"type":"string"},"freshness":{"type":"string"},"k":{"type":"integer"},"query":{"type":"string"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Answered \u2014 free leg (quota block) or paid leg (paid block + settlement header)."},"400":{"description":"Missing or oversized query when a payment header is present \u2014 refused before the facilitator is asked. Without a payment header the 402 quotes the price instead."},"402":{"description":"Over the free quota \u2014 the payment requirements."}},"security":[],"summary":"Same two legs as GET with a JSON body. Over the quota (or with a payment header from the start): 402, sign, re-send with X-PAYMENT / PAYMENT-SIGNATURE."}},"/api/v1/search/report":{"get":{"operationId":"describeSearchReport","responses":{"200":{"description":"Machine payments are not configured \u2014 the plain discovery document, nothing to sell."},"402":{"description":"The payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED) with the discovery document merged in: endpoint, price, POST body shape, response shape, the x402 how, and the bazaar extension."}},"security":[],"summary":"Describe this x402 primitive. A bare GET on a paid resource answers the 402 challenge (never a bare doc page \u2014 that fails CDP's /validate preflight); the discovery document rides inside the 402 body. The report is pay-only \u2014 there is no free tier to fall through to."},"post":{"operationId":"searchReport","parameters":[{"description":"v1: the signed payment payload, base64.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"v2: the signed payment payload, base64.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"domains":{"description":"Comma-separated domain allowlist.","type":"string"},"freshness":{"enum":["all","day","week","month","year"],"type":"string"},"k":{"description":"Results to synthesize (default 8, max 10).","type":"integer"},"query":{"type":"string"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"description":"{query, report, results (\u226410), usage, paid block + settlement header}."},"400":{"description":"Missing or oversized query when a payment header is present \u2014 refused before the facilitator is asked. Without a payment header the 402 quotes the price instead."},"402":{"description":"The payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED)."},"502":{"description":"Settled but the search backend or model did not answer \u2014 the transaction hash is quoted for support."}},"security":[],"summary":"One-call research brief: live web search synthesized into a cited bullet report (every finding ends with its source URL). Pay-only (\u2248 $0.05): 402, sign, POST again with the payment header. No account."}},"/api/v1/x402/fetch":{"get":{"operationId":"describeX402Fetch","responses":{"200":{"description":"Machine payments are not configured \u2014 the plain discovery document, nothing to sell."},"402":{"description":"The payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED) with the discovery document merged in: endpoint, price, POST body shape, response shape, the x402 how, and the bazaar extension."}},"security":[],"summary":"Describe this x402 primitive. A bare GET on a paid resource answers the 402 challenge (never a bare doc page \u2014 that fails CDP's /validate preflight); the discovery document rides inside the 402 body."},"post":{"operationId":"payForFetch","parameters":[{"description":"v1: the signed payment payload, base64.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"v2: the signed payment payload, base64.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"extract":{"enum":["text","links","metadata"],"type":"string"},"url":{"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"blocked":{"type":"boolean"},"extract":{"type":"string"},"final_url":{"type":"string"},"hops":{"type":"integer"},"paid":{"type":"object"},"status":{"type":"integer"},"text":{"type":"string"}},"type":"object"}}},"description":"Paid and answered."},"400":{"description":"Bad body \u2014 refused before any payment is taken."},"402":{"description":"Payment required (the quote), or a payment the facilitator rejected."},"409":{"description":"This settlement was already served."},"503":{"description":"Machine payments are not configured."}},"security":[],"summary":"A public web page as readable text, or its links, or its SEO metadata \u2014 paid per call with x402 (\u2248 $0.02). Plain HTTP with a browser-grade fingerprint; JS-only or bot-walled pages come back flagged. Public hosts only; every redirect hop is screened. No account is created."}},"/api/v1/x402/quote":{"get":{"operationId":"describeX402Quote","responses":{"200":{"description":"Machine payments are not configured \u2014 the plain discovery document, nothing to sell."},"402":{"description":"The payment requirements (v1 in the body, v2 in PAYMENT-REQUIRED) with the discovery document merged in: endpoint, price, POST body shape, response shape, the x402 how, and the bazaar extension."}},"security":[],"summary":"Describe this x402 primitive. A bare GET on a paid resource answers the 402 challenge (never a bare doc page \u2014 that fails CDP's /validate preflight); the discovery document rides inside the 402 body."},"post":{"operationId":"payForQuote","parameters":[{"description":"v1: the signed payment payload, base64.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"v2: the signed payment payload, base64.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"symbols":{"items":{"type":"string"},"maxItems":8,"type":"array"}},"required":["symbols"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"as_of":{"type":"string"},"missing":{"items":{"type":"string"},"type":"array"},"paid":{"type":"object"},"results":{"items":{"properties":{"as_of":{"type":"string"},"change_pct":{"nullable":true,"type":"number"},"currency":{"type":"string"},"price":{"type":"number"},"source":{"type":"string"},"symbol":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Paid and answered."},"400":{"description":"Bad body \u2014 refused before any payment is taken."},"402":{"description":"Payment required (the quote), or a payment the facilitator rejected."},"409":{"description":"This settlement was already served."},"503":{"description":"Machine payments are not configured."}},"security":[],"summary":"Live quotes for up to 8 symbols (stocks, ETFs, crypto pairs as X-USD, FX as EURUSD=X), paid per call with x402 (\u2248 $0.01). No account is created; the answer is in the paid response."}},"/api/v1/x402/run":{"get":{"operationId":"listX402RunResources","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"},"how":{"type":"string"},"resources":{"items":{"properties":{"credits":{"type":"integer"},"description":{"type":"string"},"mode":{"type":"string"},"url":{"type":"string"},"usd":{"type":"number"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"The run resources."}},"security":[],"summary":"Every mode sold per run over x402, with its price in USD. Free. The wallet that pays becomes the account \u2014 no signup, no key ahead of time."}},"/api/v1/x402/run/{mode}":{"get":{"operationId":"describeX402Run","responses":{"200":{"description":"The resource."},"404":{"description":"Not a mode sold per run."}},"security":[],"summary":"One run resource, described: price, body, what comes back."},"parameters":[{"description":"research | news | finance | product | seo | trips | trainer | meals | wellness | mentor | money | policy | supply | grants | quote | astrology | horoscope","in":"path","name":"mode","required":true,"schema":{"type":"string"}}],"post":{"operationId":"payForRun","parameters":[{"description":"v1: the signed payment payload, base64.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"v2: the signed payment payload, base64.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"input":{"description":"The question or brief (\u2264 8,000 characters).","type":"string"},"options":{"description":"Mode-specific launch options, optional.","type":"object"}},"required":["input"],"type":"object"}}},"required":false},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"balance_after_credit":{"nullable":true,"type":"integer"},"credentials":{"description":"{authorization, account, agent_id} when this payment created the account. Shown once.","nullable":true,"type":"object"},"events_url":{"type":"string"},"mode":{"type":"string"},"next":{"type":"string"},"paid":{"type":"object"},"poll_url":{"type":"string"},"report_url":{"type":"string"},"run_id":{"type":"string"},"status":{"type":"string"}},"required":["run_id","status","poll_url","report_url"],"type":"object"}}},"description":"Paid and started."},"400":{"description":"No input, input too long, or a payment payload with no payer."},"402":{"description":"Payment required (the quote), or a payment the facilitator rejected \u2014 the body says which."},"403":{"description":"Agent registration is closed and no existing key was presented; the payment was not taken."},"404":{"description":"Not a mode sold per run."},"503":{"description":"Machine payments are not configured."}},"security":[],"summary":"Pay for one run with x402 and start it. Without a payment header: 402 with the PaymentRequirements (v1 in the body, v2 base64-encoded in the PAYMENT-REQUIRED header). With a signed EIP-3009 authorization in X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2): the facilitator verifies and settles, the payment is credited to the paying wallet's account (created on first sight, with an sk_swarm_ key returned once in `credentials`), and the run is launched. Send an existing key as Authorization: Bearer to put the run on that account instead. A replayed settlement returns the run it already started."}},"/api/v1/x402/supported":{"get":{"operationId":"getX402Supported","responses":{"200":{"description":"Supported payment kinds and extensions."}},"security":[],"summary":"Which x402 versions, schemes, networks, and extensions this resource speaks. Public."}},"/api/v1/x402/topup":{"get":{"operationId":"getX402Terms","parameters":[{"description":"Purchase size in dollars. Omit for the advertised default ($5). Floor $1, ceiling $1,000 \u2014 larger purchases go through Stripe checkout.","in":"query","name":"usd","required":false,"schema":{"maximum":1000,"minimum":1,"type":"number"}}],"responses":{"200":{"description":"Terms of the paid resource. `enabled:false` means no receiving address is published yet."},"400":{"$ref":"#/components/responses/BadRequest"}},"security":[],"summary":"x402 top-up terms: resource URL, scheme, networks, asset, price bounds. Public \u2014 read the price before you decide to pay."},"post":{"description":"The standard x402 exchange, both wire versions. First call: no payment header, and the 402 carries the requirements twice \u2014 the v1 document in the JSON body (`accepts[]`), the v2 document base64-encoded in the `PAYMENT-REQUIRED` response header. Sign the EIP-3009 `transferWithAuthorization` they describe (you sign only; you broadcast nothing and pay no gas) and repeat the identical request with the payload base64-encoded into `X-PAYMENT` (v1) or `PAYMENT-SIGNATURE` (v2). A facilitator verifies and broadcasts; this service never holds a signing key. Credits land at the same rate card as Stripe, volume bonus included. Settlement is idempotent per on-chain transaction, and shares its payment claim with /api/v1/billing/crypto-topup so one transfer can never credit twice.","operationId":"x402Topup","parameters":[{"description":"Purchase size in dollars. Omit for the advertised default ($5). Floor $1, ceiling $1,000 \u2014 larger purchases go through Stripe checkout.","in":"query","name":"usd","required":false,"schema":{"maximum":1000,"minimum":1,"type":"number"}},{"description":"x402 v1: base64-encoded PaymentPayload. Omit on the first call.","in":"header","name":"X-PAYMENT","required":false,"schema":{"type":"string"}},{"description":"x402 v2: base64-encoded PaymentPayload. Takes precedence over X-PAYMENT.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"balance":{"type":"integer"},"credited":{"type":"boolean"},"credits":{"description":"Tokens granted by this payment.","type":"integer"},"duplicate":{"description":"Present when this settlement was already credited.","type":"boolean"},"payer":{"type":"string"},"transaction":{"description":"Base transaction hash of the settled transfer.","type":"string"},"usd":{"type":"number"}},"required":["credited"],"type":"object"}}},"description":"Settled and credited. The settlement document is echoed in `X-PAYMENT-RESPONSE` (v1) or `PAYMENT-RESPONSE` (v2).","headers":{"PAYMENT-RESPONSE":{"description":"v2: base64-encoded SettlementResponse.","schema":{"type":"string"}},"X-PAYMENT-RESPONSE":{"description":"v1: base64-encoded SettlementResponse.","schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Payment required \u2014 the normal first half of the exchange, not an error. The v1 requirements are the body; the v2 requirements are in `PAYMENT-REQUIRED`.","headers":{"PAYMENT-REQUIRED":{"description":"v2: base64-encoded PaymentRequired document.","schema":{"type":"string"}}}},"502":{"description":"The facilitator could not be reached, or settled without returning a transaction. Safe to retry."},"503":{"description":"Machine payments not configured."}},"summary":"Buy credits over the x402 protocol. Call with no payment header to receive a 402 carrying the payment requirements, then repeat with the signed authorization."}},"/llms.txt":{"get":{"operationId":"llmsTxt","responses":{"200":{"content":{"text/plain":{}},"description":"The onboarding document."}},"security":[],"summary":"The agent onboarding doc (plain text). Public."}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://ioswarm.io"}]},"reachable":true,"url":"https://ioswarm.io/.well-known/openapi.json","valid_json":true,"version":"3.1.0","well_formed":true},"robots":{"excerpt":"# Swarmio \u2014 humans and machines are both first-class visitors here.\nUser-agent: *\nAllow: /\nDisallow: /admin\nDisallow: /api/\n\n# AI crawlers are explicitly welcome \u2014 GPTBot, ClaudeBot, PerplexityBot,\n# Google-Extended, Applebot-Extended, Amazonbot, Bytespider, and the rest.\n# The machine front door is /llms.txt: an agent can sign up, mint an API\n# key, and start runs with no human in the loop. Sibling interfaces:\n# /.well-known/agent-card.json (A2A), /.well-known/agents.json (flows),\n# /api/v1/openapi.json (OpenAPI 3.1), /mcp (Model Context Protocol).\nSitemap: https://ioswarm.io/sitemap.xml\n","reachable":true,"status_code":200},"target":{"challenge":{"accepts":[{"amount":"20000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra_keys":["name","version"],"maxTimeoutSeconds":120,"network":"eip155:8453","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","scheme":"exact"}],"accepts_count":1,"accepts_missing_required_fields":[],"body_accepts_count":1,"body_accepts_missing":false,"body_valid_json":true,"header_accepts_count":1,"missing_accepts":false,"resource":{"description":"Live web search across keyless providers \u2014 organic results with title, URL, snippet and publication date when known. 25 free searches a day per caller (\u22645 results each, burst-limited); over the quota $0.02 per call (\u226420 results), paid over x402 \u2014 no account. A valid payment header is never quota-blocked.","mimeType":"application/json","url":"https://ioswarm.io/api/v1/search"},"resource_missing_required_fields":[],"source":"payment-required-header","x402Version":2},"method":"POST","payment_challenge":true,"payment_headers":{"payment-required":"eyJhY2NlcHRzIjpbeyJhbW91bnQiOiIyMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwiZXh0cmEiOnsibmFtZSI6IlVTRCBDb2luIiwidmVyc2lvbiI6IjIifSwibWF4VGltZW91dFNlY29uZHMiOjEyMCwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweGU0YjZlMjkzMDVCNUVFRjc3YUEyOTZkQzg3RDg2ODNFOTc1MGVEOEYiLCJzY2hlbWUiOiJleGFjdCJ9XSwiZXJyb3IiOiJwYXltZW50IHJlcXVpcmVkIOKAlCBzaWduIHRoZSByZXF1aXJlbWVudHMgYW5kIFBPU1QgYWdhaW4gd2l0aCB0aGUgcGF5bWVudCBoZWFkZXIgYW5kIHRoZSBzYW1lIEpTT04gYm9keSIsImV4dGVuc2lvbnMiOnsiYmF6YWFyIjp7ImluZm8iOnsiaW5wdXQiOnsiYm9keSI6eyJxdWVyeSI6InF1YW50dW0gY29tcHV0aW5nIGJyZWFrdGhyb3VnaHMgdGhpcyBtb250aCJ9LCJib2R5VHlwZSI6Impzb24iLCJtZXRob2QiOiJQT1NUIiwidHlwZSI6Imh0dHAifSwib3V0cHV0Ijp7ImV4YW1wbGUiOnsiZWxhcHNlZF9tcyI6MzQxLCJpbnRlbnQiOiJ3ZWIiLCJwYWlkIjp7InRyYW5zYWN0aW9uIjoiMHjigKYiLCJ1c2QiOjAuMDJ9LCJwcm92aWRlcnNfZmFpbGVkIjpbXSwicHJvdmlkZXJzX3VzZWQiOlsibW9qZWVrIl0sInF1ZXJ5IjoicXVhbnR1bSBjb21wdXRpbmcgYnJlYWt0aHJvdWdocyB0aGlzIG1vbnRoIiwicmVzdWx0cyI6W3sicHVibGlzaGVkIjoiMjAyNi0wOS0yOCIsInNuaXBwZXQiOiLigKYiLCJ0aXRsZSI6IuKApiIsInVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vYnJlYWt0aHJvdWdoIn1dfSwidHlwZSI6Impzb24ifX0sInNjaGVtYSI6eyIkc2NoZW1hIjoiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiLCJwcm9wZXJ0aWVzIjp7ImlucHV0Ijp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicHJvcGVydGllcyI6eyJib2R5Ijp7InByb3BlcnRpZXMiOnsiZG9tYWlucyI6eyJkZXNjcmlwdGlvbiI6ImNvbW1hLXNlcGFyYXRlZCBhbGxvd2xpc3QsIGUuZy4gXCJyZXV0ZXJzLmNvbSxhcG5ld3MuY29tXCIiLCJ0eXBlIjoic3RyaW5nIn0sImZyZXNobmVzcyI6eyJlbnVtIjpbImFsbCIsImRheSIsIndlZWsiLCJtb250aCIsInllYXIiXSwidHlwZSI6InN0cmluZyJ9LCJrIjp7ImRlc2NyaXB0aW9uIjoicmVzdWx0cyB0byByZXR1cm4gKGRlZmF1bHQgOCkiLCJtYXhpbXVtIjoyMCwibWluaW11bSI6MSwidHlwZSI6ImludGVnZXIifSwicXVlcnkiOnsiZGVzY3JpcHRpb24iOiJ3aGF0IHRvIHNlYXJjaCBmb3IiLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJxdWVyeSJdLCJ0eXBlIjoib2JqZWN0In0sImJvZHlUeXBlIjp7ImVudW0iOlsianNvbiIsImZvcm0tZGF0YSIsInRleHQiXSwidHlwZSI6InN0cmluZyJ9LCJtZXRob2QiOnsiZW51bSI6WyJQT1NUIl0sInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJjb25zdCI6Imh0dHAiLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIiwibWV0aG9kIiwiYm9keVR5cGUiLCJib2R5Il0sInR5cGUiOiJvYmplY3QifSwib3V0cHV0Ijp7InByb3BlcnRpZXMiOnsiZXhhbXBsZSI6eyJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJpbnB1dCJdLCJ0eXBlIjoib2JqZWN0In19fSwicmVzb3VyY2UiOnsiZGVzY3JpcHRpb24iOiJMaXZlIHdlYiBzZWFyY2ggYWNyb3NzIGtleWxlc3MgcHJvdmlkZXJzIOKAlCBvcmdhbmljIHJlc3VsdHMgd2l0aCB0aXRsZSwgVVJMLCBzbmlwcGV0IGFuZCBwdWJsaWNhdGlvbiBkYXRlIHdoZW4ga25vd24uIDI1IGZyZWUgc2VhcmNoZXMgYSBkYXkgcGVyIGNhbGxlciAo4omkNSByZXN1bHRzIGVhY2gsIGJ1cnN0LWxpbWl0ZWQpOyBvdmVyIHRoZSBxdW90YSAkMC4wMiBwZXIgY2FsbCAo4omkMjAgcmVzdWx0cyksIHBhaWQgb3ZlciB4NDAyIOKAlCBubyBhY2NvdW50LiBBIHZhbGlkIHBheW1lbnQgaGVhZGVyIGlzIG5ldmVyIHF1b3RhLWJsb2NrZWQuIiwibWltZVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIiwidXJsIjoiaHR0cHM6Ly9pb3N3YXJtLmlvL2FwaS92MS9zZWFyY2gifSwieDQwMlZlcnNpb24iOjJ9"},"reachable":true,"status_code":402},"x402_manifest":{"bazaar_metadata":true,"body":{"asset":{"chain_id":8453,"network":"base","symbol":"USDC"},"catalogue":"https://ioswarm.io/api/v1/x402/run","category":"ai-agent-services","contact":"swarm@ioswarm.io","description":"Hosted agent harness over x402: synchronous primitives (live web search, cited research briefs, market quotes, page fetch, chat) and pay-per-run deep-research swarms. No account needed \u2014 the paying wallet is the account.","docs":"https://ioswarm.io/llms.txt","enabled":true,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","free_first":"https://ioswarm.io/api/v1/pulse \u2014 live prices and today's stories, no payment; /api/v1/search has 25 free searches a day per caller","how":"POST any resource or primitive URL with its JSON body and no payment header; the 402 carries PaymentRequirements (v1 in the body, v2 in the PAYMENT-REQUIRED header); sign the EIP-3009 authorization it describes and repeat the POST with X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2). Primitives return the answer in the paid response; runs return a run id and a poll URL.","name":"SwarmIO Cloud","owner":"https://ioswarm.io","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","primitives":[{"description":"Live web search across keyless providers \u2014 organic results with title, URL, snippet and publication date when known. 25 free searches a day per caller (\u22645 results each, burst-limited); over the quota $0.02 per call (\u226420 results), paid over x402 \u2014 no account. A valid payment header is never quota-blocked.","name":"search","url":"https://ioswarm.io/api/v1/search","usd":0.02},{"description":"One-call research brief: live web search synthesized into a cited bullet report \u2014 every claim tied to a source URL from the results. Same shape as /api/v1/search (query, optional k/freshness/domains) with a written summary on top. $0.05 per call over x402 \u2014 no account, no API key.","name":"search-report","url":"https://ioswarm.io/api/v1/search/report","usd":0.05},{"description":"Today's market-news brief in one call: the platform's newest published news digest synthesized with the live market wire into a cited bullet brief \u2014 every finding ends with its source URL. $0.05 per call, pay-only over x402 \u2014 no account, no free tier, no input required.","name":"news-brief","url":"https://ioswarm.io/api/v1/news/brief","usd":0.05},{"description":"Live quotes for up to 8 symbols \u2014 stocks, ETFs, crypto pairs (BTC-USD), FX \u2014 price, session change and currency, in the paid response. $0.01 per call, no account.","name":"quote","url":"https://ioswarm.io/api/v1/x402/quote","usd":0.01},{"description":"Fetch any public web page as readable text \u2014 a browser-grade fingerprint, boilerplate stripped, links kept \u2014 or just its links or its SEO metadata. Plain HTTP (JS-rendered and bot-walled pages are reported as such; a browser-driven read is a run). $0.02 per call, no account.","name":"fetch","url":"https://ioswarm.io/api/v1/x402/fetch","usd":0.02},{"description":"One language-model completion, paid per call \u2014 the same engine the swarm runs on, in the OpenAI messages shape. Up to 24 messages in and 1024 tokens out. USD 0.02 per call, no account, no key.","name":"chat","url":"https://ioswarm.io/api/v1/x402/chat","usd":0.02}],"protocol":"x402","resources":[{"credits":1050000,"description":"A cited, evidence-graded research report on any question: a swarm of agents searches the live web, reads the sources, cross-checks the claims, and grades its own evidence (sourced / partial / unsupported).","mode":"research","url":"https://ioswarm.io/api/v1/x402/run/research","usd":1.05},{"credits":750000,"description":"A same-day, cross-outlet news digest on a topic or region, every item dated and attributed, with the primary source separated from corroboration.","mode":"news","url":"https://ioswarm.io/api/v1/x402/run/news","usd":0.75},{"credits":1200000,"description":"A data-grounded market brief: live prices and technicals, fundamentals, recent insider and congressional trades, a per-asset thesis and a comparison table \u2014 numbers pulled, not generated.","mode":"finance","url":"https://ioswarm.io/api/v1/x402/run/finance","usd":1.2},{"credits":250000,"description":"A cross-retailer product scan: the same items priced across many stores, structured specs and reviews, ranked by price-to-value, bot walls included.","mode":"product","url":"https://ioswarm.io/api/v1/x402/run/product","usd":0.25},{"credits":1400000,"description":"A severity-ranked SEO audit of a live site with an action plan \u2014 every finding verified against the site itself.","mode":"seo","url":"https://ioswarm.io/api/v1/x402/run/seo","usd":1.4},{"credits":1250000,"description":"A researched itinerary: real inventory, prices, and timing for a destination and dates.","mode":"trips","url":"https://ioswarm.io/api/v1/x402/run/trips","usd":1.25},{"credits":700000,"description":"A personalized, progressive training program from stated goals and constraints.","mode":"trainer","url":"https://ioswarm.io/api/v1/x402/run/trainer","usd":0.7},{"credits":1100000,"description":"A week of meals planned around stated goals, with a shopping list.","mode":"meals","url":"https://ioswarm.io/api/v1/x402/run/meals","usd":1.1},{"credits":1850000,"description":"A literature-grounded wellness plan around a stated goal.","mode":"wellness","url":"https://ioswarm.io/api/v1/x402/run/wellness","usd":1.85},{"credits":1500000,"description":"A learning plan for a stated skill: sequence, resources, milestones.","mode":"mentor","url":"https://ioswarm.io/api/v1/x402/run/mentor","usd":1.5},{"credits":950000,"description":"A personal-finance plan around stated goals and numbers.","mode":"money","url":"https://ioswarm.io/api/v1/x402/run/money","usd":0.95},{"credits":1350000,"description":"A brief on a bill, rule, or policy area: status, positions, what changes and for whom, cited.","mode":"policy","url":"https://ioswarm.io/api/v1/x402/run/policy","usd":1.35},{"credits":1400000,"description":"A supply-chain brief on a product or component: suppliers, risks, alternatives.","mode":"supply","url":"https://ioswarm.io/api/v1/x402/run/supply","usd":1.4},{"credits":1150000,"description":"Matching grants and funders for a stated organization and need, with deadlines and requirements.","mode":"grants","url":"https://ioswarm.io/api/v1/x402/run/grants","usd":1.15},{"credits":950000,"description":"Quotes gathered for a stated service or purchase, compared.","mode":"quote","url":"https://ioswarm.io/api/v1/x402/run/quote","usd":0.95},{"credits":500000,"description":"A natal reading from server-computed chart positions (birth date required in the input as '- Birth date: YYYY-MM-DD').","mode":"astrology","url":"https://ioswarm.io/api/v1/x402/run/astrology","usd":0.5},{"credits":500000,"description":"The sky right now, computed server-side, read for the caller.","mode":"horoscope","url":"https://ioswarm.io/api/v1/x402/run/horoscope","usd":0.5}],"scheme":"exact","services":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"Live web search across keyless providers \u2014 organic results with title, URL, snippet and publication date when known. 25 free searches a day per caller (\u22645 results each, burst-limited); over the quota $0.02 per call (\u226420 results), paid over x402 \u2014 no account. A valid payment header is never quota-blocked.","endpoint":"https://ioswarm.io/api/v1/search","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"search","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.02,"price_atomic":20000,"price_usdc":"0.02","resource":"https://ioswarm.io/api/v1/search","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"One-call research brief: live web search synthesized into a cited bullet report \u2014 every claim tied to a source URL from the results. Same shape as /api/v1/search (query, optional k/freshness/domains) with a written summary on top. $0.05 per call over x402 \u2014 no account, no API key.","endpoint":"https://ioswarm.io/api/v1/search/report","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"search-report","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.05,"price_atomic":50000,"price_usdc":"0.05","resource":"https://ioswarm.io/api/v1/search/report","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"Today's market-news brief in one call: the platform's newest published news digest synthesized with the live market wire into a cited bullet brief \u2014 every finding ends with its source URL. $0.05 per call, pay-only over x402 \u2014 no account, no free tier, no input required.","endpoint":"https://ioswarm.io/api/v1/news/brief","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"news-brief","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.05,"price_atomic":50000,"price_usdc":"0.05","resource":"https://ioswarm.io/api/v1/news/brief","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"Live quotes for up to 8 symbols \u2014 stocks, ETFs, crypto pairs (BTC-USD), FX \u2014 price, session change and currency, in the paid response. $0.01 per call, no account.","endpoint":"https://ioswarm.io/api/v1/x402/quote","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"quote","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.01,"price_atomic":10000,"price_usdc":"0.01","resource":"https://ioswarm.io/api/v1/x402/quote","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"Fetch any public web page as readable text \u2014 a browser-grade fingerprint, boilerplate stripped, links kept \u2014 or just its links or its SEO metadata. Plain HTTP (JS-rendered and bot-walled pages are reported as such; a browser-driven read is a run). $0.02 per call, no account.","endpoint":"https://ioswarm.io/api/v1/x402/fetch","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"fetch","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.02,"price_atomic":20000,"price_usdc":"0.02","resource":"https://ioswarm.io/api/v1/x402/fetch","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"One language-model completion, paid per call \u2014 the same engine the swarm runs on, in the OpenAI messages shape. Up to 24 messages in and 1024 tokens out. USD 0.02 per call, no account, no key.","endpoint":"https://ioswarm.io/api/v1/x402/chat","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"chat","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.02,"price_atomic":20000,"price_usdc":"0.02","resource":"https://ioswarm.io/api/v1/x402/chat","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A cited, evidence-graded research report on any question: a swarm of agents searches the live web, reads the sources, cross-checks the claims, and grades its own evidence (sourced / partial / unsupported).","endpoint":"https://ioswarm.io/api/v1/x402/run/research","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"research","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.05,"price_atomic":1050000,"price_usdc":"1.05","resource":"https://ioswarm.io/api/v1/x402/run/research","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A same-day, cross-outlet news digest on a topic or region, every item dated and attributed, with the primary source separated from corroboration.","endpoint":"https://ioswarm.io/api/v1/x402/run/news","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"news","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.75,"price_atomic":750000,"price_usdc":"0.75","resource":"https://ioswarm.io/api/v1/x402/run/news","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A data-grounded market brief: live prices and technicals, fundamentals, recent insider and congressional trades, a per-asset thesis and a comparison table \u2014 numbers pulled, not generated.","endpoint":"https://ioswarm.io/api/v1/x402/run/finance","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"finance","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.2,"price_atomic":1200000,"price_usdc":"1.20","resource":"https://ioswarm.io/api/v1/x402/run/finance","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A cross-retailer product scan: the same items priced across many stores, structured specs and reviews, ranked by price-to-value, bot walls included.","endpoint":"https://ioswarm.io/api/v1/x402/run/product","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"product","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.25,"price_atomic":250000,"price_usdc":"0.25","resource":"https://ioswarm.io/api/v1/x402/run/product","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A severity-ranked SEO audit of a live site with an action plan \u2014 every finding verified against the site itself.","endpoint":"https://ioswarm.io/api/v1/x402/run/seo","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"seo","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.4,"price_atomic":1400000,"price_usdc":"1.40","resource":"https://ioswarm.io/api/v1/x402/run/seo","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A researched itinerary: real inventory, prices, and timing for a destination and dates.","endpoint":"https://ioswarm.io/api/v1/x402/run/trips","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"trips","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.25,"price_atomic":1250000,"price_usdc":"1.25","resource":"https://ioswarm.io/api/v1/x402/run/trips","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A personalized, progressive training program from stated goals and constraints.","endpoint":"https://ioswarm.io/api/v1/x402/run/trainer","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"trainer","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.7,"price_atomic":700000,"price_usdc":"0.70","resource":"https://ioswarm.io/api/v1/x402/run/trainer","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A week of meals planned around stated goals, with a shopping list.","endpoint":"https://ioswarm.io/api/v1/x402/run/meals","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"meals","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.1,"price_atomic":1100000,"price_usdc":"1.10","resource":"https://ioswarm.io/api/v1/x402/run/meals","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A literature-grounded wellness plan around a stated goal.","endpoint":"https://ioswarm.io/api/v1/x402/run/wellness","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"wellness","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.85,"price_atomic":1850000,"price_usdc":"1.85","resource":"https://ioswarm.io/api/v1/x402/run/wellness","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A learning plan for a stated skill: sequence, resources, milestones.","endpoint":"https://ioswarm.io/api/v1/x402/run/mentor","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"mentor","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.5,"price_atomic":1500000,"price_usdc":"1.50","resource":"https://ioswarm.io/api/v1/x402/run/mentor","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A personal-finance plan around stated goals and numbers.","endpoint":"https://ioswarm.io/api/v1/x402/run/money","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"money","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.95,"price_atomic":950000,"price_usdc":"0.95","resource":"https://ioswarm.io/api/v1/x402/run/money","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A brief on a bill, rule, or policy area: status, positions, what changes and for whom, cited.","endpoint":"https://ioswarm.io/api/v1/x402/run/policy","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"policy","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.35,"price_atomic":1350000,"price_usdc":"1.35","resource":"https://ioswarm.io/api/v1/x402/run/policy","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A supply-chain brief on a product or component: suppliers, risks, alternatives.","endpoint":"https://ioswarm.io/api/v1/x402/run/supply","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"supply","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.4,"price_atomic":1400000,"price_usdc":"1.40","resource":"https://ioswarm.io/api/v1/x402/run/supply","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"Matching grants and funders for a stated organization and need, with deadlines and requirements.","endpoint":"https://ioswarm.io/api/v1/x402/run/grants","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"grants","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":1.15,"price_atomic":1150000,"price_usdc":"1.15","resource":"https://ioswarm.io/api/v1/x402/run/grants","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"Quotes gathered for a stated service or purchase, compared.","endpoint":"https://ioswarm.io/api/v1/x402/run/quote","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"quote","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.95,"price_atomic":950000,"price_usdc":"0.95","resource":"https://ioswarm.io/api/v1/x402/run/quote","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"A natal reading from server-computed chart positions (birth date required in the input as '- Birth date: YYYY-MM-DD').","endpoint":"https://ioswarm.io/api/v1/x402/run/astrology","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"astrology","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.5,"price_atomic":500000,"price_usdc":"0.50","resource":"https://ioswarm.io/api/v1/x402/run/astrology","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","category":"ai-agent-services","chain_id":8453,"currency":"USDC","description":"The sky right now, computed server-side, read for the caller.","endpoint":"https://ioswarm.io/api/v1/x402/run/horoscope","facilitator":{"name":"Coinbase CDP","url":"https://api.cdp.coinbase.com/platform/v2/x402"},"method":"POST","name":"horoscope","network":"base","owner_contact":"swarm@ioswarm.io","owner_url":"https://ioswarm.io","payTo":"0xe4b6e29305B5EEF77aA296dC87D8683E9750eD8F","price":0.5,"price_atomic":500000,"price_usdc":"0.50","resource":"https://ioswarm.io/api/v1/x402/run/horoscope","scheme":"exact","tags":["x402","ai-agents","pay-per-call"],"timeout":120}],"tags":["x402","ai-agents","web-search","research","market-data","news","pay-per-call"],"timeout":120,"updated":"2026-10-03T02:23:33Z","updated_at":"2026-10-03T02:23:33Z","url":"https://ioswarm.io","x402Versions":[1,2]},"reachable":true,"service_count":23,"status_code":200,"valid_json":true,"well_formed":true}},"grade":"ready","integrity":{"algorithm":"Ed25519","canonical_sha256":"f6ad6b5eba043099034b2a1acd2ee64f0335674089583f0feec268ed05fb6280","canonicalization":"json-sort-keys-no-integrity-v1","key_id":"ed25519:67e5239d2bfa367d","public_key":"t3nUNaV3/SIMUb0XIBCazNFdToM3hHEQHReQ71v40wU=","signature":"HpMbsJK71aI0+iZFlBoCUVPXoduIenYQM7vIgji5RncvJ7go98gKpfSDRn3371tEoMaS0uq/ya46xDawxdeTCA==","signed_by":"ontario-protocol"},"max_score":100,"normalized_base":"https://ioswarm.io","provider_listing_next_step":{"endpoint":"https://ioswarm.io/api/v1/search","free_validation":{"charged_now":false,"method":"POST","stores_listing":false,"url":"https://ontarioprotocol.com/api/x402/list-service/validate"},"grade":"ready","publication":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","listing_page":"https://ontarioprotocol.com/listings?report_id=vrf_a8def2437a857884&endpoint=https%3A%2F%2Fioswarm.io%2Fapi%2Fv1%2Fsearch#submit-service","method":"POST","network":"eip155:8453","price_usdc":"0.50","url":"https://ontarioprotocol.com/api/x402/list-service","value":"One canonical provider profile, machine-readable JSON twin, badge, live readiness evidence, 30 days of included automatic freshness maintenance, and conditional fresh ready-grade eligibility in strict discovery and Ontario's task-to-tool buyer search."},"ready_for_listing_preflight":true,"recommended_action":{"id":"validate_listing_payload","label":"Validate listing payload free, then publish for 0.50 USDC","payment_recommended_now":false,"reason":"The readiness report is ready-grade. Validate the provider metadata without payment before choosing the paid publication step.","url":"https://ontarioprotocol.com/listings?report_id=vrf_a8def2437a857884&endpoint=https%3A%2F%2Fioswarm.io%2Fapi%2Fv1%2Fsearch#submit-service"},"report_id":"vrf_a8def2437a857884","schema":"ontario.provider_listing_next_step.v1","sequence":["Fix readiness warnings until a fresh report is ready-grade.","Validate the complete provider listing payload without payment.","Probe the publication endpoint and inspect its HTTP 402 challenge.","Pay only if the fixed 0.50 USDC price, Base network, USDC asset, and publication purpose match policy."],"signed_evidence_boundary":"This commercial handoff is added after report signing and is not part of the signed readiness evidence.","status":"ready_for_free_listing_validation","trust_boundary":"Publication processing does not buy a readiness grade, ranking, traffic, leads, purchases, safety, listing acceptance, or future availability."},"readiness_score":100,"recommendations":[],"report_id":"vrf_a8def2437a857884","report_url":"https://ontarioprotocol.com/verify/report/vrf_a8def2437a857884","signals":{"accepts_entries":true,"bazaar_metadata":true,"endpoint_reachable":true,"facilitator_metadata":true,"homepage_reachable":true,"https":true,"manifest_fresh":true,"network_consistent":true,"openapi_schema":true,"payment_challenge":true,"price_format_valid":true,"robots_present":true,"schema_org_present":true,"x402_manifest_present":true,"x402_manifest_well_formed":true},"status":"ok","submitted_url":"https://ioswarm.io/api/v1/search","target_url":"https://ioswarm.io/api/v1/search","verified_at":"2026-10-03T02:32:26.884881+00:00","verifier":"ontario.x402-readiness.v1","warning_penalty":0,"warnings":[]}
