rea-from-api
Discovers and verifies Drupal JSON:API endpoints for site content and generates clients.
Can reverse engineer PyPI project pages and the documented public JSON API, then generate and validate a client for package data.
Discovers and verifies Shopify storefront JSON endpoints for product and store data, then generates clients.
Discovers and verifies WooCommerce (Woo) Store API endpoints for products and store data, then generates clients.
Discovers and verifies WordPress REST API endpoints exposed by a WordPress site, enabling agents to inspect content APIs and generate clients.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
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.
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 |
Achar a API oficial que você nem sabia que existia | Specs que o site publica ( |
Usar uma API que pede chave | Verificação com a sua chave ( |
Pegar dados de um site sem API | JSON-LD, |
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 |
|
Usar suas ferramentas de API |
|
Colocar direto no seu projeto |
|
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 setupO 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 |
| Configuração |
Claude Code |
|
|
Claude Desktop |
|
|
Codex |
|
|
Cursor |
|
|
VS Code (Copilot) |
|
|
Windsurf |
|
|
Gemini CLI |
|
|
Projeto atual |
|
|
--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 --liverun = 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_keyComo 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 |
| nenhum |
OpenAPI / Swagger / WordPress REST | Operações documentadas (JSON ou YAML) | nenhum |
Documentação e hosts de API do próprio site | Rotas | 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 |
| internet |
Rotas de dados de frameworks | Next.js | 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, | 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 |
|
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 | +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 | 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
Fluxo e estratégias: ordem, limites, códigos de saída
Modelo de evidências: campos de endpoint e evidência, extensões OpenAPI
Como estender: novas estratégias e geradores
SKILL.md: instruções para agentes
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…
This server cannot be deployed
Maintenance
Related MCP Connectors
Robots-aware website audits, pre-crawl quotes, and structured evidence for people and agents.
Web data for agents. Extract web pages, crawl websites, discover URLs, and search the web.
Pages, crawls and URL batches as clean Markdown and JSON for AI agents, with an Evidence Record.
Company profiles, site audits and page-to-JSON extraction for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables 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.1416 npm1ISC
- FlicenseBqualityCmaintenanceCompiles any website into typed, callable tools for AI agents, enabling discovery and invocation of live web APIs and UI actions without custom MCP servers.81-
- AlicenseBqualityCmaintenanceEnables 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.721 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables 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 npm13MIT