agents.proxies.sx into any agentic chat (Claude, ChatGPT, Cursor …), or ask straight from your repo – then ask anything. Your agent reads the whole contract and can buy, build, and run it for you.
read agents.proxies.sx and set up my proxies
First request: curl -s 'https://api.proxies.sx/v1/x402/pricing' - no auth needed. Then an unpaid GET /v1/x402/proxy (Dedicated Port) or GET /v1/x402/pool (Pool Gateway Access) returns HTTP 402 with the payment catalog. Pay USDC on-chain, retry with Payment-Signature: <tx_hash>, receive credentials.
Master Skill File: agents.proxies.sx/skill.md - the complete contract in one read for AI agents
Claude Code, Cursor, an MCP client, or a script you wrote - hand it agents.proxies.sx. It reads the contract, pays with USDC or an API key, and stands up whatever you asked for. Any data. Any country. No dashboard.
Give your agent the contract →Same real 4G/5G modems, same $4/GB, same countries - two ways for an agent to buy and drive them. Pick by how it authenticates: an API key it holds, or a wallet it pays from. Most integrations use the account + API key path; x402 is there for wallet-only agents.
| ① Account + API key / MCP — recommended | ② Autonomous x402 (USDC) | |
|---|---|---|
| Setup | Register at client.proxies.sx, deposit GB (card or crypto), create an API key (psx_...) | None — no account, no key, no signup |
| How the agent buys | Call api.proxies.sx/v1 with X-API-Key: psx_..., or point an MCP client at the MCP server | Unpaid request → HTTP 402 → pay USDC on-chain → retry with the tx hash |
| Management | Full & persistent: ports, GB top-ups, rotation, usage, billing — via API, MCP, or dashboard | Per-purchase session token (x402s_); no account-wide view |
| Payment | Deposit once (card / USDT / USDC / BTC / ...), spend from GB balance | USDC per purchase — Base (~2s) or Solana (~400ms) |
Create an account at client.proxies.sx, deposit GB, and generate an API key. Your AI agent then has full access to the same API these products expose — dedicated ports, the pool gateway, rotation, usage, billing — by sending X-API-Key: psx_..., in any language, no wallet required. Prefer Claude, Cursor, or another MCP client? Point it at the MCP server:
npx @proxies-sx/mcp-server
and it creates ports, buys GB, rotates IPs, and reads usage as native tools (79 tools). One balance, persistent keys, one dashboard — how most integrations run.
No account, no key: the agent pays USDC over HTTP 402 per purchase. Ideal for wallet-native agents and one-off buys. Full protocol below.
Both paths reach the same modems in the same countries at the same $4/GB with the same volume discounts. The only difference is authentication.
HTTP 402 Payment Required for machine-to-machine USDC payments. No account, no API key. The same protocol gates both buy products: Dedicated Port (/v1/x402/proxy) and Pool Gateway Access (/v1/x402/pool).
1. Request without payment GET /v1/x402/proxy?country=US&traffic=1 2. Receive 402 response price, recipient wallet, supported networks 3. Send USDC on-chain Base (~2s) or Solana (~400ms) 4. Retry with payment proof Payment-Signature: <tx_hash> 5. Receive proxy credentials host, port, username, password, session token
| Network | Settlement | Gas | USDC Contract | Recipient |
|---|---|---|---|---|
| Base (EVM) | ~2 sec | ~$0.01 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0xF8cD900794245fc36CBE65be9afc23CDF5103042 |
| Solana | ~400ms | ~$0.0001 | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | 6eUdVwsPArTxwVqEARYGCh4S2qwW2zCs7jSEDRpxydnv |
| Type | Price/GB | Min Purchase | Duration |
|---|---|---|---|
| Shared | $4.00 | 0.1 GB ($0.40) | Free (unlimited) |
Real mobile IPs, not datacenter relabelled as "residential" - the cheap kind that gets flagged the moment you hit a protected site. Verify any exit IP on ipinfo.io / MaxMind / IP2Location before you pay.
# 1. Request proxy (receive 402 with payment info)
curl -s 'https://api.proxies.sx/v1/x402/proxy?country=US&traffic=1'
# 2. After sending USDC, retry with tx hash
curl -s 'https://api.proxies.sx/v1/x402/proxy?country=US&traffic=1' \
-H "Payment-Signature: YOUR_TX_HASH"
# 3. Check session
curl -s https://api.proxies.sx/v1/x402/manage/session \
-H "X-Session-Token: x402s_YOUR_TOKEN"
# 4. Replace offline port (free, max 3)
curl -s -X POST https://api.proxies.sx/v1/x402/manage/ports/replace \
-H "X-Session-Token: x402s_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country":"US"}'
# 5. Top up session (pay for more traffic)
curl -s -X POST https://api.proxies.sx/v1/x402/manage/session/topup \
-H "X-Session-Token: x402s_YOUR_TOKEN" \
-H "Payment-Signature: NEW_TX_HASH" \
-H "Content-Type: application/json" \
-d '{"addTrafficGB":2,"addDurationSeconds":86400}'
Pool Gateway endpoints (GET/POST /v1/x402/pool, /v1/x402/pool/pricing, /v1/x402/manage/pool/*) are in the Pool Gateway section below and in /pool/skill.md. Live per-component health: GET /v1/x402/status.
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /v1/x402/pricing | - | Pricing tiers and structure |
| GET | /v1/x402/countries | - | Available countries with device counts |
| GET | /v1/x402/calculate | - | Calculate cost |
| GET | /v1/x402/health | - | Service health |
| GET | /v1/x402/info | - | Master info (pricing, countries, MCP) |
| GET | /v1/x402/.well-known | - | Protocol discovery |
| GET | /v1/x402/proxy | x402 | Purchase mobile proxy |
| POST | /v1/x402/proxy | x402 | Purchase mobile proxy (POST) |
| GET | /v1/x402/manage/session | Token | Session details via token |
| GET | /v1/x402/manage/session/credit | Token | Check remaining credit |
| GET | /v1/x402/manage/ports | Token | List all ports in session |
| GET | /v1/x402/manage/ports/:portId/status | Token | Port status |
| POST | /v1/x402/manage/ports/replace | Token | Replace offline port (free, max 3) |
| POST | /v1/x402/manage/ports/recreate | Token | Recreate deleted port with remaining credit |
| GET | /v1/x402/manage/session/topup/calculate | Token | Preview top-up cost |
| POST | /v1/x402/manage/session/topup | Token+x402 | Pay to extend session |
| GET | /v1/x402/session/:id | - | Session by ID |
| GET | /v1/x402/session/tx/:txHash | - | Session by transaction hash |
| GET | /v1/x402/sessions/wallet/:wallet | - | Sessions by wallet address |
| POST | /v1/x402/agents | - | Register agent |
| GET | /v1/x402/agents/:wallet | - | Get agent by wallet |
| GET | /v1/rotate/:token | - | Rotate IP via public token |
Token = X-Session-Token: x402s_<hex> header. x402 = Payment-Signature: <tx_hash> header.
Port Replacement - If proxy goes offline, POST /manage/ports/replace for free replacement. Max 3 per session. Session Top-Up - Add traffic ($4/GB) or duration (free). POST /manage/session/topup with Payment-Signature. Port Recreation - If port deleted but session has credit, POST /manage/ports/recreate. IP Rotation - GET /v1/rotate/:token to rotate IP without auth.
Two ways to buy - Dedicated Port and Pool Gateway Access, both x402-gated at api.proxies.sx, paid in USDC. One way to earn - the Peer Network, where agents and devices share bandwidth for USDC.
| Product | Endpoint | Price | Payment | Status |
|---|---|---|---|---|
| Dedicated Port (mobile proxy) | GET /v1/x402/proxy |
$4.00/GB | USDC on Base or Solana | LIVE |
| Pool Gateway Access (one credential, all tier countries) | GET/POST /v1/x402/pool |
$4.00/GB | USDC on Base or Solana | LIVE |
| Peer Network (earn) | POST /v1/peer/agents/register |
earn per GB | USDC payout | LIVE |
Your own port on a real 4G/5G modem. The country set is live and rotating (NL, PL, US, GE, FR, GB as of last edit; it shifts with carrier supply - read live availability, not this sentence). HTTP and SOCKS5, city/carrier targeting, auto IP rotation. Free port replacement (max 3) and session top-up. Buy a Dedicated Port.
One USDC payment buys one credential that reaches every country in your tier through the shared Pool Gateway (gw.proxies.sx:7000) - no per-country repurchase. Metered and capped. v1 tier mbl (production modems), $4/GB. Buy at GET/POST /v1/x402/pool (no payment returns HTTP 402 with the tier catalog; pay USDC and retry to receive credentials). Pool Gateway page · Quickstart · skill.md · Rotation Cookbook (copy-paste IP rotation + footguns).
DEDICATED PORT = one real port on one modem, its own host:port, one country fixed at purchase - the IP holds until YOU hit the rotate URL. POOL GATEWAY = one credential on gw.proxies.sx:7000, every country in the tier - country, session and rotation are declared per-request in the proxy username.
The pool username IS the routing API (no SDK needed - just build the string):
psx_<accountId>-<pool>-<country>[-rot-<mode>][-sid-<name>]
# pool: mbl | peer | any country: 2-letter ISO or 'any'
# rot: auto5|auto10|auto20|auto60 (soft-rotate) | sticky (pin) | ondemand
# sid: REQUIRED for a session to stick across connections
# (use -sid-, NOT -session- - the latter is silently ignored)
# US modem, rotate every 10 min, pinned session "job42":
curl -x "http://psx_ab12cd-mbl-us-rot-auto10-sid-job42:PASS@gw.proxies.sx:7000" https://api.ipify.org
Copy-paste rotation recipes (curl / python / node) + the footguns: rotation cookbook.
| Dedicated Port (/v1/x402/proxy) | Pool Gateway (/v1/x402/pool) | |
|---|---|---|
| What payment mints | A real port on ONE modem (ProxySmart), bound to that device | A metered pak_ credential; no device touched - modem picked live per connection |
| Endpoint | Unique serverIp:port per purchase | Shared gw.proxies.sx:7000 for everyone; routing lives in the username |
| Country | Fixed at purchase. Change = recreate the port (only with 0 active ports left) | Edit the country slot in the username per request - same credential, no repurchase |
| Rotation | True carrier-IP reset via public /v1/rotate/<token> URL (5-min cooldown, auto 5-1440 min) | -rot- token only: auto5/10/20/60 re-pick a modem on interval; sticky/hard pin the modem. No rotate URL; no mode gives per-request IP change |
| SOCKS5 | Yes - working socks5:// URL included | No - HTTP :7000 only in v1; :7001 rejects this credential |
| Concurrency | One modem. Fan-out = buy more ports | Parallel sessions on different modems via distinct -sid- values; capped at 250 sessions / 500 connections per account |
| Payment rails | Solana, Base, AND facilitator signed intents (EIP-3009) | Solana and Base on-chain only - facilitator rail rejected |
| Failure recovery | /manage/ports/replace (free, max 3, new device) or /ports/recreate | Automatic - dead modems routed around on next pick; /manage/pool/regenerate rotates the secret |
IP caveats (both): mobile carriers re-NAT egress IPs on their own cadence - a dedicated port holds a MODEM you control the rotation of, not a fixed IP; pool -rot-sticky pins the MODEM for the session, never the IP. Pool sessions need a -sid-<id> token to stick across connections (-session- is silently ignored).
> Cookie-bound / login / 2FA work in one country: one held modem whose IP changes only when you trigger it - no pool selector re-picks under you.
> You need SOCKS5 - the pool credential is HTTP-only in v1.
> You need on-demand true carrier-IP resets via the public rotate URL - the pool cannot do this at all.
> You must hard-pin a city or carrier at purchase, or you pay via facilitator signed intents (EIP-3009) - only this product accepts either.
> Multi-country work from one purchase: same key, edit us → gb → pl → fr in the username per request.
> High fan-out: hundreds of parallel sticky sessions (distinct -sid- values land on different modems) through one credential.
> A fleet of agents shares one secret, one top-up, one credit meter - instead of N ports with N passwords.
> You want zero babysitting: default auto10 rotates modems every 10 min with no API calls, and dead modems are routed around automatically.
Same for both: $4.00/GB, 0.1 GB ($0.40) minimum, duration free - you only pay for traffic. Accountless x402 flow (HTTP 402 → pay USDC on Base ~2s or Solana ~400ms → retry with Payment-Signature), same replay protection, same x402s_ session token for management, and the same real ProxySmart 4G/5G carrier modems in the same ~6 countries (US, GB, PL, FR, NL, GE). The difference is topology, not hardware or price.
Will it work on my target? Check live per-country stock before a run and component health at /status/. Real mobile/residential IPs clear IP-reputation gates (DataDome t=bv, Cloudflare, PerimeterX) that flag datacenter proxies - but no vendor can promise a given site: verify your exit yourself on ipinfo.io / MaxMind before you scale. If a target still blocks clean mobile + residential, it's a genuinely hard target - that's what our managed Data Works tier is for.
Share mobile/residential bandwidth and earn USDC. Per-GB rates are set by IP type (mobile > residential > datacenter) and are dynamic - read earningsPerGB in the registration response for live values. Start earning.
@proxies-sx/mcp-server v2.2.0 on npm - 79 tools for AI agents to manage proxy infrastructure via the Model Context Protocol (61 API-key tools incl. the ops + pool groups, 18 wallet-only x402 tools incl. buying Pool Gateway access with USDC). The server self-describes via tools/list.
npx -y @proxies-sx/mcp-server
// API Key mode (account required)
{
"mcpServers": {
"proxies-sx": {
"command": "npx",
"args": ["-y", "@proxies-sx/mcp-server"],
"env": { "PROXIES_API_KEY": "psx_your_key" }
}
}
}
// x402 mode (no account needed)
{
"mcpServers": {
"proxies-sx": {
"command": "npx",
"args": ["-y", "@proxies-sx/mcp-server"],
"env": { "AGENT_WALLET_KEY": "your_private_key", "PREFERRED_NETWORK": "base" }
}
}
}
You don't load 79. A scraper needs ~5: purchase_shared_traffic, create_port (or mint a pool credential), rotate_port, list_available_countries, get_account_usage. The rest are advanced surfaces (x402, reseller, ops) you only pull in if you use them - the count is coverage, not required context.
| Category | Count | Key Tools |
|---|---|---|
| Account | 2 | get_account_summary, get_account_usage |
| Port Mgmt | 7 | list_ports, create_port, delete_port, update_port_credentials, reconfigure_port |
| Port Status | 4 | get_port_status, get_port_ip, ping_port, speed_test_port |
| Rotation | 5 | rotate_port, configure_auto_rotation, get_rotation_history |
| Billing | 3 | get_pricing, calculate_price, purchase_shared_traffic |
| Crypto Pay | 5 | create_crypto_payment, check_crypto_payment_status |
| Reference | 1 | list_available_countries |
| Utilities | 3 | get_proxy_connection_string, get_all_proxy_formats |
| Support | 5 | create_support_ticket, list_my_tickets, reply_to_ticket |
| x402 Session | 8 | get_x402_session, replace_x402_port, calculate_x402_topup, topup_x402_session |
| x402 Auto | 11 | x402_get_proxy, x402_wallet_balance, x402_rotate_ip, x402_extend_session |
| x402 Pool (wallet-only) | 7 | x402_get_pool_access, x402_pool_credit, x402_pool_topup |
| Ops (admin-scoped keys) | 11 | ops_get_user, ops_list_tickets, ops_reconcile_payments |
| Pool Gateway (reseller) | 7 | pool_get_stock, pool_mint_key, pool_topup_key |
Share your internet bandwidth, get paid in USDC on Solana. AI agents and humans connect via WebSocket, route traffic, earn automatically. This section is a summary - the canonical contract (binary tunnel protocol, self-test, SDK implementer checklist) is the Peer Network page and /peer/skill.md; if this page ever disagrees with them, they win.
| IP Type | Rate Tier | Examples |
|---|---|---|
| Mobile | Highest | AT&T, Verizon, T-Mobile, Vodafone |
| Residential | Mid | Comcast, Spectrum, Cox, BT |
| Datacenter | Base | AWS, GCP, Azure, Hetzner, VPNs |
Per-GB earnings accumulate automatically. IP type is classified server-side via ASN lookup - the value your device reports is ignored. Rates are dynamic: read earningsPerGB from the registration response. Min payout: $5 USDC (agents; Android SDK devices: $10).
1. Register POST /v1/peer/agents/register - get JWT + device ID
2. Connect wss://relay.proxies.sx with Sec-WebSocket-Protocol: token.{JWT}
3. Tunnel Receive tunnel_connect - open TCP to the target - stream bytes both ways
4. Earn Earnings credited per GB. Request payout min $5 USDC to Solana wallet.
Fastest start - use a ready, tested SDK (it does the whole protocol for you):
Node.js ·
Go ·
Windows ·
Android.
Full guide at the Peer Network page. The inline snippets below are only for building your own client - if you do, implement the streaming tunnel_connect flow documented in /peer/skill.md, not the legacy proxy_request.
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",
"apiKey":"psx_YOUR_API_KEY"
}'
# Response:
# { "deviceId": "agent_abc123", "jwt": "eyJ...", "refreshToken": "a1b2...",
# "relay": "wss://relay.proxies.sx",
# "earningsPerGB": { "mobile": <number>, "residential": <number>, "datacenter": <number> } }
#
# Per-GB rates are set by the platform - read earningsPerGB for live values.
# Tier order: mobile > residential > datacenter. Rates can change anytime.
# Min payout: $5 (agents) / $10 (Android SDK).
# JWT expires in 1h - refresh via POST /v1/peer/agents/{id}/refresh.
const ws = new WebSocket('wss://relay.proxies.sx', [`token.${JWT}`]);
ws.onopen = () => {
ws.send(JSON.stringify({ type: 'device_info', payload: { country: 'US' } }));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === 'proxy_request') {
const { requestId, method, url, headers, body } = msg.payload;
fetch(url, { method, headers, body: body ? atob(body) : undefined })
.then(async (res) => {
const buf = await res.arrayBuffer();
ws.send(JSON.stringify({
type: 'proxy_response',
payload: { requestId, statusCode: res.status,
headers: Object.fromEntries(res.headers),
body: btoa(String.fromCharCode(...new Uint8Array(buf))) }
}));
});
}
if (msg.type === 'heartbeat') ws.send(JSON.stringify({ type: 'heartbeat_ack' }));
};
This snippet shows the connection handshake plus the legacy JSON proxy_request flow for illustration. Production clients must handle the binary tunnel_connect protocol - full lifecycle, message shapes, and the two porting mistakes that cause intermittent auth are in /peer/skill.md.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /v1/peer/agents/register | - | Register as peer (600/min per IP rate limit) |
| POST | /v1/peer/agents/:id/refresh | Refresh | Refresh JWT (expires 1h) |
| GET | /v1/peer/agents/:id/status | JWT | Peer status |
| GET | /v1/peer/agents/:id/earnings | JWT | Earnings and traffic stats |
| PUT | /v1/peer/agents/:id/wallet | JWT | Update wallet (7-day cooling period) |
| POST | /v1/peer/agents/:id/withdraw | JWT | Request payout (min $5 USDC; paid only to the registered wallet) |
| Feature | Value |
|---|---|
| JWT expiry | 1 hour |
| Refresh token expiry | 7 days |
| Max WebSocket connections | 6 per device (multi-WS socket pool; over-cap evicts the oldest socket; reference SDK opens 4 by default) |
| Message rate limit | 100/min per device |
| Registration rate limit | 600/min per IP (agents); 5/min per IP (Android SDK device registration) |
| Wallet change cooling | 7 days |
| IP classification | Server-side ASN lookup (cannot spoof) |
Earnings depend entirely on demand routed through your IP - there is no fixed monthly figure. Always pull the current earningsPerGB at registration and multiply by your own throughput. Illustrative relative shape only:
| Connection | Relative earning potential |
|---|---|
| Mobile 5G (US) | Highest - premium tier, most demand |
| Residential (US) | Mid |
| Datacenter VPS | Lowest - base tier |
Actual earnings depend on demand, location, uptime, and carrier ASN reputation.
// build.gradle
implementation("com.github.bolivian-peru:android-peer-sdk:1.3.1")
// Usage
ProxiesPeerSDK.init(context, "api-key", config)
ProxiesPeerSDK.getInstance().start() // Start sharing
ProxiesPeerSDK.getInstance().stop() // Stop sharing
| Package | Description |
|---|---|
| @proxies-sx/mcp-server | MCP server - 79 tools published on npm (v2.2.0) |
| @proxies-sx/x402-core | x402 types, utilities, payment requirement builder |
| @proxies-sx/x402-hono | x402 Hono middleware for building paywall APIs |
| @proxies-sx/x402-solana | Solana transaction verification for x402 |
| Repository | Description |
|---|---|
| proxies-sx-mcp-server | MCP server source |
| x402-sdk | x402 payment protocol SDK |
| android-peer-sdk | Android SDK for peer bandwidth sharing |
| Framework | Integration | Details |
|---|---|---|
| MCP | npx @proxies-sx/mcp-server | 79 tools for Claude, Cursor, Windsurf |
import { Hono } from 'hono';
import { x402Middleware } from '@proxies-sx/x402-hono';
import { verifySolanaPayment } from '@proxies-sx/x402-solana';
const app = new Hono();
app.use('/api/*', x402Middleware({
price: 10000, // $0.01 in micro-units
recipient: 'YOUR_SOLANA_WALLET',
verify: verifySolanaPayment,
}));
app.get('/api/data', (c) => c.json({ data: 'premium content' }));
| File | URL | Purpose |
|---|---|---|
| skill.md | /skill.md | Master skill file - everything for AI agents in one read |
| llms.txt | /llms.txt | LLM integration reference |
| x402.json | /.well-known/x402.json | x402 protocol discovery |
| peer skill.md | /peer/skill.md | Peer Network detailed contract (earn side) |
| pool quickstart | /pool-quickstart.html | Pool Gateway: buy with USDC or use a pak_ key in 30 seconds |
Hierarchy: if this page disagrees with a skill.md, the skill.md wins; if a skill.md disagrees with the live API, the live API wins.
| Domain | Purpose |
|---|---|
| api.proxies.sx | REST API + x402 endpoints + agent APIs |
| client.proxies.sx | Customer portal |
| admin.proxies.sx | Admin dashboard |
| agents.proxies.sx | This page |
| relay.proxies.sx | WebSocket relay for peer devices |
| gw.proxies.sx | HTTP proxy gateway |
Twitter/X | Telegram | GitHub | Dashboard
Support: maya@proxies.sx or Telegram. When reporting an error, quote the req id from the error message.