Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

ai.foura/mcp

REMOTE · MCP.FOURA.AI · 2 COMPONENTS · SCANNED AUG 3

Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.

+8 this week 78 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security89
Transport & Reachability100
Schema Quality & AI Usability68
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2000 tokens (~500/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.foura.ai

# add to Claude Code
claude mcp add --transport http ai-foura-mcp https://mcp.foura.ai/mcp
# ~/.codex/config.toml
[mcp_servers.ai-foura-mcp]
url = "https://mcp.foura.ai/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-foura-mcp": {
      "type": "remote",
      "url": "https://mcp.foura.ai/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ai-foura-mcp --url https://mcp.foura.ai/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  ai-foura-mcp:
    url: "https://mcp.foura.ai/mcp"
// mcp.json
{
  "mcpServers": {
    "ai-foura-mcp": {
      "type": "http",
      "url": "https://mcp.foura.ai/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +5
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 69

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.foura.ai/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=*.foura.ai CN=YE1,O=Let's Encrypt,C=US 24 Jul 2026 22 Oct 2026 ECDSA 256 ECDSA-SHA384 67e343a4e0def68f5de22287396cca7bb5e
SANs: *.foura.ai, eu.api.foura.ai, foura.ai
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of mcp.foura.ai. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
foura.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Challenged, unverified

The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.

Result Challenged, unverified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer realm="foura-mcp"

Bearer realm="foura-mcp"
Header Value
strict-transport-security max-age=31536000; includeSubDomains; preload
content-security-policy default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval'
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()

Protected resource metadata

Retrieved No
Problem no_resource_metadata
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.foura.ai/mcp Verified 200
http (plaintext) http://mcp.foura.ai/mcp HTTPS enforced 301 https://mcp.foura.ai/mcp
MCP tools — 4 exposed · ~2,000 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
foura_auto ~492

Give it a public URL and get the content back. This is the default when you don't want to choose between HTTP, proxy rotation, and a full browser. On protected targets, or whenever HTTP 200 may still be a challenge or incomplete page, pass validate.data.accept with text unique to the real content. Auto makes bounded attempts and returns either validated content or a failure; it cannot guarantee a match. The response includes completion details and, by default, reusable session values for follow-up calls. Use a lower-level tool when you need direct control over HTTP, proxy selection, or browser navigation.

NameTypeReqDescription
dataRequest body for non-GET methods. Strings sent as-is; objects auto-serialized to JSON.
followRedirectsintegerFollow up to N redirects for HTTP and proxy requests. Default 5; 0 means don't follow. Browser navigation handles redirects itself.
forceProxybooleanRequire proxy routing for every target request. Default true. Send false to allow direct HTTP when suitable.
headersarrayCustom HTTP headers as [name, value] tuples. Example: [["Accept", "application/json"], ["Authorization", "Bearer ..."]]
ignoreProxiesarrayExits to avoid - base36 proxy IDs (like "4DZ3VE") or proxy URLs. Use this to rotate away from an exit that was just blocked.
methodstringHTTP method for the target request (default GET).
offload_largebooleanIf true, response bodies of 50 KB or more are returned as a resource_link instead of inlined. Default false. Read the returned offloaded_resource_uri with resources/read.
returnSessionbooleanReturn reusable {proxy, cookies, userAgent} values for follow-up calls. Default true. Send false for a leaner response when you only need the content.
timeout_msintegerTotal time budget in ms for the whole operation. Every attempt must fit inside it. Default 120000, max 180000.
urlstringyesPublic target URL. Private or reserved targets return `ssrf_blocked`. Use {ts} in the URL to insert the current Unix timestamp. Example: https://example.com/page.
validateobjectPost-fetch response validation. When the response fails these checks foura_auto returns an error envelope.
NameTypeReqDescription
attemptsnumberTotal attempts when the request failed (also present inside `meta`).
codestringStable error code for retry classification. auth_failed means the FourA API key was rejected; verify that key, not target-site credentials. Other codes: ssrf_blocked, upstream_non_json, output_valida…
currentobjectCaller's current usage at error time
dataDecoded response body of the delivered page. String by default; object when the body parsed as JSON. Omitted when offloaded.
errorstringHuman-readable error message when the request could not deliver content within the budget.
headersResponse headers from the successful request, as an array of objects. Each entry has `result.{version, code, reason}` plus header-name keys. The last entry is the final response.
limitsobjectPer-service limits at error time
metaobjectCompletion details: rung, solved, attempts, and credits. Always present.
offloaded_resource_uristringfoura-mcp://payload/<uuid>. Pass this URI to resources/read to retrieve the offloaded body.
retryAfternumberSeconds to wait before retrying a 429 or 503 response
servicestring
sessionobjectReusable {proxy, cookies, userAgent} values for follow-up calls. For plain HTTP, call foura_single with session.proxy as proxy, session.userAgent as a User-Agent header, and session.cookies serialize…
size_bytesintegerTotal offloaded body size in bytes
statusintegerHTTP status code from the request that delivered the content. `0` means no HTTP response was received; check `error`.

No examples provided.

foura_browser ~456

Load a public URL in a full browser session. JavaScript runs, the DOM renders, and cookies come back with the response. Use it for single-page apps, lazy-loaded content, or supported browser challenges. For a protected page, call foura_proxy first and pass its returned proxy ID here to reuse that exit. Set unblocker:false when you want the page exactly as it loads.

NameTypeReqDescription
checkStatusintegerExpected HTTP status code. A different status returns an error envelope carrying the actual value. Example: 200 for a product page.
checkTextstringValidate the rendered HTML once navigation completes. This is a substring check, not a waiter, and it doesn't poll. A missing substring returns an error envelope. Example: "add to cart" for a product…
cookiesarrayCookies to set before navigation: [{ name, value, domain? }]
headersobjectCustom HTTP headers as a key-value object rather than [name, value] tuples. Example: {"Referer": "https://google.com/"}
offload_largebooleanIf true, response bodies of 50 KB or more are returned as a resource_link instead of inlined. Default false. Read the returned offloaded_resource_uri with resources/read.
proxystringOptional proxy. Three forms: (1) URL `http://user:pass@host:port` or `socks5://host:port`; (2) base36 ID from foura_proxy (e.g. `4DZ3VE`) to reuse the same exit; (3) omit to use the default route.
timeout_msintegerPage load timeout in ms (default 30000, max 120000)
unblockerbooleanHandle supported anti-bot or captcha challenges during navigation. Default true. Set false to return the page exactly as it loads, including any challenge page.
urlstringyesPublic URL to load in a full browser session. Private or reserved targets return `ssrf_blocked`. Example: https://shop.example.com/product/123.
userAgentstringOverride the browser's User-Agent string
NameTypeReqDescription
bodyFully-rendered page content. String HTML when content-type is HTML; object when the page returned JSON and it was auto-parsed. Field is named `body`, not `data`. Omitted when offloaded.
codestringStable error code for retry classification. auth_failed means the FourA API key was rejected; verify that key, not target-site credentials. Other codes: ssrf_blocked, upstream_non_json, output_valida…
cookiesarrayFull cookie objects collected after navigation, including name, value, domain, path, expiry, and same-site settings.
currentobject
errorstringHuman-readable error message
headersobjectResponse headers as a flat key-value object. Values are typically strings but may be arrays for repeated headers.
limitsobject
offloaded_resource_uristringfoura-mcp://payload/<uuid>. Pass this URI to resources/read to retrieve the offloaded body.
retryAfternumber
servicestring
size_bytesintegerTotal offloaded body size in bytes
statusintegerHTTP status code from the target page. `0` indicates the navigation failed before any HTTP response (DNS / connection refused / timeout) - check the `error` field for the underlying reason.
userAgentstringThe User-Agent the browser session presented

No examples provided.

foura_proxy ~341

Route an HTTP request through rotating proxies with automatic retry. Use it when foura_single is blocked or the target requires a specific exit country. The response includes the proxy ID that succeeded; reuse it with foura_single or foura_browser, or exclude it with ignoreProxies. Use foura_browser when the page needs JavaScript. Set exitCountries for a strict country allowlist.

NameTypeReqDescription
exitCountriesarrayOptional target-visible proxy countries as two-letter provider codes, for example ["CZ", "GB"]. Use codes supplied by the user or target requirements. When geography matters, do not guess codes or su…
ignoreProxiesarrayEncoded proxy IDs (base36 strings like "4DZ3VE") or proxy URLs to exclude from rotation.
maxTriesintegerMaximum rotation attempts before giving up (default 5, max 90). Difficult protected targets may need 25-30. Use exitCountries for country scope.
offload_largebooleanIf true, response bodies of 50 KB or more are returned as a resource_link instead of inlined. Default false. Read the returned offloaded_resource_uri with resources/read.
requestobjectyesThe inner HTTP request to send through each proxy attempt. Validation rules here determine when a proxy is treated as failed and retried.
timeout_msintegerOverall timeout across all rotation attempts in ms (default 45000, max 120000). Must be positive.
NameTypeReqDescription
codestringStable error code for retry classification. auth_failed means the FourA API key was rejected; verify that key, not target-site credentials. no_eligible_proxy means the strict exitCountries scope had…
currentobject
dataDecoded response body. Omitted when offloaded.
detailsobjectStructured no_eligible_proxy context containing the normalized requested country scope. Preserve this scope and retry later. Do not propose or perform an unscoped fallback; change it only after the u…
errorstringHuman-readable error message
exitCountrystringLatest available two-letter target-visible exit-country code used for selection. Present on successful requests that use exitCountries.
headersResponse 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-val…
limitsobject
offloaded_resource_uristringfoura-mcp://payload/<uuid>. Pass this URI to resources/read to retrieve the offloaded body.
proxystringBase36 ID of the exit that succeeded (e.g. `4DZ3VE`). Pass it to foura_single.proxy or foura_browser.proxy to reuse that exit, or to foura_proxy.ignoreProxies to skip it on future rotations.
requestEchoed PrRequest from upstream PrResponseError
retryAfternumber
servicestring
size_bytesintegerTotal offloaded body size in bytes
statusintegerHTTP 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 th…
totalnumberOuter total time in seconds (proxy selection + retries + the successful inner attempt). Float.
total_timePer-attempt wall-clock duration of the succeeding inner request

No examples provided.

foura_single ~711

Send one HTTP request and return the response. Use it for static pages, JSON APIs, and server-rendered HTML. Set unblocker:true for targets that reject basic HTTP requests. Switch to foura_proxy if the response is blocked, and use foura_browser when the page needs JavaScript.

NameTypeReqDescription
accept_timeout_msintegerTimeout in ms to receive the first response byte after the request is sent (0-120000). Omit for the default.
connect_timeout_msintegerTimeout in ms for establishing the TCP/TLS connection (0-120000). Omit to use the default.
dataRequest body. Strings sent as-is; objects auto-serialized to JSON. Example: {"query": "hello"} for POST APIs.
dns_cache_timeout_secintegerHow long (seconds) to cache the target's resolved DNS (0-240). Omit for the default.
followRedirectsintegerMax number of redirects to follow (0-20). Omit to disable redirect following.
headersarrayCustom HTTP headers as [name, value] tuples. Example: [["Accept", "application/json"], ["Referer", "https://google.com/"]]
methodstringyesHTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, or any WebDAV verb like PROPFIND/MKCOL)
offload_largebooleanIf true, response bodies of 50 KB or more are returned as a resource_link instead of inlined. Default false. Read the returned offloaded_resource_uri with resources/read.
proxystringOptional proxy. Two forms: (1) URL `http://host:port` or `socks5://host:port`; (2) base36 ID from foura_proxy (e.g. `4DZ3VE`) to reuse the same exit. For rotation, use foura_proxy.
returnBufferbooleanReturn raw bytes as a serialized Buffer JSON shape (`{type:"Buffer", data:[byte, ...]}`, bytes 0-255) instead of decoded string. Use for binary responses (images, protobuf). Reconstruct: `Buffer.from…
server_response_timeout_msintegerTimeout in ms for the server to send the complete response (0-120000). Omit for the default.
timeout_msintegerOverall request timeout in ms (max 120000, default 15000)
tryJsonDatabooleanIf true, attempt JSON.parse on the response body. On success, `data` is the parsed value (typically object or array). On parse failure, `data` silently stays as the original string - no error, no war…
unblockerbooleanAdd common browser headers such as User-Agent, Sec-Ch-Ua, and Accept-Encoding. Default false. Enable it for targets that reject basic HTTP requests.
urlstringyesPublic target URL. Private or reserved targets return `ssrf_blocked`. Use {ts} in the URL to insert the current Unix timestamp. Example: https://api.example.com/v1/users.
validateobjectPost-fetch response validation. When the response fails these checks the tool returns an error envelope.
NameTypeReqDescription
codestringStable error code for retry classification. auth_failed means the FourA API key was rejected; verify that key, not target-site credentials. Other codes: ssrf_blocked, upstream_non_json, output_valida…
currentobjectCaller's current usage at error time
dataDecoded response body. String by default; object when tryJsonData=true and the body parsed as JSON; serialized Buffer JSON shape (`{type:"Buffer", data:[byte, ...]}`, bytes 0-255) when returnBuffer=t…
errorstringHuman-readable error message
headersResponse 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-val…
limitsobjectPer-service limits at error time
offloaded_resource_uristringfoura-mcp://payload/<uuid>. Pass this URI to resources/read to retrieve the offloaded body.
retryAfternumberSeconds to wait before retrying (429/503)
servicestring
size_bytesintegerTotal offloaded body size in bytes
statusintegerHTTP status code from the target. `0` indicates the request failed before any HTTP response (DNS failure, connection refused, timeout) - check the `error` field for the underlying reason.
total_timeWall-clock request duration in seconds. Number when present; string in some variants; null when the request never started.

No examples provided.