Resistance Tools

io.github.TONresistorPublished by GitHub account TONresistorv0.2.6Updated Oct 24, 2026

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

VerifiedStreamable HTTPWeb executableCloud & InfrastructureFinance

Overview

AI-generated overview

Remote MCP server for managing TON Sites, TON DNS names, subdomains and TON Storage from an AI assistant, with wallet-confirmed transactions.

What you can do
Check session authentication, wallet context, permissions and audit events, and revoke consents or sessions for the owner wallet. List owned TON Sites, read their content and releases, publish files or templates, roll back, delete, and attach, preflight or unlink domains. Look up and list .ton domains and .t.me usernames, read DNS records, and prepare mint, bid, renew, record and transfer transactions for wallet confirmation. Manage subdomain collections and items, including creation, minting, transfers and recovery. Upload images to the owner's media store and list TON Storage bags.
When to use it
Useful when you want an assistant to inspect and operate TON Sites, DNS names, subdomains or Storage for a wallet you control, while keeping every on-chain change behind a manual wallet confirmation page.
Requirements
A remote Streamable HTTP endpoint; no local package or runtime. OAuth login through the client, with permissions chosen on the wallet approval page. Access tokens last 15 minutes and refresh automatically; refresh tokens and consent last 30 days by default, or 24 hours when a sensitive permission is approved.
Before you install
The server acts on a TON wallet and can publish, roll back or delete sites, detach domains, transfer names and NFTs, and revoke consents. Deleting a site or removing its last domain requires explicit confirmation and delete scopes. Transactions are returned as confirmation pages the user must sign in their wallet; review each one. Audit and session listings are redacted but owner-scoped.

Installation

In SourceWeft

  1. Open Resistance Tools in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.TONresistor%2Fresistance-tools-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "resistance-tools": {
      "type": "http",
      "url": "https://app.resistance.dog/api/mcp"
    }
  }
}

README

Resistance Tools

One cross-client Agent Skill plus the remote Resistance Tools MCP for TON Sites, TON DNS, Subdomains, TON Storage, wallet access, and manually confirmed transactions.

Names

  • Marketplace/source: resistance-tools
  • Plugin and MCP server: resistance-tools-mcp
  • Agent Skill: resistance-tools-skill

Agent Skill

The plugin contains one resistance-tools-skill skill, invoked as $resistance-tools-skill. Its SKILL.md defines the shared workflow and loads only the relevant bundled reference for sites, domains, storage, wallet, or transactions.

Those references cover all 51 MCP tools, their permission boundaries and the read-back each workflow can actually perform. The live MCP schema remains canonical. Setup commands stay in this README rather than being duplicated in the skill.

The skill distinguishes root DNS records from child NFT records, public minting from collection administration, ADNL from Storage-backed publication, and platform Bag deletion from paid-provider state. Expired or uncertain wallet requests are never automatically replayed.

Plugin packages

  • Codex: .codex-plugin/plugin.json
  • Claude Code: .claude-plugin/plugin.json
  • Shared Agent Skills: skills/<name>/SKILL.md
  • Shared remote MCP connection: .mcp.json

Installing the repository as a plugin loads both the skills and the MCP dependency in clients that support the corresponding plugin format.

Install the plugin

The plugin installs the Agent Skill and registers the MCP server together.

Codex

bash
codex plugin marketplace add TONresistor/resistance-tools-mcp@maincodex plugin add resistance-tools-mcp@resistance-toolscodex mcp login resistance-tools-mcp

Claude Code

bash
claude plugin marketplace add TONresistor/resistance-tools-mcp@mainclaude plugin install resistance-tools-mcp@resistance-toolsclaude mcp login resistance-tools-mcp

The user selects permissions on the wallet approval page.

OAuth lifetime and recovery

Access tokens last 15 minutes and refresh automatically. Refresh tokens and consent last 30 days by default, or 24 hours when any sensitive permission is approved. Do not reconnect or reinstall for a normal access-token expiry.

The live server accepts a missing OAuth resource on refresh for compatibility with Codex stable, while still binding the new token to the canonical MCP resource. It also tolerates concurrent refreshes from Codex processes sharing credentials without one process revoking the others. Run codex mcp login resistance-tools-mcp only for invalid_grant, an explicit authorization request, revoked/expired consent, or missing credentials.

Replace 0.2.2 or earlier, or remove the retired MCP alias

Use this migration if an earlier Resistance Tools version was installed, if the marketplace already exists from another source, or if the configured MCP name is still resistance-tools. The name proves that the retired local entry exists; invalid_target alone does not. If the configured MCP is already resistance-tools-mcp, preserve it. If an entry is already absent during migration, continue with the remaining commands.

Codex:

bash
codex mcp logout resistance-toolscodex mcp remove resistance-toolscodex mcp logout resistance-tools-mcpcodex mcp remove resistance-tools-mcpcodex plugin remove resistance-tools@resistance-toolscodex plugin remove resistance-tools-mcp@resistance-toolscodex plugin marketplace remove resistance-toolscodex plugin marketplace add TONresistor/resistance-tools-mcp@maincodex plugin add resistance-tools-mcp@resistance-toolscodex mcp login resistance-tools-mcp

Claude Code:

bash
claude mcp logout resistance-toolsclaude mcp remove resistance-toolsclaude mcp logout resistance-tools-mcpclaude mcp remove resistance-tools-mcpclaude plugin uninstall resistance-tools@resistance-toolsclaude plugin uninstall resistance-tools-mcp@resistance-toolsclaude plugin marketplace remove resistance-toolsclaude plugin marketplace add TONresistor/resistance-tools-mcp@mainclaude plugin install resistance-tools-mcp@resistance-toolsclaude mcp login resistance-tools-mcp

Update 0.2.3 or later

Refresh the Git marketplace and reinstall the plugin cache to pick up the current skill, including documentation updates that retain the remote server version. Start a new chat afterward so the client discovers the refreshed skill. Updating documentation does not require reconnecting an otherwise valid OAuth session.

Codex:

bash
codex plugin marketplace upgrade resistance-toolscodex plugin remove resistance-tools-mcp@resistance-toolscodex plugin add resistance-tools-mcp@resistance-tools

Claude Code:

bash
claude plugin marketplace update resistance-toolsclaude plugin update resistance-tools-mcp@resistance-tools

MCP-only connection

These commands connect the tools only; they do not install the bundled skills.

Codex

bash
codex mcp add resistance-tools-mcp --url https://app.resistance.dog/api/mcpcodex mcp login resistance-tools-mcp

Claude Code

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

The user selects permissions on the wallet approval page.

Other clients

Add https://app.resistance.dog/api/mcp as a Streamable HTTP MCP server and use the client's native OAuth flow.

main is the stable branch used for installation and releases. Development happens on dev.

License

MIT

Source: README.md at commit b239d49

Tools

51

auth.status

MCP auth status

Return whether this MCP session is authenticated.

Takes no parameters.

auth.policy

MCP auth and safety policy

Return public MCP auth flows, scopes, safety controls, retention, and confirmation rules.

Takes no parameters.

wallet.me

Wallet context

Return the authenticated MCP owner/actor wallet context.

Takes no parameters.

mcp.access.list

List MCP access

List MCP consents and redacted active sessions for the authenticated owner wallet.

Takes no parameters.

mcp.audit.list

List MCP audit events

List recent redacted MCP audit events for the authenticated owner wallet.

ParameterslimitsincemethodresultStatus

mcp.audit.summary

Summarize MCP audit events

Return owner-scoped aggregate MCP audit metrics without raw headers or request bodies.

ParameterswindowHourstopMethodsLimit

sites.list_domains

List domains attached to a site

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.

Parameterssiterequired

sites.preflight_domain

Check a domain before attaching 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.

Parameterssiterequireddomainrequired

sites.attach_domain

Attach a domain to an owned site

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.

ParameterssiterequireddomainrequiredconfirmSiterequiredconfirmDomainrequiredexpectedConflictSiteIdconfirmDeleteSourceSiteId

sites.list

List TON Sites

List TON Sites owned by the authorized wallet.

Takes no parameters.

sites.get_content

Get site template content

Read the stored template/content metadata for an owned site.

Parameterssiterequired

sites.list_releases

List site releases

List retained releases for an owned site.

Parameterssiterequired

sites.publish_files

Publish site files

Deploy or update an owned TON Site from explicit file contents.

Parameterssiterequiredfilesrequired

sites.publish_template

Publish template site

Validate, render, and publish a template-based TON Site.

Parameterssiterequiredcontenttemplaterequired

sites.rollback

Rollback site

Rollback an owned TON Site to a retained release.

ParameterssiterequiredreleaseIdrequiredconfirmSiterequired

sites.delete

Delete site

Delete an owned TON Site deployment and served files.

ParameterssiterequiredconfirmSiterequired

deployments.list

List deployments

List retained deployments across the owner's sites.

Takes no parameters.

domains.list_usernames

List owned Telegram Usernames

List .t.me Telegram Usernames owned by the authorized wallet, filtered by its domain delegation.

Takes no parameters.

dns.send_transfer_tx

Create domain transfer confirmation link

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.

ParametersdomainrequirednewOwnerrequired

dns.lookup

Lookup TON DNS name

Lookup public TON DNS status and records for a .ton name.

Parametersnamerequired

domains.list

List owned domains

List .ton domains owned by the authorized wallet.

Takes no parameters.

domains.records

Read domain records

Read DNS records for an owned .ton domain or .t.me Telegram Username.

Parametersdomainrequired

dns.send_record_tx

Create DNS record confirmation link

Revalidate indexed ownership and return one HTTPS page where the user reviews and confirms the exact TON DNS record transaction.

ParameterskindrequiredvaluedomainrequiredkeyNamevalueKindrawCategory

dns.send_name_tx

Create TON DNS name confirmation link

Return one HTTPS page for a validated .ton mint, auction bid, or expired-name release transaction.

Parametersactionrequireddomainrequired

dns.send_renew_tx

Create TON DNS renewal confirmation link

Revalidate one to four owned .ton names and return one HTTPS page for a single TON Connect multi-message confirmation.

Parametersdomainsrequired

subdomains.list_collections

List owned Subdomain collections

List TON Subdomain collections controlled by the authenticated wallet.

Parameterslimitcursor

subdomains.list_items

List owned Subdomain items

List TON Subdomain NFT items owned by the authenticated wallet.

Parameterslimitcursor

subdomains.get_collection

Read Subdomain collection

Read a fresh collection snapshot when the authenticated wallet holds collection or parent rights.

ParameterscollectionAddressrequired

subdomains.get_item

Read owned Subdomain item

Read a Subdomain NFT item owned by the authenticated wallet.

ParametersitemAddressrequired

subdomains.control

Read Subdomain control state

Read fresh collection authorization and parent-return state for the authenticated wallet.

ParameterscollectionAddressrequired

subdomains.create_collection_tx

Create Subdomain collection confirmation link

Revalidate parent ownership, create collection metadata, and return one HTTPS transaction confirmation page.

ParametersmoderequiredminCharsrequiredpriceGridrequiredparentAddressrequired

subdomains.mint_tx

Create Subdomain mint confirmation link

Revalidate availability and access, build metadata, and return one HTTPS mint or pending-mint confirmation page.

ParameterslabelrequiredparentrequiredcollectionAddressrequiredsetWalletToMinter

subdomains.collection_action_tx

Create Subdomain action confirmation link

Revalidate current collection or parent rights and return one HTTPS management transaction confirmation page.

ParameterslabelactionrequiredwalletallowednewAdminreservedaccessModecollectionAddressrequired

subdomains.transfer_item_tx

Create Subdomain transfer confirmation link

Revalidate current NFT ownership and return one HTTPS Subdomain item transfer confirmation page.

ParametersnewOwnerrequireditemAddressrequired

subdomains.recovery_tx

Create Subdomain recovery confirmation link

Re-derive an owned collection and return one HTTPS page for its deployment or resolver recovery transaction.

ParametersmoderequiredactionrequiredparentAddressrequired

media.upload_image

Upload template image

Upload one PNG, JPEG, GIF, or WebP image to the authenticated owner's template media store.

ParameterscontentBase64required

storage.list_bags

List TON Storage bags

List TON Storage bags owned by the authorized wallet.

Takes no parameters.

storage.bag_details

Read TON Storage bag details

Read metadata and live state for an owned TON Storage bag.

ParametersbagIdrequired

storage.providers

List paid Storage providers

List backend-verified providers compatible with an owned TON Storage bag.

ParameterssortbagIdrequired

storage.provider_funding_session

Create provider funding session

Freeze a short-lived live provider and shared-balance snapshot for an owned bag.

ParametersbagIdrequiredproviderPubkeysrequired

storage.provider_funding_preview

Preview provider funding

Calculate exact integer funding and coverage from a live provider session.

ParametersbagIdrequiredsessionIdrequiredproofSpanSecondsrequiredtargetCoverageSecondsrequired

storage.provider_quote

Create provider quote

Create the signed backend quote that will be revalidated before a provider confirmation link is returned.

ParametersbagIdrequiredsessionIdrequiredproofSpanSecondsrequiredtargetCoverageSecondsrequired

storage.provider_operation

Read provider operation

Read and reconcile one paid TON Storage provider operation.

ParametersproviderOperationIdrequired

storage.send_provider_tx

Create paid Storage provider confirmation link

Revalidate the live contract, providers, shared balance, and exact amount before returning one HTTPS pin, top-up, stop, or withdraw confirmation page.

ParametersbagIdrequiredactionrequiredquoteIdproviderPubkeytargetCoverageSecondsacknowledgeOtherProviders

storage.create_bag

Create TON Storage bag

Create and seed a new TON Storage bag from explicit file contents.

Parametersnamefilesrequired

storage.pin_bag

Pin TON Storage bag

Pin/import an existing public TON Storage bag by bag id.

ParametersnamebagIdrequired

storage.delete_bag

Delete TON Storage bag

Delete an owned TON Storage bag reference and remove platform-seeded bytes when safe.

ParametersbagIdrequiredconfirmBagIdrequired

Version history

1
  1. v0.2.6LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts