xytara MCP Executor
by naxytra.com · remote · no sign-in to list tools · v3.4.0 · published by com.naxytra
Pay-per-call MCP tools and signed on-chain attestations: 20 free/day, then $0.01+ via x402 or a key.
17 tools: 1 do something that can't be undone, 10 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things10Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http xytara-executor https://xytara-mcp-executor.onrender.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnreply.draft
The server marks "reply.draft" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "reply.draft" says "reply": a word for sending, and what is sent cannot be taken back.
- Warnhtml.to-text
The server marks "html.to-text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Can't be undone 1Claude Code: ask
reply.draftBuilds 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 l…1 finding
Why it is in this group
- The name "reply.draft" says "reply": a word for sending, and what is sent cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "reply.draft" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "reply.draft" says "reply": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it 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.
Annotations the server declares
- title: Reply draft skeleton
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Changes things 10Claude Code: ask
abi.decodeDecodes ABI-encoded hex for the given types (same type support as abi.encode).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote 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.
Annotations the server declares
- title: ABI-decode data
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
abi.encodeSolidity 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), nest…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: ABI-encode values
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
eip712.hashComputes the EIP-712 digest, domain separator, struct hash and encodeType from domain, types, primaryType and message (what wallets sign, including the x402 USDC TransferWithAuthor…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: EIP-712 typed-data hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
html.to-textConverts HTML to readable plain text: drops scripts/styles/comments and all attribute text, keeps paragraph and list structure, separates table cells with " | ", decodes numeric an…1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "html.to-text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: HTML to plain text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
keccak256Ethereum keccak256 of the input: returns the 32-byte digest and the 4-byte selector.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Keccak-256 hash
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
merkle.verifyVerifies a keccak256 Merkle proof.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Verify a Merkle proof
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text.chunkSplits 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).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Chunk text for RAG
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
text.extractExtracts emails, URLs (trailing punctuation stripped), IPv4 addresses, EVM addresses, transaction hashes, @mentions, #hashtags, prices, ISO/slash dates and phone numbers (dates, IP…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Extract entities from text
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402.decodeDecodes an x402 payment challenge (base64 PAYMENT-REQUIRED header, or the JSON; v2 `amount` and v1 `maxAmountRequired`) into networks, assets, human amounts and payTo.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Decode an x402 challenge
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402.verify-receiptDecodes 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 …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- title: Verify an x402 settlement on-chain
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 6Claude Code: allow
address.validateChecks an EVM address: format (0x + 40 hex), EIP-55 checksum (for mixed-case input), zero address, and returns the checksummed form.No findings
Why it is in this group
- The name "address.validate" says "validate": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Validate an EVM address
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
catalogLists the enabled tools with titles, descriptions and the price.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it Lists the enabled tools with titles, descriptions and the price. Same information as tools/list. Free: never requires payment.
Annotations the server declares
- title: Tool catalog (free)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
json.validateValidates 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.No findings
Why it is in this group
- The name "json.validate" says "validate": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: JSON Schema validation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
summarizeExtractive 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.No findings
Why it is in this group
- The name "summarize" says "summarize": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Summarize text (extractive)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
tx.statusLooks up a transaction by hash on Base mainnet (default) or Base Sepolia: success/failed/pending, block, confirmations, from, to, value and gas.No findings
Why it is in this group
- The name "tx.status" says "status": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Transaction status on Base
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
zones.lookupLive 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).No findings
Why it is in this group
- The name "zones.lookup" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: DNS zone lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 3.4.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http xytara-executor https://xytara-mcp-executor.onrender.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__xytara-executor__summarize",
"mcp__xytara-executor__zones_lookup",
"mcp__xytara-executor__catalog",
"mcp__xytara-executor__json_validate",
"mcp__xytara-executor__address_validate",
"mcp__xytara-executor__tx_status"
],
"ask": [
"mcp__xytara-executor__reply_draft",
"mcp__xytara-executor__text_extract",
"mcp__xytara-executor__html_to-text",
"mcp__xytara-executor__text_chunk",
"mcp__xytara-executor__x402_decode",
"mcp__xytara-executor__keccak256",
"mcp__xytara-executor__x402_verify-receipt",
"mcp__xytara-executor__abi_encode",
"mcp__xytara-executor__abi_decode",
"mcp__xytara-executor__merkle_verify",
"mcp__xytara-executor__eip712_hash"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as xytara-executor. Review it before you use it.