Pay-per-call MCP tools and signed on-chain attestations: 20 free/day, then $0.01+ via x402 or a key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
0x-prefixed ABI-encoded data (no function selector).
Solidity ABI types to decode into.
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.
| Argument | Type | Description |
|---|---|---|
| data* | string | 0x-prefixed ABI-encoded data (no function selector). |
| types* | array | Solidity ABI types to decode into. |
{
"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
}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 calls are not charged.
| Argument | Type | Description |
|---|---|---|
| types* | array | Solidity ABI types, e.g. ["address","uint256","(uint256,bool)[]"]. |
| values* | array | Values matching types. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| address* | string | EVM address to validate (0x-prefixed). |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "EVM address to validate (0x-prefixed)."
}
},
"additionalProperties": false
}Lists the enabled tools with titles, descriptions and the price. Same information as tools/list. Free: never requires payment.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| types* | object | Typed-data types (EIP712Domain optional). |
| domain* | object | EIP-712 domain: name, version, chainId, verifyingContract, salt. |
| message* | object | The message values. |
| primaryType* | string | The primary struct type to hash. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| html* | string | HTML markup to convert. |
{
"type": "object",
"required": [
"html"
],
"properties": {
"html": {
"type": "string",
"maxLength": 250000,
"minLength": 1,
"description": "HTML markup to convert."
}
},
"additionalProperties": false
}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) rather than half-checked. Without a schema only well-formedness is checked. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| schema | object | boolean | string | JSON Schema (object, or JSON text). |
| payload* | any | The JSON value to validate; a string is parsed as JSON text unless parse_string is false. |
| schema_name | string | Optional label echoed back. |
| parse_string | boolean | Parse a string payload as JSON text (default true). |
{
"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."
},
"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
}Ethereum keccak256 of the input: returns the 32-byte digest and the 4-byte selector. encoding auto (default) hashes 0x-hex input as bytes and anything else as UTF-8 text; force utf8 or hex explicitly. The empty string is allowed. Up to 250000 bytes. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| data* | string | Data to hash, e.g. transfer(address,uint256) or 0xdeadbeef. |
| encoding | string | auto (default), utf8, or hex. |
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "string",
"description": "Data to hash, e.g. transfer(address,uint256) or 0xdeadbeef."
},
"encoding": {
"enum": [
"auto",
"utf8",
"hex"
],
"type": "string",
"description": "auto (default), utf8, or hex."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| leaf* | string | 0x 32-byte leaf hash (or raw data with hash_leaf:true). |
| root* | string | Expected 0x 32-byte root. |
| proof* | array | Sibling hashes from leaf to root. |
| sorted | boolean | Sorted-pair hashing (OpenZeppelin, default true). |
| hash_leaf | boolean | keccak256 the leaf before verifying (default false). |
| positions | array | For sorted:false: the side of each sibling. |
| leaf_index | integer | Leaf position for sorted:false trees. |
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 not charged.
| Argument | Type | Description |
|---|---|---|
| text* | string | The message you are replying to. |
| tone | string | clear (default), concise, warm, friendly, or formal. |
| your_name | string | Name to sign with (otherwise a [Your name] placeholder). |
| sender_name | string | Name to greet (otherwise detected from the sign-off). |
{
"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
}Extractive summary: returns the first sentences of the text (default 3, up to 10) capped at max_chars (default 600, 50-2000), taken from the first 4000 characters. Deterministic; it does not paraphrase. `truncated` is true when the source was longer than the considered window. Price: $0.01 USDC per call on Base mainnet ($0.001 on Base Sepolia), paid with x402; failed calls are not charged.
| Argument | Type | Description |
|---|---|---|
| text* | string | Plain text to summarize (non-empty). |
| max_chars | integer | Upper bound on summary length (default 600). |
| max_sentences | integer | Sentences to keep (default 3). |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 1,
"description": "Plain text to summarize (non-empty)."
},
"max_chars": {
"type": "integer",
"maximum": 2000,
"minimum": 50,
"description": "Upper bound on summary length (default 600)."
},
"max_sentences": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Sentences to keep (default 3)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| text* | string | Text to split into chunks. |
| overlap | integer | Characters repeated between consecutive chunks (default 0, capped at max_chars/2). |
| max_chars | integer | Maximum characters per chunk (default 2000). |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| text* | string | Text to extract entities from. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 200000,
"minLength": 1,
"description": "Text to extract entities from."
}
},
"additionalProperties": false
}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 signed attestation (naxytra-attestation/1, in result._meta["naxytra.com/attestation"]) of what was observed on-chain — verified true or false — that you can hand to a third party; keys at /.well-known/delivery-receipt-keys.
| Argument | Type | Description |
|---|---|---|
| network | string | integer | Network (default eip155:8453 Base mainnet). |
| tx_hash* | string | 0x-prefixed 32-byte transaction hash. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| challenge* | string | object | Base64 PAYMENT-REQUIRED value, challenge JSON text, or the challenge object. |
{
"type": "object",
"required": [
"challenge"
],
"properties": {
"challenge": {
"type": [
"string",
"object"
],
"description": "Base64 PAYMENT-REQUIRED value, challenge JSON text, or the challenge object."
}
},
"additionalProperties": false
}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 calls are not charged. The result carries a signed attestation (naxytra-attestation/1, in result._meta["naxytra.com/attestation"]) of what was observed on-chain — verified true or false — that you can hand to a third party; keys at /.well-known/delivery-receipt-keys.
| Argument | Type | Description |
|---|---|---|
| payer | string | Expected payer (default: the receipt's payer). |
| amount | string | integer | Expected amount in USDC base units (default: this server's price when pay_to is this server). |
| pay_to | string | Expected merchant address (default: this server's payTo). |
| confirm | boolean | false = decode only, no on-chain check (default true). |
| receipt* | string | object | Base64 PAYMENT-RESPONSE value, settlement JSON text, or the object. |
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.
| Argument | Type | Description |
|---|---|---|
| hostname* | string | Domain name or URL, for example example.com or https://example.com/page. |
{
"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
}{
"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
}{
"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
}