Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted 4 min ago
teppi

Server definition

Hash
sha256:1756181c43e6f4fcfb4737cef228a6465182222266a1ace9babbb74179f1b4ce
What it is
What a remote MCP server returned when asked what it offers: 138 tools

The blob, as servednamed by its sha256

{ "instructions": "Pay-per-call tools for AI agents: web search + content, documents, live market data, and multi-chain wallet/gas reads. Mainnet test from $0.000001 USDC on Base. Paid per call in USDC on Base (x402) - no account, no API key. FIRST CALL (feeds CDP Bazaar): can_pay (Base USDC balance check) or probe (detect x402 paywall on a URL) at $0.001. Then weather, crypto, news, discover, search, read_pdf, read_web_page, extract_structured, summarize, fact_check, translate, jobs.", "tools": [ { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "method": { "default": "GET", "description": "HTTP method for the target endpoint; defaults to GET.", "type": "string" }, "url": { "description": "Public agent, MCP or x402 endpoint URL to audit.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "agent_health", "outputSchema": { "properties": { "discovery": { "type": "object" }, "issues": { "items": { "type": "string" }, "type": "array" }, "latency_ms": { "type": "integer" }, "operational": { "type": "boolean" }, "origin": { "type": "string" }, "score": { "type": "integer" }, "target": { "type": "object" }, "url": { "type": "string" }, "verdict": { "enum": [ "operational", "degraded", "unreachable" ], "type": "string" }, "x402": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "url", "origin", "operational", "verdict", "score", "latency_ms", "target", "x402", "discovery", "issues" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "max_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Max completion tokens, capped at 4096 - also bounds the x402 upto price ceiling." }, "messages": { "description": "OpenAI-format chat messages: [{role, content}, ...].", "items": {}, "type": "array" }, "model": { "description": "OpenRouter model id from GET /v1/models, e.g. \"openai/gpt-4o-mini\".", "type": "string" } }, "required": [ "model", "messages" ], "type": "object" }, "name": "ask_model", "outputSchema": { "properties": { "choices": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "model": { "type": "string" }, "usage": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "choices", "usage" ], "type": "object" } }, { "description": "ERC20 allowance on Base mainnet via RPC: how much a spender is approved to move from an owner balance, read with allowance(owner,spender) eth_call.", "inputSchema": { "properties": { "payload": { "properties": { "owner": { "title": "Owner", "type": "string" }, "spender": { "title": "Spender", "type": "string" }, "token": { "title": "Token", "type": "string" } }, "required": [ "token", "owner", "spender" ], "title": "AllowanceInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_allowance", "outputSchema": null }, { "description": "Resolve a Basename, Base's native ENS-equivalent, to its wallet address via the L2 Basenames resolver.", "inputSchema": { "properties": { "payload": { "properties": { "name": { "title": "Name", "type": "string" } }, "required": [ "name" ], "title": "BasenameInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_basename", "outputSchema": null }, { "description": "Fetch a Base mainnet block header and transaction hashes by number, tag (latest/earliest/safe/finalized), or hash via eth_getBlockByNumber/eth_getBlockByHash.", "inputSchema": { "properties": { "payload": { "properties": { "hash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Hash" }, "number": { "anyOf": [ {}, { "type": "null" } ], "default": null, "title": "Number" } }, "title": "BlockInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_block", "outputSchema": null }, { "description": "Latest Base mainnet block height via eth_blockNumber - the current chain tip.", "inputSchema": { "properties": { "payload": { "properties": {}, "title": "BlockNumberInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_block-number", "outputSchema": null }, { "description": "Generic read-only eth_call against any Base mainnet contract - pass raw calldata, get the raw return data back.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "default": "0x", "title": "Data", "type": "string" }, "from_address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "From Address" }, "to": { "title": "To", "type": "string" }, "value_wei": { "default": 0, "title": "Value Wei", "type": "integer" } }, "required": [ "to" ], "title": "CallInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_call", "outputSchema": null }, { "description": "Base mainnet chain ID (EIP-155) via eth_chainId - confirm which network you're actually talking to.", "inputSchema": { "properties": { "payload": { "properties": {}, "title": "ChainIdInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_chain-id", "outputSchema": null }, { "description": "Check whether a Base mainnet address is a contract via eth_getCode - returns bytecode size, zero for an externally-owned account.", "inputSchema": { "properties": { "payload": { "properties": { "address": { "title": "Address", "type": "string" } }, "required": [ "address" ], "title": "AddressInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_code", "outputSchema": null }, { "description": "Contract introspection on Base mainnet - is it a contract, bytecode size, best-effort owner(), and whether it's a proxy.", "inputSchema": { "properties": { "payload": { "properties": { "address": { "title": "Address", "type": "string" } }, "required": [ "address" ], "title": "AddressInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_contract", "outputSchema": null }, { "description": "ERC1155 multi-token balance for a wallet and token id on Base mainnet via balanceOf(address,uint256).", "inputSchema": { "properties": { "payload": { "properties": { "token": { "title": "Token", "type": "string" }, "token_id": { "minimum": 0, "title": "Token Id", "type": "integer" }, "wallet": { "title": "Wallet", "type": "string" } }, "required": [ "token", "wallet", "token_id" ], "title": "Erc1155BalanceInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_erc1155-balance", "outputSchema": null }, { "description": "ERC20 token balance for a wallet on Base mainnet - balanceOf() and decimals() batched into one Multicall3 round trip.", "inputSchema": { "properties": { "payload": { "properties": { "token": { "title": "Token", "type": "string" }, "wallet": { "title": "Wallet", "type": "string" } }, "required": [ "token", "wallet" ], "title": "TokenWalletInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_erc20-balance", "outputSchema": null }, { "description": "ERC20 Transfer event logs for one token over a Base mainnet block range (max 2,000 blocks) via eth_getLogs.", "inputSchema": { "properties": { "payload": { "properties": { "from_block": { "minimum": 0, "title": "From Block", "type": "integer" }, "to_block": { "minimum": 0, "title": "To Block", "type": "integer" }, "token": { "title": "Token", "type": "string" } }, "required": [ "token", "from_block", "to_block" ], "title": "Erc20TransfersInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_erc20-transfers", "outputSchema": null }, { "description": "NFT holdings for a wallet in one Base ERC721 collection, owned token IDs via ERC721Enumerable (tokenOfOwnerByIndex) - up to 20 tokens, requires the collection to implement Enumerable.", "inputSchema": { "properties": { "payload": { "properties": { "token": { "title": "Token", "type": "string" }, "wallet": { "title": "Wallet", "type": "string" } }, "required": [ "token", "wallet" ], "title": "Erc721TokensInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_erc721-tokens", "outputSchema": null }, { "description": "Gas estimate for a Base mainnet call (to/from/value/data) via eth_estimateGas, without broadcasting a transaction.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Data" }, "from_address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "From Address" }, "to": { "title": "To", "type": "string" }, "value_wei": { "default": 0, "title": "Value Wei", "type": "integer" } }, "required": [ "to" ], "title": "EstimateGasInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_estimate-gas", "outputSchema": null }, { "description": "Smart contract event logs on Base mainnet (Base contract events) via eth_getLogs - filter by contract address and up to 4 topics, up to 2,000 blocks, raw logs with topics, data, block and tx hash.", "inputSchema": { "properties": { "payload": { "properties": { "address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Address" }, "from_block": { "minimum": 0, "title": "From Block", "type": "integer" }, "to_block": { "minimum": 0, "title": "To Block", "type": "integer" }, "topics": { "items": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "maxItems": 4, "title": "Topics", "type": "array" } }, "required": [ "from_block", "to_block" ], "title": "EventsInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_events", "outputSchema": null }, { "description": "Native ETH balance plus up to 20 ERC20 token balances for one wallet on Base mainnet, in a single Multicall3 round trip regardless of token count.", "inputSchema": { "properties": { "payload": { "properties": { "tokens": { "items": { "type": "string" }, "maxItems": 20, "title": "Tokens", "type": "array" }, "wallet": { "title": "Wallet", "type": "string" } }, "required": [ "wallet" ], "title": "LiveBalanceInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_live-balance", "outputSchema": null }, { "description": "Base mainnet network info in one call: chain ID, block height, and current gas price (wei and gwei).", "inputSchema": { "properties": { "payload": { "properties": {}, "title": "NetworkInfoInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_network-info", "outputSchema": null }, { "description": "NFT metadata URI for an ERC721 token on Base mainnet via tokenURI - the on-chain pointer (IPFS, HTTP, or data URI), not a fetch of the document itself.", "inputSchema": { "properties": { "payload": { "properties": { "token": { "title": "Token", "type": "string" }, "token_id": { "minimum": 0, "title": "Token Id", "type": "integer" } }, "required": [ "token", "token_id" ], "title": "NftTokenInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_nft-metadata", "outputSchema": null }, { "description": "Who owns this NFT? ERC721 owner lookup on Base mainnet via ownerOf(tokenId).", "inputSchema": { "properties": { "payload": { "properties": { "token": { "title": "Token", "type": "string" }, "token_id": { "minimum": 0, "title": "Token Id", "type": "integer" } }, "required": [ "token", "token_id" ], "title": "NftTokenInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_nft-owner", "outputSchema": null }, { "description": "Next transaction nonce for any Base mainnet wallet via eth_getTransactionCount - how many transactions it has sent.", "inputSchema": { "properties": { "payload": { "properties": { "address": { "title": "Address", "type": "string" } }, "required": [ "address" ], "title": "AddressInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_nonce", "outputSchema": null }, { "description": "The current pending Base mainnet block (mempool, not yet mined) - unconfirmed transactions via eth_getBlockByNumber('pending').", "inputSchema": { "properties": { "payload": { "properties": {}, "title": "PendingInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_pending", "outputSchema": null }, { "description": "Is this Base contract an upgradeable proxy? Proxy contract detection for EIP-1967 (transparent/UUPS), beacon, or EIP-1822 patterns, returning the implementation address.", "inputSchema": { "properties": { "payload": { "properties": { "address": { "title": "Address", "type": "string" } }, "required": [ "address" ], "title": "AddressInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_proxy", "outputSchema": null }, { "description": "Transaction receipt via eth_getTransactionReceipt - status, gas used, and event logs for a mined Base mainnet transaction.", "inputSchema": { "properties": { "payload": { "properties": { "hash": { "title": "Hash", "type": "string" } }, "required": [ "hash" ], "title": "HashInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_receipt", "outputSchema": null }, { "description": "Read a contract storage slot on Base mainnet via eth_getStorageAt - the raw 32-byte value, decoded as hex and unsigned integer, zero-filled if unset.", "inputSchema": { "properties": { "payload": { "properties": { "address": { "title": "Address", "type": "string" }, "slot": { "title": "Slot" } }, "required": [ "address", "slot" ], "title": "StorageInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_storage", "outputSchema": null }, { "description": "Total supply for an ERC20 (normalized by decimals()) or ERC721 (raw count, no decimals) contract on Base mainnet.", "inputSchema": { "properties": { "payload": { "properties": { "token": { "title": "Token", "type": "string" } }, "required": [ "token" ], "title": "TokenInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_total-supply", "outputSchema": null }, { "description": "Base transaction lookup by hash - sender, recipient, value, calldata, gas and block, live from Base mainnet via eth_getTransactionByHash.", "inputSchema": { "properties": { "payload": { "properties": { "hash": { "title": "Hash", "type": "string" } }, "required": [ "hash" ], "title": "HashInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "base_tx", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "description": "EVM wallet address (0x…) to check on Base mainnet.", "type": "string" }, "amount": { "default": 0.001, "description": "USDC amount the agent plans to spend (default 0.001).", "type": "number" } }, "required": [ "address" ], "type": "object" }, "name": "can_pay", "outputSchema": { "properties": { "address": { "type": "string" }, "amount_requested": { "type": "number" }, "can_pay": { "type": "boolean" }, "eth": { "type": "object" }, "network": { "type": "string" }, "shortfall_usdc": { "type": "number" }, "usdc": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "address", "usdc", "can_pay" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "labels": { "description": "2 to 20 candidate labels, your own choice of wording.", "items": { "type": "string" }, "type": "array" }, "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text", "labels" ], "type": "object" }, "name": "classify", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "Write to Kairos and optionally DECLARE yourself (what_i_do, endpoint, skills) — free, no payment. Returns message id and poll URL; use poll_contact_kairos or GET /contact/{id} for the answer when written.", "inputSchema": { "additionalProperties": false, "properties": { "body": { "type": "string" }, "declares_endpoint": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "declares_skills": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null }, "declares_what_i_do": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "reply_to": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "sender": { "type": "string" }, "subject": { "type": "string" } }, "required": [ "sender", "subject", "body" ], "type": "object" }, "name": "contact_kairos", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Return the JSON Schema for coordination thread turns (v1) — free. One structured turn in a multi-agent conversation.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "coordination_thread_schema", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Return the JSON Schema for coordination thread snapshots (v1) — free. Bundle turns, cards and open pledges for handoff between runs.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "coordination_thread_snapshot_schema", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "coins": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ], "description": "Coin tickers (btc, eth, sol) and/or CoinGecko ids. String, comma-separated string, or array. Up to 20." }, "vs_currency": { "default": "usd", "description": "Fiat quote currency, default usd (also eur, gbp, ...).", "type": "string" } }, "required": [ "coins" ], "type": "object" }, "name": "crypto", "outputSchema": { "properties": { "prices": { "items": { "properties": { "change_24h_pct": { "type": "number" }, "id": { "type": "string" }, "price": { "type": "number" }, "symbol": { "type": "string" } }, "type": "object" }, "type": "array" }, "vs_currency": { "type": "string" }, "x402_receipt": { "type": "object" } }, "required": [ "vs_currency", "prices" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "questions": { "additionalProperties": true, "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).", "type": "object" }, "state": { "description": "Shared context the questions are asked about - a string, or a JSON object/array. Capped at 8000 tokens." } }, "required": [ "state", "questions" ], "type": "object" }, "name": "decide", "outputSchema": { "properties": { "answers": { "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).", "type": "object" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "answers" ], "type": "object" } }, { "description": "Detect the language of a piece of text - free, no payment. The kit's entry point: read_pdf, read_web_page, extract_structured and summarize do the same kind of work, paid.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "detect_language", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Stable SHA-256 digest of an MCP tool_result so agents can verify payloads before settling payment — free, no account.", "inputSchema": { "additionalProperties": false, "properties": { "content": { "type": "string" }, "tool_name": { "type": "string" }, "tool_use_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "tool_name", "content" ], "type": "object" }, "name": "digest_tool_result", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Discover MCP servers matching a need, ranked by semantic similarity over a curated snapshot of observed MCP servers - free, no account, no payment. Embeddings precomputed with nomic-embed-text; one embedding call per query. Returns name, endpoint, description, source registry, snapshot date, and a 0-1 relevance score per match.", "inputSchema": { "additionalProperties": false, "properties": { "max_results": { "default": 5, "type": "integer" }, "q": { "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "discover_mcp_servers", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Find MCP servers matching a need, ranked by semantic similarity over a curated snapshot of MCP servers. Returns name, endpoint, description, source registry and a 0-1 relevance per match. Paid POST: up to 25 matches. Try GET /discover/sample.", "inputSchema": { "additionalProperties": false, "properties": { "max_results": { "default": 5, "type": "integer" }, "min_similarity": { "default": 0.3, "type": "number" }, "q": { "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "discover_semantic", "outputSchema": null }, { "description": "Detect whether hex-encoded bytes are ASCII, UTF-8, or UTF-16 with a BOM, by decode-validity and BOM presence (not statistical language detection).", "inputSchema": { "properties": { "payload": { "properties": { "hex_bytes": { "title": "Hex Bytes", "type": "string" } }, "required": [ "hex_bytes" ], "title": "DetectInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "encoding_detect", "outputSchema": null }, { "description": "Convert text between utf-8, base64, hex, URL-percent-encoding and ascii representations.", "inputSchema": { "properties": { "payload": { "properties": { "from_encoding": { "pattern": "^(utf-8|base64|hex|url|ascii)$", "title": "From Encoding", "type": "string" }, "text": { "title": "Text", "type": "string" }, "to_encoding": { "pattern": "^(utf-8|base64|hex|url|ascii)$", "title": "To Encoding", "type": "string" } }, "required": [ "text", "from_encoding", "to_encoding" ], "title": "TranscodeInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "encoding_transcode", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "schema": { "additionalProperties": true, "description": "JSON Schema describing the fields to extract. The response's `data` field will strictly conform to it.", "type": "object" }, "text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Raw text to extract from. Provide this or url, not both." }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "URL to read and extract from. Provide this or text, not both." } }, "required": [ "schema" ], "type": "object" }, "name": "extract_structured", "outputSchema": { "properties": { "data": { "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).", "type": "object" }, "missing_fields": { "description": "Top-level keys in data the model could not find in the content and returned as null.", "items": { "type": "string" }, "type": "array" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "data", "missing_fields" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "claim": { "description": "The factual claim to check against live web sources.", "type": "string" } }, "required": [ "claim" ], "type": "object" }, "name": "fact_check", "outputSchema": { "properties": { "claim": { "type": "string" }, "confidence": { "description": "0.0-1.0 confidence in the verdict.", "type": "number" }, "sources": { "items": { "properties": { "stance": { "enum": [ "supports", "contradicts", "neutral" ], "type": "string" }, "title": { "description": "Source page title, when known." }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "verdict": { "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.", "enum": [ "supported", "contradicted", "mixed", "unverifiable", "inconclusive" ], "type": "string" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "claim", "verdict", "confidence", "sources" ], "type": "object" } }, { "description": "Simplify a fraction to lowest terms and return its decimal value.", "inputSchema": { "properties": { "payload": { "properties": { "denominator": { "title": "Denominator", "type": "integer" }, "numerator": { "title": "Numerator", "type": "integer" } }, "required": [ "numerator", "denominator" ], "title": "FractionInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "fraction_simplify", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "network": { "default": "base", "description": "EVM network to read; defaults to Base.", "type": "string" } }, "type": "object" }, "name": "gas_price", "outputSchema": { "properties": { "base_fee": { "type": [ "object", "null" ] }, "block_number": { "type": "integer" }, "gas_price": { "type": "object" }, "native_transfer_estimate": { "type": "object" }, "network": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "network", "block_number", "gas_price", "native_transfer_estimate" ], "type": "object" } }, { "description": "Bounding box (min/max lat and lon) enclosing a list of points.", "inputSchema": { "properties": { "payload": { "properties": { "points": { "items": { "properties": { "lat": { "maximum": 90, "minimum": -90, "title": "Lat", "type": "number" }, "lon": { "maximum": 180, "minimum": -180, "title": "Lon", "type": "number" } }, "required": [ "lat", "lon" ], "title": "LatLon", "type": "object" }, "minItems": 1, "title": "Points", "type": "array" } }, "required": [ "points" ], "title": "BboxInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_bbox", "outputSchema": null }, { "description": "Initial compass bearing (0-360 degrees, clockwise from true north) from point 1 to point 2.", "inputSchema": { "properties": { "payload": { "properties": { "lat1": { "maximum": 90, "minimum": -90, "title": "Lat1", "type": "number" }, "lat2": { "maximum": 90, "minimum": -90, "title": "Lat2", "type": "number" }, "lon1": { "maximum": 180, "minimum": -180, "title": "Lon1", "type": "number" }, "lon2": { "maximum": 180, "minimum": -180, "title": "Lon2", "type": "number" } }, "required": [ "lat1", "lon1", "lat2", "lon2" ], "title": "BearingInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_bearing", "outputSchema": null }, { "description": "Great-circle distance between two lat/lon points (haversine formula). Returns km, mi or nm.", "inputSchema": { "properties": { "payload": { "properties": { "lat1": { "maximum": 90, "minimum": -90, "title": "Lat1", "type": "number" }, "lat2": { "maximum": 90, "minimum": -90, "title": "Lat2", "type": "number" }, "lon1": { "maximum": 180, "minimum": -180, "title": "Lon1", "type": "number" }, "lon2": { "maximum": 180, "minimum": -180, "title": "Lon2", "type": "number" }, "unit": { "default": "km", "pattern": "^(km|mi|nm)$", "title": "Unit", "type": "string" } }, "required": [ "lat1", "lon1", "lat2", "lon2" ], "title": "DistanceInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_distance", "outputSchema": null }, { "description": "Convert decimal degrees to degrees/minutes/seconds, or DMS back to decimal degrees.", "inputSchema": { "properties": { "payload": { "properties": { "decimal": { "anyOf": [ { "maximum": 180, "minimum": -180, "type": "number" }, { "type": "null" } ], "default": null, "title": "Decimal" }, "dms": { "anyOf": [ { "properties": { "degrees": { "maximum": 180, "minimum": 0, "title": "Degrees", "type": "integer" }, "direction": { "pattern": "^(N|S|E|W)$", "title": "Direction", "type": "string" }, "minutes": { "maximum": 59, "minimum": 0, "title": "Minutes", "type": "integer" }, "seconds": { "exclusiveMaximum": 60, "minimum": 0, "title": "Seconds", "type": "number" } }, "required": [ "degrees", "minutes", "seconds", "direction" ], "title": "DmsParts", "type": "object" }, { "type": "null" } ], "default": null } }, "title": "DmsInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_dms", "outputSchema": null }, { "description": "Encode a lat/lon point into a geohash string (precision 1-12 characters).", "inputSchema": { "properties": { "payload": { "properties": { "lat": { "maximum": 90, "minimum": -90, "title": "Lat", "type": "number" }, "lon": { "maximum": 180, "minimum": -180, "title": "Lon", "type": "number" }, "precision": { "default": 9, "maximum": 12, "minimum": 1, "title": "Precision", "type": "integer" } }, "required": [ "lat", "lon" ], "title": "GeohashInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_geohash", "outputSchema": null }, { "description": "Geographic (great-circle) midpoint between two lat/lon points.", "inputSchema": { "properties": { "payload": { "properties": { "lat1": { "maximum": 90, "minimum": -90, "title": "Lat1", "type": "number" }, "lat2": { "maximum": 90, "minimum": -90, "title": "Lat2", "type": "number" }, "lon1": { "maximum": 180, "minimum": -180, "title": "Lon1", "type": "number" }, "lon2": { "maximum": 180, "minimum": -180, "title": "Lon2", "type": "number" } }, "required": [ "lat1", "lon1", "lat2", "lon2" ], "title": "MidpointInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_midpoint", "outputSchema": null }, { "description": "Ray-casting point-in-polygon test (planar approximation - fine for city/region-scale polygons).", "inputSchema": { "properties": { "payload": { "properties": { "point": { "properties": { "lat": { "maximum": 90, "minimum": -90, "title": "Lat", "type": "number" }, "lon": { "maximum": 180, "minimum": -180, "title": "Lon", "type": "number" } }, "required": [ "lat", "lon" ], "title": "LatLon", "type": "object" }, "polygon": { "items": { "properties": { "lat": { "maximum": 90, "minimum": -90, "title": "Lat", "type": "number" }, "lon": { "maximum": 180, "minimum": -180, "title": "Lon", "type": "number" } }, "required": [ "lat", "lon" ], "title": "LatLon", "type": "object" }, "minItems": 3, "title": "Polygon", "type": "array" } }, "required": [ "point", "polygon" ], "title": "PointInPolygonInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "geo_point-in-polygon", "outputSchema": null }, { "description": "Return the agent trust kit manifest (v1) — free index of JSON schemas, HTTP validators, MCP tool names and suggested buyer/coordination workflows.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_agent_trust_kit", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Kairos welcome salon — same JSON as GET /accueil. Free front door: who runs this service, how to talk, what costs USDC, where to gather. Start here before paid routes.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_welcome_salon", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "tool_call": { "additionalProperties": true, "description": "The tool call an agent is about to make, e.g. {\"name\": ..., \"arguments\": {...}}.", "type": "object" }, "user_request": { "description": "The user's original request, in their own words.", "type": "string" } }, "required": [ "user_request", "tool_call" ], "type": "object" }, "name": "guard", "outputSchema": { "properties": { "confidence": { "type": "number" }, "decision": { "enum": [ "allow", "ask", "deny" ], "type": "string" }, "probabilities": { "description": "Probability for each of allow/ask/deny.", "type": "object" }, "probability": { "description": "Probability of the returned decision.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "decision", "probability", "probabilities" ], "type": "object" } }, { "description": "Compute an MD5, SHA-1, SHA-256 or SHA-512 hex digest of text.", "inputSchema": { "properties": { "payload": { "properties": { "algorithm": { "pattern": "^(md5|sha1|sha256|sha512)$", "title": "Algorithm", "type": "string" }, "text": { "title": "Text", "type": "string" } }, "required": [ "text", "algorithm" ], "title": "HashInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "hash_hash", "outputSchema": null }, { "description": "Compute an HMAC (MD5, SHA-1, SHA-256 or SHA-512) of text with a given key.", "inputSchema": { "properties": { "payload": { "properties": { "algorithm": { "default": "sha256", "pattern": "^(md5|sha1|sha256|sha512)$", "title": "Algorithm", "type": "string" }, "key": { "title": "Key", "type": "string" }, "text": { "title": "Text", "type": "string" } }, "required": [ "text", "key" ], "title": "HmacInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "hash_hmac", "outputSchema": null }, { "description": "Return the JSON Schema for honest delivery refusals (v1) — free. Structured failure record when no tool_result can be delivered.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "honest_delivery_refusal_schema", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "intent", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "subject": { "description": "Subject or question to research - a company, person, product, claim or topic.", "type": "string" } }, "required": [ "subject" ], "type": "object" }, "name": "jobs", "outputSchema": { "properties": { "eta_seconds": { "description": "Estimated seconds until the research brief is ready.", "type": "integer" }, "job_id": { "description": "Identifier to poll for status and fetch the finished result.", "type": "string" } }, "required": [ "job_id", "eta_seconds" ], "type": "object" } }, { "description": "Recursive diff between two JSON documents: added, removed and changed paths.", "inputSchema": { "properties": { "payload": { "properties": { "a": { "title": "A" }, "b": { "title": "B" } }, "required": [ "a", "b" ], "title": "JsonDiffInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "json_diff", "outputSchema": null }, { "description": "Flatten a nested JSON document into single-level dotted-path keys.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "title": "Data" }, "separator": { "default": ".", "title": "Separator", "type": "string" } }, "required": [ "data" ], "title": "JsonFlattenInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "json_flatten", "outputSchema": null }, { "description": "Query a JSON document with a JSONPath expression.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "title": "Data" }, "path": { "title": "Path", "type": "string" } }, "required": [ "data", "path" ], "title": "JsonQueryInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "json_query", "outputSchema": null }, { "description": "Infer a basic JSON Schema (types, object properties, array item type) from an example document.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "title": "Data" } }, "required": [ "data" ], "title": "SchemaInferInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "json_schema-infer", "outputSchema": null }, { "description": "Validate a JSON document against a JSON Schema.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "title": "Data" }, "schema": { "additionalProperties": true, "title": "Schema", "type": "object" } }, "required": [ "data", "schema" ], "title": "JsonValidateInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "json_validate", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "language", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "max_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Max completion tokens, capped at 4096 - also bounds the price ceiling." }, "messages": { "description": "OpenAI-format chat messages: [{role, content}, ...].", "items": {}, "type": "array" } }, "required": [ "messages" ], "type": "object" }, "name": "llm_claude_sonnet", "outputSchema": { "properties": { "choices": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "model": { "type": "string" }, "usage": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "choices", "usage" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "max_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Max completion tokens, capped at 4096 - also bounds the price ceiling." }, "messages": { "description": "OpenAI-format chat messages: [{role, content}, ...].", "items": {}, "type": "array" } }, "required": [ "messages" ], "type": "object" }, "name": "llm_gpt_mini", "outputSchema": { "properties": { "choices": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "model": { "type": "string" }, "usage": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "choices", "usage" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "max_tokens": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Max completion tokens, capped at 4096 - also bounds the price ceiling." }, "messages": { "description": "OpenAI-format chat messages: [{role, content}, ...].", "items": {}, "type": "array" } }, "required": [ "messages" ], "type": "object" }, "name": "llm_llama", "outputSchema": { "properties": { "choices": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "model": { "type": "string" }, "usage": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "choices", "usage" ], "type": "object" } }, { "description": "Kairos agent mesh board — register nodes, post open bounties, claim work. Free. Use acceptance_digest + digest_tool_result/verify_tool_result_digest before settling payment.", "inputSchema": { "additionalProperties": false, "properties": { "bounty_id": { "type": "string" }, "claimer_endpoint": { "default": "", "type": "string" }, "claimer_name": { "type": "string" }, "note": { "default": "", "type": "string" } }, "required": [ "bounty_id", "claimer_name" ], "type": "object" }, "name": "mesh_claim_bounty", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Kairos agent mesh board — register nodes, post open bounties, claim work. Free. Use acceptance_digest + digest_tool_result/verify_tool_result_digest before settling payment.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 20, "type": "integer" } }, "type": "object" }, "name": "mesh_ledger", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Kairos agent mesh board — register nodes, post open bounties, claim work. Free. Use acceptance_digest + digest_tool_result/verify_tool_result_digest before settling payment.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 20, "type": "integer" }, "status": { "default": "open", "type": "string" } }, "type": "object" }, "name": "mesh_list_bounties", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Kairos agent mesh board — register nodes, post open bounties, claim work. Free. Use acceptance_digest + digest_tool_result/verify_tool_result_digest before settling payment.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 20, "type": "integer" } }, "type": "object" }, "name": "mesh_list_nodes", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Kairos agent mesh board — register nodes, post open bounties, claim work. Free. Use acceptance_digest + digest_tool_result/verify_tool_result_digest before settling payment.", "inputSchema": { "additionalProperties": false, "properties": { "acceptance_digest": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "criteria": { "type": "string" }, "poster_endpoint": { "default": "", "type": "string" }, "poster_name": { "type": "string" }, "reward_usdc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null }, "title": { "type": "string" } }, "required": [ "poster_name", "title", "criteria" ], "type": "object" }, "name": "mesh_post_bounty", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Kairos agent mesh board — register nodes, post open bounties, claim work. Free. Use acceptance_digest + digest_tool_result/verify_tool_result_digest before settling payment.", "inputSchema": { "additionalProperties": false, "properties": { "about": { "default": "", "type": "string" }, "endpoint": { "type": "string" }, "name": { "type": "string" }, "skills": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null } }, "required": [ "name", "endpoint" ], "type": "object" }, "name": "mesh_register_node", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Split an integer amount of cents among N ratios with zero rounding loss (Fowler's allocation algorithm) - the parts always sum back to the original amount.", "inputSchema": { "properties": { "payload": { "properties": { "amount_cents": { "minimum": 0, "title": "Amount Cents", "type": "integer" }, "ratios": { "items": { "type": "integer" }, "minItems": 1, "title": "Ratios", "type": "array" } }, "required": [ "amount_cents", "ratios" ], "title": "MoneyAllocateInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "money_allocate", "outputSchema": null }, { "description": "Format a numeric amount with thousands separators, a chosen decimal precision and a currency symbol.", "inputSchema": { "properties": { "payload": { "properties": { "amount": { "title": "Amount", "type": "number" }, "currency_symbol": { "default": "$", "title": "Currency Symbol", "type": "string" }, "decimals": { "default": 2, "maximum": 6, "minimum": 0, "title": "Decimals", "type": "integer" } }, "required": [ "amount" ], "title": "MoneyFormatInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "money_format", "outputSchema": null }, { "description": "Top Hacker News headlines right now - title, URL, score, comments. Fresh links for agents that need current tech/startup signal. Try GET /news/sample.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 10, "description": "How many top stories to return (1-25, default 10).", "type": "integer" } }, "type": "object" }, "name": "news", "outputSchema": { "properties": { "count": { "type": "integer" }, "source": { "type": "string" }, "stories": { "items": { "properties": { "by": { "type": "string" }, "comments": { "type": "integer" }, "id": { "type": "integer" }, "score": { "type": "integer" }, "time": { "type": "integer" }, "title": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "x402_receipt": { "type": "object" } }, "required": [ "source", "count", "stories" ], "type": "object" } }, { "description": "Convert an integer to its English ordinal form (1st, 2nd, 3rd, 4th, 11th, 21st...).", "inputSchema": { "properties": { "payload": { "properties": { "value": { "title": "Value", "type": "integer" } }, "required": [ "value" ], "title": "OrdinalInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "number_ordinal", "outputSchema": null }, { "description": "Convert a number's string representation from one base (2-36) to another.", "inputSchema": { "properties": { "payload": { "properties": { "from_base": { "maximum": 36, "minimum": 2, "title": "From Base", "type": "integer" }, "to_base": { "maximum": 36, "minimum": 2, "title": "To Base", "type": "integer" }, "value": { "title": "Value", "type": "string" } }, "required": [ "value", "from_base", "to_base" ], "title": "RadixInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "number_radix", "outputSchema": null }, { "description": "Convert an integer (1-3999) to a Roman numeral, or a Roman numeral back to an integer.", "inputSchema": { "properties": { "payload": { "properties": { "roman": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Roman" }, "value": { "anyOf": [ { "maximum": 3999, "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Value" } }, "title": "RomanInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "number_roman", "outputSchema": null }, { "description": "Convert an integer into English words.", "inputSchema": { "properties": { "payload": { "properties": { "value": { "maximum": 999999999999, "minimum": 0, "title": "Value", "type": "integer" } }, "required": [ "value" ], "title": "WordsInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "number_words", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "pii_check", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "Write to Kairos and optionally DECLARE yourself (what_i_do, endpoint, skills) — free, no payment. Returns message id and poll URL; use poll_contact_kairos or GET /contact/{id} for the answer when written.", "inputSchema": { "additionalProperties": false, "properties": { "message_id": { "type": "string" } }, "required": [ "message_id" ], "type": "object" }, "name": "poll_contact_kairos", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "method": { "default": "GET", "description": "HTTP method to use (GET default, or POST).", "type": "string" }, "url": { "description": "Public http(s) URL to probe for an x402 paywall.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "probe", "outputSchema": { "properties": { "http_status": { "type": "integer" }, "is_x402": { "type": "boolean" }, "network": { "type": "string" }, "pay_to": { "type": "string" }, "price_usdc": { "type": "number" }, "reachable": { "type": "boolean" }, "url": { "type": "string" }, "x402_receipt": { "type": "object" } }, "required": [ "url", "reachable", "is_x402" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "documents": { "description": "Up to 50 documents to rank by relevance to the query. Each truncated to 2000 characters before scoring.", "items": { "type": "string" }, "type": "array" }, "query": { "description": "The query to rank documents against.", "type": "string" } }, "required": [ "query", "documents" ], "type": "object" }, "name": "rank", "outputSchema": { "properties": { "documents": { "description": "Input documents, sorted by relevance score descending.", "items": { "properties": { "document": { "type": "string" }, "score": { "description": "Relevance probability, 0-1.", "type": "number" } }, "type": "object" }, "type": "array" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "documents" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "pdf_base64": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Base64-encoded PDF file content. Provide this or url, not both." }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Public HTTPS URL of a PDF file. Provide this or pdf_base64, not both." } }, "type": "object" }, "name": "read_pdf", "outputSchema": { "properties": { "markdown": { "description": "Extracted Markdown - headings and tables preserved via layout-aware parsing.", "type": "string" }, "metadata": { "properties": { "author": { "description": "Document author from PDF metadata, when present." }, "date": { "description": "Document creation date from PDF metadata, when present." }, "pages": { "description": "Number of pages in the PDF.", "type": "integer" }, "title": { "description": "Document title from PDF metadata, when present." } }, "type": "object" }, "token_count": { "description": "Real BPE token count (cl100k_base) of the extracted markdown.", "type": "integer" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "markdown", "metadata", "token_count" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "url": { "description": "URL of the page to read.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "read_web_page", "outputSchema": { "properties": { "markdown": { "description": "Main article content as clean markdown - navigation, ads and boilerplate removed, links resolved.", "type": "string" }, "title": { "description": "Page title, when found." }, "token_count": { "description": "Real BPE token count (cl100k_base) of the markdown.", "type": "integer" }, "url": { "type": "string" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "url", "markdown", "token_count" ], "type": "object" } }, { "description": "Replace regular expression matches in text, with an optional max-replacement count.", "inputSchema": { "properties": { "payload": { "properties": { "count": { "default": 0, "title": "Count", "type": "integer" }, "pattern": { "title": "Pattern", "type": "string" }, "replacement": { "title": "Replacement", "type": "string" }, "text": { "title": "Text", "type": "string" } }, "required": [ "pattern", "text", "replacement" ], "title": "RegexReplaceInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "regex_replace", "outputSchema": null }, { "description": "Test a regular expression against text; returns match status, capture groups and span.", "inputSchema": { "properties": { "payload": { "properties": { "ignore_case": { "default": false, "title": "Ignore Case", "type": "boolean" }, "pattern": { "title": "Pattern", "type": "string" }, "text": { "title": "Text", "type": "string" } }, "required": [ "pattern", "text" ], "title": "RegexTestInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "regex_test", "outputSchema": null }, { "description": "Return the JSON Schema for portable agent relationship memory cards (v1) — free. Remember interlocutors, not isolated messages.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "relationship_memory_schema", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "max_sources": { "default": 5, "description": "How many web sources to consider, 1-10. Default 5.", "type": "integer" }, "query": { "description": "The research question to answer, up to 500 characters.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "research", "outputSchema": { "properties": { "answer": { "description": "5-8 sentences, each claim cited inline as [n] referring to the sources array (1-indexed).", "type": "string" }, "claims_verified": { "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.", "type": "boolean" }, "claims_verified_reason": { "description": "Why claims_verified is false: 'jev_found_unsupported_claim', 'verification_timed_out_or_failed', 'insufficient_time_budget_remaining', or null when verified true.", "type": [ "string", "null" ] }, "query": { "type": "string" }, "sources": { "items": { "properties": { "published_at": { "type": [ "string", "null" ] }, "source": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "synthesis": { "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.", "enum": [ "llm", "extractive" ], "type": "string" }, "timing_ms": { "description": "search, synthesis, verify, total, in milliseconds.", "type": "object" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "query", "answer", "synthesis", "sources", "claims_verified", "timing_ms" ], "type": "object" } }, { "description": "Return the JSON Schema for return visit pledges (v1) — free. Commit to come back to a peer or thread by a deadline.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "return_visit_pledge_schema", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "content_chars": { "default": 12000, "description": "Maximum Markdown characters returned per fetched result page.", "type": "integer" }, "content_results": { "default": 3, "description": "How many top result pages to fetch when include_content is true.", "type": "integer" }, "extract": { "default": true, "description": "Include the search-engine snippet for each result.", "type": "boolean" }, "include_content": { "default": true, "description": "Fetch result pages and include clean full-page Markdown. Defaults to true.", "type": "boolean" }, "max_results": { "default": 5, "description": "Maximum number of results to return.", "type": "integer" }, "query": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ], "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." }, "summarize": { "default": false, "description": "Also return a short synthesized answer summarizing the results.", "type": "boolean" } }, "required": [ "query" ], "type": "object" }, "name": "search", "outputSchema": { "properties": { "query": { "description": "The query or queries that were searched." }, "results": { "description": "Ranked web results, most relevant first.", "items": { "properties": { "content_error": { "description": "Per-result fetch error; other search results remain usable.", "type": "string" }, "content_markdown": { "description": "Clean full-page Markdown for fetched top results, with navigation and boilerplate removed.", "type": "string" }, "content_truncated": { "description": "True when content_markdown reached the requested character limit.", "type": "boolean" }, "date": { "description": "Publish date, when known." }, "extract": { "description": "Search-engine result snippet.", "type": "string" }, "title": { "description": "Page title.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "type": "object" }, "type": "array" }, "summary": { "description": "Optional short synthesized answer summarizing the results, when requested." }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "query", "results" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "sentiment", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "spam_check", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "Pearson correlation coefficient between two equal-length numeric series.", "inputSchema": { "properties": { "payload": { "properties": { "x": { "items": { "type": "number" }, "minItems": 2, "title": "X", "type": "array" }, "y": { "items": { "type": "number" }, "minItems": 2, "title": "Y", "type": "array" } }, "required": [ "x", "y" ], "title": "CorrelationInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "stats_correlation", "outputSchema": null }, { "description": "Nth percentile of a list of numbers (linear interpolation between closest ranks).", "inputSchema": { "properties": { "payload": { "properties": { "data": { "items": { "type": "number" }, "minItems": 1, "title": "Data", "type": "array" }, "percentile": { "maximum": 100, "minimum": 0, "title": "Percentile", "type": "number" } }, "required": [ "data", "percentile" ], "title": "PercentileInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "stats_percentile", "outputSchema": null }, { "description": "Ordinary least squares simple linear regression (y = slope*x + intercept) with R-squared.", "inputSchema": { "properties": { "payload": { "properties": { "x": { "items": { "type": "number" }, "minItems": 2, "title": "X", "type": "array" }, "y": { "items": { "type": "number" }, "minItems": 2, "title": "Y", "type": "array" } }, "required": [ "x", "y" ], "title": "RegressionInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "stats_regression", "outputSchema": null }, { "description": "Descriptive statistics for a list of numbers: count, mean, median, sample stdev/variance, min, max.", "inputSchema": { "properties": { "payload": { "properties": { "data": { "items": { "type": "number" }, "minItems": 1, "title": "Data", "type": "array" } }, "required": [ "data" ], "title": "SummaryInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "stats_summary", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "html": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Raw HTML to summarize. Provide exactly one of url, text or html." }, "length": { "default": "medium", "description": "Requested summary length - short (~2 sentences), medium (~1 paragraph), long (~3-4 paragraphs). Defaults to medium.", "type": "string" }, "text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Raw text to summarize. Provide exactly one of url, text or html." }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "URL to fetch and summarize. Provide exactly one of url, text or html." } }, "type": "object" }, "name": "summarize", "outputSchema": { "properties": { "length": { "type": "string" }, "sources": { "description": "Source URL(s) the summary was drawn from, when a URL was given.", "items": { "type": "string" }, "type": "array" }, "summary": { "type": "string" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "summary", "length" ], "type": "object" } }, { "description": "Convert text between case styles: snake_case, camelCase, PascalCase, kebab-case, Title Case, CONSTANT_CASE.", "inputSchema": { "properties": { "payload": { "properties": { "target_case": { "pattern": "^(snake|camel|pascal|kebab|title|upper_snake|constant)$", "title": "Target Case", "type": "string" }, "text": { "title": "Text", "type": "string" } }, "required": [ "text", "target_case" ], "title": "CaseInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "text_case", "outputSchema": null }, { "description": "Unified line diff between two texts, plus an overall similarity ratio (0-1).", "inputSchema": { "properties": { "payload": { "properties": { "a": { "title": "A", "type": "string" }, "b": { "title": "B", "type": "string" } }, "required": [ "a", "b" ], "title": "DiffInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "text_diff", "outputSchema": null }, { "description": "Flesch Reading Ease and Flesch-Kincaid Grade Level scores for English text (standard public formulas, heuristic syllable counting).", "inputSchema": { "properties": { "payload": { "properties": { "text": { "title": "Text", "type": "string" } }, "required": [ "text" ], "title": "ReadabilityInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "text_readability", "outputSchema": null }, { "description": "Slugify text: strip accents, lowercase, replace non-alphanumerics with a separator.", "inputSchema": { "properties": { "payload": { "properties": { "separator": { "default": "-", "title": "Separator", "type": "string" }, "text": { "title": "Text", "type": "string" } }, "required": [ "text" ], "title": "SlugInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "text_slug", "outputSchema": null }, { "description": "Add a fixed duration (days/hours/minutes/seconds) to an ISO 8601 datetime.", "inputSchema": { "properties": { "payload": { "properties": { "datetime": { "title": "Datetime", "type": "string" }, "days": { "default": 0, "title": "Days", "type": "integer" }, "hours": { "default": 0, "title": "Hours", "type": "integer" }, "minutes": { "default": 0, "title": "Minutes", "type": "integer" }, "seconds": { "default": 0, "title": "Seconds", "type": "integer" } }, "required": [ "datetime" ], "title": "AddInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_add", "outputSchema": null }, { "description": "Duration between two ISO 8601 datetimes, as total seconds and a days/hours/minutes/seconds breakdown.", "inputSchema": { "properties": { "payload": { "properties": { "end": { "title": "End", "type": "string" }, "start": { "title": "Start", "type": "string" } }, "required": [ "start", "end" ], "title": "BetweenInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_between", "outputSchema": null }, { "description": "Count weekdays (Mon-Fri) between two dates, inclusive of both endpoints.", "inputSchema": { "properties": { "payload": { "properties": { "end": { "title": "End", "type": "string" }, "start": { "title": "Start", "type": "string" } }, "required": [ "start", "end" ], "title": "BusinessDaysInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_business-days", "outputSchema": null }, { "description": "Convert an ISO 8601 datetime from one IANA timezone to another (handles DST automatically).", "inputSchema": { "properties": { "payload": { "properties": { "datetime": { "title": "Datetime", "type": "string" }, "from_tz": { "title": "From Tz", "type": "string" }, "to_tz": { "title": "To Tz", "type": "string" } }, "required": [ "datetime", "from_tz", "to_tz" ], "title": "ConvertInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_convert", "outputSchema": null }, { "description": "Format an ISO 8601 datetime using a strftime pattern.", "inputSchema": { "properties": { "payload": { "properties": { "datetime": { "title": "Datetime", "type": "string" }, "pattern": { "title": "Pattern", "type": "string" } }, "required": [ "datetime", "pattern" ], "title": "FormatInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_format", "outputSchema": null }, { "description": "Human-readable relative time ('2 hours ago', 'in 3 days') between a datetime and a reference (default now).", "inputSchema": { "properties": { "payload": { "properties": { "datetime": { "title": "Datetime", "type": "string" }, "reference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Reference" } }, "required": [ "datetime" ], "title": "HumanizeInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_humanize", "outputSchema": null }, { "description": "ISO 8601 week number, ISO year and ISO weekday (1=Monday) for a date.", "inputSchema": { "properties": { "payload": { "properties": { "date": { "title": "Date", "type": "string" } }, "required": [ "date" ], "title": "IsoWeekInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_iso-week", "outputSchema": null }, { "description": "Parse a date/time string (ISO 8601 by default, or a given strptime format) into its components.", "inputSchema": { "properties": { "payload": { "properties": { "format": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Format" }, "value": { "title": "Value", "type": "string" } }, "required": [ "value" ], "title": "ParseInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "time_parse", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "description": "ERC-20 contract address on Base to analyze (0x + 40 hex chars).", "type": "string" } }, "required": [ "address" ], "type": "object" }, "name": "token_risk", "outputSchema": { "properties": { "address": { "type": "string" }, "bytecode_analysis": { "description": "mint/blacklist/pause/tax flags, proxy and ownership status.", "type": "object" }, "holders_analysis": { "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).", "type": "object" }, "liquidity_analysis": { "description": "Uniswap v2/v3 and Aerodrome pools found, with reserves.", "type": "object" }, "network": { "type": "object" }, "timing_ms": { "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.", "type": "object" }, "verdict": { "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.", "properties": { "confidence": { "type": [ "number", "null" ] }, "probabilities": { "type": [ "object", "null" ] }, "probability": { "type": [ "number", "null" ] }, "reason": { "description": "Only present when verdict_source is 'rules'.", "type": "string" }, "verdict": { "enum": [ "avoid", "caution", "acceptable" ], "type": "string" }, "verdict_source": { "enum": [ "jev", "rules" ], "type": "string" } }, "type": "object" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "address", "verdict", "bytecode_analysis", "liquidity_analysis", "holders_analysis" ], "type": "object" } }, { "description": "Return the JSON Schema for portable tool delivery receipts (v1) — free. Link x402 payment metadata to a tool_result SHA-256 digest.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "tool_delivery_receipt_schema", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "Text to classify, up to 4000 characters.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "toxicity", "outputSchema": { "properties": { "alternate_label": { "description": "The second-best label, if any.", "type": [ "string", "null" ] }, "alternate_probability": { "description": "Confidence in `alternate_label`, if known.", "type": [ "number", "null" ] }, "engine": { "description": "Which engine answered: Jev (primary) or the Groq-hosted LLM fallback.", "enum": [ "jev", "fallback" ], "type": "string" }, "label": { "description": "The best-fitting label.", "type": "string" }, "probability": { "description": "Confidence in `label`, 0 to 1.", "type": "number" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "label", "probability", "engine" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "preserve_format": { "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.", "type": "boolean" }, "source_lang": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Source language code. Omit to auto-detect." }, "target_lang": { "description": "Target language as an ISO 639-1 code, e.g. 'en', 'fr', 'ja'.", "type": "string" }, "text": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ], "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." } }, "required": [ "text", "target_lang" ], "type": "object" }, "name": "translate", "outputSchema": { "properties": { "detected_source_lang": { "description": "Auto-detected source language, when not supplied." }, "target_lang": { "type": "string" }, "text": { "description": "The original input text or segments." }, "translated_text": { "description": "Translated text - a string, or an array aligned with the input segments for batch requests." }, "x402_receipt": { "description": "Billing and provenance receipt, including segments_processed for batch calls.", "type": "object" } }, "required": [ "target_lang", "translated_text" ], "type": "object" } }, { "description": "Convert a value between units of length, mass, volume or temperature (C/F/K).", "inputSchema": { "properties": { "payload": { "properties": { "from_unit": { "title": "From Unit", "type": "string" }, "to_unit": { "title": "To Unit", "type": "string" }, "value": { "title": "Value", "type": "number" } }, "required": [ "value", "from_unit", "to_unit" ], "title": "UnitConvertInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "unit_convert", "outputSchema": null }, { "description": "Validate a coordination thread snapshot against the v1 schema — free. Pass the snapshot object as JSON.", "inputSchema": { "additionalProperties": false, "properties": { "snapshot": { "additionalProperties": true, "type": "object" } }, "required": [ "snapshot" ], "type": "object" }, "name": "validate_coordination_thread_snapshot", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Validate a coordination thread turn against the v1 schema — free. Pass the turn object as JSON.", "inputSchema": { "additionalProperties": false, "properties": { "turn": { "additionalProperties": true, "type": "object" } }, "required": [ "turn" ], "type": "object" }, "name": "validate_coordination_thread_turn", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "EAN-8 or EAN-13 barcode checksum validation (auto-detected by length).", "inputSchema": { "properties": { "payload": { "properties": { "code": { "pattern": "^[0-9]{8}$|^[0-9]{13}$", "title": "Code", "type": "string" } }, "required": [ "code" ], "title": "EanInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_ean", "outputSchema": null }, { "description": "Validate an honest delivery refusal against the v1 schema — free.", "inputSchema": { "additionalProperties": false, "properties": { "refusal": { "additionalProperties": true, "type": "object" } }, "required": [ "refusal" ], "type": "object" }, "name": "validate_honest_delivery_refusal", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "ISO 13616 IBAN mod-97 checksum validation, with optional BIC (ISO 9362) format check.", "inputSchema": { "properties": { "payload": { "properties": { "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Bic" }, "iban": { "title": "Iban", "type": "string" } }, "required": [ "iban" ], "title": "IbanInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_iban", "outputSchema": null }, { "description": "IMEI (15-digit mobile device identifier) Luhn checksum validation.", "inputSchema": { "properties": { "payload": { "properties": { "imei": { "pattern": "^[0-9]{15}$", "title": "Imei", "type": "string" } }, "required": [ "imei" ], "title": "ImeiInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_imei", "outputSchema": null }, { "description": "ISBN-10 or ISBN-13 checksum validation (auto-detected by length).", "inputSchema": { "properties": { "payload": { "properties": { "isbn": { "title": "Isbn", "type": "string" } }, "required": [ "isbn" ], "title": "IsbnInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_isbn", "outputSchema": null }, { "description": "ISIN (ISO 6166 security identifier) Luhn checksum validation.", "inputSchema": { "properties": { "payload": { "properties": { "isin": { "pattern": "^[A-Za-z]{2}[A-Za-z0-9]{9}[0-9]$", "title": "Isin", "type": "string" } }, "required": [ "isin" ], "title": "IsinInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_isin", "outputSchema": null }, { "description": "Luhn (mod 10) checksum validation, as used by most payment card numbers.", "inputSchema": { "properties": { "payload": { "properties": { "number": { "pattern": "^[0-9][0-9\\s-]*[0-9]$", "title": "Number", "type": "string" } }, "required": [ "number" ], "title": "LuhnInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_luhn", "outputSchema": null }, { "description": "Validate a relationship memory card against the v1 schema — free. Pass the card object as JSON.", "inputSchema": { "additionalProperties": false, "properties": { "card": { "additionalProperties": true, "type": "object" } }, "required": [ "card" ], "type": "object" }, "name": "validate_relationship_memory", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Validate a return visit pledge against the v1 schema — free. Pass the pledge object as JSON.", "inputSchema": { "additionalProperties": false, "properties": { "pledge": { "additionalProperties": true, "type": "object" } }, "required": [ "pledge" ], "type": "object" }, "name": "validate_return_visit_pledge", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "US ABA bank routing number (9-digit) checksum validation.", "inputSchema": { "properties": { "payload": { "properties": { "routing_number": { "pattern": "^[0-9]{9}$", "title": "Routing Number", "type": "string" } }, "required": [ "routing_number" ], "title": "RoutingInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_routing", "outputSchema": null }, { "description": "French SIRET (14-digit business establishment number) Luhn checksum validation. Note: the rare La Poste SIREN exception to the standard rule is not applied.", "inputSchema": { "properties": { "payload": { "properties": { "siret": { "pattern": "^[0-9]{14}$", "title": "Siret", "type": "string" } }, "required": [ "siret" ], "title": "SiretInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_siret", "outputSchema": null }, { "description": "Validate a tool delivery receipt against the v1 schema — free. Pass receipt JSON; optional content re-verifies delivery.digest.", "inputSchema": { "additionalProperties": false, "properties": { "content": { "anyOf": [ { "type": "string" }, { "additionalProperties": true, "type": "object" }, { "items": {}, "type": "array" }, { "type": "null" } ], "default": null }, "receipt": { "additionalProperties": true, "type": "object" } }, "required": [ "receipt" ], "type": "object" }, "name": "validate_tool_delivery_receipt", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "North American VIN check-digit validation (NHTSA standard, position 9) plus WMI manufacturer lookup for a small set of known codes.", "inputSchema": { "properties": { "payload": { "properties": { "vin": { "pattern": "^[A-HJ-NPR-Z0-9]{17}$", "title": "Vin", "type": "string" } }, "required": [ "vin" ], "title": "VinInput", "type": "object" } }, "required": [ "payload" ], "type": "object" }, "name": "validate_vin", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "claim": { "description": "The factual claim to check.", "type": "string" }, "source": { "description": "The source text to check the claim against.", "type": "string" } }, "required": [ "claim", "source" ], "type": "object" }, "name": "verify", "outputSchema": { "properties": { "confidence": { "type": "number" }, "probabilities": { "type": "object" }, "probability": { "description": "Probability of the returned verdict.", "type": "number" }, "verdict": { "enum": [ "supported", "contradicted", "not_enough_info" ], "type": "string" }, "x402_receipt": { "description": "Billing and provenance receipt for this call.", "type": "object" } }, "required": [ "verdict", "probability", "probabilities" ], "type": "object" } }, { "description": "Recompute the canonical digest and return match=true/false — free. Use after a paid tool call to confirm the payload.", "inputSchema": { "additionalProperties": false, "properties": { "content": { "type": "string" }, "expected_digest": { "type": "string" }, "tool_name": { "type": "string" }, "tool_use_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "expected_digest", "tool_name", "content" ], "type": "object" }, "name": "verify_tool_result_digest", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "description": "EVM wallet address (0x followed by 40 hexadecimal characters).", "type": "string" }, "network": { "default": "base", "description": "EVM network to read; aliases and CAIP-2 identifiers are also accepted.", "type": "string" } }, "required": [ "address" ], "type": "object" }, "name": "wallet_balance", "outputSchema": { "properties": { "address": { "type": "string" }, "block_number": { "type": "integer" }, "native": { "type": "object" }, "network": { "type": "object" }, "usdc": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "address", "network", "block_number", "native", "usdc" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "description": "EVM wallet address to inspect across all selected networks.", "type": "string" }, "amount_usdc": { "default": 0.001, "description": "Amount to compare with the Base USDC balance for x402 readiness.", "type": "number" }, "networks": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Up to five networks; defaults to all supported EVM networks." } }, "required": [ "address" ], "type": "object" }, "name": "wallet_intelligence", "outputSchema": { "properties": { "address": { "type": "string" }, "errors": { "items": { "type": "object" }, "type": "array" }, "networks": { "items": { "type": "object" }, "type": "array" }, "requested_networks": { "items": { "type": "string" }, "type": "array" }, "rpc_reads_replaced": { "type": "integer" }, "successful_networks": { "type": "integer" }, "x402_readiness": { "type": [ "object", "null" ] }, "x402_receipt": { "type": "object" } }, "required": [ "address", "requested_networks", "successful_networks", "rpc_reads_replaced", "networks", "errors" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "city": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "City name (e.g. Paris, Tokyo). Preferred when you do not have coordinates." }, "lat": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Latitude. Use with lon when you already have coordinates." }, "lon": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Longitude. Use with lat when you already have coordinates." } }, "type": "object" }, "name": "weather", "outputSchema": { "properties": { "current": { "type": "object" }, "daily": { "items": { "type": "object" }, "type": "array" }, "location": { "type": "object" }, "query": { "type": "string" }, "x402_receipt": { "type": "object" } }, "required": [ "location", "current", "daily" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "message": { "default": "hello agent", "description": "Optional test message to echo after successful settlement.", "type": "string" } }, "type": "object" }, "name": "x402_echo", "outputSchema": { "properties": { "network": { "type": "string" }, "ok": { "type": "boolean" }, "payer": { "type": [ "string", "null" ] }, "price_atomic_usdc": { "type": "string" }, "price_usdc": { "type": "number" }, "purpose": { "type": "string" }, "request": { "type": "object" }, "x402_receipt": { "type": "object" } }, "required": [ "ok", "purpose", "network", "price_usdc", "price_atomic_usdc", "request" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:1756181c43e6f4fcfb4737cef228a6465182222266a1ace9babbb74179f1b4ce | sha256sum