PlainText Wallet Approval Checker

io.github.Fizzl13Published by GitHub account Fizzl13v1.1.2Updated Nov 1, 2026

Explains wallet approvals and signature requests in plain language: SAFE, CAUTION or RISK.

The publisher's own server: Approval Studio

VerifiedStreamable HTTPWeb executableFinanceSecurity & Monitoring

Overview

AI-generated overview

Remote MCP server that checks an EVM wallet's token and NFT approvals and explains them in plain language with a SAFE, CAUTION or RISK verdict.

What you can do
  • Check a wallet's live token and NFT approvals and get a plain-language safety verdict with an explanation of who each spender is and which approvals to revoke
  • Explain an approval, permission or signature JSON payload you already have in plain language
  • Send structured bug reports or feature requests about the service
When to use it
Useful when an assistant needs to help someone judge whether a wallet's token or NFT approvals look risky, or to translate an approval or signature payload into plain language before signing.
Requirements
A remote streamable HTTP endpoint; no authentication, environment variables or headers are declared. The hosted service depends on third-party security and model APIs, and the README notes a free-tier cold start of roughly 30 to 50 seconds after idling.
Before you install
Wallet addresses you submit are sent to the hosted service and its upstream security and model providers; the README says checks are stateless and no user data is stored. Verdicts are advisory and come from third-party approval data, so treat them as a hint, not a guarantee, before signing or revoking anything. The feedback tool sends your report to the operators.

Installation

In SourceWeft

  1. Open PlainText Wallet Approval Checker 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.Fizzl13%2Fplaintext-wallet-checker/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": {
    "plaintext-wallet-approval-checker": {
      "type": "http",
      "url": "https://plaintext.fizzl.eu/mcp"
    }
  }
}

README

PlainText — wallet approval translator

[x402 payable] · Live status

Built on presign-guard: PlainText's verdicts now come from presign-guard (the same checks, sanctions list, wallet age and signed receipt); PlainText adds the explanation in plain language for people. POST /api/check-wallet ($0.04) uses presign-guard's approval audit, POST /api/explain ($0.03) its pre-sign check when the payload is a real approval, transaction or typed-data signature (anything else is explained by the model alone, source: "model"). Agents that only need the verdict and reason codes can call presign-guard directly ($0.01–$0.02). Needs FIZZL_INTERNAL_KEY (the same value on both services, Render only); without it the old path (GoPlus + Claude) runs.

A small Node.js app that looks up a wallet's token/NFT approvals via the GoPlus Security API and asks Claude to explain them in plain language.

[PlainText in a minute]

▶ Watch the 1-minute explainer · Live: https://plaintext.fizzl.eu

Project structure

plaintext-wallet/├── server.js          Express backend (GoPlus + Anthropic calls)├── media.js           Serves the explainer video from the explainer-video branch├── feedback.js        POST /feedback and the MCP tool feedback (same file in every Fizzl service)├── media/explainer/   Script and pipeline for the explainer video├── package.json├── render.yaml         Render deploy config (optional, see below)├── .env.example         Copy to .env for local dev└── public/    └── index.html      Frontend (wallet check + demo scenarios)

Feedback

Found a bug, or missing something? Send it with POST /feedback (free, no payment) or the MCP tool feedback:

bash
curl -X POST https://plaintext.fizzl.eu/feedback \  -H 'content-type: application/json' \  -d '{"type": "feature", "message": "Support Solana wallets", "endpoint": "/api/check-wallet"}'

type is bug, feature or other; message is required (up to 2000 characters); endpoint and contact are optional. The answer is 202 with an id. At most 10 reports per hour per caller. Reports go to the usage log, and a person reads every one; nothing in a report is run or changed automatically. GET /feedback shows the schema.

1. Run it locally first

bash
cd plaintext-walletnpm installcp .env.example .env# edit .env and paste your ANTHROPIC_API_KEYnpm start

Open http://localhost:3000 — try the "Try a sample" tab first (no API keys needed besides Anthropic), then "Check a wallet" with a real address once you're happy it works.

2. Deploy to Render

Option A — one-click via render.yaml (Blueprint)

  1. Push this folder to a new GitHub repo.
  2. In the Render dashboard: New + → Blueprint → select your repo. Render reads render.yaml automatically and creates the web service.
  3. When prompted, fill in the environment variables:
    • ANTHROPIC_API_KEY — required, from console.anthropic.com
    • GOPLUS_ACCESS_TOKEN — optional, only needed if you outgrow GoPlus's free 30 calls/minute limit (see console.gopluslabs.io)
  4. Click Apply — Render builds and deploys automatically.

Option B — manual web service (no render.yaml needed)

  1. Push this folder to a GitHub repo.
  2. Render dashboard → New + → Web Service → connect your repo.
  3. Settings:
    • Environment: Node
    • Build Command: npm install
    • Start Command: npm start
    • Instance Type: Free (fine for a prototype)
  4. Under Environment Variables, add ANTHROPIC_API_KEY (and optionally GOPLUS_ACCESS_TOKEN).
  5. Click Create Web Service. Render gives you a https://<name>.onrender.com URL once the build finishes.

Render's free tier spins the service down after inactivity — the first request after idling will take ~30-50 seconds to wake up. That's normal and fine for a prototype you're sharing for feedback.

Notes on the GoPlus integration

  • The wallet check calls token_approval_security or nft721_approval_security under https://api.gopluslabs.io/api/v2/.... This is documented but the GoPlus docs site is JS-rendered, so before you rely on this in front of real users, do one manual test call (e.g. with curl) against a wallet you control, and compare the actual JSON shape to what server.js expects — field names occasionally shift between GoPlus API versions.
  • The free GoPlus tier is capped at 30 calls/minute — plenty for early testing, but rate-limit errors will surface as a plain error message in the UI if you exceed it.
  • No user data is stored anywhere in this app — every check is a stateless round trip. If you later add accounts, saved wallets, or history, update this note (and your own privacy policy) accordingly.

Costs to expect

  • Render free tier: $0/month, with the cold-start behavior above. A paid tier ($7/month "Starter") removes the spin-down if this gets real usage.
  • Anthropic API: pay-per-use, billed to whatever key you provide. A single explanation call is small (well under 1K tokens), so cost per check will be a fraction of a cent — but keep an eye on your usage dashboard if this gets shared widely, since there's no rate limiting built into this prototype yet.

Source: README.md at commit 5081cea

Tools

3

check_wallet_approvals

Check Wallet Approvals

Check an EVM wallet's live token/NFT approvals and get a plain-language safety verdict (SAFE, CAUTION, or RISK) with an explanation. The verdict comes from presign-guard's approval audit (who each spender is, which to revoke).

Parameterskindchainaddressrequired

explain_approval

Explain Approval Payload

Explain an arbitrary approval/permission JSON payload in plain language, when you already have the data instead of needing an on-chain lookup.

Parametersdatarequired

feedback

Send feedback (free)

Report a bug, a missing feature or anything else about this service, in a structured way. Free. A person reads every report; nothing is run or changed automatically.

Parameterstypecontactmessagerequiredendpoint

Version history

4
  1. v1.1.2LatestOct 5, 2026
  2. v1.1.1Sep 28, 2026
  3. v1.1.0Sep 23, 2026
  4. v1.0.0Sep 22, 2026

Score

90% 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

    Declare a license in the repository or the registry entry.

Other Approval integrations