Unified Clawd Wallet Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Unified Clawd Wallet Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Claude's Lightweight Autonomous Wallet for Developers
A unified MCP server providing x402 payments, TAP identity verification, referral onboarding, and domain registration for Claude Code and other MCP clients.
git clone https://github.com/csmoove530/unified-clawd-wallet-mcp.git
cd unified-clawd-wallet-mcp
npm install && npm run buildCreate a new wallet (key in OS keychain, config at ~/.clawd/config.json):
# Option A: use the CLI (after npm link, see below)
clawd init
# Option B: run init via npm (no global install)
npm run initTo use the clawd command from any directory, run once from the project: npm link. Initialization is idempotent: running clawd init again does nothing unless you pass --force (which overwrites the existing wallet).
Add to ~/.claude.json:
{
"mcpServers": {
"clawd-wallet": {
"command": "node",
"args": ["/path/to/unified-clawd-wallet-mcp/dist/mcp-server/index.js"],
"env": {
"CLAWD_BACKEND_URL": "https://clawd-domain-backend-production.up.railway.app",
"CLAWD_TAP_MOCK_MODE": "true"
}
}
}
}Use the real path to dist/mcp-server/index.js. See Canton Network below for Canton setup.
You: "Check my wallet balance"
Claude: [calls x402_check_balance]
{
"success": true,
"balance": {
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f...",
"amount": "25.50",
"currency": "USDC",
"decimals": 6
}
}You now have a working CLAWD Wallet.
You: "What's my USDC balance?"Returns:
{
"success": true,
"balance": {
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f...",
"amount": "25.50",
"currency": "USDC",
"decimals": 6
}
}You: "Redeem referral code CLAWD2024"Returns:
{
"success": true,
"code": "CLAWD2024",
"amount": 15,
"currency": "USDC",
"txHash": "0x1234...abcd",
"recipientAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f...",
"explorerUrl": "https://basescan.org/tx/0x1234...abcd",
"message": "Successfully redeemed $15 USDC! Check your balance with x402_check_balance."
}You: "Search for domains with 'myproject'"Returns:
{
"query": "myproject",
"results": [
{ "domain": "myproject.dev", "available": true, "first_year_price_usdc": "14.99" },
{ "domain": "myproject.xyz", "available": true, "first_year_price_usdc": "4.99" },
{ "domain": "myproject.com", "available": false }
]
}You: "Buy myproject.xyz for John Doe, [email protected]"Claude will:
clawd_domain_purchase → Get payment detailsx402_payment_request → Execute USDC paymentclawd_domain_confirm → Register the domainReturns:
{
"success": true,
"domain": "myproject.xyz",
"status": "registered",
"expires": "2027-02-01",
"nameservers": ["ns1.porkbun.com", "ns2.porkbun.com"]
}You: "Verify my identity for premium merchants"Returns:
{
"success": true,
"status": "verified",
"agentId": "agent_abc123",
"identityLevel": "kyc",
"reputationScore": 50.0,
"message": "Identity verified at KYC level. Premium merchants will now accept your payments."
}| Tool | Description | Example |
|---|---|---|
x402_payment_request | Pay an x402-enabled service | "Pay $0.01 to https://api.example.com/data" |
x402_check_balance | Check USDC balance on Base | "What's my balance?" |
x402_get_address | Get wallet address for funding | "What's my wallet address?" |
x402_transaction_history | View recent payments | "Show my last 5 transactions" |
x402_discover_services | Find x402 services | "Find AI services I can pay for" |
| Tool | Description | Example |
|---|---|---|
x402_get_spending_controls | View current spend limits | "Show my spending limits" |
x402_update_spending_controls | Update per-transaction and daily limits | "Set my daily limit to $100" |
| Tool | Description | Example |
|---|---|---|
x402_redeem_referral | Redeem code for free USDC | "Redeem referral code CLAWD2024" |
| Tool | Description | Example |
|---|---|---|
tap_register_agent | Register with TAP registry | "Register my agent as 'My AI Assistant'" |
tap_verify_identity | Complete KYC/KYB verification | "Verify my identity at KYC level" |
tap_get_status | Check verification status | "What's my TAP status?" |
tap_revoke | Remove TAP credentials | "Remove my TAP verification" |
| Tool | Description | Example |
|---|---|---|
clawd_domain_search | Search available domains | "Search for domains with 'myapp'" |
clawd_domain_purchase | Start domain purchase | "Buy myapp.dev for John Doe" |
clawd_domain_confirm | Confirm after payment | (automatic after payment) |
clawd_domain_list | List your domains | "Show my domains" |
clawd_dns_list | List DNS records | "Show DNS records for myapp.dev" |
clawd_dns_create | Create DNS record | "Point myapp.dev to 192.0.2.1" |
clawd_dns_delete | Delete DNS record | "Delete the A record for myapp.dev" |
clawd_domain_nameservers | Update nameservers | "Use Cloudflare nameservers for myapp.dev" |
clawd_domain_auth_code | Get transfer auth code | "Get auth code to transfer myapp.dev" |
See Canton Network for setup and usage.
| Tool | Description | Example |
|---|---|---|
canton_configure | Create a new party or set existing party ID | "Configure Canton: create a new party with display name test-wallet" |
canton_check_balance | Check Canton Coin (CC) balance | "Check my Canton balance" |
canton_list_holdings | List all CIP-56 token holdings (UTXOs) | "List my Canton holdings" |
canton_get_party_info | Get party ID, validator URL, network | "Show my Canton party info" |
canton_transfer | Send CC to another party (needs recipient + amount) | "Transfer 10 CC to <recipient-party-id>" |
canton_transaction_history | View send/receive history | "Show my Canton transactions" |
1. "Redeem referral code CLAWD2024" → Get $15 USDC
2. "Check my balance" → Verify funds arrived
3. "Verify my identity" → Enable premium services
4. "Search for domains with 'myproject'" → Find a domain
5. "Buy myproject.xyz" → Purchase with USDC1. "Search for coolapp domains" → Find available options
2. "Buy coolapp.dev for Jane Doe" → Purchase domain
3. "Point coolapp.dev to 192.0.2.1" → Create A record
4. "Add www.coolapp.dev as alias" → Create CNAME record
5. "Show DNS for coolapp.dev" → Verify configuration1. "Find AI image services" → Discover services
2. "Generate an image of a sunset" → Pays automatically via x402
3. "Show my recent transactions" → Review paymentsCanton Network tools let you create parties, check balances, list token holdings, transfer Canton Coin (CC), and view transaction history.
Canton env vars (only needed for LocalNet or custom deployments):
CANTON_USE_LOCALNET=true # Use local Splice; omit for DevNet
CANTON_VALIDATOR_URL=http://127.0.0.1:2903/api/validator # LocalNet default
CANTON_LEDGER_API_URL=http://127.0.0.1:2975 # LocalNet default1. Create a party (required first)
You: "Configure Canton: create a new party with display name test-wallet"Returns:
{
"success": true,
"partyId": "test-wallet::12205301d046...",
"network": "localnet",
"validatorUrl": "<validator API base, e.g. http://127.0.0.1:2903/api/validator (local) or https://canton-devnet.digitalasset.com/api/v1 (DevNet)>",
"ledgerApiUrl": "<ledger API URL, e.g. http://127.0.0.1:2975 (local) or https://canton-devnet.digitalasset.com/ledger/v1 (DevNet)>"
}2. Check balance
You: "Check my Canton balance"3. List holdings
You: "List my Canton holdings"4. Transfer
You: "Transfer 10 CC to <recipient-party-id>"Requires recipient (full party ID) and amount.
5. Transaction history
You: "Show my Canton transactions"| Error | Cause | Fix |
|---|---|---|
Canton not configured | No party yet | Run canton_configure with displayName to create a party, or with partyId to use existing |
The requested resource could not be found | Validator URL wrong | Local: See CANTON_LOCALNET.md. Other: Set CANTON_VALIDATOR_URL in MCP env. |
Unexpected token '<', "<!DOCTYPE "... | Hitting HTML instead of API | Validator URL must be the API base, not the UI port (e.g. 2000). |
fetch failed / ECONNREFUSED | Canton not running or wrong URL | Local: Start Splice LocalNet. Other: Check validator and ledger URLs. |
Invalid recipient party ID format | Bad party ID | Use full party ID (e.g. name::1220...). |
Insufficient balance for transfer | Not enough CC | Check balance with canton_check_balance. |
No Canton signing key | No private key for transfers | Create party with canton_configure (no partyId) so key is stored, or configure with partyId + privateKey. |
| Error | Cause | Fix |
|---|---|---|
Configuration not found | Wallet not initialized | Run clawd init or npm run init (see Quick Start) |
No wallet found in keychain | Wallet not initialized or keychain denied | Run clawd init or npm run init; check OS keychain permissions |
Insufficient balance | Not enough USDC | Fund wallet or redeem referral code |
Transaction failed | Network or gas issue | Retry; check Base network status |
| Error | Cause | Fix |
|---|---|---|
Invalid referral code | Code doesn't exist | Check code spelling (case-insensitive) |
Code has already been redeemed | Code used up | Request a new code |
Code has expired | Past expiration date | Request a new code |
This wallet has already redeemed | One redemption per wallet | Cannot redeem again |
Treasury has insufficient balance | Treasury empty | Contact support |
| Error | Cause | Fix |
|---|---|---|
Not registered | No TAP agent | Call tap_register_agent first |
Already verified | Already have verification | Use tap_get_status to check level |
Verification failed | KYC/KYB rejected | Contact TAP registry support |
| Error | Cause | Fix |
|---|---|---|
Domain not available | Already registered | Try different TLD or name |
Invalid domain format | Bad characters in name | Use only a-z, 0-9, hyphens |
Payment verification failed | tx_hash invalid | Check transaction completed on Base |
Not authorized | Wallet doesn't own domain | Use wallet that purchased domain |
Backend connection failed | Backend unreachable | Check CLAWD_BACKEND_URL |
MCP Server:
# Required for domain features
CLAWD_BACKEND_URL=https://clawd-domain-backend-production.up.railway.app
# TAP configuration
CLAWD_TAP_REGISTRY=https://tap-registry.visa.com/v1 # Production
CLAWD_TAP_MOCK_MODE=true # Demo mode (no real registry)
# Referral system (operators only)
CLAWD_TREASURY_PRIVATE_KEY=0x... # Treasury wallet for payoutsBackend (Railway deployment):
PORKBUN_API_KEY=pk1_... # From porkbun.com/account/api
PORKBUN_SECRET=sk1_... # From porkbun.com/account/api
TREASURY_ADDRESS=0x... # Your wallet to receive domain payments
PUBLIC_URL=https://... # Your Railway deployment URL
DATABASE_URL=sqlite:////tmp/clawd_domains.db # Railway uses /tmp
ENVIRONMENT=production{
"mcpServers": {
"clawd-wallet": {
"command": "node",
"args": ["/path/to/unified-clawd-wallet-mcp/dist/mcp-server/index.js"],
"env": {
"CLAWD_BACKEND_URL": "https://clawd-domain-backend-production.up.railway.app",
"CLAWD_TAP_MOCK_MODE": "true"
}
}
}
}For Canton env vars, see Canton Network.
┌─────────────────────────────────────────────────────────────┐
│ Claude Code / MCP Client │
└─────────────────────────┬───────────────────────────────────┘
│ MCP Protocol (stdio)
▼
┌─────────────────────────────────────────────────────────────┐
│ CLAWD Wallet MCP Server (27 tools) │
│ ├─ Wallet: balance, payments, history │
│ ├─ Referral: code redemption │
│ ├─ TAP: identity verification │
│ ├─ Domains: search, purchase, DNS │
│ └─ Canton: balance, holdings, transfers │
└──────────┬──────────────────────┬──────────────┬────────────┘
│ │ │
│ USDC on Base │ HTTPS │ Canton Ledger API
▼ ▼ ▼
┌──────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Base Network │ │ Domain Backend │ │ Canton DevNet │
│ (x402 services) │ │ (Railway) │ │ (CIP-56) │
└──────────────────┘ └───────┬────────┘ └────────────────┘
│
▼
┌────────────────────┐
│ Porkbun API │
└────────────────────┘~/.clawd/tap/ with 0600 permissions# Build
npm run build
# Initialize wallet (creates key in keychain + ~/.clawd/config.json)
npm run init
# Or, after npm link: clawd init
# Use clawd init --force to overwrite an existing wallet
# Watch mode
npm run dev
# Run MCP server directly
node dist/mcp-server/index.js
# Run backend locally
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn src.main:app --port 8402 --reloadAny time you modify TypeScript source files, you must rebuild before the changes take effect:
npm run buildThen restart your MCP client (e.g. Claude Code) so it picks up the new server binary.
Tip: Use npm run dev (watch mode) during development to rebuild automatically on save. You still need to restart the MCP client to load the new binary.cd backend
railway login
railway init
railway up
# Set environment variables in Railway dashboard:
# PORKBUN_API_KEY, PORKBUN_SECRET, TREASURY_ADDRESS, PUBLIC_URL, DATABASE_URL# Rebuild the project
npm run build
# Check the path in your MCP config matches your actual install location
ls /path/to/clawd-wallet/dist/mcp-server/index.js~/.claude.jsonnode dist/mcp-server/index.jstx_hash format: 0x + 64 hex charactersReferral redemption requires a treasury wallet. For operators:
export CLAWD_TREASURY_PRIVATE_KEY=0x...See docs/API.md for complete tool input/output schemas.
Apache-2.0
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.