Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Magneta Contract Risk

by Bosacksversion 0.1.1i★ –iRuns in the cloud
Registry nameio.github.Bosacks/magneta-contract-risk

Install

Overview

Description from the maker (original English)

Smart-contract risk reports for AI agents on 20 EVM chains, paid per call via x402 ($0.02 USDC).

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://x402.magneta.finance/mcp

Run this in your terminal

claude mcp add --transport http magneta-contract-risk https://x402.magneta.finance/mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "magneta-contract-risk": {
      "url": "https://x402.magneta.finance/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "magneta-contract-risk": {
      "type": "http",
      "url": "https://x402.magneta.finance/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://x402.magneta.finance/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account Bosacks, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Otheri

  • More stars than 0% of the other 32706 servers in this category
  • Published to the registry more recently than 65% of the other 32706 servers in this category
  • Basic checks equal to or better than 100% of the other 32706 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Magneta Contract Risk safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.1) reached the registry 20 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, Kanal Varna — drains, leaks & plumbing (Varna, BG)

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated 2 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Magneta Contract Risk (x402)

A small production-oriented service that sells an on-chain smart-contract risk report to AI agents, paid per call with x402 micropayments (USDC, EIP-3009 exact scheme). One express process, two paid surfaces:

SurfaceRoutePrice
HTTPGET /v1/risk/:chainId/:address$0.01
MCP (Streamable HTTP, stateless)POST /mcp, tool contract_risk_summary(chainId, address)$0.01
MCPtool supported_chainsfree
HealthGET /healthfree
OpenAPIGET /openapi.jsonfree

Both paid surfaces call the same analyzeContract(chainId, address) in src/risk/analyze.ts. The analysis is deterministic and uses public data only (RPC, Blockscout, Sourcify, a local aderyn binary). No LLM, no API key for analysis. Unknown chain or malformed address returns 400 *before* any payment is requested. If the analysis itself fails (not a contract, upstream error, timeout) the response is an error status and the buyer is not charged (x402 only settles successful responses).

Supported chains (v1, src/chains.ts): Base 8453, Base Sepolia 84532, Ethereum 1, Arbitrum One 42161. Override RPCs with RPC_URL_ .

Report

{ chainId, address, analyzedAt, isContract, bytecodeSize, proxy, erc20, opcodes, selectors: { found },

blockscout, sourcify?, aderyn, score, level, flags, notes }

  • proxy: { type, implementation, admin? } from EIP-1967 (implementation/admin/beacon), legacy zeppelinos slot, EIP-1822, EIP-1167 clones, or Blockscout's detection. The implementation bytecode is analysed too.
  • erc20: name, symbol, decimals, totalSupply, owner() (and whether it is the zero address), paused(). Each probe is individually try/catch.
  • opcodes: SELFDESTRUCT / DELEGATECALL presence from a real opcode walk that skips PUSH data (no substring matching).
  • selectors.found: risky signatures (mint, pause, blacklist, fee/tax setters, upgrade, ownership...) whose 4-byte selector appears as a PUSH4 in the bytecode. Heuristic: presence is not proof of reachability (also stated in notes).
  • blockscout / sourcify: verification status, compiler, contract name, creator and creation tx. Blockscout has a 5 s timeout; on failure blockscout: { available: false }. Sourcify is only queried as a fallback when Blockscout is unreachable or reports "unverified". For proxies, the implementation's verification is what counts.
  • aderyn: when verified Solidity source is available, sources are written to a temp dir (sanitised paths) and aderyn runs with a 15 s timeout: { ran, counts: { high, low }, top: [{ title, severity, instances }] }, else { ran: false, reason }. It never fails the request.
  • Total budget: hard deadline 24 s per analysis. Results are cached in memory for 10 minutes per chainId+address (the payment still happens on every call).
Score rubric (src/risk/score.ts)

Score 0..100, higher = riskier, additive, capped at 100.

PointsCondition
+25logic contract source not verified (Blockscout, then Sourcify)
+0 (flagged)verification unknown because every provider was unreachable
+15proxy / upgradeable
+10owner() exists and is not the zero address
+15mint selector
+15blacklist / bot-list selector
+10fee / tax / limit / trading-switch setters
+5 (+5 if currently paused)pause selector
+10SELFDESTRUCT opcode
+5 each, max +20aderyn high-severity findings

Level: 0-24 low, 25-49 medium, 50-74 high, 75-100 critical. A non-contract address is an error, not a score. The score is a triage signal, not an audit.

Supported chains

Mainnets: Ethereum (1), OP Mainnet (10), BNB Smart Chain (56), Gnosis (100), Unichain (130), Polygon (137), Sonic (146), World Chain (480), Mantle (5000), Base (8453), Arbitrum One (42161), Celo (42220), Avalanche C-Chain (43114), Linea (59144), Blast (81457), Scroll (534352). Testnets: Base Sepolia (84532), Sepolia (11155111), OP Sepolia (11155420), Arbitrum Sepolia (421614). Chains without a Blockscout instance (BNB, Sonic, Mantle, Avalanche) rely on Sourcify for verified sources. zkSync Era is excluded on purpose: EraVM bytecode defeats the opcode and selector heuristics. Compiler remappings from Blockscout or Sourcify are written to remappings.txt so aderyn can resolve @openzeppelin/...-style imports.

Errors

Machine-readable description: GET /openapi.json (OpenAPI 3.1, free). Error bodies are JSON with an error code.

StatuserrorWhenRouteCharged?
400unsupported_chainchainId is not in the supported list (body carries supportedChains)bothno (answered before the 402 challenge)
400invalid_addressaddress is not 0x + 40 hex charactersbothno (answered before the 402 challenge)
402n/aPayment required: base64 x402 challenge in the PAYMENT-REQUIRED header (USDC, exact scheme)paidno, it is the price quote
422not_a_contractthe address has no contract code on that chain (EOA)bothno
429rate_limitedmore than 30 requests per minute from one IP (retryAfterSeconds, Retry-After header)free /v1/flags onlyn/a (free)
502analysis_failedan upstream data source (RPC, explorer) failedbothno
504timeoutthe analysis exceeded its 24 s budgetbothno

Only a 200 response is settled. Over MCP, the same failures return an isError result with an error message and are not charged.

Payment networks

Buyers pay in USDC on Base (eip155:8453). When SOLANA_PAY_TO is set, the same routes and tools also accept USDC on Solana mainnet (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp), settled by the same Coinbase CDP facilitator, which pays the Solana fees. The Solana receiving address must already own a USDC token account (the SDK does not create it). pnpm buy-once-svm pays one call from a Solana keypair (SVM_PRIVATE_KEY, base58 64-byte secret key).

Free tier, agent skill and client package

  • Free preview: GET /v1/flags/:chainId/:address and the MCP tool contract_quick_flags return the bytecode-only part of the report (proxy, owner/pause state, risky selectors, opcodes, partial score) with no payment. Rate-limited to 30 requests per minute per IP. Source verification and aderyn findings are only in the paid report.
  • Agent skill: npx skills add Bosacks/magneta-risk-x402 --skill magneta-contract-risk installs skills/magneta-contract-risk/SKILL.md, which teaches an agent when and how to buy a report over HTTP, MCP or a Coinbase Agentic Wallet.
  • Client package: @magnetafinance/contract-risk (npm i @magnetafinance/contract-risk @x402/core@2.28.0 @x402/evm@2.28.0 @x402/fetch@2.28.0 viem@2.57.7, source in packages/contract-risk-client) wraps the x402 payment flow in a typed client and ships tool adapters for LangChain.js, the Vercel AI SDK and OpenAI/Anthropic function calling.
  • ElizaOS plugin: packages/plugin-elizaos (@magnetafinance/plugin-contract-risk) adds the actions CONTRACT_QUICK_FLAGS (free) and CONTRACT_RISK_REPORT (paid, capped per payment) to an Eliza agent.
  • ERC-8004 identity: the registration file erc8004/agent-registration.json is served at /.well-known/agent-registration.json; scripts/erc8004-register.ts prints the register(string) call for the Base IdentityRegistry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432.

Run

pnpm install --ignore-scripts

cp .env.example .env.local # fill PAY_TO, X402_NETWORK, FACILITATOR_URL (+ CDP keys if cdp) pnpm dev # tsx, or: pnpm build && pnpm start pnpm type-check && pnpm test # unit tests, no network pnpm analyze 84532 0x036CbD53842c5426634e7929541eC2318f3dCF7e # free local run, prints the report

Buying (needs a funded buyer key, spend cap $0.01 = the price; never put this key on the server):

BUYER_PRIVATE_KEY=0x... pnpm buy-once        # HTTP; prints the report and the PAYMENT-RESPONSE tx hash

BUYER_PRIVATE_KEY=0x... pnpm buy-once-mcp # same through the MCP tool

Environment

  • PUBLIC_URL (https, no trailing slash): advertised as the MCP resource URL for Bazaar discovery. Behind a reverse proxy the server trusts the loopback proxy (trust proxy = loopback) so HTTP resource URLs are advertised as https://; without that, the facilitator rejects discovery with "resource must start with https://".
VarMeaning
PORTlistening port (default 3011)
PAY_TOreceiving address (required)
X402_NETWORKCAIP-2 network, default eip155:84532 (Base Sepolia); production: eip155:8453
FACILITATOR_URLcdp (Coinbase CDP facilitator, needs CDP_API_KEY_ID + CDP_API_KEY_SECRET) or an HTTP facilitator URL such as https://x402.org/facilitator (testnet)
ADERYN_BINaderyn 0.6.8 binary, default /home/dominique/bin/aderyn
RPC_URL_ optional RPC override per chain
BUYER_PRIVATE_KEY, TARGET_URL, MCP_URL, CHAIN_ID, ADDRESSbuyer scripts only

Deploy (systemd + Caddy)

pnpm install --ignore-scripts && pnpm build

rsync -a --exclude node_modules --exclude .env.local --exclude 'scripts/logs' ./ server:/srv/magneta/risk-x402/ # never overwrite the server's .env.local; then pnpm install --prod --ignore-scripts there sudo cp deploy/magneta-risk-x402.service /etc/systemd/system/ && sudo systemctl enable --now magneta-risk-x402

add deploy/Caddyfile.snippet to the Caddyfile (vhost x402.magneta.finance -> 127.0.0.1:3011), reload Caddy

The unit reads /srv/magneta/risk-x402/.env.local. For mainnet set X402_NETWORK=eip155:8453 and FACILITATOR_URL=cdp. Aderyn needs its solc download/cache available to the service user (HOME writable).

Bazaar discovery

Both paid surfaces declare x402 Bazaar discovery metadata with declareDiscoveryExtension from @x402/extensions/bazaar (HTTP route with path-parameter schema and output example; MCP tool with input schema), and the bazaarResourceServerExtension is registered on the resource server. The metadata appears in the PAYMENT-REQUIRED header (extensions.bazaar). Actual cataloguing depends on the facilitator: it indexes resources when it settles a payment, so the listing appears only after the first real paid call through a Bazaar-enabled facilitator (CDP). The public x402.org testnet facilitator is not expected to list it.

Production status (2026-10-16)

Live at https://x402.magneta.finance on Base mainnet (eip155:8453), Coinbase CDP facilitator, $0.01 per call, listed in the x402 Bazaar (route /v1/risk/:chainId/:address). Buyers need USDC on Base and no ETH. The facilitator rejects payments where the payer equals payTo (self_send_not_allowed).

License

MIT, Copyright (c) 2026 Magneta Finance. See LICENSE.

Ask PopNx