Skip to main content
Glama

Português (Brasil) · English

rea-from-api

Transforme os dados de qualquer site num cliente de API testado para o seu app.

Viu num site um dado de que você precisa? Descubra exatamente como ele é servido, com provas, e receba código tipado e testado.

npm version CI MCP server OpenAPI 3.1 Windows · macOS · Linux MIT license

O que dá para fazer · Início rápido · Como funciona · O que ele descobre · Benchmark · Showcase · FAQ · Docs

npx rea-from-api setup


Precisa dos produtos, preços, pacotes, anúncios ou estatísticas que um site mostra? Peça ao seu agente para investigar com o rea-from-api. Ele descobre de onde os dados realmente vêm (uma API oficial, uma especificação OpenAPI publicada, as requisições que a página faz no navegador, uma rota de dados do framework ou JSON embutido no HTML), prova cada fonte com requisições somente leitura, registra a API como OpenAPI 3.1 e gera um cliente TypeScript ou Python testado para colocar no seu projeto.

Toda afirmação vem com evidência: qual estratégia encontrou, a requisição que confirmou e o hash dos bytes. Nada é inventado: uma rota vista só no JavaScript continua inferida até uma resposta real prová-la. A captura no navegador e a análise de bundles usam o motor REA.

O que dá para fazer

Você quer…

O rea-from-api entrega

Mostrar o catálogo ou os preços de uma loja no seu app

O endpoint de produtos, filtros e paginação, e um cliente tipado com listProducts() / iterateProducts()

Achar a API oficial que você nem sabia que existia

Specs que o site publica (/.well-known/api-catalog, OpenAPI, llms.txt), listagens no APIs.guru e hosts api. / developer. dos logs de certificados

Usar uma API que pede chave

Verificação com a sua chave (--auth-env) e um cliente que lê a chave do ambiente, sem nunca gravá-la

Pegar dados de um site sem API

JSON-LD, __NEXT_DATA__ ou rotas de dados do framework viram um extrator com os mesmos testes

Integrar os dados de uma SPA

As chamadas fetch/XHR da página, com corpos de resposta reais, schemas e paginação

Saber quando a integração vai quebrar

monitor reverifica a API depois e aponta mudanças que quebram; diff compara duas specs

Usar suas ferramentas de API

openapi.json para Postman, Insomnia, mock servers, linters ou qualquer gerador de código

Colocar direto no seu projeto

--target ../meu-app grava o cliente no projeto (TypeScript ou Python), com testes

Related MCP server: Hydra ACI

Início rápido

Funciona em Windows, macOS e Linux com Node.js 22.18+.

Configure o seu agente

npx rea-from-api setup

O setup detecta os seus agentes, mostra exatamente o que vai mudar, pergunta antes de aplicar e faz backup de cada configuração. Reinicie os agentes depois.

Agente

--agent

Configuração

Claude Code

claude-code

~/.claude.json + ~/.claude/skills/rea-from-api

Claude Desktop

claude-desktop

claude_desktop_config.json

Codex

codex

~/.codex/config.toml

Cursor

cursor

~/.cursor/mcp.json

VS Code (Copilot)

vscode

mcp.json do usuário

Windsurf

windsurf

~/.codeium/windsurf/mcp_config.json

Gemini CLI

gemini

~/.gemini/settings.json

Projeto atual

project

.mcp.json + .claude/skills/rea-from-api

--agent <id> (pode repetir) ou --all escolhem os agentes sem perguntar, --yes pula a confirmação, --dry-run só mostra o plano e --uninstall remove tudo o que o setup adicionou. Qualquer outro cliente MCP pode rodar npx -y rea-from-api mcp.

Peça ao agente

Investigue https://exemplo.com, descubra como ele disponibiliza os dados públicos de produtos,
me mostre as evidências e crie uma integração TypeScript para o meu projeto.

Ou use o terminal

npx rea-from-api run https://exemplo.com --goal "dados públicos de produtos" --target ../meu-app --live

run = investigate → plan → generate → validate. Cada etapa também roda sozinha; veja npx rea-from-api help. npx rea-from-api doctor mostra quais motores opcionais estão disponíveis.

APIs que exigem a sua chave

A maioria das APIs oficiais pede uma chave. Coloque a sua chave numa variável de ambiente e passe o nome dela. A chave vai só para a API do alvo e nunca aparece em relatórios, fixtures ou código gerado.

export MINHA_CHAVE=...           # PowerShell: $env:MINHA_CHAVE = "..."
npx rea-from-api run https://api.exemplo.com/docs --goal "dados de pedidos" \
  --auth-env MINHA_CHAVE --auth-header X-Api-Key        # ou: --auth-query api_key

Como funciona

O agente chama pelo MCP as mesmas operações que você roda no terminal. Os resultados são resumos curtos com os caminhos dos artefatos completos: findings.md, endpoints.json, evidence.json, openapi.json, plan.md e validation.md.

O que ele descobre

Fonte

O que retorna

Requisitos

Declarações do publicador

api-catalog (RFC 9727), Link: rel=service-desc, ai-plugin.json, llms.txt → specs e docs

nenhum

OpenAPI / Swagger / WordPress REST

Operações documentadas (JSON ou YAML)

nenhum

Documentação e hosts de API do próprio site

Rotas GET /caminho e URLs de exemplo na documentação (docs.* ou /docs) e raízes de API em JSON que listam as próprias rotas (api.*)

nenhum

Diretórios de APIs

Specs oficiais listadas no APIs.guru para o domínio

internet

Histórico da web

URLs de API/JSON arquivadas pela Wayback Machine, reverificadas hoje

internet

Hosts de API

api.*, developer.* via Certificate Transparency, checados atrás de specs

internet

Rotas de dados de frameworks

Next.js /_next/data, Gatsby page-data, Nuxt _payload, SvelteKit __data, WooCommerce Store API, JSON de vitrine Shopify, Drupal JSON:API

framework detectado

Tráfego do navegador

Requisições fetch/XHR com corpos de resposta, capturadas num navegador real

Chrome, Edge ou Chromium

JavaScript

URLs, métodos e headers dos bundles; source maps recuperam os módulos originais da API

jsluice opcional

GraphQL

O schema pela query de introspecção padrão

introspecção pública

Sua própria sessão

Um HAR gravado por você, lido offline com credenciais ocultadas

nenhum

HTML

JSON-LD, __NEXT_DATA__, estado inline, formulários GET, pistas de tecnologia

nenhum

Saída

Detalhes

Evidências

Cada endpoint: confirmado / observado / inferido / indisponível, status de teste, confiança, relevância para o objetivo, ids de evidência

OpenAPI 3.1

investigation/openapi.json com a origem de cada operação

Clientes

TypeScript (zero dependências em runtime) ou Python 3.9+ (só biblioteca padrão): tipos, validação, paginação, cache, retentativas, timeouts, logs sem segredos

Testes

Testes com fixtures gravadas, testes de retry/cache/paginação, testes ao vivo opcionais e um exemplo executável

Conformidade

Testes baseados em propriedades com Schemathesis nas operações somente leitura confirmadas

Mudanças

Mudanças estruturais e classificação de quebras com oasdiff

Motores opcionais são detectados, nunca instalados por conta própria: jsluice, schemathesis, oasdiff, mypy.

Benchmark

Testado em 22 sites reais, recebendo só a URL e um objetivo em texto: sem seeds, sem HAR e sem chave. Conta como usável o endpoint que o plan transformaria em código: confirmado por um GET real, em JSON e relevante para o objetivo.

Resultado

Sites

API usável na primeira tentativa

5 (crates.io, GitHub, dev.to, Internet Archive, Banco Central)

Usável com a autorização explícita --robots-exempt documented

+2 (PyPI, Open-Meteo)

API oficial encontrada, precisa da sua chave

2 (dados.gov.br, TMDB)

Parcial: dados vistos, nada pronto para gerar código

3

O robots.txt bloqueia a própria página

2 (Reddit, lobste.rs)

Bloqueado por anti-bot (Cloudflare), sem tentativa de contornar

5 (npm, GitLab, Stack Overflow, IBGE, CoinGecko)

Nada encontrado

3

Exemplos do que ele acha sozinho: api.github.com/repos/{owner}/{repo} já preenchido com nodejs/node a partir da URL da página; bcb.gov.br/api/servico/sitebcb/taxaselic/ultima para "taxa selic"; crates.io/api/v1/crates/{id} com paginação.

Rodar o benchmark mudou a ferramenta: a primeira rodada deu 3 de 22, e cada falha virou uma correção (documentação em subdomínios, raízes de API em hipermídia, palavras compostas na relevância, JSON de banner de consentimento entrando no código gerado). Tabela completa por site em benchmark/RESULTS.md; para reproduzir, rode node benchmark/run.mjs.

Showcase

PyPI: de uma página de projeto a um cliente devolvendo dados ao vivo

Um único run em https://pypi.org/project/requests/ (saída acima e em examples/pypi/). O navegador viu 7 requisições de dados, a Wayback Machine trouxe 1.000 URLs arquivadas para checar e os logs de certificados apontaram docs.pypi.org. Rotas de conta achadas no JavaScript foram recusadas pelo verificador. A JSON API do PyPI é bloqueada para robôs no robots.txt, então só foi verificada depois de um --robots-exempt explícito para a API documentada, e virou um cliente que passou em todas as checagens e devolveu dados ao vivo.

Uma loja SPA: todas as conexões de uma vez

O site de teste (tests/fixtures/site.ts) esconde os dados atrás de chamadas fetch. Uma investigação acha a API de produtos no tráfego do navegador, um catálogo RFC 9727 apontando para uma spec YAML, uma listagem no APIs.guru, uma URL morta da Wayback (verificada como inexistente), um endpoint de avaliações que existe só no TypeScript original recuperado do source map, um endpoint de parceiro que só funciona com a chave do próprio usuário, o schema GraphQL e uma rota de dados do Next.js, e então gera clientes TypeScript e Python que passam nos próprios testes. O npm test roda tudo isso em Windows, macOS e Linux.

Testes de conformidade acham o que as amostras escondiam

No mesmo site, o Schemathesis apontou que page, total_pages e next podem vir null, o que nunca aconteceu nas páginas gravadas. Exportar OpenAPI faz o contrato descoberto ser testado além dos exemplos que você por acaso observou.

Segurança

Só requisições somente leitura são enviadas automaticamente (mais uma query de introspecção GraphQL padrão). O robots.txt é respeitado; rotas de conta, admin, login, checkout e exclusão nunca são chamadas; 401/403 e redirecionamentos para login significam "use a sua credencial"; desafios anti-bot e CAPTCHAs param a execução, sem contorno. Requisições, tempo e retentativas têm limites rígidos. Cookies, tokens e chaves nunca chegam a relatórios, fixtures ou código gerado, e o conteúdo dos sites é tratado como dado, nunca como instrução. Detalhes em docs/safety.md.

Ferramentas MCP

investigate · list_endpoints · get_endpoint · read_findings · export_openapi · plan_integration · generate_integration · validate_integration · run_conformance · diff_specs · monitor · doctor

FAQ

Não. O navegador é uma de doze estratégias. Declarações do publicador, sondagem de OpenAPI, a documentação e os hosts de API do próprio site, convenções de frameworks, APIs.guru, Wayback Machine, Certificate Transparency, análise de JavaScript e source maps e introspecção GraphQL funcionam sem navegador (--browser off). O objetivo é a API por trás da página, verificada e tipada, não HTML raspado.

Acha os endpoints que o próprio site usa e verifica os somente leitura. Eles ficam marcados como não documentados: podem mudar sem aviso e o reuso pode ser restrito pelos termos do site. Confira os termos antes de depender dos dados; o monitor avisa quando algo muda.

Endpoints que respondem 401/403 ou redirecionam para login ficam marcados como auth: required. Use a sua chave com --auth-env (veja APIs que exigem a sua chave) ou grave um HAR da sua sessão e passe --har. Nada é extraído do site e nenhuma autenticação é contornada.

Muitos hosts de API (como api.open-meteo.com) usam Disallow: / para afastar robôs de busca, mesmo sendo APIs públicas feitas para programas. Por padrão ele respeita e avisa. Se os termos da API permitem o seu uso, rode de novo com --robots-exempt documented: libera só as rotas que a documentação do próprio site descreve, e isso fica registrado nas evidências.

Qualquer agente com suporte a MCP local. O setup configura Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Gemini CLI ou um .mcp.json de projeto; qualquer outro pode rodar npx -y rea-from-api mcp.

As fontes passivas enviam só o nome do domínio para APIs.guru, Wayback Machine e crt.sh; desative com --passive off. Todo o resto roda na sua máquina. O provedor do modelo do seu agente tem a própria política de dados.

Documentação

A documentação detalhada está em inglês.

Desenvolvimento

git clone https://github.com/vitorcgo/rea-from-api && cd rea-from-api
npm install
npm run typecheck
npm test        # testes unitários, de pipeline, MCP, setup e geradores contra um site local
npm run build   # compila o dist/ (o que o pacote npm executa)
node benchmark/run.mjs   # benchmark em sites reais (veja benchmark/)

Um checkout roda os fontes TypeScript direto; node bin/rea-from-api.mjs setup liga a skill a ele. O CI roda a suíte em Windows, macOS e Linux com Node 22 e 24 e instala o pacote empacotado num diretório limpo.

Créditos e licença

MIT, veja LICENSE. A captura no navegador, a análise de bundles e a leitura de HAR usam a REA (Reverse Engineer Anything), do morluto (MIT), como dependência sem modificações; o rea-from-api é um projeto independente. Avisos de terceiros: THIRD_PARTY_NOTICES.md.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables reverse engineering of web applications and chat interfaces through browser automation, network traffic capture, and streaming API discovery. Provides comprehensive tools for analyzing network patterns, capturing streaming responses, and automating complex web interactions.
      14
      16 npm
      1
      ISC
    • A
      license
      B
      quality
      C
      maintenance
      Enables AI agents to explore any OpenAPI 3 spec, inspect endpoints and schemas, generate TypeScript types, and make authenticated API calls using credentials mapped to the spec's security schemes.
      7
      21 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables agents to reverse engineer arbitrary websites at the network layer by discovering page HTTP/API requests, inferring REST and GraphQL payload schemas, and exporting OpenAPI drafts. It also lets users register sites, capture and learn read workflows as reusable operations, and invoke those operations or starter adapters for Product Hunt, Reddit, and LinkedIn over stdio MCP.
      224 npm
      13
      MIT