
Solana X402 Compliance
io.github.msantagiulianabPublished by GitHub account msantagiulianabv1.0.7Updated Oct 25, 2026
RFC 9110 x402 Solana compliance screening and micropayments gateway for AI agents.
Overview
Screens Solana addresses and transactions against sanctions and threat lists, settling x402 micropayments automatically through a payment gateway.
- What you can do
- Screen a Solana address against sanctions and threat intelligence, returning a verdict, risk score and flags, with the x402 micropayment negotiated and settled automatically on each call. Generate an immutable compliance report for a wallet address or transaction signature, which stays UNSCREENED until that identifier has been live-screened in the same session. Check the status, limits and settlement state of an x402 payment channel.
- When to use it
- Useful when an assistant needs on-demand Solana compliance checks or audit-style reports before transacting with a wallet, and when the caller is set up to pay per-call x402 micropayments through a gateway.
- Requirements
- Runs locally over stdio via npx, so Node.js is needed. It talks to a remote payment gateway; the gateway URL and channel id are set through the X402_GATEWAY_URL and X402_CHANNEL_ID environment variables. An optional X402_PRIVATE_KEY_SEED supplies the signing key material and otherwise falls back to a deterministic smoke-test seed.
Installation
In SourceWeft
- Open Solana X402 Compliance in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
x402 MCP Server
A lightweight, zero-bloat Model Context Protocol
(MCP) server that exposes the Solana Enterprise Payment Gateway's
POST /api/v1/compliance/screen-address endpoint as an autonomous tool for AI
agents (Claude Desktop, Cursor, VS Code Cline, ElizaOS).
The agent transparently negotiates and settles the x402 micro-payment on every
screen: it receives the HTTP 402 Payment Required challenge, signs an
Ed25519 channel voucher in-memory (Node.js built-in crypto, no Web3 SDK), and
retries with a PAYMENT-SIGNATURE header.
Standalone npm package
The server is published to the npm registry as a standalone package — no clone or build step is required to run it:
See package.json for the current version and metadata. The
package ships the compiled ESM dist/ bundle plus this README and the LICENSE.
Layout
Install & build
Run (stdio transport)
Environment variables:
X402_GATEWAY_URLandX402_CHANNEL_IDare injected by the MCP host (Claude Desktop, Cline, Smithery, etc.);X402_PRIVATE_KEY_SEEDis optional and defaults to the deterministic smoke-test payer.
The tool screen_solana_address:
- Description: Inspect a Solana address against sanctions and threat intelligence databases. Automatically negotiates and settles micro-payments via x402.
- Input:
address— a valid Base58 Solana public key (decodes to 32 bytes). - Output: formatted JSON text containing
verdict,riskScore,flags, and the evaluation timestamp.
The tool get_channel_status:
- Description: Retrieve current operational status, limits, and settlement state of a given x402 payment channel.
- Input:
channel_id— the unique identifier of the payment channel. - Output: formatted JSON text containing
status("ACTIVE"),currency("USDC"),network("solana-devnet"),capacity("10000.00"), andlastSettlementBlock.
The tool generate_compliance_report:
- Description: Generate an immutable audit summary report for a Solana wallet address or transaction signature against sanctions and threat intelligence logs.
- Input:
identifier— a Solana wallet address (32-byte Base58) or a transaction signature (64-byte Base58). - Output: formatted JSON text containing
complianceStatus("PASSED"|"FLAGGED"|"UNSCREENED"),riskScore(a number for screened identifiers,nullwhen unscreened),flags,sanctionsMatch,checkedLists([]when unscreened, otherwise["OFAC", "EU_SANCTIONS", "CHAIN_REPUTATION"]),lastEvaluated,evaluationTimestamp,timestamp, andreportId. The report fails closed: it references the session's in-memory screening ledger and returns"UNSCREENED"until the identifier has been live-screened viascreen_solana_address.
Architecture & Sync Workflow
This component is one of three independently deployable surfaces in the repository. Changes flow differently depending on where they live:
The backend and the MCP server deploy independently: a Java change does not require an
npm publish, and an MCP change does not require a VPS reload. Documentation and registry metadata (smithery.yaml) ship purely via GitHub.
smithery.yaml
smithery.yaml is the Smithery
registry manifest. It declares the stdio startCommand
(npx -y @msantagiulianab/x402-mcp-server) and exposes two configurable fields
— gatewayUrl and channelId — which map onto the X402_GATEWAY_URL and
X402_CHANNEL_ID environment variables. Updating it only requires a GitHub
push; the Smithery registry indexes it directly from the repository.
Tests
This compiles the project and runs:
base58.test.js— Base58 codec round-trips and 32-byte address validation.ed25519.test.js— golden-vector check that the canonical payload and Ed25519 signature exactly matchsmoke-test.sh/ the JVMPaymentVoucherlayout.x402-client.test.js— full 402→sign→retry negotiation against a mock gateway, with independent Ed25519 signature verification of the emitted voucher.mcp-server.test.js— spawns the real server and drives it with an MCP client over stdio (list tools + callscreen_solana_address).
Live verification against the running stack
With the Docker stack up (docker compose up -d --build):
This exercises the tool handler against http://localhost:8080:
- Clean address
4Nd1mBQtrMJVYVfKf2PJy9NZGibCcTRxpETqdrBHu19Y→CLEAR_TO_TRANSACT. - Flagged address
Fc1EwQUZyTEagaDvA1utHXCcZNyG1x2PLt2DfNu1cJdH→BLOCKED.
Client configuration
Claude Desktop
Add to claude_desktop_config.json:
macOS / Linux
Windows
VS Code Cline
Add to cline_mcp_settings.json:
Cursor
Add an MCP server entry (Settings → MCP) pointing at the same
npx -y @msantagiulianab/x402-mcp-server command with the environment
variables above.
ElizaOS
Register a stdio-based MCP client plugin using the same
npx -y @msantagiulianab/x402-mcp-server command; the tool
screen_solana_address becomes callable by the agent.
Source: agent-tools/mcp-server/README.md at commit 6b2749f
Tools
0Version history
1- v1.0.7LatestSep 23, 2026
Score
50% 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 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts