twzrd-mcp-server / twzrd-mcp — pre-spend seller reputation for Solana x402
Check a seller wallet and requested resource before you pay over Solana x402. Free tools return allow / warn / block; optional paid tools buy deeper reputation evidence or a signed V6 receipt with explicit spend caps. TWZRD scores observed wallet and payment behavior. It does not prove a person, company, or autonomous agent identity.
Prefer the zero-install hosted Agent Intelligence MCP. Use this package only when you want local auto-pay for paid intel.
// Recommended — 22 tools, no wallet, nothing to install
{ "mcpServers": { "twzrd": { "url": "https://intel.twzrd.xyz/mcp" } } }
# Local auto-pay client — 6 tools; wallet only if you enable paid calls
npx -y twzrd-mcp-server # Node
pip install twzrd-mcp # Python
- npm (Node):
twzrd-mcp-server - PyPI (Python):
twzrd-mcp - Agent Intelligence: https://intel.twzrd.xyz · repo: twzrd-sol/twzrd-trust
Which surface do I want?
| Surface | Tools | Wallet | Use when |
|---|---|---|---|
https://intel.twzrd.xyz/mcp (hosted) |
22 | No | Default. Seller preflight, resource evaluation, reputation, receipts, watches, and observed-market research. |
twzrd-mcp-server / twzrd-mcp (this package) |
5 | Only for paid | You want quick_trust / full_trust auto-paid locally with caps. |
Start with hosted twzrd_demo_gate for a zero-setup, no-spend transcript of
the block path: a recorded example, not a live run. The hosted MCP is also listed on Smithery.
The 6 local client tools
| Tool | Cost | What |
|---|---|---|
preflight |
free | allow / warn / block + trust score for a seller you're about to pay |
merchant_card |
free | seller graph card — wash_flagged: true → don't pay (locked sequence step 2) |
wallet_lookup |
free | facilitators + counterparty breadth for a wallet |
verify_receipt |
free | offline-verify a wallet's cNFT receipt (Ed25519 vs genesis authority 2ELSDxLkb7dYrN6EUG69tNtULAq4Fo7WPvXyrZPmuFif) — trust no server |
quick_trust |
$0.001 | quick tier + score for any wallet |
full_trust |
$0.05 | full trust intel + signed V6 receipt |
quick_trust/full_trustbuy intel on any wallet (you look risky ones up on purpose) — they don't refuse a target. Usepreflightto vet a wallet you're about to pay elsewhere.
Happy path (seller-first)
- Free
preflighton the seller's receive wallet. block→ don't pay. Done, $0 spent.- Free
merchant_cardon the same wallet —wash_flagged: true→ don't pay. warn→ first paid hop is $0.001quick_trust. Optional V7: $0.05full_trust.allow+ clean card + small spend → pay. Keep the receipt; scores decay, so re-check stale decisions.
Install & config
Paid tools are opt-in on both runtimes: they sign only when you set
TWZRD_MCP_PAYMENTS_ENABLED=1 and provide a wallet key. For free tools, omit
both — the server runs read-only and never signs. Spend is bounded by per-call and
session caps.
Before any Solana signature the Node server runs twzrd-x402-gate@0.11.4 wash
default (Python twzrd-mcp 0.2.2 does the same merchant_card check on the 402
payTo): abort iff wash_flagged===true, and fail closed if intel cannot answer
(timeout, 5xx/429, unreadable body): an outage is never read as clean. That is
the paying-client brake, not a Path A shop.
Python — pip install twzrd-mcp
{ "mcpServers": { "twzrd": {
"command": "twzrd-mcp",
"env": {
"TWZRD_RPC_URL": "<your dedicated Solana RPC url>",
"TWZRD_WALLET_KEYPAIR": "/path/to/solana-keypair.json",
"TWZRD_MCP_PAYMENTS_ENABLED": "1",
"TWZRD_MAX_USDC_PER_CALL": "0.05",
"TWZRD_MAX_USDC_TOTAL": "1.00"
}
}}}
Node — npx -y twzrd-mcp-server
{ "mcpServers": { "twzrd": {
"command": "npx", "args": ["-y", "twzrd-mcp-server"],
"env": {
"TWZRD_RPC_URL": "<your dedicated Solana RPC url>",
"TWZRD_WALLET_SECRET_KEY": "<base58 Solana secret>",
"TWZRD_MCP_PAYMENTS_ENABLED": "1",
"TWZRD_MAX_USDC_PER_CALL": "0.05",
"TWZRD_MAX_USDC_TOTAL": "1.00"
}
}}}
| Env var | Default | Meaning |
|---|---|---|
TWZRD_MCP_PAYMENTS_ENABLED |
unset (off) | set 1 to arm paid tools — required on both runtimes |
TWZRD_WALLET_SECRET_KEY (Node) / TWZRD_WALLET_KEYPAIR (Python) |
— | signer for paid tools |
TWZRD_MAX_USDC_PER_CALL |
0.05 |
per-call spend cap |
TWZRD_MAX_USDC_TOTAL |
1.00 |
cumulative session spend cap |
TWZRD_RPC_URL |
none — required for paid tools | Solana RPC. Paid tools refuse to arm without it: the public RPC is rate-limited and loses x402 races (stale blockhash / sponsored feePayer between the 402 challenge and the signed retry), and a rejected settle can still move USDC. Free tools need no RPC. The Solana Foundation public endpoints (api.mainnet-beta, api.devnet and api.testnet .solana.com, trailing dots ignored) and any URL with a /public path segment are refused, by the Node server and by the Python client; other shared public RPCs are not detected, so choose a dedicated one. TWZRD_ALLOW_PUBLIC_RPC no longer enables a refused URL. The Python client also refuses hosts it cannot read exactly as the Node parser does: IDN hosts (Unicode or xn--), IPv4 not written as a dotted quad (such as 127.1), and hosts with unusual characters; give it an ASCII hostname. |
Safety
- Opt-in payments — paid tools sign only with
TWZRD_MCP_PAYMENTS_ENABLED=1; a wallet key alone never arms spending. - Spend caps — per-call and session caps enforced in the payment selector before any signature. Caps use the mint's true decimals, never merchant-declared
extra.decimals. A mismatched declaration is refused. A malformed cap env (e.g."$0.05") falls back to the default; it never becomes NaN and disables the cap. - Known-asset only — pay only known USD-pegged stables (USDC/USDT); unknown SPL mints are refused.
- Identifiable recipient — a challenge with no
payTois refused. - Solana-only — a non-
exact/ non-solana:challenge is refused, never mis-signed. - Single-shot retry — at most one signed retry per tool call; a second 402 is surfaced, not silently re-paid.
- Free tools never enter the payment path.
Verify receipts offline (trust no one)
full_trust returns a portable Ed25519-signed V6 receipt. Verify it without
trusting any TWZRD server — new receipts use issuer key
twzrd-receipt-ed25519-v2; legacy v1 keys remain verify-only during the
bounded compatibility rollout.
(Ak5SQwHpuQAqU7ty7ZWX7qgF39A9yi72c22KNn8sHzvS), pinned at
https://intel.twzrd.xyz/.well-known/twzrd-receipt-pubkey:
npx twzrd-receipt-verifier <receipt.json> --pubkey Ak5SQwHpuQAqU7ty7ZWX7qgF39A9yi72c22KNn8sHzvS
Development
npm run build && npm run demo lists tools and runs a free preflight from source
(no spend by default). For the operator-authorized $0.001 settle proof, set
TWZRD_DEMO_PAID=quick, provide a wallet key, and pin both caps to 0.001
(see examples/agent-drop-in.mjs).
Links: Agent Intelligence · hosted MCP · llms.txt · llms-full.txt · OpenAPI
License: MIT
Metadata
Release files for twzrd-mcp 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| twzrd_mcp-0.2.3.tar.gz | 11.4 kB | Without provenance | Details for twzrd_mcp-0.2.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| twzrd_mcp-0.2.3-py3-none-any.whl | Python 3 | none | any | Details for twzrd_mcp-0.2.3-py3-none-any.whl |
Total release size: 23.7 kB
Release files / twzrd_mcp-0.2.3.tar.gz
| Download URL | twzrd_mcp-0.2.3.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
05d6e523a518f3ed1ed6257b4cdaa0c44d8d57ffd2ad29458c06fbed1dc147b8
|
|
BLAKE2b-256 checksum How to use checksums |
1abae83cf6c6b117b169fcd8ab9034488d0eefd39fc3a7ee4bc356bdea0e37a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / twzrd_mcp-0.2.3-py3-none-any.whl
| Download URL | twzrd_mcp-0.2.3-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4607c0d7d4763d556b7d6f222d5db3b7e7b43761b5f8b74f6b80079f7d6203aa
|
|
BLAKE2b-256 checksum How to use checksums |
ed80fe903daec68627b424542614d27d8d0531d2cc471db0c5d088fbec7b6196
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Security for twzrd-mcp 0.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.