Skip to content

Resistance Tools

by TONresistor · remote · no sign-in to list tools · v0.2.6 · published by GitHub user TONresistor

MCP tools for TON Sites, TON DNS and TON Storage.

Deletes · 12Final · 5Changes · 8

51 tools: 12 can delete or cancel things, 5 do something that can't be undone, 8 change things and 26 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http resistance-tools https://app.resistance.dog/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "storage.provider_quote" 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":true}; The description's first verb is "create": 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.

51 tools

Deletes or cancels 12Claude Code: deny
  • dns.send_transfer_txRevalidate ownership of a root .ton name or .t.me Username and return one HTTPS page to confirm its NFT transfer to newOwner.No findings

    Why it is in this group

    • The name "dns.send_transfer_tx" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revalidate ownership of a root .ton name or .t.me Username and return one HTTPS page to confirm its NFT transfer to newOwner. The user signs in their wallet.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • sites.attach_domainAttach an already DNS-linked domain after preflight.No findings

    Why it is in this group

    • The name "sites.attach_domain" says "attach": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Attach an already DNS-linked domain after preflight. Confirm site and full domain exactly. Pass the reviewed expectedConflictSiteId when moving a domain; deleting its source site additionally requires confirmDeleteSourceSiteId and sites:delete. All affected sites must be owned and delegated. Does not sign or change DNS records.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • sites.deleteDelete an owned TON Site deployment and served files.No findings

    Why it is in this group

    • The name "sites.delete" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an owned TON Site deployment and served files.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • sites.publish_filesDeploy or update an owned TON Site from explicit file contents.No findings

    Why it is in this group

    • The name "sites.publish_files" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Deploy or update an owned TON Site from explicit file contents.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • sites.publish_templateValidate, render, and publish a template-based TON Site.No findings

    Why it is in this group

    • The name "sites.publish_template" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Validate, render, and publish a template-based TON Site.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • sites.rollbackRollback an owned TON Site to a retained release.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 destructive (destructiveHint: true).
    Description, as the server wrote it
    Rollback an owned TON Site to a retained release.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • storage.delete_bagDelete an owned TON Storage bag reference and remove platform-seeded bytes when safe.No findings

    Why it is in this group

    • The name "storage.delete_bag" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an owned TON Storage bag reference and remove platform-seeded bytes when safe.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • storage.send_provider_txRevalidate the live contract, providers, shared balance, and exact amount before returning one HTTPS pin, top-up, stop, or withdraw confirmation page.No findings

    Why it is in this group

    • The name "storage.send_provider_tx" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revalidate the live contract, providers, shared balance, and exact amount before returning one HTTPS pin, top-up, stop, or withdraw confirmation page.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • subdomains.collection_action_txRevalidate current collection or parent rights and return one HTTPS management transaction confirmation page.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 destructive (destructiveHint: true).
    Description, as the server wrote it
    Revalidate current collection or parent rights and return one HTTPS management transaction confirmation page.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • subdomains.transfer_item_txRevalidate current NFT ownership and return one HTTPS Subdomain item transfer confirmation page.No findings

    Why it is in this group

    • The name "subdomains.transfer_item_tx" says "transfer": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Revalidate current NFT ownership and return one HTTPS Subdomain item transfer confirmation page.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Can't be undone 5Claude Code: ask
  • dns.send_name_txReturn one HTTPS page for a validated .ton mint, auction bid, or expired-name release transaction.No findings

    Why it is in this group

    • The name "dns.send_name_tx" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Return one HTTPS page for a validated .ton mint, auction bid, or expired-name release transaction.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • dns.send_record_txRevalidate indexed ownership and return one HTTPS page where the user reviews and confirms the exact TON DNS record transaction.No findings

    Why it is in this group

    • The name "dns.send_record_tx" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Revalidate indexed ownership and return one HTTPS page where the user reviews and confirms the exact TON DNS record transaction.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • dns.send_renew_txRevalidate one to four owned .ton names and return one HTTPS page for a single TON Connect multi-message confirmation.No findings

    Why it is in this group

    • The name "dns.send_renew_tx" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Revalidate one to four owned .ton names and return one HTTPS page for a single TON Connect multi-message confirmation.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 8Claude Code: ask
  • media.upload_imageUpload one PNG, JPEG, GIF, or WebP image to the authenticated owner's template media store.No findings

    Why it is in this group

    • The name "media.upload_image" says "upload": a word for a change.
    Description, as the server wrote it
    Upload one PNG, JPEG, GIF, or WebP image to the authenticated owner's template media store.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • storage.create_bagCreate and seed a new TON Storage bag from explicit file contents.No findings

    Why it is in this group

    • The name "storage.create_bag" says "create": a word for a change.
    Description, as the server wrote it
    Create and seed a new TON Storage bag from explicit file contents.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • storage.pin_bagPin/import an existing public TON Storage bag by bag id.No findings

    Why it is in this group

    • The name "storage.pin_bag" says "pin": a word for a change.
    Description, as the server wrote it
    Pin/import an existing public TON Storage bag by bag id.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • storage.provider_funding_sessionFreeze a short-lived live provider and shared-balance snapshot for an owned bag.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
    Freeze a short-lived live provider and shared-balance snapshot for an owned bag.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • storage.provider_quoteCreate the signed backend quote that will be revalidated before a provider confirmation link is returned.1 finding

    Why it is in this group

    • The description's first verb is "create": 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 "storage.provider_quote" 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":true}; The description's first verb is "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Create the signed backend quote that will be revalidated before a provider confirmation link is returned.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • subdomains.create_collection_txRevalidate parent ownership, create collection metadata, and return one HTTPS transaction confirmation page.No findings

    Why it is in this group

    • The name "subdomains.create_collection_tx" says "create": a word for a change.
    Description, as the server wrote it
    Revalidate parent ownership, create collection metadata, and return one HTTPS transaction confirmation page.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • subdomains.mint_txRevalidate availability and access, build metadata, and return one HTTPS mint or pending-mint confirmation page.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.
    Description, as the server wrote it
    Revalidate availability and access, build metadata, and return one HTTPS mint or pending-mint confirmation page.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • subdomains.recovery_txRe-derive an owned collection and return one HTTPS page for its deployment or resolver recovery transaction.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.
    Description, as the server wrote it
    Re-derive an owned collection and return one HTTPS page for its deployment or resolver recovery transaction.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 26Claude Code: allow
  • auth.policyReturn public MCP auth flows, scopes, safety controls, retention, and confirmation rules.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return public MCP auth flows, scopes, safety controls, retention, and confirmation rules.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • auth.statusReturn whether this MCP session is authenticated.No findings

    Why it is in this group

    • The name "auth.status" says "status": a word for reading.
    Description, as the server wrote it
    Return whether this MCP session is authenticated.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • deployments.listList retained deployments across the owner's sites.No findings

    Why it is in this group

    • The name "deployments.list" says "list": a word for reading.
    Description, as the server wrote it
    List retained deployments across the owner's sites.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • dns.lookupLookup public TON DNS status and records for a .ton name.No findings

    Why it is in this group

    • The name "dns.lookup" says "lookup": a word for reading.
    Description, as the server wrote it
    Lookup public TON DNS status and records for a .ton name.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • domains.listList .ton domains owned by the authorized wallet.No findings

    Why it is in this group

    • The name "domains.list" says "list": a word for reading.
    Description, as the server wrote it
    List .ton domains owned by the authorized wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • domains.list_usernamesList .t.me Telegram Usernames owned by the authorized wallet, filtered by its domain delegation.No findings

    Why it is in this group

    • The name "domains.list_usernames" says "list": a word for reading.
    Description, as the server wrote it
    List .t.me Telegram Usernames owned by the authorized wallet, filtered by its domain delegation.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • domains.recordsRead DNS records for an owned .ton domain or .t.me Telegram Username.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read DNS records for an owned .ton domain or .t.me Telegram Username.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • mcp.access.listList MCP consents and redacted active sessions for the authenticated owner wallet.No findings

    Why it is in this group

    • The name "mcp.access.list" says "list": a word for reading.
    Description, as the server wrote it
    List MCP consents and redacted active sessions for the authenticated owner wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • mcp.audit.listList recent redacted MCP audit events for the authenticated owner wallet.No findings

    Why it is in this group

    • The name "mcp.audit.list" says "list": a word for reading.
    Description, as the server wrote it
    List recent redacted MCP audit events for the authenticated owner wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • mcp.audit.summaryReturn owner-scoped aggregate MCP audit metrics without raw headers or request bodies.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return owner-scoped aggregate MCP audit metrics without raw headers or request bodies.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • sites.get_contentRead the stored template/content metadata for an owned site.No findings

    Why it is in this group

    • The name "sites.get_content" says "get": a word for reading.
    Description, as the server wrote it
    Read the stored template/content metadata for an owned site.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • sites.listList TON Sites owned by the authorized wallet.No findings

    Why it is in this group

    • The name "sites.list" says "list": a word for reading.
    Description, as the server wrote it
    List TON Sites owned by the authorized wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • sites.list_domainsList the domains and current DNS status of an owned site.No findings

    Why it is in this group

    • The name "sites.list_domains" says "list": a word for reading.
    Description, as the server wrote it
    List the domains and current DNS status of an owned site. Accepts a site name or stable site ID and enforces site/domain delegation limits.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • sites.list_releasesList retained releases for an owned site.No findings

    Why it is in this group

    • The name "sites.list_releases" says "list": a word for reading.
    Description, as the server wrote it
    List retained releases for an owned site.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • sites.preflight_domainRead current ownership, DNS linkage and conflicts before attaching a .ton, .t.me or supported subdomain to an owned site.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read current ownership, DNS linkage and conflicts before attaching a .ton, .t.me or supported subdomain to an owned site. No mapping or DNS record is changed.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • storage.bag_detailsRead metadata and live state for an owned TON Storage bag.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read metadata and live state for an owned TON Storage bag.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • storage.list_bagsList TON Storage bags owned by the authorized wallet.No findings

    Why it is in this group

    • The name "storage.list_bags" says "list": a word for reading.
    Description, as the server wrote it
    List TON Storage bags owned by the authorized wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • storage.provider_funding_previewCalculate exact integer funding and coverage from a live provider session.No findings

    Why it is in this group

    • The name "storage.provider_funding_preview" says "preview": a word for reading.
    Description, as the server wrote it
    Calculate exact integer funding and coverage from a live provider session.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • storage.provider_operationRead and reconcile one paid TON Storage provider operation.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read and reconcile one paid TON Storage provider operation.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • storage.providersList backend-verified providers compatible with an owned TON Storage bag.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
    List backend-verified providers compatible with an owned TON Storage bag.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • subdomains.controlRead fresh collection authorization and parent-return state for the authenticated wallet.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read fresh collection authorization and parent-return state for the authenticated wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • subdomains.get_collectionRead a fresh collection snapshot when the authenticated wallet holds collection or parent rights.No findings

    Why it is in this group

    • The name "subdomains.get_collection" says "get": a word for reading.
    Description, as the server wrote it
    Read a fresh collection snapshot when the authenticated wallet holds collection or parent rights.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • subdomains.get_itemRead a Subdomain NFT item owned by the authenticated wallet.No findings

    Why it is in this group

    • The name "subdomains.get_item" says "get": a word for reading.
    Description, as the server wrote it
    Read a Subdomain NFT item owned by the authenticated wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • subdomains.list_collectionsList TON Subdomain collections controlled by the authenticated wallet.No findings

    Why it is in this group

    • The name "subdomains.list_collections" says "list": a word for reading.
    Description, as the server wrote it
    List TON Subdomain collections controlled by the authenticated wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • subdomains.list_itemsList TON Subdomain NFT items owned by the authenticated wallet.No findings

    Why it is in this group

    • The name "subdomains.list_items" says "list": a word for reading.
    Description, as the server wrote it
    List TON Subdomain NFT items owned by the authenticated wallet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • wallet.meReturn the authenticated MCP owner/actor wallet context.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return the authenticated MCP owner/actor wallet context.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • 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 0.2.6. Values in angle brackets are yours to fill in.

claude mcp add --transport http resistance-tools https://app.resistance.dog/api/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__resistance-tools__auth_status",
      "mcp__resistance-tools__auth_policy",
      "mcp__resistance-tools__wallet_me",
      "mcp__resistance-tools__mcp_access_list",
      "mcp__resistance-tools__mcp_audit_list",
      "mcp__resistance-tools__mcp_audit_summary",
      "mcp__resistance-tools__sites_list_domains",
      "mcp__resistance-tools__sites_preflight_domain",
      "mcp__resistance-tools__sites_list",
      "mcp__resistance-tools__sites_get_content",
      "mcp__resistance-tools__sites_list_releases",
      "mcp__resistance-tools__deployments_list",
      "mcp__resistance-tools__domains_list_usernames",
      "mcp__resistance-tools__dns_lookup",
      "mcp__resistance-tools__domains_list",
      "mcp__resistance-tools__domains_records",
      "mcp__resistance-tools__subdomains_list_collections",
      "mcp__resistance-tools__subdomains_list_items",
      "mcp__resistance-tools__subdomains_get_collection",
      "mcp__resistance-tools__subdomains_get_item",
      "mcp__resistance-tools__subdomains_control",
      "mcp__resistance-tools__storage_list_bags",
      "mcp__resistance-tools__storage_bag_details",
      "mcp__resistance-tools__storage_providers",
      "mcp__resistance-tools__storage_provider_funding_preview",
      "mcp__resistance-tools__storage_provider_operation"
    ],
    "ask": [
      "mcp__resistance-tools__sites_send_link_tx",
      "mcp__resistance-tools__dns_send_record_tx",
      "mcp__resistance-tools__dns_send_name_tx",
      "mcp__resistance-tools__dns_send_renew_tx",
      "mcp__resistance-tools__subdomains_create_collection_tx",
      "mcp__resistance-tools__subdomains_mint_tx",
      "mcp__resistance-tools__subdomains_recovery_tx",
      "mcp__resistance-tools__media_upload_image",
      "mcp__resistance-tools__storage_provider_funding_session",
      "mcp__resistance-tools__storage_provider_quote",
      "mcp__resistance-tools__storage_send_bag_link_tx",
      "mcp__resistance-tools__storage_create_bag",
      "mcp__resistance-tools__storage_pin_bag"
    ],
    "deny": [
      "mcp__resistance-tools__mcp_access_revoke_consent",
      "mcp__resistance-tools__sites_attach_domain",
      "mcp__resistance-tools__sites_unlink_domain",
      "mcp__resistance-tools__sites_publish_files",
      "mcp__resistance-tools__sites_publish_template",
      "mcp__resistance-tools__sites_rollback",
      "mcp__resistance-tools__sites_delete",
      "mcp__resistance-tools__dns_send_transfer_tx",
      "mcp__resistance-tools__subdomains_collection_action_tx",
      "mcp__resistance-tools__subdomains_transfer_item_tx",
      "mcp__resistance-tools__storage_send_provider_tx",
      "mcp__resistance-tools__storage_delete_bag"
    ]
  }
}

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 resistance-tools. Review it before you use it.