# /tasks - Proxies.sx Task Market (wallet-only, x402 USDC) > A first-party catalog of bounded infrastructure tasks an AI agent buys with just a wallet - no account, no API key, no signup. Pay USDC on Base (~2s) or Solana (~400ms) via the x402 protocol; the HTTP 402 response IS the quote. Plus the reverse rail: sell bandwidth into the network wallet-only and get paid in USDC. **WHAT:** Five live tasks, all fulfilled by our own production infrastructure: (1) multi-country egress over the peer network (~82 countries), (2) carrier-modem egress in 6 countries, (3) a dedicated mobile proxy port with SOCKS5 and a rotate URL, (4) free carrier-IP resets for that port, (5) the earn rail - sell bandwidth back into the network. This catalog is FIRST-PARTY ONLY; it lists no third-party services. **WHY:** x402 makes agents payable per invocation. Data gathering is the first task class agent markets externalize - an agent that can pay $0.40 for exactly the egress it needs never opens an account. Every task returns a deterministic contract: what you get, what it costs, and a machine-invokable remedy for every failure mode. **FIRST ACTION** - one curl, no auth, no payment. The 402 response is the full machine-readable quote: ```bash curl -s "https://api.proxies.sx/v1/x402/pool?tier=peer&traffic=1" ``` > **Precedence:** this skill.md is the canonical Task Market contract. The machine catalog is [/tasks/manifest.json](https://agents.proxies.sx/tasks/manifest.json). Deep per-product contracts: [/pool/skill.md](https://agents.proxies.sx/pool/skill.md) (pool tasks), [/marketplace/skill.md](https://agents.proxies.sx/marketplace/skill.md) (dedicated port), [/peer/skill.md](https://agents.proxies.sx/peer/skill.md) (earn rail) - those win over this file for their product. If any file disagrees with the live API, the live API wins. > **Already hold a Proxies.sx account API key?** The same egress is available API-first with deposited GB and no crypto - that is the standard Proxies.sx path; see the "Buy & Use With an API Key" section of [/skill.md](https://agents.proxies.sx/skill.md). The Task Market is deliberately its own wallet-only product for agents without accounts. **Base URL:** `https://api.proxies.sx` --- ## Live Task Catalog All prices verified against the live API on 2026-07-21. | # | Task | Method + Path | Price | Min spend | |---|------|---------------|-------|-----------| | 1 | Multi-country egress (peer tier, ~82 countries, residential + mobile IPs) | `GET/POST /v1/x402/pool?tier=peer&traffic=` | $4/GB, volume-discounted to $2.40/GB at 250 GB+ | 0.1 GB = $0.40 | | 2 | Carrier-modem egress (mbl tier, 6 countries: US, GB, FR, NL, PL, GE = Georgia) | `GET/POST /v1/x402/pool?tier=mbl&traffic=` | Same: $4/GB | 0.1 GB = $0.40 | | 3 | Dedicated mobile proxy port (pinned modem, own host:port, HTTP + SOCKS5, rotate URL) | `GET/POST /v1/x402/proxy?country=US&traffic=` | $4/GB (port + duration free) | 0.1 GB = $0.40 | | 4 | Carrier-IP reset for a purchased port | `GET /v1/rotate/:token` | FREE, 5-min cooldown | - | | 5 | EARN: sell bandwidth into the network | `POST /v1/peer/agents/register` | You earn a revenue share set by Proxies.sx and customized per partner - no fixed public percentage; live rate returned at registration in `earningsPerGB` - never trust a hardcoded $/GB figure. Min payout $5 | - | Volume discounts (single purchase, live from `/v1/x402/pool/pricing`): 25 GB+ 10%, 50 GB+ 20%, 100 GB+ 30%, 250 GB+ 40% (= $2.40/GB). Coverage is live data - read counts (never IPs) before targeting a country: ```bash curl -s https://api.proxies.sx/v1/gateway/pool/stock # per-pool, per-country endpoint counts curl -s https://api.proxies.sx/v1/x402/countries # mbl/dedicated-port countries with device counts ``` --- ## The Buy Loop (identical for tasks 1-3) Header names, exactly: payment proof goes in `Payment-Signature`; session management goes in `X-Session-Token`. ### Step 1 - Discover ```bash curl -s "https://api.proxies.sx/v1/x402/pool/pricing" # pool tier catalog + networks + username DSL curl -s "https://api.proxies.sx/v1/x402/pricing" # dedicated-port pricing + networks ``` ### Step 2 - Quote (the 402 IS the contract) Request the task without payment. Live `accepts[]` shape, captured 2026-07-21 from `GET /v1/x402/pool?tier=peer&traffic=1` (truncated): ```json { "x402Version": 1, "error": "Payment required to access this resource", "accepts": [ { "scheme": "exact", "network": "base", "maxAmountRequired": "4000000", "resource": "https://api.proxies.sx/v1/x402/pool", "payTo": "0xF8cD900794245fc36CBE65be9afc23CDF5103042", "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "maxTimeoutSeconds": 30 }, { "scheme": "exact", "network": "solana", "maxAmountRequired": "4000000", "payTo": "6eUdVwsPArTxwVqEARYGCh4S2qwW2zCs7jSEDRpxydnv", "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } ], "pool": { "tier": "peer", "pricePerGB": 4, "trafficGB": 1, "amountUSDC": 4, "stockUrl": "https://api.proxies.sx/v1/gateway/pool/stock", "management": { "credit": "GET /v1/x402/manage/pool/credit", "topup": "POST /v1/x402/manage/pool/topup", "usage": "GET /v1/x402/manage/pool/usage", "regenerate": "POST /v1/x402/manage/pool/regenerate", "connection": "GET /v1/x402/manage/pool/connection" } } } ``` How to read it: - `maxAmountRequired` is micro-USDC (6 decimals): `"4000000"` = $4.00 = 1 GB. `"400000"` = $0.40 = the 0.1 GB minimum. - `payTo` is the recipient wallet; `asset` is the USDC token contract/mint. Both are pinned - payment to any other address or token is rejected. - On POOL purchases, trust `accepts[].maxAmountRequired` / `payTo` / `asset` and the `pool` block; IGNORE `accepts[].outputSchema` (it is inherited from the dedicated-port product and describes that product, not the pool - per /pool/skill.md). - The purchase parameter is `traffic` (GB, 0.1 to 1000), not "gb". ### Step 3 - Pay USDC on-chain | Network | Chain id | Settlement | Gas | |---------|----------|-----------|-----| | Base (EVM) | `eip155:8453` | ~2 seconds | ~$0.01 | | Solana | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` | ~400ms | ~$0.0001 | Send the exact `maxAmountRequired` to `payTo`. A 2% underpay tolerance absorbs gas dust. The tx must be a direct on-chain USDC transfer, confirmed, less than 24 hours old. Pool purchases accept on-chain Base/Solana only; the dedicated port additionally accepts facilitator signed intents (EIP-3009). ### Step 4 - Retry with the payment proof ```bash curl -s "https://api.proxies.sx/v1/x402/pool?tier=peer&traffic=1" \ -H "Payment-Signature: YOUR_TX_HASH" ``` ### Step 5 - Receive credentials + session token Pool response (task 1/2): `proxy{host, httpPort, username, password(pak_*), http}`, `credit{allocatedGB, usedGB, remainingGB, expiresAt, enabled}`, `sessionToken (x402s_*)`, `manage{...}`, `payment{txHash, network, amountUSDC}`. Port response (task 3): `proxy{http, socks5, server, httpPort, socksPort, username, password, expiresAt}`, `rotationUrl`, `sessionId`, `portId`, `traffic{...}`, `management{sessionToken}`. **Persist three things:** the credential password, the `sessionToken`, and your tx hash. Verified purchases also return a `payment-response` header: base64 JSON `{"status":"settled","txHash":...,"network":...}`. ### Step 6 - Self-manage (`X-Session-Token: x402s_...`) | Task | Method + Path | What | |------|---------------|------| | 1/2 | `GET /v1/x402/manage/pool/credit` | Remaining GB, live metered | | 1/2 | `POST /v1/x402/manage/pool/topup` | More USDC (new tx hash in `Payment-Signature`) adds GB; re-enables a cap-suspended key. 5/min | | 1/2 | `GET /v1/x402/manage/pool/usage?days=30` | Per-day usage series | | 1/2 | `POST /v1/x402/manage/pool/regenerate` | New `pak_` secret, same username. 3/hour | | 1/2 | `GET /v1/x402/manage/pool/connection` | Re-emit full credentials | | 3 | `GET /v1/x402/manage/session` | Session details | | 3 | `GET /v1/x402/manage/session/credit` | Remaining credit | | 3 | `POST /v1/x402/manage/ports/replace` | Replace an offline port - FREE, max 3/session, new device. 5/min | | 3 | `POST /v1/x402/manage/ports/recreate` | Recreate a deleted port with remaining credit | | 3 | `POST /v1/x402/manage/session/topup` | Extend traffic ($4/GB, new tx) or duration (free, but the `Payment-Signature` header must still be present - any placeholder value). 5/min | ### Step 7 - Recover (no auth needed) ```bash GET /v1/x402/session/tx/:txHash # resolve any payment to its session GET /v1/x402/sessions/wallet/:wallet # all sessions bought by a wallet ``` Retrying the original purchase with the same `Payment-Signature` re-emits the SAME credentials and session token - a lost response never costs a second payment. --- ## Using a Pool Credential (tasks 1-2): username DSL summary Connect to `gw.proxies.sx:7000` as an HTTP proxy (CONNECT works for HTTPS targets), or `gw.proxies.sx:7001` as SOCKS5 - both work for the x402 pool credential too, metered identically (fixed 2026-07-25). The password is your `pak_*` key. The username is a `-`-delimited routing string, lowercased and split on `-`, so no token value may itself contain a hyphen: ``` psx_-{pool}-{country}[-sid-{8-64 a-z0-9_}][-rot-{sticky|hard|auto5|auto10|auto20|auto60|ondemand}][-carrier-..][-city-..] ``` - `pool`: `peer` or `mbl` (an mbl credential is quality-locked: `peer` routes are silently served from modems, by design). - `country`: 2-letter ISO or `any` - edit per request, same credential, no repurchase. - `sid`: session id, 8-64 chars `[a-z0-9_]`. Same sid returns to the same exit. - `rot`: rotation mode; `sticky`/`hard` pin, `auto5/10/20/60` re-pick on interval, `ondemand` re-picks per new connection. Gateway default when omitted: `auto10`. **Two sharp edges (the contract, not bugs):** 1. **Sticky pins the MODEM, not the IP.** Mobile carriers re-NAT egress IPs on their own cadence, so a perfectly pinned modem can still surface different exit IPs. For a held IP use the dedicated port (task 3) and control resets yourself, or prefer residential peer exits (home-ISP IPs hold for hours to days). 2. **`sticky`/`auto*` need a `-sid-`.** Without one, every connection starts a fresh synthetic session and nothing sticks across connections. And the token is `-sid-`, not `-session-`: unknown tokens are silently skipped, so `-session-` routes with zero stickiness. Full DSL (failover, ttl, isp, asn, pin tokens; error codes): /pool/skill.md. --- ## The Failure Contract (deterministic remedies, no disputes) | Failure | Remedy | Cost | |---------|--------|------| | Pool exit dies mid-workload | Automatic - gateway probes and routes around dead exits on the next pick; you are metered per delivered byte, so failures cost nothing | $0 | | Dedicated port offline | `POST /v1/x402/manage/ports/replace` - provisioned on a DIFFERENT device, max 3 per session | FREE | | Port expired/deleted, credit remains | `POST /v1/x402/manage/ports/recreate` | uses remaining credit | | GB cap reached | Auto-suspend within ~5-35s (no overage billing); `POST /manage/pool/topup` re-enables. No refunds of unused GB | top-up only | | Credential leaked | `POST /v1/x402/manage/pool/regenerate` - new secret, same username, same credit | FREE | | Purchase response lost | Retry with the same `Payment-Signature` - identical credentials re-emitted | $0 | | Everything lost except tx hash | `GET /v1/x402/session/tx/:txHash` (no auth) | $0 | | Paid but provisioning failed | API returns 200 with `sessionToken` + `recover.recreateEndpoint` - never a bare 500 that eats a payment | $0 | --- ## Trust Properties - **Replay protection is durable** - every redeemed tx hash is stored in MongoDB (unique-indexed mint hashes + indexed top-up hashes). One tx = one task; reuse returns 409, across restarts and across products (a hash spent on a pool credential cannot also buy a port). - **2% payment tolerance** on on-chain verification. - **Public receipts** - session-by-txHash and sessions-by-wallet lookups need no auth. - **Settlement receipt header** - `payment-response`: base64 JSON `{"status":"settled","txHash":...,"network":...}` on verified purchases. - **Direct settlement** - USDC moves from your wallet to ours on-chain. We never custody funds; there is no escrow layer and no balance we can freeze. --- ## EARN Rail (task 5) Sell bandwidth into the same network the buy-side tasks consume. Wallet-only: ```bash curl -s -X POST https://api.proxies.sx/v1/peer/agents/register \ -H "Content-Type: application/json" \ -d '{"name":"my-agent","type":"claude","walletAddress":"YOUR_SOLANA_ADDRESS"}' # Returns: deviceId, jwt (1h), refreshToken, relay URL, earningsPerGB (the LIVE rate), # throughputContract {minKBps, probeUrl, probeIntervalMin} ``` - **Rate:** Your payout is a revenue share set by Proxies.sx and customized per partner - there is no fixed public percentage; rates are configured by our team, can be tailored to you, and move with demand, paid NET in USDC on Solana. Always read your live per-GB rate from the `earningsPerGB` field returned at registration. Never hardcode it. - **Min payout:** $5 (agents). Payouts go ONLY to the registered wallet; wallet changes carry a 7-day cooling period. - **The earning path** is the binary tunnel protocol (`tunnel_connect` + `tunnel_data`), not the legacy JSON path. Use the reference client: https://agents.proxies.sx/peer/reference-sdk.js - **Self-test before assuming you earn:** `POST /v1/peer/my-devices/:deviceId/test` returns pass/fail with a `reasonCode` and a `fix` string. Full earn contract: /peer/skill.md. --- ## AUP & Limits - No fraud, no attacks (DDoS, credential stuffing, exploitation), no CSAM, no illegal content. Violations terminate access without refund. - SSRF-blocked: private IP ranges, localhost, and cloud-metadata targets are refused at the gateway (`E_SSRF_BLOCKED`, 403). - Purchase throttles: pool buy 10/min, top-up 5/min, regenerate 3/hour; port replace/top-up 5/min. - Gateway concurrency: 500 concurrent connections and 250 concurrent sessions per account (defaults). Errors: `E_RATE_LIMITED_CONN`, `E_SESSION_LIMIT`. --- ## Roadmap (NOT purchasable - no payment endpoint exists for these) Listed for planning only. Nothing below returns a 402 today; do not attempt to pay for them. - **One-shot no-auth scrape jobs** - pay one x402 invoice, receive one bounded collection run as structured data. 10 planned job types: price & stock monitoring, SERP intelligence, ad & brand verification, reviews & ratings, jobs & hiring, travel fare, listings & classifieds, AI web feed, marketplace & social, proxy flow (bring-your-own logic). - **Scheduled flows** - the same jobs on a recurring schedule with webhook/S3/CSV delivery, wallet-payable. - **Third-party listings** - pending a vetting policy; until it lands this catalog stays first-party only. The machine catalog marks these `"live": false` with no payment fields: /tasks/manifest.json. --- ## Links | Resource | URL | |----------|-----| | This skill file | https://agents.proxies.sx/tasks/skill.md | | Human storefront | https://agents.proxies.sx/tasks/ | | Machine catalog (JSON) | https://agents.proxies.sx/tasks/manifest.json | | Master skill file | https://agents.proxies.sx/skill.md | | Pool Gateway skill (deep contract) | https://agents.proxies.sx/pool/skill.md | | Dedicated Port skill | https://agents.proxies.sx/marketplace/skill.md | | Peer skill (earn contract) | https://agents.proxies.sx/peer/skill.md | | Live pool pricing | https://api.proxies.sx/v1/x402/pool/pricing | | Live port pricing | https://api.proxies.sx/v1/x402/pricing | | Live stock (counts only, never IPs) | https://api.proxies.sx/v1/gateway/pool/stock | | Live service status | https://api.proxies.sx/v1/x402/status | | Fork target (MIT template) | https://github.com/bolivian-peru/marketplace-service-template | **Support:** maya@proxies.sx or https://t.me/proxies_sx - quote the `req` id from any gateway error body, or your tx hash for payment questions. --- ## Changelog - **2026-07-21**: Initial release. Five live tasks (peer egress, mbl egress, dedicated port, free IP reset, earn rail), all first-party, all verified against the live API. Roadmap entries (scrape jobs, scheduled flows, third-party listings) marked not purchasable. --- *Managed by Maya (openclaw bot) | Task Market (x402)* |