MCP-Server

AgentIndex x402

world.agentindex/x402
MCP- & Agenten-Infrastruktur Suche & Recherche Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Provides MCP server discovery, web and PDF extraction, translation, summarization, and multi-query research jobs, including pay-per-call workflows.

agent_health
Agent Health Check
Fresh operational audit of any public agent or paid API: reachability, latency, HTTP status, x402 challenge, price/network/payTo, OpenAPI, agent card and MCP manifest. Returns a 0-100 score, verdict and issues. Try GET /agent-health/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Public agent, MCP or x402 endpoint URL to audit.'}, 'method': {'type': 'string', 'default': 'GET', 'description': 'HTTP method for the target endpoint; defaults to GET.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['url', 'origin', 'operational', 'verdict', 'score', 'latency_ms', 'target', 'x402', 'discovery', 'issues'], 'properties': {'url': {'type': 'string'}, 'x402': {'type': 'object'}, 'score': {'type': 'integer'}, 'issues': {'type': 'array', 'items': {'type': 'string'}}, 'origin': {'type': 'string'}, 'target': {'type': 'object'}, 'verdict': {'enum': ['operational', 'degraded', 'unreachable'], 'type': 'string'}, 'discovery': {'type': 'object'}, 'latency_ms': {'type': 'integer'}, 'operational': {'type': 'boolean'}, 'x402_receipt': {'type': 'object'}}}
ask_model
Ask Model (LLM Gateway)
OpenAI-compatible chat completion API: call 400+ LLMs (Claude, GPT, Gemini, Llama, Mistral) per request, pay with x402, no API key. You sign a fixed price computed from your max_tokens; unused tokens are not refunded. 20s server-side timeout - never charged if it fires; set your client timeout to 30s. Try GET /v1/chat/completions/sample.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['model', 'messages'], 'properties': {'model': {'type': 'string', 'description': 'OpenRouter model id from GET /v1/models, e.g. "openai/gpt-4o-mini".'}, 'messages': {'type': 'array', 'items': {}, 'description': 'OpenAI-format chat messages: [{role, content}, ...].'}, 'max_tokens': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Max completion tokens, capped at 4096 - also bounds the x402 upto price ceiling.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['choices', 'usage'], 'properties': {'id': {'type': 'string'}, 'model': {'type': 'string'}, 'usage': {'type': 'object'}, 'choices': {'type': 'array', 'items': {'type': 'object'}}, 'x402_receipt': {'type': 'object'}}}
can_pay
Wallet Can Pay
Check whether a Base wallet holds enough USDC to pay an x402 amount (default $0.001). Returns balance, can_pay, shortfall. The checklist agents run before spending. Try GET /can-pay/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['address'], 'properties': {'amount': {'type': 'number', 'default': 0.001, 'description': 'USDC amount the agent plans to spend (default 0.001).'}, 'address': {'type': 'string', 'description': 'EVM wallet address (0xâ\x80¦) to check on Base mainnet.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['address', 'usdc', 'can_pay'], 'properties': {'eth': {'type': 'object'}, 'usdc': {'type': 'object'}, 'address': {'type': 'string'}, 'can_pay': {'type': 'boolean'}, 'network': {'type': 'string'}, 'x402_receipt': {'type': 'object'}, 'shortfall_usdc': {'type': 'number'}, 'amount_requested': {'type': 'number'}}}
classify
Text Classification
Text classification with your own custom labels (2-20) - categorize a support ticket, a review, or any text into the best-fitting label, with a confidence score and an alternate label. Powered by Jev, falling back to a Groq-hosted LLM if Jev is slow or unavailable - under 4.5s guaranteed. Try GET /classify/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text', 'labels'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': '2 to 20 candidate labels, your own choice of wording.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
crypto
Crypto Price
Live spot prices for crypto coins (BTC, ETH, SOL, ...) in USD or another fiat, with 24h change. Accepts tickers or CoinGecko ids. Try GET /crypto/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['coins'], 'properties': {'coins': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Coin tickers (btc, eth, sol) and/or CoinGecko ids. String, comma-separated string, or array. Up to 20.'}, 'vs_currency': {'type': 'string', 'default': 'usd', 'description': 'Fiat quote currency, default usd (also eur, gbp, ...).'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['vs_currency', 'prices'], 'properties': {'prices': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'price': {'type': 'number'}, 'symbol': {'type': 'string'}, 'change_24h_pct': {'type': 'number'}}}}, 'vs_currency': {'type': 'string'}, 'x402_receipt': {'type': 'object'}}}
decide
Decision Questions
Ask up to 20 typed yes/no, multiple-choice or ordinal-scale questions about one shared piece of context in a single call - each answered with a real probability (Jev decision primitives), not generated text. Powered by Jev (TypeSafe System One). $0.001 per call, no OpenRouter or TypeSafe account needed. Try GET /decide/sample.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['state', 'questions'], 'properties': {'state': {'description': 'Shared context the questions are asked about - a string, or a JSON object/array. Capped at 8000 tokens.'}, 'questions': {'type': 'object', 'description': "Up to 20 typed questions, keyed by a name you choose. Each needs type ('noul', 'choice' or 'score'), instructions, and criteria (shape depends on type - see /decide/sample).", 'additionalProperties': True}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['answers'], 'properties': {'answers': {'type': 'object', 'description': 'One answer per question key, shaped by its type: noul (probability of yes), choice (selected option, per-option probabilities, confidence), or score (position, per-level probabilities, confidence, legend).'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
extract_structured
Extract Structured Data
Extract structured data from a URL or raw text into strict JSON matching a schema you provide. Fields the content doesn't support come back null - never an invented or approximate value, and an unmatchable schema returns an explicit error. Try GET /extract/sample. Part of the AgentIndex content kit (pdf, web-read, extract, summarize, detect-language) - see GET /capabilities.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['schema'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'URL to read and extract from. Provide this or text, not both.'}, 'text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Raw text to extract from. Provide this or url, not both.'}, 'schema': {'type': 'object', 'description': "JSON Schema describing the fields to extract. The response's `data` field will strictly conform to it.", 'additionalProperties': True}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['data', 'missing_fields'], 'properties': {'data': {'type': 'object', 'description': "Extracted data, matching the requested schema's shape - fields the content doesn't support come back null rather than an invented value (see missing_fields)."}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'missing_fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Top-level keys in data the model could not find in the content and returned as null.'}}}
fact_check
Fact Check
Check a claim against live web sources - a verdict, a confidence level, and the sources that support or contradict it, each with its URL and stance. Returns 'inconclusive' rather than a guess when the sources don't clearly settle it. Try GET /fact-check/sample. Part of the AgentIndex content kit (pdf, web-read, extract, summarize, detect-language) - see GET /capabilities.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['claim'], 'properties': {'claim': {'type': 'string', 'description': 'The factual claim to check against live web sources.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['claim', 'verdict', 'confidence', 'sources'], 'properties': {'claim': {'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'title': {'description': 'Source page title, when known.'}, 'stance': {'enum': ['supports', 'contradicts', 'neutral'], 'type': 'string'}}}}, 'verdict': {'enum': ['supported', 'contradicted', 'mixed', 'unverifiable', 'inconclusive'], 'type': 'string', 'description': "'inconclusive' is returned instead of a guess whenever confidence is low or no source clearly supports/contradicts the claim - never a confident-sounding verdict the sources don't actually back up."}, 'confidence': {'type': 'number', 'description': '0.0-1.0 confidence in the verdict.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
gas_price
Gas Price
Read the live gas price, EIP-1559 base fee and estimated native-transfer cost on Base, Ethereum, Polygon, Arbitrum or Optimism. No RPC key or account. Try GET /gas-price/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'network': {'type': 'string', 'default': 'base', 'description': 'EVM network to read; defaults to Base.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['network', 'block_number', 'gas_price', 'native_transfer_estimate'], 'properties': {'network': {'type': 'object'}, 'base_fee': {'type': ['object', 'null']}, 'gas_price': {'type': 'object'}, 'block_number': {'type': 'integer'}, 'x402_receipt': {'type': 'object'}, 'native_transfer_estimate': {'type': 'object'}}}
guard
Tool Call Guard
Ask whether a tool call should run automatically, need human confirmation, or be denied, given the user's request - returns allow/ask/deny with a probability. Advisory only: like any LLM-based judge it is sensitive to prompt injection in the request or tool call, so the calling agent must keep the final decision, not delegate it outright. Powered by Jev (TypeSafe System One). $0.001 per call, no OpenRouter or TypeSafe account needed. Try GET /guard/sample.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['user_request', 'tool_call'], 'properties': {'tool_call': {'type': 'object', 'description': 'The tool call an agent is about to make, e.g. {"name": ..., "arguments": {...}}.', 'additionalProperties': True}, 'user_request': {'type': 'string', 'description': "The user's original request, in their own words."}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['decision', 'probability', 'probabilities'], 'properties': {'decision': {'enum': ['allow', 'ask', 'deny'], 'type': 'string'}, 'confidence': {'type': 'number'}, 'probability': {'type': 'number', 'description': 'Probability of the returned decision.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'probabilities': {'type': 'object', 'description': 'Probability for each of allow/ask/deny.'}}}
intent
Intent Detection
Intent detection: classify text as a question, request, complaint, compliment, or other, with a confidence score and an alternate label. Powered by Jev, with an automatic Groq-hosted LLM fallback if Jev is slow or unavailable - under 4.5s guaranteed. Try GET /intent/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
jobs
Research Job
Multi-query web research, read and synthesized into one sourced JSON brief in a single call - what would otherwise cost an agent twenty calls and its whole context window. Free status polling and result retrieval. Try GET /jobs/sample.
Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['subject'], 'properties': {'subject': {'type': 'string', 'description': 'Subject or question to research - a company, person, product, claim or topic.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['job_id', 'eta_seconds'], 'properties': {'job_id': {'type': 'string', 'description': 'Identifier to poll for status and fetch the finished result.'}, 'eta_seconds': {'type': 'integer', 'description': 'Estimated seconds until the research brief is ready.'}}}
language
Language Detection
Language detection: identify which of 20 common languages (or "other") a text is written in, with a confidence score. Powered by Jev, with an automatic Groq-hosted LLM fallback if Jev is slow or unavailable - under 4.5s guaranteed. Try GET /language/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
llm_claude_sonnet
Claude Sonnet API
Claude Sonnet API - pay per call, no API key. OpenAI-format chat completions on anthropic/claude-sonnet-5.5, pinned to Anthropic's own OpenRouter endpoint for reliability. You sign a fixed price computed from your max_tokens; unused tokens are not refunded. 20s server-side timeout - never charged if it fires; set your client timeout to 30s. Try GET /llm/claude-sonnet/sample.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['messages'], 'properties': {'messages': {'type': 'array', 'items': {}, 'description': 'OpenAI-format chat messages: [{role, content}, ...].'}, 'max_tokens': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Max completion tokens, capped at 4096 - also bounds the price ceiling.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['choices', 'usage'], 'properties': {'id': {'type': 'string'}, 'model': {'type': 'string'}, 'usage': {'type': 'object'}, 'choices': {'type': 'array', 'items': {'type': 'object'}}, 'x402_receipt': {'type': 'object'}}}
llm_gpt_mini
GPT Mini API
GPT Mini API - pay per call, no API key. OpenAI-format chat completions on openai/gpt-5.4-mini, pinned to OpenAI's own OpenRouter endpoint for reliability. You sign a fixed price computed from your max_tokens; unused tokens are not refunded. 20s server-side timeout with an automatic 2nd-provider retry if the first is slow - never charged if both miss; set your client timeout to 30s. Try GET /llm/gpt-mini/sample.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['messages'], 'properties': {'messages': {'type': 'array', 'items': {}, 'description': 'OpenAI-format chat messages: [{role, content}, ...].'}, 'max_tokens': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Max completion tokens, capped at 4096 - also bounds the price ceiling.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['choices', 'usage'], 'properties': {'id': {'type': 'string'}, 'model': {'type': 'string'}, 'usage': {'type': 'object'}, 'choices': {'type': 'array', 'items': {'type': 'object'}}, 'x402_receipt': {'type': 'object'}}}
llm_llama
Llama API
Llama API - pay per call, no API key. OpenAI-format chat completions on meta-llama/llama-4-maverick, pinned to DeepInfra for reliability. You sign a fixed price computed from your max_tokens; unused tokens are not refunded. 20s server-side timeout - never charged if it fires; set your client timeout to 30s. Try GET /llm/llama/sample.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['messages'], 'properties': {'messages': {'type': 'array', 'items': {}, 'description': 'OpenAI-format chat messages: [{role, content}, ...].'}, 'max_tokens': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Max completion tokens, capped at 4096 - also bounds the price ceiling.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['choices', 'usage'], 'properties': {'id': {'type': 'string'}, 'model': {'type': 'string'}, 'usage': {'type': 'object'}, 'choices': {'type': 'array', 'items': {'type': 'object'}}, 'x402_receipt': {'type': 'object'}}}
news
Hacker News Headlines
Top Hacker News headlines right now - title, URL, score, comments. Fresh links for agents that need current tech/startup signal. Try GET /news/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 10, 'description': 'How many top stories to return (1-25, default 10).'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['source', 'count', 'stories'], 'properties': {'count': {'type': 'integer'}, 'source': {'type': 'string'}, 'stories': {'type': 'array', 'items': {'type': 'object', 'properties': {'by': {'type': 'string'}, 'id': {'type': 'integer'}, 'url': {'type': 'string'}, 'time': {'type': 'integer'}, 'score': {'type': 'integer'}, 'title': {'type': 'string'}, 'comments': {'type': 'integer'}}}}, 'x402_receipt': {'type': 'object'}}}
pii_check
PII Detection
PII detection: flag whether text contains personally identifiable information (name plus contact details, email, phone, address, government ID, financial account) with a confidence score. Powered by Jev, with an automatic Groq-hosted LLM fallback if Jev is slow or unavailable - under 4.5s guaranteed. Try GET /pii-check/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
probe
x402 Paywall Probe
Probe any public URL and report if it is an x402 paywall - price, network, payTo, scheme. Shop paywalls before you spend. Try GET /probe/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Public http(s) URL to probe for an x402 paywall.'}, 'method': {'type': 'string', 'default': 'GET', 'description': 'HTTP method to use (GET default, or POST).'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['url', 'reachable', 'is_x402'], 'properties': {'url': {'type': 'string'}, 'pay_to': {'type': 'string'}, 'is_x402': {'type': 'boolean'}, 'network': {'type': 'string'}, 'reachable': {'type': 'boolean'}, 'price_usdc': {'type': 'number'}, 'http_status': {'type': 'integer'}, 'x402_receipt': {'type': 'object'}}}
rank
Document Rerank
Rank up to 50 documents by relevance to a query in a single call - each document returned with its relevance probability, sorted highest first. Powered by Jev (TypeSafe System One). $0.001 per call, no OpenRouter or TypeSafe account needed. Try GET /rank/sample.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['query', 'documents'], 'properties': {'query': {'type': 'string', 'description': 'The query to rank documents against.'}, 'documents': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 documents to rank by relevance to the query. Each truncated to 2000 characters before scoring.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['documents'], 'properties': {'documents': {'type': 'array', 'items': {'type': 'object', 'properties': {'score': {'type': 'number', 'description': 'Relevance probability, 0-1.'}, 'document': {'type': 'string'}}}, 'description': 'Input documents, sorted by relevance score descending.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
read_pdf
PDF to Markdown
Extract a public PDF (by HTTPS URL or base64) into clean Markdown - headings and tables preserved via layout-aware parsing, plus title/author/page count/date metadata and a real token count. Text content itself is never generated or altered, only its structure is inferred. Try GET /pdf/sample. Part of the AgentIndex content kit (pdf, web-read, extract, summarize, detect-language) - see GET /capabilities.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Public HTTPS URL of a PDF file. Provide this or pdf_base64, not both.'}, 'pdf_base64': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Base64-encoded PDF file content. Provide this or url, not both.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['markdown', 'metadata', 'token_count'], 'properties': {'markdown': {'type': 'string', 'description': 'Extracted Markdown - headings and tables preserved via layout-aware parsing.'}, 'metadata': {'type': 'object', 'properties': {'date': {'description': 'Document creation date from PDF metadata, when present.'}, 'pages': {'type': 'integer', 'description': 'Number of pages in the PDF.'}, 'title': {'description': 'Document title from PDF metadata, when present.'}, 'author': {'description': 'Document author from PDF metadata, when present.'}}}, 'token_count': {'type': 'integer', 'description': 'Real BPE token count (cl100k_base) of the extracted markdown.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
read_web_page
Web Page to Markdown
Fetch URL content as Markdown: read any web page and get clean Markdown - navigation, ads and boilerplate stripped, links resolved, plus a real token count. The same extraction /search uses on result pages, exposed standalone for a URL you already have. Try GET /web-read/sample. Part of the AgentIndex content kit (pdf, web-read, extract, summarize, detect-language) - see GET /capabilities.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'URL of the page to read.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['url', 'markdown', 'token_count'], 'properties': {'url': {'type': 'string'}, 'title': {'description': 'Page title, when found.'}, 'markdown': {'type': 'string', 'description': 'Main article content as clean markdown - navigation, ads and boilerplate removed, links resolved.'}, 'token_count': {'type': 'integer', 'description': 'Real BPE token count (cl100k_base) of the markdown.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
research
Research
Jev-powered research: routed search, cited answer, claims verified against sources. Ask a question, get a 5-8 sentence answer, each claim tagged to a numbered source, built from real page content - no invented facts. A fast paid LLM writes it, under 4.5s guaranteed; on a rare miss, a no-LLM extractive fallback (top sentences from the sources, picked by Jev) takes over instead, marked "synthesis":"extractive". Try GET /research/sample.
Nur Lesen Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'The research question to answer, up to 500 characters.'}, 'max_sources': {'type': 'integer', 'default': 5, 'description': 'How many web sources to consider, 1-10. Default 5.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['query', 'answer', 'synthesis', 'sources', 'claims_verified', 'timing_ms'], 'properties': {'query': {'type': 'string'}, 'answer': {'type': 'string', 'description': '5-8 sentences, each claim cited inline as [n] referring to the sources array (1-indexed).'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'source': {'type': 'string'}, 'published_at': {'type': ['string', 'null']}}}}, 'synthesis': {'enum': ['llm', 'extractive'], 'type': 'string', 'description': "'llm' when a paid fast model wrote the answer (the common case). 'extractive' when that model missed its own tight time cap and the answer is instead the most relevant sentences already present in the sources, verbatim, picked by Jev - never a second LLM call."}, 'timing_ms': {'type': 'object', 'description': 'search, synthesis, verify, total, in milliseconds.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'claims_verified': {'type': 'boolean', 'description': "True only if a Jev check confirmed the answer's citations are supported. False if unsupported OR if verification was skipped/timed out - see claims_verified_reason."}, 'claims_verified_reason': {'type': ['string', 'null'], 'description': "Why claims_verified is false: 'jev_found_unsupported_claim', 'verification_timed_out_or_failed', 'insufficient_time_budget_remaining', or null when verified true."}}}
search
Web Search
Jev-routed web search: each query goes to the best specialised source (code, facts, news, prices), results ranked by relevance. 28/30 test queries answered. Up to 10 results per query, each with title, URL, snippet, short extract and publish date. Up to 5 queries per call, merged and de-duplicated. No account, no API key. Try GET /search/sample. Part of the AgentIndex content kit (pdf, web-read, extract, summarize, detect-language) - see GET /capabilities.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'query': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Search query, or an array of up to 5 related queries to run in one call - results are merged and de-duplicated by URL.'}, 'extract': {'type': 'boolean', 'default': True, 'description': 'Include the search-engine snippet for each result.'}, 'summarize': {'type': 'boolean', 'default': False, 'description': 'Also return a short synthesized answer summarizing the results.'}, 'max_results': {'type': 'integer', 'default': 5, 'description': 'Maximum number of results to return.'}, 'content_chars': {'type': 'integer', 'default': 12000, 'description': 'Maximum Markdown characters returned per fetched result page.'}, 'content_results': {'type': 'integer', 'default': 3, 'description': 'How many top result pages to fetch when include_content is true.'}, 'include_content': {'type': 'boolean', 'default': True, 'description': 'Fetch result pages and include clean full-page Markdown. Defaults to true.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['query', 'results'], 'properties': {'query': {'description': 'The query or queries that were searched.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Source URL.'}, 'date': {'description': 'Publish date, when known.'}, 'title': {'type': 'string', 'description': 'Page title.'}, 'extract': {'type': 'string', 'description': 'Search-engine result snippet.'}, 'content_error': {'type': 'string', 'description': 'Per-result fetch error; other search results remain usable.'}, 'content_markdown': {'type': 'string', 'description': 'Clean full-page Markdown for fetched top results, with navigation and boilerplate removed.'}, 'content_truncated': {'type': 'boolean', 'description': 'True when content_markdown reached the requested character limit.'}}}, 'description': 'Ranked web results, most relevant first.'}, 'summary': {'description': 'Optional short synthesized answer summarizing the results, when requested.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
sentiment
Sentiment Analysis
Sentiment analysis: classify text as positive, negative, or neutral with a confidence score and an alternate label. Powered by Jev, with an automatic Groq-hosted LLM fallback if Jev is slow or unavailable ("engine":"jev"|"fallback" in the response) - under 4.5s guaranteed. Try GET /sentiment/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
spam_check
Spam Detection
Spam detection: classify text as spam or not spam with a confidence score. Powered by Jev, with an automatic Groq-hosted LLM fallback if Jev is slow or unavailable - under 4.5s guaranteed. Try GET /spam-check/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
summarize
Summarize
Summarize a URL, raw text or HTML at the length you request - short, medium or long - with the source noted. Neutral and factual, no invented facts. Try GET /summarize/sample. Part of the AgentIndex content kit (pdf, web-read, extract, summarize, detect-language) - see GET /capabilities.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'URL to fetch and summarize. Provide exactly one of url, text or html.'}, 'html': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Raw HTML to summarize. Provide exactly one of url, text or html.'}, 'text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Raw text to summarize. Provide exactly one of url, text or html.'}, 'length': {'type': 'string', 'default': 'medium', 'description': 'Requested summary length - short (~2 sentences), medium (~1 paragraph), long (~3-4 paragraphs). Defaults to medium.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['summary', 'length'], 'properties': {'length': {'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Source URL(s) the summary was drawn from, when a URL was given.'}, 'summary': {'type': 'string'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}}}
token_risk
Token Risk
Base token risk scan: on-chain rug check and honeypot-style flag detection for any ERC-20, no GoPlus, DexScreener or other vendor - real Base token safety. Reads bytecode for mint/blacklist/pause/tax powers, EIP-1967 proxy, renounced ownership, plus Uniswap v2/v3 and Aerodrome liquidity. A Jev avoid/caution/acceptable verdict leads the response, raw signals follow. Holder concentration included only when history fits 1-2 log queries. Try GET /token-risk/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'ERC-20 contract address on Base to analyze (0x + 40 hex chars).'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['address', 'verdict', 'bytecode_analysis', 'liquidity_analysis', 'holders_analysis'], 'properties': {'address': {'type': 'string'}, 'network': {'type': 'object'}, 'verdict': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': "Only present when verdict_source is 'rules'."}, 'verdict': {'enum': ['avoid', 'caution', 'acceptable'], 'type': 'string'}, 'confidence': {'type': ['number', 'null']}, 'probability': {'type': ['number', 'null']}, 'probabilities': {'type': ['object', 'null']}, 'verdict_source': {'enum': ['jev', 'rules'], 'type': 'string'}}, 'description': "avoid/caution/acceptable. verdict_source is 'jev' (a real Jev decision with a real probability) or 'rules' (deterministic mint/blacklist/pause/owner/liquidity check, probability/probabilities/confidence null) - used whenever Jev does not answer within 2 seconds, so the route always returns a verdict without ever waiting on an upstream with no SLA."}, 'timing_ms': {'type': 'object', 'description': "signals (bytecode+liquidity via Multicall3, and holders - run together, sharing a 2s window), verdict, total, in milliseconds. Total is never intended to exceed 4.0s: signal-gathering and the Jev-or-rules verdict are each bounded so their sum can't exceed that budget by construction, not because anything gets cancelled at the last moment - added 2026-09-28 after a real payment settled for an analysis whose client had already timed out."}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'holders_analysis': {'type': 'object', 'description': "status: 'ok' (with distinct_holders/top10_pct_of_supply), 'skipped_established_token' (history too large to reconstruct in 1-2 eth_getLogs calls), or 'unavailable' (the 3-second per-stage budget was exceeded)."}, 'bytecode_analysis': {'type': 'object', 'description': 'mint/blacklist/pause/tax flags, proxy and ownership status.'}, 'liquidity_analysis': {'type': 'object', 'description': 'Uniswap v2/v3 and Aerodrome pools found, with reserves.'}}}
toxicity
Toxicity Detection
Toxicity detection: classify text as toxic or not toxic (hate speech, harassment, threats, severe offensive language) with a confidence score. Powered by Jev, with an automatic Groq-hosted LLM fallback if Jev is slow or unavailable - under 4.5s guaranteed. Try GET /toxicity/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to classify, up to 4000 characters.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['label', 'probability', 'engine'], 'properties': {'label': {'type': 'string', 'description': 'The best-fitting label.'}, 'engine': {'enum': ['jev', 'fallback'], 'type': 'string', 'description': 'Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.'}, 'probability': {'type': 'number', 'description': 'Confidence in `label`, 0 to 1.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'alternate_label': {'type': ['string', 'null'], 'description': 'The second-best label, if any.'}, 'alternate_probability': {'type': ['number', 'null'], 'description': 'Confidence in `alternate_label`, if known.'}}}
translate
Translate Text
Translate up to 200 text segments in a single call - the same result that would otherwise take 200 separate calls to translate a whole file. Markdown, HTML and {x} placeholders preserved per segment, order and count kept intact, source language auto-detected, automatic fallback across multiple models for uptime, providers that train on submitted prompts excluded. A single string also works. No account, no API key. Try GET /translate/sample.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['text', 'target_lang'], 'properties': {'text': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Text to translate - a single string, or an array of up to 200 segments to translate together in one call (batch/bulk translation), preserving order and count.'}, 'source_lang': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Source language code. Omit to auto-detect.'}, 'target_lang': {'type': 'string', 'description': "Target language as an ISO 639-1 code, e.g. 'en', 'fr', 'ja'."}, 'preserve_format': {'type': 'boolean', 'default': True, 'description': 'Keep markdown syntax, HTML tags and {x}/{{x}} placeholders unchanged, translating only the surrounding natural-language text - useful for localizing UI strings or templated content.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['target_lang', 'translated_text'], 'properties': {'text': {'description': 'The original input text or segments.'}, 'target_lang': {'type': 'string'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt, including segments_processed for batch calls.'}, 'translated_text': {'description': 'Translated text - a string, or an array aligned with the input segments for batch requests.'}, 'detected_source_lang': {'description': 'Auto-detected source language, when not supplied.'}}}
verify
Claim Verification
Check whether a source supports, contradicts, or gives insufficient information about a claim - a typed verdict with a real probability, not generated text. Powered by Jev (TypeSafe System One). $0.001 per call, no OpenRouter or TypeSafe account needed. Try GET /verify/sample.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['claim', 'source'], 'properties': {'claim': {'type': 'string', 'description': 'The factual claim to check.'}, 'source': {'type': 'string', 'description': 'The source text to check the claim against.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['verdict', 'probability', 'probabilities'], 'properties': {'verdict': {'enum': ['supported', 'contradicted', 'not_enough_info'], 'type': 'string'}, 'confidence': {'type': 'number'}, 'probability': {'type': 'number', 'description': 'Probability of the returned verdict.'}, 'x402_receipt': {'type': 'object', 'description': 'Billing and provenance receipt for this call.'}, 'probabilities': {'type': 'object'}}}
wallet_balance
Wallet Balance
Read native coin and USDC balances for any EVM wallet on Base, Ethereum, Polygon, Arbitrum or Optimism, with atomic amounts and current block. No RPC key or account. Try GET /wallet-balance/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'EVM wallet address (0x followed by 40 hexadecimal characters).'}, 'network': {'type': 'string', 'default': 'base', 'description': 'EVM network to read; aliases and CAIP-2 identifiers are also accepted.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['address', 'network', 'block_number', 'native', 'usdc'], 'properties': {'usdc': {'type': 'object'}, 'native': {'type': 'object'}, 'address': {'type': 'string'}, 'network': {'type': 'object'}, 'block_number': {'type': 'integer'}, 'x402_receipt': {'type': 'object'}}}
wallet_intelligence
Wallet Intelligence
One call replaces wallet-balance and gas reads across Base, Ethereum, Polygon, Arbitrum and Optimism. Returns native and USDC balances, current blocks, fees and Base x402 payment readiness. One signature instead of ten paid requests. Try GET /wallet-intelligence/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'EVM wallet address to inspect across all selected networks.'}, 'networks': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': 'Up to five networks; defaults to all supported EVM networks.'}, 'amount_usdc': {'type': 'number', 'default': 0.001, 'description': 'Amount to compare with the Base USDC balance for x402 readiness.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['address', 'requested_networks', 'successful_networks', 'rpc_reads_replaced', 'networks', 'errors'], 'properties': {'errors': {'type': 'array', 'items': {'type': 'object'}}, 'address': {'type': 'string'}, 'networks': {'type': 'array', 'items': {'type': 'object'}}, 'x402_receipt': {'type': 'object'}, 'x402_readiness': {'type': ['object', 'null']}, 'requested_networks': {'type': 'array', 'items': {'type': 'string'}}, 'rpc_reads_replaced': {'type': 'integer'}, 'successful_networks': {'type': 'integer'}}}
weather
Weather Forecast
Current weather and a 3-day forecast for any city or lat/lon - temperature, humidity, wind, conditions. No account, no API key. Try GET /weather/sample.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Latitude. Use with lon when you already have coordinates.'}, 'lon': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Longitude. Use with lat when you already have coordinates.'}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'City name (e.g. Paris, Tokyo). Preferred when you do not have coordinates.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['location', 'current', 'daily'], 'properties': {'daily': {'type': 'array', 'items': {'type': 'object'}}, 'query': {'type': 'string'}, 'current': {'type': 'object'}, 'location': {'type': 'object'}, 'x402_receipt': {'type': 'object'}}}
x402_echo
x402 Echo Test
Cheapest possible Base-mainnet x402 conformance call: settle $0.001 of USDC and receive payer identity, request echo and receipt. Built for agents testing wallets, Payment-Signature, facilitators and settlement. Try GET /x402-echo/sample.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'message': {'type': 'string', 'default': 'hello agent', 'description': 'Optional test message to echo after successful settlement.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['ok', 'purpose', 'network', 'price_usdc', 'price_atomic_usdc', 'request'], 'properties': {'ok': {'type': 'boolean'}, 'payer': {'type': ['string', 'null']}, 'network': {'type': 'string'}, 'purpose': {'type': 'string'}, 'request': {'type': 'object'}, 'price_usdc': {'type': 'number'}, 'x402_receipt': {'type': 'object'}, 'price_atomic_usdc': {'type': 'string'}}}
Geändert
ask_model
1. October 2026 02:51
Hinzugefügt
research
1. October 2026 02:51
Hinzugefügt
llm_llama
1. October 2026 02:51
Hinzugefügt
llm_gpt_mini
1. October 2026 02:51
Hinzugefügt
llm_claude_sonnet
1. October 2026 02:51
Hinzugefügt
pii_check
1. October 2026 02:51
Hinzugefügt
language
1. October 2026 02:51
Hinzugefügt
toxicity
1. October 2026 02:51
Hinzugefügt
spam_check
1. October 2026 02:51
Hinzugefügt
intent
1. October 2026 02:51
Hinzugefügt
classify
1. October 2026 02:51
Hinzugefügt
sentiment
1. October 2026 02:51
Geändert
search
1. October 2026 02:51
Hinzugefügt
ask_model
29. September 2026 03:00
Hinzugefügt
rank
29. September 2026 03:00
Hinzugefügt
verify
29. September 2026 03:00
Hinzugefügt
guard
29. September 2026 03:00
Hinzugefügt
decide
29. September 2026 03:00
Geändert
agent_health
29. September 2026 03:00
Geändert
x402_echo
29. September 2026 03:00
Geändert
wallet_intelligence
29. September 2026 03:00
Geändert
gas_price
29. September 2026 03:00
Hinzugefügt
token_risk
29. September 2026 03:00
Geändert
wallet_balance
29. September 2026 03:00
Geändert
probe
29. September 2026 03:00
Geändert
can_pay
29. September 2026 03:00
Geändert
news
29. September 2026 03:00
Geändert
crypto
29. September 2026 03:00
Geändert
weather
29. September 2026 03:00
Geändert
fact_check
29. September 2026 03:00