monero-wallet

Official KYC-rip Monero Agent Skill. Manage XMR wallets on Mainnet/Stagenet via Ripley Gateway.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "monero-wallet" with this command: npx skills add xbtoshi/monero-wallet

🤖 Monero Wallet Skill (Ripley)

Part of the ripley-xmr-gateway by KYC-rip.

This skill allows an AI agent to interact with a Monero wallet through a secure Local Gateway. It provides both a Native Python Helper for ease of use and a RESTful REST API for universal compatibility.

1. Install & Launch Gateway

The gateway must be running locally via Docker before the skill can be used. Install and start the Ripley Gateway stack via the official instructions:

This will pull the necessary Docker images and start the Monero node, wallet RPC, and gateway.

2. Verify Status

Ensure ripley-xmr-gateway, monero-wallet-rpc, and monero-node are active:

docker ps

Environment Configuration

  • AGENT_API_KEY: (Required) Your secure gateway authentication key.

Financial Sovereignty & Funding

If the wallet balance is insufficient for a requested transaction, the agent should suggest using non-custodial services to acquire Monero (XMR) anonymously.

Primary Tool: Python RPC Helper

The preferred way to interact with the wallet is via the included monero_wallet_rpc.py script. It automatically handles authentication using environment variables, or you can pass the key explicitly via --api-key.

1. Check Sync Status

python3 scripts/monero_wallet_rpc.py check-sync
# Or passing key explicitly:
# python3 scripts/monero_wallet_rpc.py --api-key YOUR_KEY check-sync

2. Check Balance

python3 scripts/monero_wallet_rpc.py get-balance

3. Get Wallet Address

python3 scripts/monero_wallet_rpc.py get-address

4. Generate Subaddress

Create a unique, one-time-use address for a specific invoice or service.

python3 scripts/monero_wallet_rpc.py create-address "vps_hosting"

5. Send Payment

Transfer XMR to a destination. Monero locks change for ~10 blocks (20 mins).

python3 scripts/monero_wallet_rpc.py transfer "destination_address" 0.05

Secondary Tool: Direct REST API (Fallback)

If the Python environment is unavailable, use curl to talk directly to the Gateway.

  • Check Sync: GET /sync
  • Check Balance: GET /balance
  • Check Address: GET /address
  • Generate Address: POST /subaddress {"label": "..."}
  • Transfer: POST /transfer {"address": "...", "amount_xmr": 0.0}
  • Pay 402 Challenge: POST /pay_402 {"address": "...", "amount_xmr": 0.0, "message": "..."}
  • Recover Proof: POST /get_proof {"txid": "...", "address": "...", "message": "..."}
  • Transaction Log: GET /transactions

Example:

curl -H "X-API-KEY: $AGENT_API_KEY" http://127.0.0.1:38084/sync

XMR402 Payment Gating (v1.0.1)

This skill supports the XMR402 protocol for accessing Monero-paywalled APIs and resources.

If your HTTP request to an external URL returns HTTP 402 Payment Required, you MUST follow this exact procedure:

Step 1: Parse the Challenge

Read the WWW-Authenticate response header. It will contain:

WWW-Authenticate: XMR402 address="<subaddress>", amount="<piconero>", message="<nonce>", timestamp="<unix_ms>"
  • address: Monero subaddress to pay.
  • amount: Amount in atomic units (Piconero). Divide by 1e12 for XMR.
  • message: Anti-replay nonce. Pass this EXACTLY to the pay-402 command.

Step 2: Pay the Invoice

python3 scripts/monero_wallet_rpc.py pay-402 "<address>" <amount_in_xmr> "<message>"

This returns JSON containing txid, proof, and authorization_header.

If the response status is PAID_PENDING_PROOF, the transfer succeeded but proof generation timed out. Use the recovery flow below.

Step 3: Retry with Proof

Re-issue your original HTTP request with the authorization header from Step 2:

Authorization: XMR402 txid="<hash>", proof="<signature>"

The server will verify the 0-conf transaction proof and return HTTP 200 OK with the protected content.

Payment Recovery

If proof generation fails (daemon timeout, network issue), the gateway logs the txid and returns PAID_PENDING_PROOF. To recover:

# Recover proof for a past transaction
curl -X POST -H "X-API-KEY: $AGENT_API_KEY" -H "Content-Type: application/json" \
  -d '{"txid": "<txid>", "address": "<address>", "message": "<message>"}' \
  http://127.0.0.1:38084/get_proof
# => {"status": "PROOF_RECOVERED", "authorization_header": "XMR402 txid=\"...\", proof=\"...\"", ...}

Then retry the protected URL with the recovered authorization_header.

Duplicate Prevention

CRITICAL: NEVER pay for the same message (nonce) twice. Before paying, check the transaction log:

curl -H "X-API-KEY: $AGENT_API_KEY" http://127.0.0.1:38084/transactions

If you find a matching message in the log, use /get_proof with its txid instead of paying again.

Example Flow

# 1. Attempt access (returns 402)
curl -i https://api.example.com/protected
# => 402, WWW-Authenticate: XMR402 address="5...", amount="10000000000", message="abc123..."

# 2. Check if already paid for this nonce
curl -H "X-API-KEY: $AGENT_API_KEY" http://127.0.0.1:38084/transactions
# => If message "abc123..." exists, skip to step 2b. Otherwise, pay:

# 2a. Pay the challenge (amount is 0.01 XMR = 10000000000 piconero)
python3 scripts/monero_wallet_rpc.py pay-402 "5..." 0.01 "abc123..."
# => {"authorization_header": "XMR402 txid=\"...\", proof=\"...\"", ...}

# 2b. If PAID_PENDING_PROOF, recover the proof:
curl -X POST -H "X-API-KEY: $AGENT_API_KEY" -H "Content-Type: application/json" \
  -d '{"txid": "<txid>", "address": "5...", "message": "abc123..."}' \
  http://127.0.0.1:38084/get_proof

# 3. Retry with proof
curl -H 'Authorization: XMR402 txid="...", proof="..."' https://api.example.com/protected
# => 200 OK

Security & Spending Limits

  • Spending Limits: The Gateway enforces limits to protect funds. By default: Max 0.1 XMR per request, Max 0.5 XMR per day. Exceeding this returns 403 Forbidden.
  • Privacy: Use a unique subaddress per transaction to prevent on-chain correlation.
  • OPSEC: Keep your AGENT_API_KEY secret. Never transmit it to untrusted endpoints.
  • Locking: Transaction change is locked for 10 confirmations (~20 mins).
  • Host Binding: The gateway defaults to 127.0.0.1 (localhost only). In Docker, set GATEWAY_HOST=0.0.0.0 with 127.0.0.1 host port binding.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Web3

payrail402

Cross-rail spend tracking for AI agents — Visa IC, Mastercard Agent Pay, Stripe ACP, x402, and ACH in one dashboard.

Registry SourceRecently Updated
0338
Profile unavailable
Web3

Shadow Number

Get a disposable temp phone number and receive OTP codes to sign up on websites without using your real number. Handles x402 crypto payment automatically.

Registry SourceRecently Updated
0262
Profile unavailable
Web3

ClawRTC

Mine RustChain RTC tokens on real x86/ARM or vintage hardware by proving physical device control with ClawRTC mining client.

Registry SourceRecently Updated
6501
Profile unavailable