{"serverId":"mcp-registry/com.professorsausages/sausage-onchain","tools":[{"name":"address_screen","fixed":{"name":"address_screen","description":"Screen a crypto address against the full live OFAC SDN list, segmented by chain. Returns a verdict with the matching SDN entries as evidence — never a silent all-clear. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.","inputSchema":{"type":"object","required":["address"],"properties":{"chain":{"enum":["base","ethereum","bitcoin","tron","litecoin","monero","dash","zcash","bitcoin-cash","dogecoin","bitcoin-gold","verge","solana"],"type":"string","default":"base","examples":["base"],"description":"Which chain the address belongs to."},"address":{"type":"string","examples":["0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"],"description":"The address to screen, in that chain's native format."},"x_payment":{"type":"string","description":"Optional signed x402 payment payload (base64, what the X-PAYMENT header carries). Omit to receive the exact payment terms; sign them (e.g. @x402/fetch) and call again with this argument to settle and get the data."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Screen a crypto address against OFAC"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":315,"tokensAfter":315},{"name":"chain_info","fixed":{"name":"chain_info","description":"Canonical record for an EVM chain — name, native currency, explorers, liveness-scored public RPCs. view='rpcs' returns only the ranked, eth_chainId-probed RPC list; view='wallet_config' returns a ready-to-submit EIP-3085 wallet_addEthereumChain object; view='search' finds chains by name or symbol; view='l2s' lists a parent chain's L2s. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists","inputSchema":{"type":"object","properties":{"q":{"type":"string","examples":["scroll"],"description":"Name/symbol fragment (view='search')."},"view":{"enum":["record","rpcs","wallet_config","search","l2s"],"type":"string","default":"record","examples":["rpcs"],"description":"Which shape of chain data to return."},"parent":{"type":"string","default":"1","examples":["1"],"description":"Parent chain id for view='l2s'."},"chain_id":{"type":"string","examples":["8453"],"description":"Numeric chain id (required for record/rpcs/wallet_config)."},"x_payment":{"type":"string","description":"Optional signed x402 payment payload (base64, what the X-PAYMENT header carries). Omit to receive the exact payment terms; sign them (e.g. @x402/fetch) and call again with this argument to settle and get the data."}}},"annotations":{"readOnlyHint":true},"title":"EVM chain registry"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":374,"tokensAfter":374},{"name":"ens_resolve","fixed":{"name":"ens_resolve","description":"Resolve an ENS name to an address, or an address to its forward-verified primary name — direction is detected from the input. view='profile' returns the full identity card (multichain addresses, text records, contenthash, avatar); view='avatar' dereferences the avatar to an image URL. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.","inputSchema":{"type":"object","required":["query"],"properties":{"keys":{"type":"string","examples":["avatar,url"],"description":"Comma-separated ENS text-record keys (view='text')."},"view":{"enum":["resolve","profile","avatar","text"],"type":"string","default":"resolve","examples":["profile"],"description":"resolve = name↔address; profile/avatar/text need a name."},"query":{"type":"string","examples":["ens.eth"],"description":"An ENS name (ends in .eth) or a 0x address."},"x_payment":{"type":"string","description":"Optional signed x402 payment payload (base64, what the X-PAYMENT header carries). Omit to receive the exact payment terms; sign them (e.g. @x402/fetch) and call again with this argument to settle and get the data."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Resolve ENS names and addresses"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":348,"tokensAfter":348},{"name":"find_data","fixed":{"name":"find_data","description":"Describe the data you need in plain language (e.g. 'Apple risk factors 2023', 'is this token a honeypot', 'is this email deliverable', 'read this page'). Searches this server's datasets first, then the whole Professor Sausages catalog, and returns matching endpoints with method, URL, price, and how to call them. Free.","inputSchema":{"type":"object","required":["task"],"properties":{"task":{"type":"string","examples":["Apple risk factors 2023"],"description":"What you're trying to find or do, in your own words"}}},"annotations":{"readOnlyHint":true},"title":"Find the right data source"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"gas_compare","fixed":{"name":"gas_compare","description":"Rank every supported chain by all-in USD transaction cost — the 'where should I send this' routing decision, with the OP-stack L1 data fee included. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.","inputSchema":{"type":"object","properties":{"gas":{"type":"integer","examples":[21000],"description":"Optional gas limit override."},"speed":{"enum":["slow","standard","fast"],"type":"string","default":"standard","examples":["standard"],"description":"Fee tier to compare at."},"tx_type":{"enum":["transfer","erc20","swap","nftMint","deploy"],"type":"string","default":"transfer","examples":["erc20"],"description":"Transaction shape to price on every chain."},"x_payment":{"type":"string","description":"Optional signed x402 payment payload (base64, what the X-PAYMENT header carries). Omit to receive the exact payment terms; sign them (e.g. @x402/fetch) and call again with this argument to settle and get the data."}}},"annotations":{"readOnlyHint":true},"title":"Cheapest chain right now"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":305,"tokensAfter":305},{"name":"nft_scam_check","fixed":{"name":"nft_scam_check","description":"Deterministic scam checklist with a verdict and evidence (spam flags, copymint collisions, holder concentration). Pass a collection contract to check the collection, or a wallet to check that wallet's whole scam exposure holding by holding. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.","inputSchema":{"type":"object","properties":{"chain":{"enum":["eth"],"type":"string","default":"eth","examples":["eth"],"description":"Which chain to read (Ethereum mainnet today)."},"wallet":{"type":"string","examples":["0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7"],"description":"Wallet address — checks scam exposure across its holdings instead."},"contract":{"type":"string","examples":["0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"],"description":"Collection contract address to check."},"x_payment":{"type":"string","description":"Optional signed x402 payment payload (base64, what the X-PAYMENT header carries). Omit to receive the exact payment terms; sign them (e.g. @x402/fetch) and call again with this argument to settle and get the data."}}},"annotations":{"readOnlyHint":true},"title":"NFT scam / copymint check"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":339,"tokensAfter":339},{"name":"pricing","fixed":{"name":"pricing","description":"Every endpoint this server fronts, with its exact per-call USD price (x402, USDC on Base) and a one-line summary, read live from the route table. Free.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Price list"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":65,"tokensAfter":65},{"name":"token_safety","fixed":{"name":"token_safety","description":"Heuristic token safety check: follows the proxy and scans the bytecode that actually runs, plus ownership and transfer restrictions. Returns a verdict with per-rule evidence. Paid: call without x_payment to receive this call's exact terms (amount, asset, network), sign them, then call again with x_payment. The free `pricing` tool lists every price at once.","inputSchema":{"type":"object","required":["address"],"properties":{"chain":{"enum":["base","ethereum"],"type":"string","default":"base","examples":["base"],"description":"Which chain the token contract is on."},"address":{"type":"string","examples":["0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"],"description":"Token contract address."},"x_payment":{"type":"string","description":"Optional signed x402 payment payload (base64, what the X-PAYMENT header carries). Omit to receive the exact payment terms; sign them (e.g. @x402/fetch) and call again with this argument to settle and get the data."}}},"annotations":{"readOnlyHint":true},"title":"Token rug-pull / honeypot check"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":278,"tokensAfter":278}],"toolsChanged":8,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}