Servidor MCP

SwarmIO

io.ioswarm/swarmio

Qué hace este MCP

Launches agentic web research runs for cited reports covering research, news, finance, products, trips, and related modes, with report search and retrieval.

billing.balance
The caller's credit balance and plan state.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['balance'], 'properties': {'plan': {'type': 'string'}, 'balance': {'type': 'number', 'description': 'Credits available right now.'}, 'user_id': {'type': 'string'}, 'currency': {'type': 'string'}, 'spent_total': {'type': 'number', 'description': 'Credits ever spent on runs.'}, 'granted_total': {'type': 'number', 'description': 'Credits ever granted (welcome + top-ups).'}}, 'additionalProperties': True}
billing.topup_terms
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.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['enabled', 'network', 'asset', 'contract', 'min_usd', 'credits_per_usd', 'min_confirmations', 'how'], 'properties': {'how': {'type': 'string', 'description': 'The exact top-up procedure, step by step.'}, 'asset': {'type': 'string', 'description': "'USDC'."}, 'pay_to': {'type': 'string', 'description': 'The receiving address — present when enabled is true.'}, 'enabled': {'type': 'boolean', 'description': 'False while the operator has published no receiving address.'}, 'min_usd': {'type': 'number', 'description': 'Smallest top-up accepted, in USD.'}, 'network': {'type': 'string', 'description': "'base'."}, 'chain_id': {'type': 'integer', 'description': '8453 (Base mainnet).'}, 'contract': {'type': 'string', 'description': 'The USDC token contract to transfer.'}, 'credits_per_usd': {'type': 'number', 'description': 'Base rate; volume bonus applies on top.'}, 'min_confirmations': {'type': 'integer', 'description': 'Confirmations required before crediting.'}}, 'additionalProperties': True}
fetch
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.
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'A result id from search (a run id).'}}}
Esquema de salida
{'type': 'object', 'required': ['id', 'title', 'text', 'url'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'text': {'type': 'string', 'description': 'The report as markdown.'}, 'title': {'type': 'string'}, 'metadata': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': True}
market.pulse
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.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['as_of', 'prices', 'news'], 'properties': {'free': {'type': 'boolean', 'description': 'Always true — this call is never charged.'}, 'news': {'type': 'object', 'properties': {'as_of': {'type': ['string', 'null']}, 'digest': {'type': ['object', 'null'], '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.'}, 'headlines': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Latest market-wire headlines: {headline, link, publisher, published, summary}.'}}, 'additionalProperties': True}, 'next': {'type': 'object', 'description': 'How to get the same data over MCP and how to commission a real report.', 'additionalProperties': True}, 'as_of': {'type': 'string', 'description': 'RFC 3339 time this document was rendered.'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['symbol', 'price', 'currency', 'source', 'as_of'], 'properties': {'as_of': {'type': 'string'}, 'price': {'type': 'number'}, 'source': {'type': 'string', 'description': 'pyth | yahoo.'}, 'symbol': {'type': 'string'}, 'currency': {'type': 'string'}, 'change_pct': {'type': ['number', 'null'], 'description': 'Session change in percent; null where the source has no session (crypto spot).'}}, 'additionalProperties': True}, 'description': 'One entry per symbol that priced this cycle, in list order.'}, 'symbols': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The fixed symbol list served.'}, 'attribution': {'type': 'string'}, 'prices_as_of': {'type': ['string', 'null']}}, 'additionalProperties': True}
modes.list
The launchable modes with a one-line contract for each. Static; never charged, no credentials needed.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', 'required': ['modes'], 'properties': {'modes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'contract'], 'properties': {'id': {'type': 'string', 'description': 'Pass to runs.launch as mode.'}, 'contract': {'type': 'string', 'description': 'What the mode does, one line.'}}, 'additionalProperties': True}}, 'route_first': {'type': 'string', 'description': 'How to classify a freeform prompt into a mode id.'}}, 'additionalProperties': True}
route.classify
Classify a freeform request into the right mode (research, news, finance, astrology, …) before spending a run. Never charged.
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['prompt'], 'properties': {'prompt': {'type': 'string', 'description': "The freeform request to classify, e.g. 'compare the best espresso grinders under $300'."}}}
Esquema de salida
{'type': 'object', 'required': ['mode', 'confidence'], 'properties': {'mode': {'type': 'string', 'description': 'The chosen mode id — pass it to runs.launch.'}, 'fields': {'type': 'object', 'description': 'Fields the router extracted from the prompt (mode-specific).'}, 'from_llm': {'type': 'boolean', 'description': 'True when the LLM router answered, false for the offline heuristic.'}, 'rationale': {'type': 'string', 'description': 'Why this mode was picked.'}, 'alternates': {'type': 'array', 'description': 'Other plausible modes, best first.'}, 'confidence': {'type': 'number', 'description': 'Router confidence, 0–1.'}}, 'additionalProperties': True}
runs.cancel
Stop a running job.
Destructivo
Esquema de entrada
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'description': 'The run_id returned by runs.launch.'}}}
Esquema de salida
{'type': 'object', 'required': ['run_id', 'status'], 'properties': {'run_id': {'type': 'string'}, 'status': {'type': 'string', 'description': "'cancelling' — the run unwinds itself; poll runs.get for the terminal state."}}, 'additionalProperties': True}
runs.get
A run's status and metadata. Poll until status is completed/failed/cancelled.
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'description': 'The run_id returned by runs.launch.'}}}
Esquema de salida
{'type': 'object', 'properties': {'meta': {'type': 'object', 'description': 'Run metadata: id, mode, title, timing.'}, 'error': {'type': ['string', 'object', 'null'], 'description': 'Failure detail when status is failed, else null.'}, 'usage': {'type': ['object', 'null'], 'description': 'Token meters for the run — null while the run is still running, an object once it settles.'}, 'status': {'type': 'string', 'description': 'running | completed | failed | cancelled.'}, 'cancelling': {'type': 'boolean', 'description': 'A stop was requested but the run has not unwound yet.'}, 'has_report': {'type': 'boolean', 'description': 'True once runs.report will answer with the report.'}, 'finished_at': {'type': ['string', 'null'], 'description': 'RFC 3339 completion time; null while running.'}}, 'additionalProperties': True}
runs.launch
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).
Acceso externo
Esquema de entrada
{'type': 'object', 'required': ['mode', 'input'], 'properties': {'mode': {'type': 'string', 'description': "A mode id from modes.list, e.g. 'research'."}, 'input': {'type': 'string', '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."}, 'max_workers': {'type': 'integer', 'description': 'Optional parallelism override (worker count). Omit for the mode default.'}}}
Esquema de salida
{'type': 'object', 'required': ['run_id', 'status'], 'properties': {'run_id': {'type': 'string', 'description': "The run's id — pass to runs.get / runs.report / runs.cancel."}, 'status': {'type': 'string', 'description': "'running' on acceptance."}, 'estimated_credits': {'type': 'number', 'description': 'The credit estimate reserved at launch; settled from real usage at completion.'}}, 'additionalProperties': True}
runs.report
The finished, cited report for a completed run (report_text is markdown).
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'description': 'The run_id returned by runs.launch.'}}}
Esquema de salida
{'type': 'object', 'properties': {'report_text': {'type': 'string', 'description': 'The full report as markdown, citations inline.'}}, 'additionalProperties': True}
runs.wait
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.
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'description': 'The run_id returned by runs.launch.'}, 'timeout_secs': {'type': 'integer', 'description': 'How long this call may wait before returning the current status. Default 90, max 240.'}}}
Esquema de salida
{'type': 'object', 'required': ['run_id', 'status', 'timed_out'], 'properties': {'run': {'type': 'object', 'description': 'The run record (as runs.get).'}, 'report': {'type': ['object', 'null'], 'description': 'The report (as runs.report) when status is completed, else null.'}, 'run_id': {'type': 'string'}, 'status': {'type': 'string', 'description': 'running | completed | failed | cancelled.'}, 'timed_out': {'type': 'boolean', 'description': 'True when the wait window elapsed first — call again.'}, 'waited_secs': {'type': 'integer'}}, 'additionalProperties': True}
search
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.)
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Words to match against report titles and text.'}}}
Esquema de salida
{'type': 'object', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'url'], 'properties': {'id': {'type': 'string', 'description': 'Pass to fetch.'}, 'url': {'type': 'string', 'description': 'The public report page, or the API report URL for a private run.'}, 'kind': {'type': 'string', 'description': 'featured | free | own.'}, 'mode': {'type': 'string'}, 'title': {'type': 'string'}, 'finished_at': {'type': ['string', 'null']}}, 'additionalProperties': True}}}, 'additionalProperties': True}
Añadido
modes.list
17 de September de 2026 a las 12:53
Añadido
billing.topup_terms
17 de September de 2026 a las 12:53
Añadido
billing.balance
17 de September de 2026 a las 12:53
Añadido
runs.cancel
17 de September de 2026 a las 12:53
Añadido
runs.report
17 de September de 2026 a las 12:53
Añadido
runs.wait
17 de September de 2026 a las 12:53
Añadido
runs.get
17 de September de 2026 a las 12:53
Añadido
runs.launch
17 de September de 2026 a las 12:53
Añadido
route.classify
17 de September de 2026 a las 12:53
Añadido
fetch
17 de September de 2026 a las 12:53
Añadido
search
17 de September de 2026 a las 12:53
Añadido
market.pulse
17 de September de 2026 a las 12:53