Receitas MCP

Receitas MCP

Cinco prompts prontos para colar que você pode executar em qualquer cliente compatível com MCP (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) após instalar o servidor MCP do FourA.

Cada receita orquestra um ou mais de foura_single, foura_proxy, foura_browser para uma tarefa comum de scraping. Duas maneiras de usá-las:

  1. Invoque o prompt integrado, cada cliente MCP exibe prompts fornecidos pelo servidor como um comando de barra ou painel /prompts. Escolha o prompt, preencha os argumentos, execute. O servidor MCP retorna o fluxo de trabalho modelado; o LLM o executa com as ferramentas corretas.
  2. Copie o texto abaixo em seu próprio chat. Mesmo efeito, menos visível.

O servidor MCP envia estes como prompts nativos: scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.

Nota sobre páginas grandes (v0.2.0+): por padrão, os corpos das responses retornam inline em structuredContent independentemente do tamanho, o que funciona em todos os clientes MCP, incluindo o Claude Desktop. Se você estiver em um cliente que suporta resources/read do MCP E deseja economizar tokens em páginas grandes, passe offload_large: true na chamada da ferramenta. Responses >= 50 KB virão como um resource_link que seu cliente busca sob demanda. Os prompts integrados abaixo assumem o padrão (inline).

1. Fazer scraping de uma página de produto

Para páginas de detalhes de produtos de e-commerce, incluindo sites single-page-app e páginas protegidas por desafios anti-bot.

Integrado: scrape_product_page(url)

Prompt manual:

Fetch the product page at <URL> using foura_browser — most product pages are single-page apps and need JavaScript to render.

From the response body extract:
- product title
- price (with currency)
- primary product image URL (absolute, not relative)
- availability / stock status
- product SKU or ID if visible

Return as JSON: {"title": "...", "price": 0, "currency": "USD", "image_url": "...", "in_stock": true, "sku": "..."}

Quando esta é a receita certa: um agente de comparação de preços, um notificador de produto de volta ao estoque, uma planilha de análise competitiva.

2. Extrair um artigo

Para artigos de notícias, posts de blog, documentação técnica, qualquer coisa onde você queira um texto de leitura limpo, sem navegação, anúncios e ruídos de rodapé.

Integrado: extract_article(url)

Prompt manual:

Fetch <URL> using foura_single with unblocker:true. Most news and blog sites are server-rendered, so HTTP is fastest (200ms-2s).

If foura_single returns a 403, captcha page, or empty content, retry the same URL with foura_proxy (maxTries:3) — it routes through a rotating proxy pool.

From the response, extract:
- headline (the main H1, not the page title bar)
- author byline (may be inside .author, [rel=author], itemprop)
- publication date (look for <time>, .published, or JSON-LD)
- main article body (strip navigation, ads, related-content, footer, comments)
- canonical URL (rel=canonical or og:url)

Return as JSON: {"title": "...", "author": "...", "date_published": "ISO8601", "body": "...", "canonical_url": "..."}

Quando esta é a receita certa: um resumidor de pesquisas, um RSS de um único site, um boletim diário de notícias.

3. Monitorar um preço

Para páginas de preços e ofertas de produtos, com comparação opcional em relação a um preço-alvo.

Integrado: monitor_pricing(url, target_price?)

Prompt manual:

Use foura_proxy with maxTries:5 and unblocker:true to fetch <URL>. Pricing pages often have aggressive bot detection, so go through the proxy pool from the start.

Extract the current price (look for visible $/€/£ amounts, JSON-LD Offer schema, [itemprop=price]).

If a target price is provided, compare: report whether current is below/at/above target and the absolute difference.

Return as JSON: {"url": "...", "current_price": 0.00, "currency": "USD", "target_price": 0, "difference": 0, "status": "below|at|above"}

Quando esta é a receita certa: um agente de alerta de economia, um monitor de tarifas de viagem, um rastreador de preços de concorrentes B2B.

4. Verificar a integridade do endpoint

Para testes de uptime e validação de endpoint de API.

Integrado: check_endpoint_health(url, expected_text?)

Prompt manual:

Use foura_single with GET on <URL>, timeout_ms:5000, and validate.status.accept:[200]. If an expected substring is provided, also set validate.data.accept:["<EXPECTED>"] so the request only counts as success when the body contains it.

Report:
- reachable (true if any response came back, false on connection error/timeout)
- status_code (HTTP code from target)
- total_time_ms (from the total_time field)
- validation_passed (true if status + body validation conditions were met)

Return as JSON: {"url": "...", "reachable": true, "status_code": 200, "total_time_ms": 0, "validation_passed": true}

Quando esta é a receita certa: um monitor de uptime externo, um teste de fumaça de deploy, um inspetor de API de terceiros.

5. Buscar uma lista de URLs em paralelo

Para tarefas em lote onde você deseja metadados sobre muitas URLs sem incluir seus corpos inline.

Integrado: bulk_fetch_urls(urls)

Prompt manual:

Parse the following comma-separated URLs and fetch each one concurrently using foura_single (unblocker:true).

URLs: <COMMA_SEPARATED>

For any URL that returns 403, captcha page, or empty body — retry that single URL with foura_proxy (maxTries:3).

Return a JSON array, one entry per URL in input order:
[{"url": "...", "status": 200, "success": true, "body_size_bytes": 0, "via": "single|proxy", "error": null}, ...]

Do NOT inline full response bodies in the output — only metadata. If you need body content, call foura_single individually after this report.

Quando esta é a receita certa: uma varredura de acessibilidade de sitemap, uma auditoria de links quebrados, uma verificação de "quais destas 50 URLs de produtos ainda existem".

6. Bloquear um IP de proxy em várias chamadas (cross-tool)

Quando você precisa que chamadas consecutivas pareçam vir do mesmo cliente, por exemplo, fazendo scraping de um fluxo de checkout de várias etapas ou capturando os recursos JS de uma página após renderizá-la, escolha um proxy em funcionamento e reutilize seu ID.

Prompt manual:

First, call foura_proxy with maxTries:5 and a quick probe URL (httpbin.org/ip is fine) to find a working proxy. Capture the returned `proxy` ID (looks like "4DZ3VE").

Then for every follow-up call:
- HTTP request: foura_single with the SAME `proxy` value — same exit IP, you preserve any IP-based session.
- Rendered page: foura_browser with the SAME `proxy` value — the browser exits through the same pool IP.

If a specific proxy ID starts failing mid-workflow, call foura_proxy again with ignoreProxies:["<failed_id>"] to get a fresh one.

Quando esta é a receita certa: scraping de páginas onde o estado da sessão está vinculado ao IP, busca de sub-recursos CSS/JS após a renderização, testes A/B de como um site se comporta a partir de um país específico ou qualquer fluxo de várias chamadas onde você deseja uma saída previsível.

7. Cadeia de desafios WAF (tier-1: Vercel / Cloudflare / Akamai)

O padrão canônico para sites protegidos por um desafio WAF tier-1, como Vercel Security Checkpoint, Cloudflare 'Just a moment', Akamai Bot Manager. Chamar foura_browser diretamente contra esses alvos geralmente captura a página de desafio em vez do conteúdo pós-desafio, pois o snapshot é disparado antes que o recarregamento adiado do desafio seja concluído. Resolva via foura_proxy primeiro (o que limpa o desafio tentando muitos IPs de saída até que um passe) e, em seguida, encadeie o ID de proxy retornado no foura_browser.

Prompt manual:

Step 1 — find an exit IP that clears the challenge:
  foura_proxy({
    maxTries: 30,               // tier-1 WAFs typically need this range
    request: { method: "GET", url: "<TARGET_URL>", unblocker: true }
  })
On success the response carries `proxy: "<BASE36_ID>"`. Capture it.

Step 2 — render the post-challenge page through the same IP:
  foura_browser({
    url: "<TARGET_URL>",
    proxy: "<BASE36_ID>"        // reuse the cleared exit
  })

If foura_proxy still fails after 30 attempts with the same block,
the gate is likely a country / ASN allowlist (country-licensed
bookmakers, government sites). Rotation will never help — pivot
strategy (different data source, partner agreement, etc.).

Gatilhos que devem direcionar você para esta receita:

  • foura_single retorna o status 429 com o header x-vercel-mitigated: challenge ou cf-mitigated: challenge
  • O título do corpo corresponde a Vercel Security Checkpoint / Just a moment / Attention Required / We're verifying your browser
  • foura_browser captura diretamente um HTML de desafio minúsculo em vez do conteúdo real

Quando esta é a receita certa: SPAs hospedados na Vercel/Netlify atrás do WAF da Vercel (iqair.com, muitos sites de marketing renderizados em React), lojas protegidas pela Cloudflare durante períodos de modo de ataque, varejo de alto tráfego protegido pela Akamai.

Dicas que se aplicam a todas as sete

  • Comece com o foura_single. É a ferramenta mais rápida (200ms a 2s) e funciona para a maioria dos sites públicos. Suba o nível para o foura_proxy em caso de 403/captcha, e para o foura_browser se faltar conteúdo JavaScript.
  • unblocker:true é barato. Adiciona headers de navegador realistas no nível da rede; sites que bloqueiam com base em User-Agent ou detecção de accept-encoding deixam sua request passar.
  • Regras de validação economizam retentativas. Defina validate.data.fail:["captcha", "blocked"] para que uma response obviamente bloqueada seja considerada uma falha e acione a retentativa/escalonamento de proxy, em vez de ser analisada como sucesso.
  • Corpos grandes são inline por padrão (v0.2.0+). Passe offload_large: true em qualquer chamada de ferramenta para alternar para resource_link + resources/read para economizar tokens em páginas grandes, útil apenas em clientes que suportam resources/read (o Claude Desktop atualmente não suporta).

Quer uma receita que não está aqui?

Envie um e-mail para support@foura.ai com o caso de uso. O servidor MCP envia novos prompts na mesma frequência dos lançamentos da API REST.

Atualizado em: 1 de julho de 2026