FourA - HTTP request via rotating proxies
foura_proxyRoute HTTP requests through a rotating proxy pool with automatic retry. Overcome 403 errors, captchas, and geo-blocks by trying multiple proxies until success.
Instructions
Route an HTTP request through FourA's proxy pool with automatic retry across multiple proxies. Per-host proxy rating picks proxies most likely to succeed for the target. Use when foura_single returns 403, captcha, or geo-blocked content. Typical latency 1-5s. The response includes the encoded proxy ID that succeeded ('proxy' field) - reuse it in foura_single.proxy or foura_browser.proxy to pin follow-up requests to the same exit IP, or pass it in ignoreProxies to skip this exit on the next rotation. Escalate to foura_browser if all proxies fail or the page needs JavaScript rendering. When the trigger is a tier-1 WAF challenge (Vercel Security Checkpoint, Cloudflare 'Just a moment', Akamai Bot Manager), set maxTries to 25-30 - the default 5 will usually be too low for these targets. Distinguish from country / ASN allowlist denials (country-licensed bookmakers, government sites): there rotation never helps regardless of maxTries - after ~30 failed attempts on the same block, stop climbing and pivot strategy instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | The inner HTTP request to send through each proxy attempt. Validation rules here determine when a proxy is treated as failed and retried. | |
| maxTries | No | Maximum proxy rotation attempts before giving up (default 5, max 90). Default 5 is sized for lightly-blocked sites. Raise to 25-30 for tier-1 WAF challenges (Vercel Security Checkpoint, Cloudflare 'Just a moment', Akamai Bot Manager) - most rotations on these targets need this range. If still blocked after 30 attempts, the gate is likely country / ASN allowlist (not solvable by rotation) - pivot strategy instead of climbing to 60. | |
| timeout_ms | No | Overall timeout across all rotation attempts in ms (default 45000, max 120000). Must be positive. | |
| ignoreProxies | No | Encoded proxy IDs (base36 strings like "4DZ3VE") OR proxy URLs to exclude from rotation. Both forms are accepted. | |
| offload_large | No | If true, response bodies >= 50KB are written to disk and returned as a resource_link instead of inlined. Default false. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Stable error code for retry classification. One of: ssrf_blocked, upstream_non_json, output_validation_failed, bad_request (400), auth_failed (401), forbidden (403), not_found (404), rate_limited (429), at_capacity (503), service_disabled (503), service_unavailable (503), upstream_error (>=500), upstream_client_error (other 4xx), upstream_unknown (defensive). | |
| data | No | Decoded response body. Omitted when offloaded. | |
| error | No | Human-readable error message | |
| proxy | No | Base36 ID of the pool exit that succeeded (e.g. `4DZ3VE`). Reuse on next call: pass to foura_single.proxy or foura_browser.proxy → same exit IP. Pass to foura_proxy.ignoreProxies → skip this exit on future rotations. | |
| total | No | Outer total time in seconds (proxy selection + retries + the successful inner attempt). Float. | |
| limits | No | ||
| status | No | HTTP status code from the target (from the succeeding proxy attempt). `0` indicates every attempt failed before any HTTP response (DNS / connection refused / timeout) - check the `error` field for the underlying reason. | |
| current | No | ||
| headers | No | Response headers per redirect hop, as an array of objects. Each entry has `result.{version, code, reason}` plus arbitrary header-name keys whose values are strings (or arrays of strings for multi-value headers like Set-Cookie / Link). | |
| request | No | Echoed PrRequest from upstream PrResponseError | |
| service | No | ||
| retryAfter | No | ||
| size_bytes | No | Total offloaded body size in bytes | |
| total_time | No | Per-attempt wall-clock duration of the succeeding inner request | |
| offloaded_resource_uri | No | foura-mcp://payload/<uuid> |