MCP Server

x402-tools

dev.workers.kikoribera03.flat-rate-llm/x402-tools
Crypto & Web3 Media & Content Public & reachable MCP 2026-07-28

What this MCP does

Provides pay-per-call AI image, speech, and transcription services alongside general content generation and read-only EVM, token, and blockchain data tools.

ai_image
Text-to-image (FLUX.1 schnell)
Generates a 1024x1024 JPEG from a text prompt with FLUX.1 [schnell] in about 2 seconds. Returns a hosted image URL valid for 24 hours that you can hand straight to the next tool; add inline=true to also get the base64. Choose 1-8 diffusion steps (default 4). You are only charged if the image is delivered. No API key, no account. $0.02 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['prompt'], 'properties': {'steps': {'type': 'number', 'description': 'Diffusion steps, 1-8. More is sharper and slower. Default 4.'}, 'inline': {'type': 'boolean', 'description': 'Also return the JPEG as base64. Default false.'}, 'prompt': {'type': 'string', 'description': 'What to draw, up to 2048 characters. English works best.'}}, 'additionalProperties': False}
ai_speech
Text-to-speech (Aura-2 / MeloTTS)
Turns text into natural speech in English, Spanish, French, Chinese, Japanese or Korean in one or two seconds: Deepgram Aura-2 for English and Spanish, MeloTTS for the rest. Returns a hosted audio URL valid for 24 hours (MP3 for English and Spanish, WAV otherwise) plus its size; add inline=true to also get the base64. Up to 2000 characters per call. You are only charged if the audio is delivered. No API key, no account. $0.01 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['text'], 'properties': {'lang': {'type': 'string', 'description': 'en, es, fr, zh, ja or ko. Default en.'}, 'text': {'type': 'string', 'description': 'What to say, up to 2000 characters.'}, 'inline': {'type': 'boolean', 'description': 'Also return the WAV as base64. Default false.'}}, 'additionalProperties': False}
ai_transcribe
Speech-to-text (Whisper large v3 turbo)
Transcribes an audio file with Whisper large v3 turbo: pass an https URL (mp3, wav, flac, m4a, ogg, up to 10 MB) or base64 audio in a POST. Returns the text, the detected language with its probability, the duration, and timed segments; add words=true for word-level timestamps. Around 100 languages. You are only charged if the transcript is delivered. No API key, no account. $0.02 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'url': {'type': 'string', 'description': 'https URL of the audio file, up to 10 MB.'}, 'audio': {'type': 'string', 'description': 'Alternative to url: the audio as base64 (POST only).'}, 'words': {'type': 'boolean', 'description': 'Include word-level timestamps. Default false.'}, 'language': {'type': 'string', 'description': 'Optional ISO code to skip detection, e.g. es.'}}, 'additionalProperties': False}
ai_translate
Translate text (M2M100, 100 languages)
Translates text between about 100 languages with Meta M2M100 1.2B: pass the text and the target language (ISO code like es, fr, de, zh, ja, or its English name); the source language is detected if omitted. Long texts are split by sentence, so paragraphs keep their order and line breaks. Up to 2000 characters per call. Pairs with speech-to-text: translate a transcript, then read it aloud. You are only charged if the translation is delivered. No API key, no account. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['text', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Target language: ISO code (es, fr, de, zh, ja...) or English name (spanish).'}, 'from': {'type': 'string', 'description': 'Optional source language; detected when omitted.'}, 'text': {'type': 'string', 'description': 'What to translate, up to 2000 characters.'}}, 'additionalProperties': False}
catalog
Catalogue (free)
FREE, no payment needed. Lists all 66 tools with a real example of the input and of the output each one returns, plus what a call costs and how to pay for it. Call this first if a tool answered HTTP 402.
Input schema
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
content_advice
One piece of advice
One piece of practical advice about work, life or money, in English or Spanish. Short, concrete and usable - not a fortune cookie. Filterable by topic, with an id to avoid repeats and a seed for reproducibility. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Same seed always returns the same advice.'}, 'topic': {'type': 'string', 'description': 'work | life | money. Omit for any.'}, 'exclude': {'type': 'array', 'description': 'Ids already seen, comma-separated in a GET.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}}, 'additionalProperties': False}
content_fact
Random fact
One curious but true fact, in English or Spanish, filtered by topic: science, computing, history or nature. Takes parameters, returns an id so you can avoid repeats across a session, and accepts a seed for a reproducible answer. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Same seed always returns the same fact.'}, 'topic': {'type': 'string', 'description': 'science | computing | history | nature. Omit for any.'}, 'exclude': {'type': 'array', 'description': 'Ids already seen, comma-separated in a GET.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}}, 'additionalProperties': False}
content_horror_story
Two-sentence horror story
One two-sentence horror story, in English or Spanish, by theme: domestic, technological, cosmic or folk. Returned SPLIT into setup and payoff as well as joined, so a narrating agent can deliver the first line, pause, and then land the second. Takes parameters, returns an id to avoid repeats, and accepts a seed for a reproducible answer. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Same seed always returns the same story.'}, 'theme': {'type': 'string', 'description': 'domestic | technological | cosmic | folk. Omit for any.'}, 'exclude': {'type': 'array', 'description': 'Ids already seen, comma-separated in a GET.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}}, 'additionalProperties': False}
content_joke
Random joke
One random joke, in English or Spanish, filtered by category: programming, crypto or general. Unlike the usual one-liner endpoints this one takes parameters, returns an id so you can exclude what you have already seen, and accepts a seed for a reproducible answer. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Same seed always returns the same joke.'}, 'exclude': {'type': 'array', 'description': 'Ids already seen, comma-separated in a GET.'}, 'category': {'type': 'string', 'description': 'programming | crypto | general. Omit for any.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}}, 'additionalProperties': False}
content_riddle
Riddle with checkable answer
One riddle by difficulty, in English or Spanish, with the answer AND the SHA-256 of the answer in lowercase. The hash is the point: an agent can check whether its guess is right without reading the solution first, which no other riddle endpoint lets you do. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Same seed always returns the same riddle.'}, 'exclude': {'type': 'array', 'description': 'Ids already seen, comma-separated in a GET.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}, 'difficulty': {'type': 'string', 'description': 'easy | medium | hard. Omit for any.'}}, 'additionalProperties': False}
content_roast
Developer roast, on a target you pick
One lighthearted developer roast aimed at a target YOU choose - javascript, python, css, git, regex, kubernetes, agile or legacy code - and at the severity you ask for. Every other roast endpoint returns something generic; this one lets a code-review agent roast the actual stack in front of it. Bilingual, seedable and repeat-free. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Same seed always returns the same roast.'}, 'target': {'type': 'string', 'description': 'javascript | python | css | git | regex | kubernetes | agile | legacy. Omit for any.'}, 'exclude': {'type': 'array', 'description': 'Ids already seen, comma-separated in a GET.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}, 'severity': {'type': 'string', 'description': 'mild | medium | savage. Omit for any.'}}, 'additionalProperties': False}
content_word_of_the_day
Word of the day
The word of the day with its definition, part of speech and an example sentence, in English or Spanish. Genuinely of the day: it is picked deterministically from the UTC date, so everyone gets the same word and you can reproduce any past day by passing it. The usual endpoints just return a random word and call it the word of the day. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'date': {'type': 'string', 'description': 'YYYY-MM-DD in UTC. Defaults to today, and any past date is reproducible.'}, 'language': {'type': 'string', 'description': 'en | es. Defaults to en.'}}, 'additionalProperties': False}
crypto_sanctions
OFAC sanctions check for a crypto address
Checks one crypto address against the OFAC SDN list published by the US Treasury, across 16 currencies including Ethereum, Bitcoin, Tron and USDT. A hit returns the actual list entry - sanctioned entity, its type and its sanctions programmes - not a risk score. Exact matching only, never fuzzy. Every answer carries the publication date of the list snapshot. No API key, no account. $0.01 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'The crypto address to check. Any chain: EVM, Bitcoin, Tron, Litecoin, Monero and the rest of the list.'}}, 'additionalProperties': False}
evm_balance
EVM native balance
Native coin balance (ETH, MATIC...) for any address, on Base, Ethereum, Polygon, Arbitrum or Optimism. Flat price, no rate limits, no API key. Via eth_getBalance. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism. Defaults to base.'}, 'address': {'type': 'string', 'description': '0x-prefixed address to look up.'}}, 'additionalProperties': False}
evm_block
EVM block height
Latest block height and timestamp of any supported chain, plus how old the chain head is in seconds. Tells an agent whether a node is in sync. Via eth_getBlockByNumber. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}}, 'additionalProperties': False}
evm_call
Raw contract call
Runs any read-only contract call (eth_call) with your own calldata and returns the raw result, on five chains, with no API key and no rate limit. The escape hatch for anything the typed endpoints do not cover. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['to', 'data'], 'properties': {'to': {'type': 'string', 'description': 'Contract address to call.'}, 'data': {'type': 'string', 'description': '0x-prefixed calldata: 4-byte selector plus encoded arguments.'}, 'from': {'type': 'string', 'description': 'Optional caller address, for calls that check msg.sender.'}, 'block': {'type': 'string', 'description': 'Block tag or number. Defaults to latest.'}, 'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}}, 'additionalProperties': False}
evm_chains
Chain health check
Live health of every supported chain in one call: chain id, block height and how stale the head is. Use it to pick a chain that is actually responding. Via eth_getBlockByNumber. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'chain': {'type': 'string', 'description': 'Optional: check just one. base | ethereum | polygon | arbitrum | optimism. All of them when omitted.'}}, 'additionalProperties': False}
evm_ens
ENS name resolution
Resolves an ENS name to its address, or an address back to its primary ENS name, reading Ethereum mainnet directly. Names are what humans paste and addresses are what chains need. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'ENS name to resolve, such as vitalik.eth.'}, 'address': {'type': 'string', 'description': 'Address to reverse-resolve. Use instead of name.'}}, 'additionalProperties': False}
evm_erc20_allowance
ERC20 allowance
How much of a token a spender is still allowed to move on an owner's behalf, and whether that approval is unlimited. The check to run before an approve, and the one that finds forgotten infinite approvals. Via eth_call (allowance). $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['owner', 'spender', 'token'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'owner': {'type': 'string', 'description': 'Address that owns the tokens.'}, 'token': {'type': 'string', 'description': 'ERC20 contract address.'}, 'spender': {'type': 'string', 'description': 'Address allowed to spend them.'}}, 'additionalProperties': False}
evm_erc20_balance
ERC20 token balance
ERC20 token balance for any wallet - USDC, USDT, DAI or any token - via balanceOf. Returns the raw amount and the decimals so you can format it. Via eth_call (balanceOf). $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address', 'token'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'token': {'type': 'string', 'description': 'ERC20 contract address.'}, 'address': {'type': 'string', 'description': 'Wallet to look up.'}}, 'additionalProperties': False}
evm_estimate_gas
Estimate gas
Estimates the gas a transaction would need and prices it at the current gas price, before you sign anything. Also the cheapest way to find out that a call would revert. Via eth_estimateGas. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['to'], 'properties': {'to': {'type': 'string', 'description': 'Destination address.'}, 'data': {'type': 'string', 'description': 'Optional 0x calldata.'}, 'from': {'type': 'string', 'description': 'Sender address.'}, 'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'value': {'type': 'string', 'description': 'Optional value in wei, as a decimal string.'}}, 'additionalProperties': False}
evm_fees
EIP-1559 fee suggestion
Suggested maxFeePerGas and maxPriorityFeePerGas from the last 20 blocks of real fee history, at slow, normal and fast percentiles. Beats guessing a gas price and getting stuck in the mempool. Via eth_feeHistory. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}}, 'additionalProperties': False}
evm_gas
EVM gas price
Current gas price and base fee for any supported chain, in wei and gwei, plus the cost estimate of a plain transfer. For agents planning a transaction. Via eth_gasPrice. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}}, 'additionalProperties': False}
evm_is_contract
Contract or wallet
Tells whether an address is a smart contract or a plain wallet, and how big its bytecode is. A cheap safety check before sending funds. Via eth_getCode. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'address': {'type': 'string', 'description': 'Address to inspect.'}}, 'additionalProperties': False}
evm_nft_owner
NFT owner and metadata
Who owns a given ERC721 token id, plus its tokenURI and collection name in the same call. Answers is this NFT still theirs without an indexer or an API key. Via eth_call (ownerOf). $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['contract', 'tokenId'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'tokenId': {'type': 'string', 'description': 'Token id, in decimal.'}, 'contract': {'type': 'string', 'description': 'ERC721 contract address.'}}, 'additionalProperties': False}
evm_nonce
EVM address nonce
Next transaction nonce for any address, and whether the address is a contract. What an agent needs before signing a transaction. Via eth_getTransactionCount. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'address': {'type': 'string', 'description': 'Address to look up.'}}, 'additionalProperties': False}
evm_portfolio
Wallet token portfolio
Native balance plus the balance of every token you list, on one chain, in a single paid call - each with symbol and decimals already applied. One request instead of one per token. Via eth_getBalance + eth_call. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'tokens': {'type': 'array', 'description': 'Up to 20 ERC20 contract addresses.'}, 'address': {'type': 'string', 'description': 'Wallet to inspect.'}}, 'additionalProperties': False}
evm_receipt
Transaction receipt
Receipt of a transaction: whether it succeeded or reverted, gas used, fee actually paid, and how many logs it emitted. The call that answers did my transaction work. Via eth_getTransactionReceipt. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['hash'], 'properties': {'hash': {'type': 'string', 'description': '32-byte transaction hash.'}, 'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}}, 'additionalProperties': False}
evm_storage
Raw contract storage
Reads a raw storage slot of any contract, decoded as hex, integer and address. How you inspect proxy implementation slots, owners and paused flags that have no public getter. Via eth_getStorageAt. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'slot': {'type': 'string', 'description': 'Slot number in decimal, or a 0x slot key such as an EIP-1967 hash.'}, 'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'address': {'type': 'string', 'description': 'Contract to read.'}}, 'additionalProperties': False}
evm_token_info
ERC20 token info
Name, symbol, decimals and total supply of any ERC20 contract in one call. Useful to label a token address before showing it to a user. Via eth_call. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['token'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'token': {'type': 'string', 'description': 'ERC20 contract address.'}}, 'additionalProperties': False}
evm_token_price
DEX token price, with the pool that produced it
Spot price of any ERC20 read straight from the deepest Uniswap V3 pool against USDC, on Base, Ethereum, Polygon, Arbitrum or Optimism. Returns the pool address, fee tier, liquidity, sqrtPriceX96, tick and block, so the number can be audited instead of trusted. No aggregator and no API key: the source is the chain itself. Via eth_call. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['token'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'quote': {'type': 'string', 'description': "Token to price it against. Defaults to the chain's native USDC."}, 'token': {'type': 'string', 'description': 'ERC20 contract address to price.'}}, 'additionalProperties': False}
evm_token_safety
ERC20 pre-trade safety check
Pre-trade risk check for any ERC20 on Base, Ethereum, Polygon, Arbitrum or Optimism, straight from the deployed bytecode and live state. Detects mint, pause, blacklist, upgradeable proxy and mutable buy/sell tax powers, and reports whether ownership is renounced. Unlike LLM-written verdicts this returns the EVIDENCE - the exact selector found and its byte offset - so an agent can apply its own policy. Deterministic: same contract, same answer. $0.01 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['token'], 'properties': {'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}, 'token': {'type': 'string', 'description': 'ERC20 contract address to check.'}}, 'additionalProperties': False}
evm_tx
EVM transaction
Full transaction details by hash, merged with its receipt: from, to, value, gas used, status and block. One call instead of two. Via eth_getTransactionByHash. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['hash'], 'properties': {'hash': {'type': 'string', 'description': 'Transaction hash.'}, 'chain': {'type': 'string', 'description': 'base | ethereum | polygon | arbitrum | optimism.'}}, 'additionalProperties': False}
fx_convert
Currency conversion at the official ECB rate
Converts an amount between any two of the ~30 currencies in the European Central Bank's official reference rates, on today's publication or on a past date within the last 90 days. Returns the rate used, its publication date and whether it was crossed through the euro. This is the auditable rate accounting and customs ask for, not a live market quote: it is published once a day and it is reproducible. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Target currency, ISO 4217, e.g. EUR.'}, 'date': {'type': 'string', 'description': 'Optional publication date, YYYY-MM-DD, within the last 90 days. Defaults to the latest publication.'}, 'from': {'type': 'string', 'description': 'Source currency, ISO 4217, e.g. USD.'}, 'amount': {'type': 'number', 'description': 'Amount to convert. Defaults to 1.'}}, 'additionalProperties': False}
llm_completion
Flat-rate LLM
LLM inference at a flat $1.00 per call, with no account, no API key and no token metering. POST a prompt, get the completion: the same price for 10 tokens or 4000, while metered gateways scale with usage. Automatic failover across several large models; typical response under 1s. Pay per call in USDC over x402 - nothing to sign up for. $1.00 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['prompt'], 'properties': {'prompt': {'type': 'string', 'description': 'The request for the model. Up to 24000 characters.'}, 'sistema': {'type': 'string', 'description': 'Optional system instruction.'}, 'maxTokens': {'type': 'number', 'description': 'Output token cap, up to 4000. Does not change the price.'}}, 'additionalProperties': False}
random_coinflip
Coin flip
Flip one or more fair coins and get heads or tails, with the tally. Cryptographically random, not Math.random. For tie-breaks and A/B splits an agent has to decide on its own. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'count': {'type': 'number', 'description': 'How many coins to flip, 1-100. Defaults to 1.'}}, 'additionalProperties': False}
random_dice
Dice roller
Roll dice with any number of faces and get every roll plus the total. Uses the platform CSPRNG with rejection sampling, so every face is equally likely - a plain modulo is biased. Standard dice notation: 3d6, 1d20. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'count': {'type': 'number', 'description': 'How many dice to roll, 1-100. Defaults to 1.'}, 'faces': {'type': 'number', 'description': 'Faces per die, 2-1000000. Defaults to 6.'}}, 'additionalProperties': False}
random_number
Random number
Uniform random integers in any range you give, with or without repeats. Rejection sampling, so the ends of the range are not slightly less likely - which is what happens with modulo. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'max': {'type': 'number', 'description': 'Highest value, inclusive. Defaults to 100.'}, 'min': {'type': 'number', 'description': 'Lowest value, inclusive. Defaults to 1.'}, 'count': {'type': 'number', 'description': 'How many to draw, 1-100. Defaults to 1.'}, 'unique': {'type': 'boolean', 'description': 'No repeats. Needs a range at least as wide as count.'}}, 'additionalProperties': False}
random_password
Password generator
Generate strong random secrets from the platform CSPRNG, with the entropy in bits so you can judge them. Four alphabets, including one with no look-alike characters for anything a human has to read back. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'count': {'type': 'number', 'description': 'How many to generate, 1-50. Defaults to 1.'}, 'length': {'type': 'number', 'description': 'Characters per secret, 8-256. Defaults to 20.'}, 'alphabet': {'type': 'string', 'description': 'alnum | legible | hex | completo. Defaults to legible.'}}, 'additionalProperties': False}
random_pick
Random pick
Pick one or more items at random from a list you send, with or without repeats. The list is yours, so this is the unbiased chooser an agent needs when it has options and no reason to prefer any. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['items'], 'properties': {'count': {'type': 'number', 'description': 'How many to pick, 1-100. Defaults to 1.'}, 'items': {'type': 'string', 'description': 'The options, comma-separated. A JSON array of strings is also accepted in a POST body.'}, 'repeat': {'type': 'boolean', 'description': 'Allow the same item more than once. Defaults to false.'}}, 'additionalProperties': False}
random_shuffle
Shuffle a list
Shuffle a list into a uniformly random order with Fisher-Yates over the platform CSPRNG. Every permutation is equally likely, which sorting by a random key does not give you. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'string', 'description': 'The list to shuffle, comma-separated. A JSON array of strings is also accepted in a POST body.'}}, 'additionalProperties': False}
red_asn
ASN lookup
Everything the authoritative public sources say about one autonomous system number: the RDAP registry record via the ARIN-to-RIR referral chain (holder, status, allocation dates, abuse contact), the AS name, country and RIR from Team Cymru's DNS service, and the prefixes it is announcing right now in the global routing table, from RIPEstat, split into IPv4 and IPv6 with a sample. Keyless and free at the source. The natural second call after /v1/red/ip gives you an origin ASN. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['asn'], 'properties': {'asn': {'type': 'string', 'description': 'The AS number, with or without the AS prefix: 15169 or AS15169.'}}, 'additionalProperties': False}
red_cert
TLS certificate lookup (Certificate Transparency)
Every currently valid TLS certificate publicly issued for one domain, read from the Certificate Transparency logs: issuer, validity window, days to expiry, revocation status and every hostname each certificate covers. It reports what was ISSUED, which is how you find certificates you did not know existed - not what the server is serving today. No API key, no account. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'The domain to look up. A full URL or an email address is accepted and reduced to its host.'}, 'subdomains': {'type': 'boolean', 'description': 'Also return certificates issued for subdomains. Defaults to false.'}}, 'additionalProperties': False}
red_dnsbl
IP blocklist check
Checks one IPv4 address against nine public DNS blocklists at once — SpamCop, UCEPROTECT, PSBL, Barracuda, DroneBL and four more — and returns each list's raw return code plus the reason text the list itself publishes, not a score. Every list is re-checked on each call with its RFC 5782 test entry, so a dead list or one that refuses queries comes back as unavailable instead of reading as clean. Includes the delisting URL for each hit. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['ip'], 'properties': {'ip': {'type': 'string', 'description': 'The IPv4 address to check. IPv6 is not accepted: these nine lists are IPv4 zones.'}}, 'additionalProperties': False}
red_domain_check
Domain DNS check
Everything DNS says about one domain in a single call: whether it is registered, its A and AAAA addresses, nameservers, MX servers, SPF and DMARC, DNSSEC, and whether it looks parked. Built for going through a list of domains one at a time. Live DNS, no API key, no account. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'The domain to check. A full URL or an email address is accepted and reduced to its host.'}}, 'additionalProperties': False}
red_email_check
Email address check
Scores one email address 0-100 with a verdict (ok, risky, disposable, undeliverable, invalid) and the evidence under it: every point lost is itemised with the field that proves it. 12,141 disposable domains from two maintained open lists pinned to a commit, 4,897 free providers, 1,018 role names, typo fix (gmial.com > gmail.com), live MX/SPF/DMARC. No SMTP probe, no API key. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': 'The address to check, e.g. someone@example.com.'}}, 'additionalProperties': False}
red_ip
IP address intelligence
Looks up one IPv4 or IPv6 address against the two authoritative, keyless public sources: RDAP registry data (who holds the block, in which country, since when, abuse contact) via the ARIN-to-RIR referral chain, and the origin ASN from Team Cymru's DNS service. No city-level geolocation and no VPN/proxy detection — those need a licensed commercial database this endpoint deliberately does not use. Built for going through a list of IPs one at a time. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['ip'], 'properties': {'ip': {'type': 'string', 'description': 'The IPv4 or IPv6 address to look up.'}}, 'additionalProperties': False}
red_whois
Domain registration lookup (RDAP)
Registration data for one domain, read from the registry's own RDAP service through the IANA bootstrap — not scraped from port-43 whois text. Returns creation, expiry and last-change dates, age and days to expiry, registrar, EPP status codes, nameservers, DNSSEC and the abuse contact. TLDs with no RDAP server say so instead of reporting the domain as unregistered. No API key, no account. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'The domain to look up. A full URL or an email address is accepted and reduced to its host.'}}, 'additionalProperties': False}
time_convert
Time zone converter
Convert a time between any two IANA time zones, with daylight saving applied from the runtime's own tz database. Returns both sides with their UTC offset, abbreviation and DST flag, plus the UTC instant and the difference in hours. Warns when the time you asked for does not exist or happens twice because the clocks change that day: the two cases that quietly make a hand-made conversion wrong. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Target IANA time zone, e.g. "Asia/Tokyo". Required.'}, 'from': {'type': 'string', 'description': 'Source IANA time zone, e.g. "Europe/Madrid". Required.'}, 'time': {'type': 'string', 'description': 'Wall clock as YYYY-MM-DD HH:MM in the "from" zone, or an ISO string with Z or an offset, or a unix timestamp, or "now". Defaults to now.'}}, 'additionalProperties': False}
time_now
Current time in a time zone
The current time in any IANA time zone, in every form an agent needs at once: ISO with offset, 24-hour, 12-hour, weekday, unix timestamp and UTC. It also says whether daylight saving is active right now and what the zone's standard offset is, so a shifted clock can be told apart from a permanent one. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['zone'], 'properties': {'zone': {'type': 'string', 'description': 'IANA time zone, e.g. "Asia/Tokyo" or "UTC". Required.'}}, 'additionalProperties': False}
time_zones
Time zone directory
Search the full IANA time zone list and get each zone's current UTC offset, abbreviation, local time and DST state. Use it to turn a city or a country into the exact zone name the other endpoints expect, or to find every zone sitting at a given offset right now. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Maximum zones returned, 1-500. Defaults to 50.'}, 'offset': {'type': 'string', 'description': 'Keep only zones at this current UTC offset, e.g. "+09:00" or "-5".'}, 'search': {'type': 'string', 'description': 'Substring matched against the zone name, case-insensitive. Omit to list them all.'}}, 'additionalProperties': False}
util_address
Address checksum and validation
Validates an EVM address and returns it in EIP-55 mixed-case checksum form. Catches typos before you send funds: an address that fails the checksum is almost always mistyped. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'The address to validate, in any case.'}}, 'additionalProperties': False}
util_base64
Base64 encode and decode
Base64 in both directions, including the URL-safe alphabet, with UTF-8 handled properly. Encoding is what carries payloads through headers and JSON, and x402 itself rides on it. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['input'], 'properties': {'mode': {'type': 'string', 'description': 'encode | decode. Defaults to encode.'}, 'input': {'type': 'string', 'description': 'The text or base64 to convert.'}, 'urlSafe': {'type': 'boolean', 'description': 'Use the URL-safe alphabet (-_ instead of +/).'}}, 'additionalProperties': False}
util_hex
Hex converter
Converts between hex, decimal and UTF-8 text in one call, with big integers handled exactly. For reading raw RPC output, which comes back as hex and overflows a JavaScript number. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['value'], 'properties': {'as': {'type': 'string', 'description': 'hex | decimal | text. What the value IS. Defaults to autodetect.'}, 'value': {'type': 'string', 'description': 'A 0x-prefixed hex string, a decimal number, or text.'}}, 'additionalProperties': False}
util_iban
IBAN check
Validates one IBAN offline: country, expected length, ISO 7064 mod-97 check digits, whether it is inside SEPA, and the account number split out. Deterministic, no network call and no third party that can go down. Built for cleaning a list of accounts one at a time. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['iban'], 'properties': {'iban': {'type': 'string', 'description': 'The IBAN to check. Spaces and lowercase are accepted.'}}, 'additionalProperties': False}
util_keccak256
Keccak-256 hash
Keccak-256 of any string or hex payload - the hash Ethereum actually uses, which is NOT the same as SHA3-256. Needed for selectors, event topics, salts and CREATE2 addresses. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Plain text, or a 0x-prefixed hex payload to hash as bytes.'}}, 'additionalProperties': False}
util_phone
Phone number check
Checks one phone number offline: normalises it to E.164, works out its country (including the twelve calling codes shared by several countries, such as +1 US/Canada/Caribbean) and validates the national number length against that country's numbering plan. Returns the tel: URI and the national dialling form. Numbering data from Google's libphonenumber. No network call and no API key, so it cannot fail because a third party is down. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['phone'], 'properties': {'phone': {'type': 'string', 'description': 'The phone number, in any usual notation: +34 612 34 56 78, 0034612345678, (612) 345-678.'}, 'country': {'type': 'string', 'description': 'Optional ISO 3166-1 alpha-2 country, e.g. ES. Only used when the number carries no country code.'}}, 'additionalProperties': False}
util_selector
Function selector and event topic
Turns a Solidity signature like transfer(address,uint256) into its 4-byte function selector and its 32-byte event topic0. What you need to build calldata by hand or to filter logs. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['signature'], 'properties': {'signature': {'type': 'string', 'description': 'Canonical signature: name(type1,type2), no spaces and no argument names.'}}, 'additionalProperties': False}
util_sha256
SHA-256 hash
SHA-256 of any string or hex payload, returned as hex and as base64. The hash everything outside Ethereum uses: file digests, API signatures, content addressing. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Plain text, or a 0x-prefixed hex payload to hash as bytes.'}}, 'additionalProperties': False}
util_units
Token unit converter
Converts between wei, gwei, ether and any token decimals using exact integer maths - no floating point, no silent rounding. The mistake that costs real money is being off by a thousand on decimals. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['amount', 'from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'wei | gwei | ether, or a number of decimals.'}, 'from': {'type': 'string', 'description': 'wei | gwei | ether, or a number of decimals.'}, 'amount': {'type': 'string', 'description': 'The quantity, as a string to avoid float loss.'}}, 'additionalProperties': False}
util_uuid
UUID v4 generator
Cryptographically random UUID v4s, up to 100 per call, straight from the platform CSPRNG. For idempotency keys, request ids and correlation ids - the ones that must not collide. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': [], 'properties': {'count': {'type': 'number', 'description': 'How many to generate, 1-100. Defaults to 1.'}}, 'additionalProperties': False}
util_vat
EU VAT number check
Validates one EU VAT number offline: country prefix, the format that country uses, and the published check-digit algorithm where one exists. Says explicitly whether the check digits were verified or only the format. Deterministic, no network call. Built for cleaning a list of companies one at a time. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['vat'], 'properties': {'vat': {'type': 'string', 'description': 'The VAT number, with or without the country prefix and with any spacing.'}}, 'additionalProperties': False}
util_verify_signature
Verify wallet signature
Recovers the address that signed a personal_sign (EIP-191) message and tells you whether it matches the address you expected. This is how you prove a wallet is controlled by whoever is talking to you. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['message', 'signature'], 'properties': {'message': {'type': 'string', 'description': 'The exact message that was signed.'}, 'expected': {'type': 'string', 'description': 'Optional address to compare the recovered signer against.'}, 'signature': {'type': 'string', 'description': '65-byte 0x signature from personal_sign.'}}, 'additionalProperties': False}
weather_forecast
Multi-day forecast from the official national service
Day-by-day forecast for any point on Earth, up to nine days out, from the Norwegian Meteorological Institute's official model rather than a commercial aggregator. Each day carries its minimum and maximum temperature, total precipitation, strongest wind and the midday symbol, together with the exact model run and the institute's declared units, so a planning decision can cite where the number came from. $0.01 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees, -90 to 90. Rounded to 4 decimals.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees, -180 to 180. Rounded to 4 decimals.'}, 'days': {'type': 'number', 'description': 'How many days to return, 1-9. Defaults to 5. The last day is usually partial and says so.'}}, 'additionalProperties': False}
weather_now
Current weather from the official national forecast
Current conditions for any point on Earth, taken from the Norwegian Meteorological Institute's official forecast model rather than a commercial aggregator. Returns temperature, humidity, pressure, wind speed and bearing, cloud cover and the next hour's precipitation, plus the exact model run it came from and the units the institute itself declares, so the figure can be cited and checked instead of merely trusted. $0.01 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees, -90 to 90. Rounded to 4 decimals, which is what the institute accepts.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees, -180 to 180. Rounded to 4 decimals.'}, 'hours': {'type': 'number', 'description': 'How many hourly steps to include after the current one, 0-24. Defaults to 6.'}}, 'additionalProperties': False}
web_read
Read a web page as markdown
Fetches one URL and returns the readable page as markdown: title, description, headings, paragraphs and links with their destinations, plus the canonical URL, language and word count. Boilerplate, scripts and navigation are stripped. Built for going through a list of links one at a time. No API key, no account. $0.01 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The page to read. http and https only; private and loopback addresses are refused.'}, 'links': {'type': 'boolean', 'description': 'Also return the outbound links as a list. Defaults to false.'}}, 'additionalProperties': False}
web_status
URL status and redirect chain
Checks one URL without downloading the page: HTTP status, the full redirect chain hop by hop with the code of each, the final URL, whether it ends on HTTPS, content type and size, and the security headers the server sends. Built for going through a list of links one at a time. No API key, no account. $0.005 per call, paid over x402 (USDC).
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The URL to check. http and https only; private and loopback addresses are refused.'}, 'method': {'type': 'string', 'description': 'HEAD (default) or GET. Some servers refuse HEAD and only answer GET.'}}, 'additionalProperties': False}
Changed
ai_translate
Oct. 1, 2026, 2:43 a.m.
Changed
ai_transcribe
Oct. 1, 2026, 2:43 a.m.
Changed
ai_speech
Oct. 1, 2026, 2:43 a.m.
Changed
ai_image
Oct. 1, 2026, 2:43 a.m.
Changed
content_word_of_the_day
Oct. 1, 2026, 2:43 a.m.
Changed
content_advice
Oct. 1, 2026, 2:43 a.m.
Changed
content_riddle
Oct. 1, 2026, 2:43 a.m.
Changed
content_fact
Oct. 1, 2026, 2:43 a.m.
Changed
content_joke
Oct. 1, 2026, 2:43 a.m.
Changed
content_roast
Oct. 1, 2026, 2:43 a.m.
Changed
content_horror_story
Oct. 1, 2026, 2:43 a.m.
Changed
time_zones
Oct. 1, 2026, 2:43 a.m.
Changed
time_now
Oct. 1, 2026, 2:43 a.m.
Changed
time_convert
Oct. 1, 2026, 2:43 a.m.
Changed
random_number
Oct. 1, 2026, 2:43 a.m.
Changed
random_password
Oct. 1, 2026, 2:43 a.m.
Changed
random_shuffle
Oct. 1, 2026, 2:43 a.m.
Changed
random_pick
Oct. 1, 2026, 2:43 a.m.
Changed
random_coinflip
Oct. 1, 2026, 2:43 a.m.
Changed
random_dice
Oct. 1, 2026, 2:43 a.m.
Changed
util_selector
Oct. 1, 2026, 2:43 a.m.
Changed
util_verify_signature
Oct. 1, 2026, 2:43 a.m.
Changed
util_uuid
Oct. 1, 2026, 2:43 a.m.
Changed
util_base64
Oct. 1, 2026, 2:43 a.m.
Changed
util_hex
Oct. 1, 2026, 2:43 a.m.
Changed
util_units
Oct. 1, 2026, 2:43 a.m.
Changed
util_address
Oct. 1, 2026, 2:43 a.m.
Changed
util_sha256
Oct. 1, 2026, 2:43 a.m.
Changed
util_keccak256
Oct. 1, 2026, 2:43 a.m.
Changed
evm_chains
Oct. 1, 2026, 2:43 a.m.