Receitas de MCP
Receitas MCP
Nove 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 usa foura_auto (o padrão inteligente) ou um ou mais dos recursos de nível mais baixo foura_single, foura_proxy, foura_browser para uma tarefa comum de scraping. Duas maneiras de usá-las:
- Invoque o prompt integrado - todo cliente MCP disponibiliza prompts fornecidos pelo servidor como um comando slash ou painel
/prompts. Escolha o prompt, preencha os argumentos e execute. O servidor MCP retorna o fluxo de trabalho baseado em modelo; o LLM o executa com as ferramentas corretas. - Copie o texto abaixo no seu próprio chat. Mesmo efeito, menos detectável.
O servidor MCP disponibiliza estes prompts nativos: smart_fetch, scrape_product_page, extract_article, monitor_pricing, check_endpoint_health, bulk_fetch_urls.
Observação sobre páginas grandes (v0.2.0+): por padrão, os corpos das respostas retornam em linha no
structuredContentindependentemente do tamanho. Isso funciona em qualquer cliente MCP, incluindo o Claude Desktop. Se você estiver usando um cliente compatível com MCPresources/readE quiser economizar tokens em páginas grandes, passeoffload_large: truena chamada da ferramenta. Respostas >= 50 KB chegam como umresource_linkque seu cliente busca sob demanda. Os prompts integrados abaixo assumem o padrão (em linha).
Código aberto no GitHub; no npm como @fouradata/mcp.
Smart fetch (auto): comece aqui
A receita mais simples: envie uma URL para foura_auto e deixe que ele faça tentativas limitadas entre os métodos de request disponíveis. Use-o sempre que quiser o conteúdo e não precisar escolher a primeira ferramenta manualmente.
Integrado: smart_fetch(url, must_contain?, extract?)
Prompt manual:
Fetch <URL> using foura_auto.
Pass validate.data.accept:["<a string the real page must contain>"] so only the real page counts as success. Auto makes bounded attempts and returns an error if none satisfies the validation.
For a plain follow-up, call foura_single with session.proxy as proxy, session.cookies serialized as a Cookie header, and session.userAgent as a User-Agent header. For JavaScript, pass the session values to the matching foura_browser fields.
Return the content, or extract the requested fields as JSON.
Quando esta é a receita certa: uma primeira tentativa em que o FourA deve escolher o método, especialmente quando a validação de conteúdo puder distinguir uma página real de uma página de recusa.
1. Fazer scrape de uma página de produto
Para páginas de detalhes de produtos de e-commerce, incluindo sites baseados em single-page app e páginas com verificação de site.
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 e a receita certa: um agente de comparacao de precos, um notificador de reposicao de estoque, uma planilha de analise da concorrencia.
2. Extrair um artigo
Para artigos de noticias, posts de blog, documentacao tecnica, qualquer coisa onde voce queira texto de leitura limpo sem navegacao, anuncios e ruido de rodape.
Integrado: extract_article(url)
Prompt manual:
Fetch <URL> using foura_single with unblocker:true. Use plain HTTP first when the article is present in the server-rendered response.
If foura_single returns a 403, a verification 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 sumarizador de pesquisa, um RSS de um único site, um resumo diário de notícias.
3. Monitor a price
Para páginas de preços e ofertas de produtos, com comparação opcional com um preço-alvo.
Integrado: monitor_pricing(url, target_price?)
Prompt manual:
Use foura_proxy with maxTries:5 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 alertas 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 endpoints de API.
Nativo: 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 (the total_time field is in seconds: multiply by 1000)
- 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 externo de uptime, um smoke test de deploy, um watchdog de API de terceiros.
5. Fazer fetch de uma lista de URLs em paralelo
Para jobs em lote nos quais você quer metadados sobre muitas URLs sem incluir o corpo delas 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, a verification 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 verificação de acessibilidade do sitemap, uma auditoria de links quebrados, uma checagem de "quais destas 50 URLs de produtos ainda existem".
6. Escolha e reutilize uma saída com escopo de país
Use isto quando o destino precisar ver a request vinda de um conjunto específico de países, incluindo páginas JavaScript onde a seleção de proxy deve ocorrer antes da renderização do navegador.
Prompt manual:
First call foura_proxy for the actual target:
{
"maxTries": 5,
"exitCountries": ["FR", "GB"],
"request": { "method": "GET", "url": "<TARGET_URL>" }
}
Treat exitCountries as a strict allowlist. On success, verify that exitCountry is FR or GB and capture the returned proxy ID.
If the page then needs JavaScript, call foura_browser with the returned proxy ID in foura_browser.proxy. Do not start a new proxy selection, because that may choose a different exit.
If foura_proxy returns no_eligible_proxy, preserve the requested country scope and retry later. Change or widen the list only after the user explicitly changes the requirement. Never retry silently without exitCountries.
Quando esta é a receita correta: conteúdo regional, mercados licenciados, preços específicos por região ou qualquer fluxo de trabalho que precise de um país verificado visível para o destino e, em seguida, reutilize a saída selecionada. O escopo por país está incluído a partir do plano Startup; em outros planos, foura_proxy retorna plan_limit_feature, o que nenhuma nova tentativa resolve.
7. Página protegida: proxy primeiro, navegador quando JavaScript for necessário
Use uma tentativa limitada de proxy com validação de conteúdo quando uma request direta retornar uma página de recusa. Se a response validada for bem-sucedida, mas o conteúdo desejado ainda precisar de JavaScript, reutilize esse mesmo ID de proxy no navegador. Um fornecedor visível de proteção não é garantia de que qualquer método funcionará.
Prompt manual:
Step 1 - call foura_proxy for <TARGET_URL>. Put a string unique to the real page in request.validate.data.accept. If the user supplied an allowed country list, pass it as exitCountries; do not guess country codes.
Step 2 - if the response passes validation and JavaScript is still required, call foura_browser with the returned proxy ID in the proxy field.
Do not call foura_proxy again after a successful selection, because the new call may choose a different exit. If the bounded attempt fails, report the failure honestly instead of claiming support for the target's protection vendor.
Quando esta é a receita certa: um destino protegido onde o HTTP consegue selecionar uma saída funcional, mas o conteúdo final exige renderização em JavaScript.
8. Bloqueado em uma página estática: mude o navegador apresentado
Use isso quando um destino estático retornar um bloqueio ou uma página de desafio (challenge) e o JavaScript não for o problema. Por padrão, a request apresenta a versão mais recente do Google Chrome; alguns destinos aceitam um navegador ou plataforma diferente.
Prompt manual:
Step 1 - call foura_single for <TARGET_URL> with request validation: put a string unique to the real page in validate.data.accept.
Step 2 - if the response is a refusal page, or defense comes back with solved false, call foura_single again with a different presented browser, for example {"browser": "Firefox"} or {"browser": "Chrome", "os": "Android"}. Keep the same validation.
If the tool answers that the combination does not exist, pick one from the list it returns. Do not retry the same impossible combination, and do not assume another browser was used instead: the request was refused, not substituted.
Step 3 - if changing the presented browser does not help, escalate to foura_proxy for a different exit, and to foura_browser only when the content genuinely needs JavaScript.
Quando esta é a receita certa: um alvo renderizado no servidor que filtra pelo cliente que vê, em vez do endereço de saída. Alterar o navegador apresentado não tem custo extra e vale a pena tentar antes da rotação de proxy.
Dicas que se aplicam a todas elas
- Não tem certeza de qual ferramenta usar? Use foura_auto. Ela escolhe o método e gerencia a escalada para você. Utilize uma ferramenta específica apenas quando quiser controle explícito.
- Comece com
foura_singlequando HTTP simples for suficiente. Escale parafoura_proxyquando a requisição direta for bloqueada e parafoura_browserquando o conteúdo desejado precisar de JavaScript. - Headers de requisição semelhantes aos de navegador estão ativados por padrão (
unblocker). Mantenha a validação de conteúdo ativa para que uma página de recusa não seja contabilizada como sucesso, e altere o navegador apresentado combrowser,osouversionquando um alvo recusar o padrão. - Regras de validação economizam retentativas. Defina
validate.data.fail:["captcha", "blocked"]para que uma resposta obviamente bloqueada conte como falha e acione a retentativa ou escalada de proxy, em vez de ser processada como sucesso. - O escopo de país é estrito. Um resultado
no_eligible_proxynão é permissão para tentar novamente semexitCountries; mantenha o requisito ou pergunte ao usuário antes de alterá-lo. - Corpos grandes ficam inline por padrão (v0.2.0+). Passe
offload_large: truepara alternar pararesource_link+resources/readem clientes compatíveis com esses recursos.
Quer uma receita que não está aqui?
Envie um e-mail para support@foura.ai com o caso de uso. O servidor MCP disponibiliza novos prompts no mesmo ritmo dos lançamentos da REST API.