PROXIES.SX

Mobile proxy infrastructure an AI agent buys itself. $4.00/GB, minimum purchase 0.1 GB = $0.40, duration free. Pay USDC on Base or Solana via x402 - no account, no API key.
6 countries · 121+ devices · 79 MCP tools · 3 live services

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

x402 PAYMENT PROTOCOL

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).

How It Works

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

Payment Networks

NetworkSettlementGasUSDC ContractRecipient
Base (EVM)~2 sec~$0.010x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130xF8cD900794245fc36CBE65be9afc23CDF5103042
Solana~400ms~$0.0001EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v6eUdVwsPArTxwVqEARYGCh4S2qwW2zCs7jSEDRpxydnv

Pricing

TypePrice/GBMin PurchaseDuration
Shared$4.000.1 GB ($0.40)Free (unlimited)

Quick Start

# 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}'

Dedicated Port x402 Endpoints (+ agent registry)

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.

MethodPathAuthDescription
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/proxyx402Purchase mobile proxy
POST/v1/x402/proxyx402Purchase mobile proxy (POST)
GET/v1/x402/manage/sessionTokenSession details via token
GET/v1/x402/manage/session/creditTokenCheck remaining credit
GET/v1/x402/manage/portsTokenList all ports in session
GET/v1/x402/manage/ports/:portId/statusTokenPort status
POST/v1/x402/manage/ports/replaceTokenReplace offline port (free, max 3)
POST/v1/x402/manage/ports/recreateTokenRecreate deleted port with remaining credit
GET/v1/x402/manage/session/topup/calculateTokenPreview top-up cost
POST/v1/x402/manage/session/topupToken+x402Pay 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.

Post-Purchase Management

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.

PRODUCTS

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.

ProductEndpointPricePaymentStatus
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

Dedicated Port

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.

Pool Gateway Access

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.

DEDICATED PORT vs POOL GATEWAY - WHICH ONE?

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.

Dedicated Port (/v1/x402/proxy)Pool Gateway (/v1/x402/pool)
What payment mintsA real port on ONE modem (ProxySmart), bound to that deviceA metered pak_ credential; no device touched - modem picked live per connection
EndpointUnique serverIp:port per purchaseShared gw.proxies.sx:7000 for everyone; routing lives in the username
CountryFixed 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
RotationTrue 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
SOCKS5Yes - working socks5:// URL includedNo - HTTP :7000 only in v1; :7001 rejects this credential
ConcurrencyOne modem. Fan-out = buy more portsParallel sessions on different modems via distinct -sid- values; capped at 250 sessions / 500 connections per account
Payment railsSolana, 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/recreateAutomatic - 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).

PICK DEDICATED PORT WHEN

> 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.

PICK POOL GATEWAY WHEN

> 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.

Peer Network

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.


MCP SERVER

@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.

Install

npx -y @proxies-sx/mcp-server

Claude Desktop Config

// 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" }
    }
  }
}

Tool Categories (79 total)

CategoryCountKey Tools
Account2get_account_summary, get_account_usage
Port Mgmt7list_ports, create_port, delete_port, update_port_credentials, reconfigure_port
Port Status4get_port_status, get_port_ip, ping_port, speed_test_port
Rotation5rotate_port, configure_auto_rotation, get_rotation_history
Billing3get_pricing, calculate_price, purchase_shared_traffic
Crypto Pay5create_crypto_payment, check_crypto_payment_status
Reference1list_available_countries
Utilities3get_proxy_connection_string, get_all_proxy_formats
Support5create_support_ticket, list_my_tickets, reply_to_ticket
x402 Session8get_x402_session, replace_x402_port, calculate_x402_topup, topup_x402_session
x402 Auto11x402_get_proxy, x402_wallet_balance, x402_rotate_ip, x402_extend_session
x402 Pool (wallet-only)7x402_get_pool_access, x402_pool_credit, x402_pool_topup
Ops (admin-scoped keys)11ops_get_user, ops_list_tickets, ops_reconcile_payments
Pool Gateway (reseller)7pool_get_stock, pool_mint_key, pool_topup_key

PEER NETWORK - EARN USDC

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.

Earnings by IP Type

IP TypeRate TierExamples
MobileHighestAT&T, Verizon, T-Mobile, Vodafone
ResidentialMidComcast, Spectrum, Cox, BT
DatacenterBaseAWS, 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).

How It Works

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.

Register

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.

Connect to Relay

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.

Peer API Endpoints

MethodEndpointAuthDescription
POST/v1/peer/agents/register-Register as peer (600/min per IP rate limit)
POST/v1/peer/agents/:id/refreshRefreshRefresh JWT (expires 1h)
GET/v1/peer/agents/:id/statusJWTPeer status
GET/v1/peer/agents/:id/earningsJWTEarnings and traffic stats
PUT/v1/peer/agents/:id/walletJWTUpdate wallet (7-day cooling period)
POST/v1/peer/agents/:id/withdrawJWTRequest payout (min $5 USDC; paid only to the registered wallet)

Security

FeatureValue
JWT expiry1 hour
Refresh token expiry7 days
Max WebSocket connections6 per device (multi-WS socket pool; over-cap evicts the oldest socket; reference SDK opens 4 by default)
Message rate limit100/min per device
Registration rate limit600/min per IP (agents); 5/min per IP (Android SDK device registration)
Wallet change cooling7 days
IP classificationServer-side ASN lookup (cannot spoof)

Earning Potential

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:

ConnectionRelative earning potential
Mobile 5G (US)Highest - premium tier, most demand
Residential (US)Mid
Datacenter VPSLowest - base tier

Actual earnings depend on demand, location, uptime, and carrier ASN reputation.

Android SDK

// 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


SDK & PACKAGES

npm Packages

PackageDescription
@proxies-sx/mcp-serverMCP server - 79 tools published on npm (v2.2.0)
@proxies-sx/x402-corex402 types, utilities, payment requirement builder
@proxies-sx/x402-honox402 Hono middleware for building paywall APIs
@proxies-sx/x402-solanaSolana transaction verification for x402

GitHub

RepositoryDescription
proxies-sx-mcp-serverMCP server source
x402-sdkx402 payment protocol SDK
android-peer-sdkAndroid SDK for peer bandwidth sharing

Framework Integrations

FrameworkIntegrationDetails
MCPnpx @proxies-sx/mcp-server79 tools for Claude, Cursor, Windsurf

x402 SDK Example

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' }));


Proxies.sx - Mobile proxy infrastructure for AI agents