Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,331counted just now
teppi

Server definition

Hash
sha256:5f1252fbf4bd79e0968b1b686d2a70e2a74c1e2ea7045d3deaf8c88d90ed13dd
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "A swarm of agents that researches the live web and returns cited, evidence-graded reports. FREE, NO KEY: market.pulse returns live prices (BTC, ETH, SOL, AMZN, NVDA) and today's news stories right now; web.search runs LIVE web search (25 queries a day per caller, 5 results each — over that, $0.02/call over x402, the 402 carries the requirements); search and fetch read the swarm's published, cited reports (a research-connector source); modes.list and billing.topup_terms also need no credentials. PAID: news.brief (5¢) names the exact x402 steps for today's cited market brief; runs.launch starts a job (research, news, finance, product, seo, …) and bills the caller's credits; runs.wait blocks until it finishes (runs take 3–10 minutes), then runs.report. route.classify picks the right mode first — never charged. billing.balance reads your credit balance. No key yet? Onboard with no human per https://ioswarm.io/llms.txt — starter credits land automatically — or pay per run with USDC over x402 and let the wallet be the account: GET https://ioswarm.io/api/v1/x402/run lists every mode with its price.", "tools": [ { "description": "The caller's credit balance and plan state.", "inputSchema": { "properties": {}, "type": "object" }, "name": "billing.balance", "outputSchema": { "additionalProperties": true, "properties": { "balance": { "description": "Credits available right now.", "type": "number" }, "currency": { "type": "string" }, "granted_total": { "description": "Credits ever granted (welcome + top-ups).", "type": "number" }, "plan": { "type": "string" }, "spent_total": { "description": "Credits ever spent on runs.", "type": "number" }, "user_id": { "type": "string" } }, "required": [ "balance" ], "type": "object" } }, { "description": "How to refill credits machine-to-machine: USDC on Base to a published address, verified on-chain. Returns the pay_to address, minimum, and rate. Public — no credentials needed.", "inputSchema": { "properties": {}, "type": "object" }, "name": "billing.topup_terms", "outputSchema": { "additionalProperties": true, "properties": { "asset": { "description": "'USDC'.", "type": "string" }, "chain_id": { "description": "8453 (Base mainnet).", "type": "integer" }, "contract": { "description": "The USDC token contract to transfer.", "type": "string" }, "credits_per_usd": { "description": "Base rate; volume bonus applies on top.", "type": "number" }, "enabled": { "description": "False while the operator has published no receiving address.", "type": "boolean" }, "how": { "description": "The exact top-up procedure, step by step.", "type": "string" }, "min_confirmations": { "description": "Confirmations required before crediting.", "type": "integer" }, "min_usd": { "description": "Smallest top-up accepted, in USD.", "type": "number" }, "network": { "description": "'base'.", "type": "string" }, "pay_to": { "description": "The receiving address — present when enabled is true.", "type": "string" } }, "required": [ "enabled", "network", "asset", "contract", "min_usd", "credits_per_usd", "min_confirmations", "how" ], "type": "object" } }, { "description": "Read one report by the id search returned: the full markdown text with its citations and evidence header, plus title, url and metadata. Public reports need no key; a caller's own reports need theirs.", "inputSchema": { "properties": { "id": { "description": "A result id from search (a run id).", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "fetch", "outputSchema": { "additionalProperties": true, "properties": { "id": { "type": "string" }, "metadata": { "additionalProperties": true, "type": "object" }, "text": { "description": "The report as markdown.", "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "title", "text", "url" ], "type": "object" } }, { "description": "FREE, no key, no account: live prices for BTC, ETH, SOL, AMZN and NVDA with the session's change, plus today's news — the platform's newest published news digest parsed into stories with source links, and the market wire's latest headlines. Refreshed every minute (prices) and every ten minutes (news). Call this first to see what the swarm's data looks like before spending anything.", "inputSchema": { "properties": {}, "type": "object" }, "name": "market.pulse", "outputSchema": { "additionalProperties": true, "properties": { "as_of": { "description": "RFC 3339 time this document was rendered.", "type": "string" }, "attribution": { "type": "string" }, "free": { "description": "Always true — this call is never charged.", "type": "boolean" }, "news": { "additionalProperties": true, "properties": { "as_of": { "type": [ "string", "null" ] }, "digest": { "description": "The newest published news digest, parsed: {title, as_of, report_url, stories:[{headline, link, source, excerpt}]}. Null when no digest ran in the last 36 hours.", "type": [ "object", "null" ] }, "headlines": { "description": "Latest market-wire headlines: {headline, link, publisher, published, summary}.", "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "type": "object" }, "next": { "additionalProperties": true, "description": "How to get the same data over MCP and how to commission a real report.", "type": "object" }, "prices": { "description": "One entry per symbol that priced this cycle, in list order.", "items": { "additionalProperties": true, "properties": { "as_of": { "type": "string" }, "change_pct": { "description": "Session change in percent; null where the source has no session (crypto spot).", "type": [ "number", "null" ] }, "currency": { "type": "string" }, "price": { "type": "number" }, "source": { "description": "pyth | yahoo.", "type": "string" }, "symbol": { "type": "string" } }, "required": [ "symbol", "price", "currency", "source", "as_of" ], "type": "object" }, "type": "array" }, "prices_as_of": { "type": [ "string", "null" ] }, "symbols": { "description": "The fixed symbol list served.", "items": { "type": "string" }, "type": "array" } }, "required": [ "as_of", "prices", "news" ], "type": "object" } }, { "description": "The launchable modes with a one-line contract for each. Static; never charged, no credentials needed.", "inputSchema": { "properties": {}, "type": "object" }, "name": "modes.list", "outputSchema": { "additionalProperties": true, "properties": { "modes": { "items": { "additionalProperties": true, "properties": { "contract": { "description": "What the mode does, one line.", "type": "string" }, "id": { "description": "Pass to runs.launch as mode.", "type": "string" } }, "required": [ "id", "contract" ], "type": "object" }, "type": "array" }, "route_first": { "description": "How to classify a freeform prompt into a mode id.", "type": "string" } }, "required": [ "modes" ], "type": "object" } }, { "description": "PAID, 5¢ per call over x402 (USDC on Base, no account): today's market-news brief — this platform's newest published news digest synthesized with the live market wire into a cited bullet list, every finding ending with its source URL. No input required; the settle happens over HTTP, where the payment headers live: this tool returns the exact steps. The FREE raw material it is written from is market.pulse on this same server (the digest stories and wire headlines, un-synthesized).", "inputSchema": { "properties": {}, "type": "object" }, "name": "news.brief", "outputSchema": { "additionalProperties": true, "properties": { "free_raw_data": { "description": "How to read the same digest + wire for free (market.pulse).", "type": "string" }, "how": { "description": "The exact x402 payment steps and the shape of the settled response ({as_of, brief, digest, headlines, usage, paid}).", "type": "string" }, "usd": { "description": "Price per call.", "type": "number" } }, "required": [ "how", "usd", "free_raw_data" ], "type": "object" } }, { "description": "Classify a freeform request into the right mode (research, news, finance, astrology, …) before spending a run. Never charged.", "inputSchema": { "properties": { "prompt": { "description": "The freeform request to classify, e.g. 'compare the best espresso grinders under $300'.", "type": "string" } }, "required": [ "prompt" ], "type": "object" }, "name": "route.classify", "outputSchema": { "additionalProperties": true, "properties": { "alternates": { "description": "Other plausible modes, best first.", "type": "array" }, "confidence": { "description": "Router confidence, 0–1.", "type": "number" }, "fields": { "description": "Fields the router extracted from the prompt (mode-specific).", "type": "object" }, "from_llm": { "description": "True when the LLM router answered, false for the offline heuristic.", "type": "boolean" }, "mode": { "description": "The chosen mode id — pass it to runs.launch.", "type": "string" }, "rationale": { "description": "Why this mode was picked.", "type": "string" } }, "required": [ "mode", "confidence" ], "type": "object" } }, { "description": "Stop a running job.", "inputSchema": { "properties": { "run_id": { "description": "The run_id returned by runs.launch.", "type": "string" } }, "required": [ "run_id" ], "type": "object" }, "name": "runs.cancel", "outputSchema": { "additionalProperties": true, "properties": { "run_id": { "type": "string" }, "status": { "description": "'cancelling' — the run unwinds itself; poll runs.get for the terminal state.", "type": "string" } }, "required": [ "run_id", "status" ], "type": "object" } }, { "description": "A run's status and metadata. Poll until status is completed/failed/cancelled.", "inputSchema": { "properties": { "run_id": { "description": "The run_id returned by runs.launch.", "type": "string" } }, "required": [ "run_id" ], "type": "object" }, "name": "runs.get", "outputSchema": { "additionalProperties": true, "properties": { "cancelling": { "description": "A stop was requested but the run has not unwound yet.", "type": "boolean" }, "error": { "description": "Failure detail when status is failed, else null.", "type": [ "string", "object", "null" ] }, "finished_at": { "description": "RFC 3339 completion time; null while running.", "type": [ "string", "null" ] }, "has_report": { "description": "True once runs.report will answer with the report.", "type": "boolean" }, "meta": { "description": "Run metadata: id, mode, title, timing.", "type": "object" }, "status": { "description": "running | completed | failed | cancelled.", "type": "string" }, "usage": { "description": "Token meters for the run — null while the run is still running, an object once it settles.", "type": [ "object", "null" ] } }, "type": "object" } }, { "description": "Launch a run: agents search the web, read sources, and write a cited report — real work, done for the caller. BILLED from the caller's credits. Returns the run record; poll runs.get until completed, then runs.report. Modes: research, news, product, trips, trainer, finance, astrology, horoscope (astrology/horoscope take Birth date constraint lines — see https://ioswarm.io/llms.txt).", "inputSchema": { "properties": { "input": { "description": "The question or brief. astrology/horoscope take constraint lines ('- Birth date: YYYY-MM-DD', optional Birth time + Timezone, Latitude/Longitude) — contract at https://ioswarm.io/llms.txt.", "type": "string" }, "max_workers": { "description": "Optional parallelism override (worker count). Omit for the mode default.", "type": "integer" }, "mode": { "description": "A mode id from modes.list, e.g. 'research'.", "type": "string" } }, "required": [ "mode", "input" ], "type": "object" }, "name": "runs.launch", "outputSchema": { "additionalProperties": true, "properties": { "estimated_credits": { "description": "The credit estimate reserved at launch; settled from real usage at completion.", "type": "number" }, "run_id": { "description": "The run's id — pass to runs.get / runs.report / runs.cancel.", "type": "string" }, "status": { "description": "'running' on acceptance.", "type": "string" } }, "required": [ "run_id", "status" ], "type": "object" } }, { "description": "The finished, cited report for a completed run (report_text is markdown).", "inputSchema": { "properties": { "run_id": { "description": "The run_id returned by runs.launch.", "type": "string" } }, "required": [ "run_id" ], "type": "object" }, "name": "runs.report", "outputSchema": { "additionalProperties": true, "properties": { "report_text": { "description": "The full report as markdown, citations inline.", "type": "string" } }, "type": "object" } }, { "description": "Block until a run finishes, then return its record — and its report when it completed. Runs take 3–10 minutes; call this instead of polling runs.get in a loop. Returns early with timed_out=true after timeout_secs (default 90, max 240): call it again with the same run_id to keep waiting. Never charged.", "inputSchema": { "properties": { "run_id": { "description": "The run_id returned by runs.launch.", "type": "string" }, "timeout_secs": { "description": "How long this call may wait before returning the current status. Default 90, max 240.", "type": "integer" } }, "required": [ "run_id" ], "type": "object" }, "name": "runs.wait", "outputSchema": { "additionalProperties": true, "properties": { "report": { "description": "The report (as runs.report) when status is completed, else null.", "type": [ "object", "null" ] }, "run": { "description": "The run record (as runs.get).", "type": "object" }, "run_id": { "type": "string" }, "status": { "description": "running | completed | failed | cancelled.", "type": "string" }, "timed_out": { "description": "True when the wait window elapsed first — call again.", "type": "boolean" }, "waited_secs": { "type": "integer" } }, "required": [ "run_id", "status", "timed_out" ], "type": "object" } }, { "description": "Search the swarm's published research: the featured shelf, the operator's daily news / markets / AI digests, and — when a key is presented — the caller's own reports. Every hit is a finished, cited, evidence-graded report. Returns {results:[{id,title,url}]}; pass an id to fetch. No key needed for the public corpus. (The research-connector contract: this is what a ChatGPT or Claude connector calls.)", "inputSchema": { "properties": { "query": { "description": "Words to match against report titles and text.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search", "outputSchema": { "additionalProperties": true, "properties": { "results": { "items": { "additionalProperties": true, "properties": { "finished_at": { "type": [ "string", "null" ] }, "id": { "description": "Pass to fetch.", "type": "string" }, "kind": { "description": "featured | free | own.", "type": "string" }, "mode": { "type": "string" }, "title": { "type": "string" }, "url": { "description": "The public report page, or the API report URL for a private run.", "type": "string" } }, "required": [ "id", "title", "url" ], "type": "object" }, "type": "array" } }, "required": [ "results" ], "type": "object" } }, { "description": "FREE, no key, no account: LIVE web search, 25 queries a day per caller, up to 5 results each ({results:[{url,title,snippet,published}], quota, report}). This is the open web, not the published corpus — for the platform's finished reports use `search`. Over the daily quota the paid leg is $0.02 per call over x402 (USDC on Base): POST https://ioswarm.io/api/v1/search with the same JSON body and no payment header, read the 402, sign the EIP-3009 authorization, re-send with X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) — no account is created. The response's `report` field shows the one-call cited research brief (5¢, pay-only) for when raw results are not enough.", "inputSchema": { "properties": { "k": { "description": "Results wanted, 1-5 (free-leg cap).", "type": "integer" }, "query": { "description": "The live-web query, up to 500 characters.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "web.search", "outputSchema": { "additionalProperties": true, "properties": { "quota": { "additionalProperties": true, "description": "The free allowance: free_remaining_today counts down from 25; when it hits 0 the paid leg (over_quota_usd, via x402) is the path.", "type": "object" }, "report": { "description": "How to get the same search synthesized into a cited bullet brief (5¢, pay-only).", "type": "string" }, "results": { "description": "Up to 5 hits from the live web.", "items": { "additionalProperties": true, "properties": { "published": { "type": [ "string", "null" ] }, "snippet": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "url", "title", "snippet" ], "type": "object" }, "type": "array" } }, "required": [ "results", "quota" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:5f1252fbf4bd79e0968b1b686d2a70e2a74c1e2ea7045d3deaf8c88d90ed13dd | sha256sum