Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

ClawPay Escrow

Send and receive escrow payments on Solana using ClawPay. Pay other AI agents, lock funds in escrow, confirm delivery, release payments, check receipts, and...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 381 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description (Solana escrow payments) align with what the skill asks for: python, pip, and a Solana keypair. The primary credential (SOLANA_KEYPAIR_PATH) is appropriate for signing transactions.
Instruction Scope
SKILL.md instructs the agent to read the user's private keypair file (via SOLANA_KEYPAIR_PATH or common filesystem locations). Reading a keypair is necessary for signing transactions but is sensitive; the instructions also advise generating a key if not found. The agent is directed to search common paths beyond the declared env var, which is broader filesystem access than the single env var implies.
Install Mechanism
No formal install spec is provided; the doc tells users/agents to run `pip3 install clawpay` and references PyPI/GitHub. Installing a third‑party pip package is expected for an SDK but carries supply‑chain risk — the installer source should be trusted and verified.
Credentials
Only SOLANA_KEYPAIR_PATH is declared as the primary credential, which is proportionate. However, the instructions still direct checking multiple common keypair file locations (~/wallet.json, ~/.config/solana/id.json, etc.), which expands file access. Access to the private key is required for the skill's function but is highly sensitive.
Persistence & Privilege
The skill is instruction-only and not always-enabled; it does not request persistent system privileges or to modify other skills. Default autonomous invocation is allowed but not combined with unusual privileges.
Scan Findings in Context
[no_code_to_scan] expected: The static scanner found nothing because the skill is instruction-only (SKILL.md only). That's expected; the security surface is the runtime instructions (reading key files, pip install).
Assessment
This skill appears coherent for making Solana escrow payments, but it needs access to your wallet private key and may install a Python package from PyPI. Before installing/using it: (1) verify you trust the referenced package/source (check the GitHub repo and PyPI package), (2) point SOLANA_KEYPAIR_PATH to a wallet with only the funds you are willing to risk (or use a separate test wallet / Devnet), (3) avoid letting the agent search common filesystem locations—set SOLANA_KEYPAIR_PATH explicitly so it doesn't probe your home directory, (4) prefer using a hardware wallet or limited-capability key if possible (note: this skill expects a file keypair), and (5) review on-chain program IDs/fees and run small test transactions first.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk973ws2tgv7hjrx3rqxdp5vdpx81n5zy

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

💰 Clawdis
Binspython3, pip3
Primary envSOLANA_KEYPAIR_PATH

SKILL.md

ClawPay — Escrow Payments for AI Agents

You can send and receive trustless escrow payments on Solana using ClawPay. This skill handles the full payment lifecycle: locking funds, confirming delivery, releasing payments, and checking receipts.

Setup

First, check if clawpay is installed:

pip3 show clawpay

If not installed:

pip3 install clawpay

The user's Solana wallet keypair is required. Check for it at the path in the SOLANA_KEYPAIR_PATH environment variable, or look for common locations:

  • ~/wallet.json
  • ~/.config/solana/id.json
  • ~/projects/clawpay/program-keypair.json

If no keypair is found, ask the user to provide one or generate one with solana-keygen new --outfile ~/wallet.json.

How ClawPay Works

ClawPay is a time-locked escrow protocol on Solana. Every payment follows this flow:

  1. T0 — Lock: Buyer locks SOL into an escrow account
  2. T1 — Deliver: Seller must deliver before the deadline, or funds auto-refund to buyer
  3. T2 — Verify: Buyer confirms delivery, or funds auto-release to seller after the window
  4. Settle: 98% goes to seller, 1% to ClawPay, 1% to referrer (if any)
  5. Receipt: Cryptographic receipt minted on-chain for both parties

No trust required between agents. The timeline enforces everything.

Core Operations

Pay Another Agent (Create Escrow)

When asked to pay an agent or buy a service:

from clawpay import Client
from solders.keypair import Keypair
from solders.pubkey import Pubkey

keypair = Keypair.from_json(open("KEYPAIR_PATH").read())
client = Client(keypair)

escrow = client.create_escrow(
    seller=Pubkey.from_string("SELLER_PUBKEY"),
    amount_sol=AMOUNT,
    delivery_secs=DELIVERY_TIME,       # seconds until delivery deadline
    verification_secs=VERIFICATION_TIME # seconds for dispute window (min 10)
)
print(f"Escrow created: {escrow.address}")
print(f"Amount: {escrow.amount_sol} SOL")
print(f"Delivery deadline: {escrow.t1}")
print(f"Verification ends: {escrow.t2}")

Default values if not specified:

  • delivery_secs: 600 (10 minutes)
  • verification_secs: 30 (30 seconds)
  • amount_sol: Ask the user — never assume an amount

Confirm Delivery (As Seller)

When you've completed a service and need to confirm delivery:

from clawpay import Client
from solders.keypair import Keypair
from solders.pubkey import Pubkey

keypair = Keypair.from_json(open("KEYPAIR_PATH").read())
client = Client(keypair)

escrow_address = Pubkey.from_string("ESCROW_ADDRESS")
client.confirm_delivery(escrow_address, keypair)
print("Delivery confirmed. Waiting for verification window.")

Release Funds (After Verification)

After the verification window passes, anyone can trigger release:

client.auto_release(Pubkey.from_string("ESCROW_ADDRESS"))
print("Funds released to seller.")

Refund (Missed Delivery Deadline)

If the seller missed the delivery deadline:

client.auto_refund(Pubkey.from_string("ESCROW_ADDRESS"))
print("Funds refunded to buyer.")

Check Escrow Status

escrow = client.get_escrow(Pubkey.from_string("ESCROW_ADDRESS"))
print(f"Status: {escrow.status}")
print(f"Amount: {escrow.amount_sol} SOL")
print(f"Delivered: {escrow.delivered}")
print(f"Released: {escrow.released}")

Check Agent Reputation (Receipts)

receipts = client.get_receipts(Pubkey.from_string("AGENT_PUBKEY"))
print(f"Total transactions: {len(receipts)}")
for r in receipts:
    outcome = ["released", "refunded", "disputed"][r.outcome]
    print(f"  #{r.receipt_index}: {r.amount_sol} SOL — {outcome}")

Important Constraints

  • Minimum escrow: 0.05 SOL
  • Maximum escrow: 10.0 SOL
  • Minimum verification window: 10 seconds
  • Maximum delivery time: 30 days
  • Fee: 2% on settlement (1% ClawPay + 1% referrer)
  • Network: Solana Mainnet (default) or Devnet

Guardrails

  • NEVER create an escrow without confirming the amount with the user first
  • NEVER send funds without verifying the seller's public key
  • Always display the escrow address after creation — the user needs it
  • Always check escrow status before attempting release or refund
  • If a keypair file is not found, ask the user — do not guess
  • Report all errors clearly, especially insufficient balance errors
  • When checking reputation, mention both successful and failed transactions for honesty

Verification

After any transaction, you can verify on Solana Explorer:

Links

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…