Skip to content

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.

Final · 1Changes · 10

17 tools: 1 do something that can't be undone, 10 change things and 6 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "reply.draft" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched 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.

    What this check looks for
  • The server marks "html.to-text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for

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".

      Matched 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.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.