pay-for-service — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited pay-for-service (Agent Skill) and scored it 87/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 3 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
Use the npx [email protected] x402 pay command to call paid API endpoints with automatic USDC payment on Base.
three.ws runs two x402/payment stacks. Pick one deterministically: never settle a payment through a signing path the user didn't ask for.
okx-agent-payments-protocol): use only when the user names OKX/OnchainOS, or the 402 is one OKX handles specifically: a payment channel / voucher / session, permit2, upto/metered billing, MPP charge, or an a2a-pay paymentId. Hand off there and do not pay from here.npx [email protected] statusIf the wallet is not authenticated, refer to the authenticate-wallet skill.
npx [email protected] x402 pay <url> [-X <method>] [-d <json>] [-q <params>] [-h <json>] [--max-amount <n>] [--json]| Option | Description |
|---|---|
-X, --method <method> | HTTP method (default: GET) |
-d, --data <json> | Request body as JSON string |
-q, --query <params> | Query parameters as JSON string |
-h, --headers <json> | Custom HTTP headers as JSON string |
--max-amount <amount> | Max payment in USDC atomic units (1000000 = $1.00) |
--correlation-id <id> | Group related operations |
--json | Output as JSON |
X402 uses USDC atomic units (6 decimals):
| Atomic Units | USD |
|---|---|
| 1000000 | $1.00 |
| 100000 | $0.10 |
| 50000 | $0.05 |
| 10000 | $0.01 |
IMPORTANT: Always single-quote amounts that use $ to prevent bash variable expansion (e.g. '$1.00' not $1.00).
Before constructing the command, validate all user-provided values to prevent shell injection:
https:// or http://. Reject if it contains spaces, semicolons, pipes, backticks, or shell metacharacters.^\d+$).Do not pass unvalidated user input into the command.
Format validation is not intent confirmation. A URL that passes the regex can still be an unexpected endpoint charging an unexpected amount; the confirmation step below is mandatory regardless.
Paying an x402 endpoint spends real USDC irreversibly. Before running x402 pay you MUST render a confirmation card and stop for an explicit yes/no from the user. Never pay in the same turn you resolve the parameters.
| Field | Show |
|---|---|
| Endpoint URL | The exact URL being called |
| Method | GET / POST / etc. |
| Max amount | The --max-amount ceiling in USDC (always set one for untrusted endpoints) |
Rules:
--max-amount when the endpoint or price was not chosen directly by the user, so a payment can never exceed the confirmed ceiling.# Make a GET request (auto-pays)
npx [email protected] x402 pay https://example.com/api/weather
# Make a POST request with body
npx [email protected] x402 pay https://example.com/api/sentiment -X POST -d '{"text": "I love this product"}'
# Limit max payment to $0.10
npx [email protected] x402 pay https://example.com/api/data --max-amount 100000npx [email protected] status to check, see authenticate-wallet skill)npx [email protected] balance to check)search-for-service skill to find services firstawal auth login <email> first, or see authenticate-wallet skillsearch-for-service to find valid endpointsfund skill~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.