{"serverId":"mcp-registry/com.naxytra/xytara-mcp-executor","tools":[{"name":"abi.decode","fixed":{"name":"abi_decode","description":"Decodes ABI-encoded hex for the given types (same type support as abi.encode). Strict: every length and offset is bounded by the data present, dirty padding bits and trailing bytes are rejected, and calldata with a 4-byte selector is flagged. Integers are returned as decimal strings, addresses checksummed. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["types","data"],"properties":{"data":{"type":"string","description":"0x-prefixed ABI-encoded data (no function selector)."},"types":{"type":"array","items":{"type":"string"},"maxItems":64,"description":"Solidity ABI types to decode into."}},"additionalProperties":false},"annotations":{"title":"ABI-decode data","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"ABI-decode data"},"changes":[{"kind":"name","detail":"Renamed \"abi.decode\" → \"abi_decode\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"abi.encode","fixed":{"name":"abi_encode","description":"Solidity ABI encoding (like abi.encode): address, bool, uint8-256, int8-256, bytes1-32, bytes, string, dynamic T[] and fixed T[k] arrays, and tuples written (uint256,address), nested to any depth. Strict: exact 20-byte (checksum-valid) addresses, range-checked integers, exact bytesN length, JSON true/false for bool, JSON arrays for arrays and tuples. Integers as decimal strings (or safe JSON numbers). Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed cal","inputSchema":{"type":"object","required":["types","values"],"properties":{"types":{"type":"array","items":{"type":"string"},"maxItems":64,"description":"Solidity ABI types, e.g. [\"address\",\"uint256\",\"(uint256,bool)[]\"]."},"values":{"type":"array","maxItems":64,"description":"Values matching types."}},"additionalProperties":false},"annotations":{"title":"ABI-encode values","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"ABI-encode values"},"changes":[{"kind":"name","detail":"Renamed \"abi.encode\" → \"abi_encode\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":244,"tokensAfter":244},{"name":"address.validate","fixed":{"name":"address_validate","description":"Checks an EVM address: format (0x + 40 hex), EIP-55 checksum (for mixed-case input), zero address, and returns the checksummed form. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["address"],"properties":{"address":{"type":"string","maxLength":200,"minLength":1,"description":"EVM address to validate (0x-prefixed)."}},"additionalProperties":false},"annotations":{"title":"Validate an EVM address","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Validate an EVM address"},"changes":[{"kind":"name","detail":"Renamed \"address.validate\" → \"address_validate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"eip712.hash","fixed":{"name":"eip712_hash","description":"Computes the EIP-712 digest, domain separator, struct hash and encodeType from domain, types, primaryType and message (what wallets sign, including the x402 USDC TransferWithAuthorization). Every field is type-checked; a missing field fails with missing_field:<path> (not charged). Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["domain","types","primaryType","message"],"properties":{"types":{"type":"object","description":"Typed-data types (EIP712Domain optional)."},"domain":{"type":"object","description":"EIP-712 domain: name, version, chainId, verifyingContract, salt."},"message":{"type":"object","description":"The message values."},"primaryType":{"type":"string","description":"The primary struct type to hash."}},"additionalProperties":false},"annotations":{"title":"EIP-712 typed-data hash","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"EIP-712 typed-data hash"},"changes":[{"kind":"name","detail":"Renamed \"eip712.hash\" → \"eip712_hash\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":251,"tokensAfter":251},{"name":"html.to-text","fixed":{"name":"html_to-text","description":"Converts HTML to readable plain text: drops scripts/styles/comments and all attribute text, keeps paragraph and list structure, separates table cells with \" | \", decodes numeric and common named entities, and returns the <title> separately. Input up to 250000 characters; single linear pass. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["html"],"properties":{"html":{"type":"string","maxLength":250000,"minLength":1,"description":"HTML markup to convert."}},"additionalProperties":false},"annotations":{"title":"HTML to plain text","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"HTML to plain text"},"changes":[{"kind":"name","detail":"Renamed \"html.to-text\" → \"html_to-text\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":179,"tokensAfter":179},{"name":"json.validate","fixed":{"name":"json_validate","description":"Validates a JSON payload (any JSON value, or JSON text as a string) against a JSON Schema and returns valid plus every error with its JSON Pointer path. Supported keywords: type, required, properties, additionalProperties, items/prefixItems, enum, const, minimum/maximum, exclusiveMinimum/exclusiveMaximum, multipleOf, minLength/maxLength, pattern, minItems/maxItems, uniqueItems, min/maxProperties, allOf. A schema using other keywords ($ref, anyOf, oneOf, not, if/then) is rejected (not charged) ra","inputSchema":{"type":"object","required":["payload"],"properties":{"schema":{"type":["object","boolean","string"],"description":"JSON Schema (object, or JSON text)."},"payload":{"description":"The JSON value to validate; a string is parsed as JSON text unless parse_string is false.","type":"string"},"schema_name":{"type":"string","maxLength":200,"description":"Optional label echoed back."},"parse_string":{"type":"boolean","description":"Parse a string payload as JSON text (default true)."}},"additionalProperties":false},"annotations":{"title":"JSON Schema validation","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"JSON Schema validation"},"changes":[{"kind":"name","detail":"Renamed \"json.validate\" → \"json_validate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: payload. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":293,"tokensAfter":297},{"name":"merkle.verify","fixed":{"name":"merkle_verify","description":"Verifies a keccak256 Merkle proof. leaf, root and every proof entry must be 0x 32-byte hashes (hash_leaf:true keccak-hashes a raw leaf first). sorted:true (default) is OpenZeppelin MerkleProof (sorted pairs); sorted:false needs leaf_index or positions to order each pair. Up to 256 proof entries. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["leaf","proof","root"],"properties":{"leaf":{"type":"string","description":"0x 32-byte leaf hash (or raw data with hash_leaf:true)."},"root":{"type":"string","description":"Expected 0x 32-byte root."},"proof":{"type":"array","items":{"type":"string"},"maxItems":256,"description":"Sibling hashes from leaf to root."},"sorted":{"type":"boolean","description":"Sorted-pair hashing (OpenZeppelin, default true)."},"hash_leaf":{"type":"boolean","description":"keccak256 the leaf before verifying (default false)."},"positions":{"type":"array","items":{"enum":["left","right"],"type":"string"},"description":"For sorted:false: the side of each sibling."},"leaf_index":{"type":"integer","minimum":0,"description":"Leaf position for sorted:false trees."}},"additionalProperties":false},"annotations":{"title":"Verify a Merkle proof","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Verify a Merkle proof"},"changes":[{"kind":"name","detail":"Renamed \"merkle.verify\" → \"merkle_verify\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":354,"tokensAfter":354},{"name":"reply.draft","fixed":{"name":"reply_draft","description":"Builds a structured reply to a message: greeting to the sender (name detected from the sign-off, or sender_name), acknowledgement, every question and request found in the message listed with an answer placeholder, deadlines noted, and a tone-matched sign-off. Deterministic template: it organizes the reply but does not invent the answers (placeholders in [brackets]). Input up to 20000 characters. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":20000,"minLength":1,"description":"The message you are replying to."},"tone":{"enum":["clear","concise","warm","friendly","formal"],"type":"string","description":"clear (default), concise, warm, friendly, or formal."},"your_name":{"type":"string","maxLength":80,"description":"Name to sign with (otherwise a [Your name] placeholder)."},"sender_name":{"type":"string","maxLength":80,"description":"Name to greet (otherwise detected from the sign-off)."}},"additionalProperties":false},"annotations":{"title":"Reply draft skeleton","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Reply draft skeleton"},"changes":[{"kind":"name","detail":"Renamed \"reply.draft\" → \"reply_draft\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":313,"tokensAfter":313},{"name":"text.chunk","fixed":{"name":"text_chunk","description":"Splits text into chunks of at most max_chars (100-20000, default 2000) preferring paragraph, line, sentence and word boundaries, with optional overlap (up to half of max_chars). Sizes are UTF-16 code units; surrogate pairs (emoji) are never split. Input up to 250000 characters. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":250000,"minLength":1,"description":"Text to split into chunks."},"overlap":{"type":"integer","maximum":10000,"minimum":0,"description":"Characters repeated between consecutive chunks (default 0, capped at max_chars/2)."},"max_chars":{"type":"integer","maximum":20000,"minimum":100,"description":"Maximum characters per chunk (default 2000)."}},"additionalProperties":false},"annotations":{"title":"Chunk text for RAG","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Chunk text for RAG"},"changes":[{"kind":"name","detail":"Renamed \"text.chunk\" → \"text_chunk\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":252,"tokensAfter":252},{"name":"text.extract","fixed":{"name":"text_extract","description":"Extracts emails, URLs (trailing punctuation stripped), IPv4 addresses, EVM addresses, transaction hashes, @mentions, #hashtags, prices, ISO/slash dates and phone numbers (dates, IPs and plain numbers are not reported as phones). Input up to 200000 characters; linear-time. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":200000,"minLength":1,"description":"Text to extract entities from."}},"additionalProperties":false},"annotations":{"title":"Extract entities from text","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Extract entities from text"},"changes":[{"kind":"name","detail":"Renamed \"text.extract\" → \"text_extract\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":175,"tokensAfter":175},{"name":"tx.status","fixed":{"name":"tx_status","description":"Looks up a transaction by hash on Base mainnet (default) or Base Sepolia: success/failed/pending, block, confirmations, from, to, value and gas. network accepts eip155:8453, base, 8453, eip155:84532, base-sepolia, 84532. A hash unknown to the chain is reported clearly as found:false. ~5 s budget; RPC unavailable fails (not charged). Price: $0.02 USDC per call on Base mainnet ($0.002 on Base Sepolia), paid with x402 or 6 credits with a spend key; failed calls are not charged. The result carries a","inputSchema":{"type":"object","required":["tx_hash"],"properties":{"network":{"type":["string","integer"],"description":"Network (default eip155:8453 Base mainnet)."},"tx_hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash."}},"additionalProperties":false},"annotations":{"title":"Transaction status on Base","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"Transaction status on Base"},"changes":[{"kind":"name","detail":"Renamed \"tx.status\" → \"tx_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":228,"tokensAfter":228},{"name":"x402.decode","fixed":{"name":"x402_decode","description":"Decodes an x402 payment challenge (base64 PAYMENT-REQUIRED header, or the JSON; v2 `amount` and v1 `maxAmountRequired`) into networks, assets, human amounts and payTo. A challenge with no payment options fails (not charged). Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["challenge"],"properties":{"challenge":{"type":["string","object"],"description":"Base64 PAYMENT-REQUIRED value, challenge JSON text, or the challenge object."}},"additionalProperties":false},"annotations":{"title":"Decode an x402 challenge","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Decode an x402 challenge"},"changes":[{"kind":"name","detail":"Renamed \"x402.decode\" → \"x402_decode\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":171,"tokensAfter":171},{"name":"x402.verify-receipt","fixed":{"name":"x402_verify-receipt","description":"Decodes an x402 PAYMENT-RESPONSE receipt and checks Base / Base Sepolia: settlement_confirmed is true only if the tx succeeded and its logs contain a USDC Transfer to the expected payTo (pay_to, else this server's) for the expected amount (amount, else this server's price) from the stated payer. RPC unavailable, unknown network or a receipt without a tx fails (not charged). Price: $0.02 USDC per call on Base mainnet ($0.002 on Base Sepolia), paid with x402 or 6 credits with a spend key; failed c","inputSchema":{"type":"object","required":["receipt"],"properties":{"payer":{"type":"string","description":"Expected payer (default: the receipt's payer)."},"amount":{"type":["string","integer"],"description":"Expected amount in USDC base units (default: this server's price when pay_to is this server)."},"pay_to":{"type":"string","description":"Expected merchant address (default: this server's payTo)."},"confirm":{"type":"boolean","description":"false = decode only, no on-chain check (default true)."},"receipt":{"type":["string","object"],"description":"Base64 PAYMENT-RESPONSE value, settlement JSON text, or the object."}},"additionalProperties":false},"annotations":{"title":"Verify an x402 settlement on-chain","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"Verify an x402 settlement on-chain"},"changes":[{"kind":"name","detail":"Renamed \"x402.verify-receipt\" → \"x402_verify-receipt\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":336,"tokensAfter":336},{"name":"zones.lookup","fixed":{"name":"zones_lookup","description":"Live DNS lookup of A, AAAA, CNAME, MX, NS and TXT records for a domain (a URL is accepted; its hostname is used; IDNs are punycoded). 2 s per query, ~5 s total. Per-record errors are reported in record_errors; if no record resolves at all the call fails and is not charged. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.","inputSchema":{"type":"object","required":["hostname"],"properties":{"hostname":{"type":"string","maxLength":2048,"minLength":1,"description":"Domain name or URL, for example example.com or https://example.com/page."}},"additionalProperties":false},"annotations":{"title":"DNS zone lookup","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"DNS zone lookup"},"changes":[{"kind":"name","detail":"Renamed \"zones.lookup\" → \"zones_lookup\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":189,"tokensAfter":189}],"toolsChanged":14,"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."}