Rendex Screenshot
Capture screenshots de sites como PNG/JPEG via agentes de IA. Captura de página inteira, modo escuro, bloqueio de anúncios, viewports personalizados. Implantado na borda com Cloudflare Workers, plano gratuito incluído.
Documentação
@copperline/rendex-mcp
Servidor MCP para Rendex — renderize HTML bruto, Markdown ou qualquer URL em uma imagem ou PDF por meio de agentes de IA usando o Model Context Protocol.
Início Rápido
Claude Desktop / Cursor / Windsurf (npx)
Adicione à configuração do seu cliente MCP:
{
"mcpServers": {
"rendex": {
"command": "npx",
"args": ["-y", "@copperline/rendex-mcp"],
"env": {
"RENDEX_API_KEY": "your-api-key"
}
}
}
}
Onde adicionar:
| Cliente | Local da configuração |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) |
| Cursor | .cursor/mcp.json na raiz do projeto, ou Settings > MCP |
| Windsurf | Settings > MCP Servers |
Claude Code (CLI)
Adicione um .mcp.json à raiz do seu projeto com a mesma configuração acima. Em seguida, reinicie o Claude Code.
Importante: Adicione
.mcp.jsonao seu.gitignore— ele contém sua chave de API.
Remoto (zero-instalação, OAuth ou chave de API)
Conecte-se ao servidor hospedado em https://mcp.rendex.dev/mcp — sem necessidade de instalação.
Ele é protegido por OAuth 2.1 (código de autorização + PKCE S256), então clientes
com suporte a OAuth (ChatGPT, Claude, Cursor, o MCP Inspector) conectam-se sem chave de API —
você faz login com um código de e-mail de uso único e cada chamada é cobrada no próprio
plano e pool de créditos da Rendex.
Clientes que preferem uma chave estática ainda podem passar uma diretamente:
{
"mcpServers": {
"rendex": {
"url": "https://mcp.rendex.dev/mcp",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}
Ferramentas
rendex_screenshot
Renderize qualquer página web, HTML bruto ou Markdown em uma imagem ou PDF.
"Take a screenshot of https://example.com"
"Capture the full page of https://news.ycombinator.com in dark mode"
"Generate a PDF of https://github.com with A4 page size"
"Capture https://amazon.de as seen from Germany"
"Render this HTML invoice as a PDF"
"Render this Markdown release note as a PDF"
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
url | string | obrigatório* | URL da página web a capturar. Mutuamente exclusivo com html e markdown. |
html | string | — | HTML bruto a renderizar. Mutuamente exclusivo com url e markdown. |
markdown | string | — | Markdown a renderizar (o servidor converte para HTML). Mutuamente exclusivo com url e html. |
data | object | — | Dados chave-valor para templates Mustache. Quando definido, a string html ou markdown é renderizada como um template Mustache sem lógica antes da captura. Inválido com url. |
format | "png" | "jpeg" | "webp" | "pdf" | "png" | Formato de saída |
fullPage | boolean | false | Capturar a página inteira com rolagem |
darkMode | boolean | false | Emular esquema de cores escuro |
width | number | 1280 | Largura do viewport (320-3840) |
height | number | 800 | Altura do viewport (240-2160) |
resizeWidth | number | — | Reduzir a saída para esta largura em px (proporção preservada se resizeHeight for omitido). Ignorado para PDF |
resizeHeight | number | — | Reduzir a saída para esta altura em px (proporção preservada se resizeWidth for omitido). Ignorado para PDF |
quality | number | 80 | Qualidade da imagem 1-100 (somente JPEG/WebP, padrão 80) |
delay | number | 0 | Aguardar ms antes da captura |
blockAds | boolean | true | Bloquear anúncios e rastreadores |
blockCookieBanners | boolean | — | Ocultar banners comuns de cookies/consentimento (GDPR/CCPA) antes da captura |
blockResourceTypes | string[] | — | Bloquear tipos de recurso: font, image, media, stylesheet, other |
device | string | — | Predefinição de dispositivo: desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro — define viewport, escala e user agent de uma só vez. Substitui width/height/deviceScaleFactor/userAgent |
deviceScaleFactor | number | 2 | Proporção de pixels do dispositivo (1-3). 2× Retina por padrão |
timeout | number | 30 | Máximo de segundos para aguardar o carregamento da página (5-60) |
waitUntil | string | "networkidle2" | Prontidão da página: load, domcontentloaded, networkidle0, networkidle2 |
waitForSelector | string | — | Seletor CSS para aguardar antes da captura |
bestAttempt | boolean | true | Retornar renderização parcial em caso de timeout em vez de falhar |
selector | string | — | Seletor CSS do elemento a capturar em vez da página inteira |
hideSelectors | string[] | — | Seletores CSS para ocultar (display:none) antes da captura, ex.: ['.modal', '#newsletter-popup']. Máx. 50 |
css | string | — | CSS personalizado para injetar antes da captura (máx. 50KB) |
js | string | — | JavaScript personalizado para executar antes da captura (máx. 50KB) |
cookies | array | — | Cookies para definir em capturas autenticadas (máx. 50) |
headers | object | — | Cabeçalhos HTTP personalizados para a solicitação da página |
userAgent | string | — | Substituir a string de user agent do navegador |
pdfFormat | string | — | Tamanho da página PDF: A4, Letter, Legal, Tabloid, A3 |
pdfLandscape | boolean | — | Orientação paisagem do PDF |
pdfPrintBackground | boolean | true | Imprimir fundo no PDF |
pdfScale | number | 1 | Fator de escala do PDF (0.1-2) |
pdfMargin | object | — | Margens do PDF: {top, right, bottom, left} como valores CSS |
geo | string | — | Código de país ISO para captura com segmentação geográfica (Pro/Enterprise) |
geoCity | string | — | Cidade para segmentação geográfica (requer geo) |
geoState | string | — | Estado para segmentação geográfica (requer geo) |
async | boolean | — | Processar de forma assíncrona (retorna ID do job) |
webhookUrl | string | — | URL para receber callback quando a captura assíncrona for concluída (Starter+; Free/Basic consultam o status do job) |
cacheTtl | number | — | Segundos para armazenar o resultado em cache (3600-2592000) |
rendex_extract
Extraia conteúdo limpo em modo leitor de qualquer página web como Markdown, JSON ou HTML. Executa o mesmo processo de renderização Chromium de uma captura de tela, portanto captura o conteúdo após a execução do JavaScript — lidando com SPAs que leitores baseados apenas em fetch não conseguem. Remove navegação, anúncios e conteúdo repetitivo, retornando o corpo do artigo além de título, assinatura e resumo. Ótimo para alimentar conteúdo de página a um LLM, sumarização ou ingestão RAG.
"Extract the article text from https://example.com/post as Markdown"
"Pull the readable content from this SPA as JSON so I can summarize it"
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
url | string | obrigatório | URL da página web para extrair conteúdo legível |
extractFormat | "markdown" | "json" | "html" | "markdown" | Formato de saída — markdown (prosa amigável para LLM), json (estruturado: título/assinatura/resumo/nomeDoSite/comprimento), ou html (HTML limpo em modo leitor) |
device | string | — | Predefinição de dispositivo (desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro) — extrai a versão mobile/tablet de uma página |
blockAds | boolean | true | Bloquear anúncios e rastreadores antes da extração |
blockCookieBanners | boolean | — | Ocultar muros comuns de cookies/consentimento antes da extração |
hideSelectors | string[] | — | Seletores CSS para ocultar antes da extração, ex.: ['.modal', '#newsletter-popup']. Máx. 50 |
waitUntil | string | "networkidle2" | Prontidão da página: load, domcontentloaded, networkidle0, networkidle2 |
timeout | number | 30 | Máximo de segundos para aguardar o carregamento da página (5-60) |
rendex_render_link
Renderize uma URL, HTML bruto ou Markdown e receba uma URL de imagem assinada, hospedada e com cache de borda em vez dos bytes — ideal para imagens OG dinâmicas. Coloque a URL em <meta property="og:image"> ou em uma tag <img> e a Rendex serve uma cópia em cache a cada compartilhamento. Aceita os mesmos parâmetros de rendex_screenshot, além de um expiresIn opcional. Retorna { url, expiresAt, format, cacheTtl }.
"Make me a hosted OG-image URL for this Markdown release note"
"Give me a render link for this HTML card that I can drop into og:image"
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
(todos os parâmetros de rendex_screenshot) | — | — | Mesmas opções de fonte (url/html/markdown), formato, dimensionamento e templates |
expiresIn | number | TTL do servidor | Segundos até a URL assinada expirar (60–2592000) |
render_artifact
Transforme Markdown ou HTML em um artefato baixável com marca — um PDF, um PNG e uma página de compartilhamento hospedada — em uma única chamada. Ideal para saídas de agentes: relatórios, faturas, resumos, notas de versão, dashboards. Aplique um logotipo, cor de destaque, fonte, cabeçalho e rodapé; escolha tamanho/orientação/margens da página PDF. Retorna URLs hospedadas { pdfUrl, pngUrl, shareUrl, expiresAt } — sem necessidade de armazenamento do seu lado. Cada formato solicitado custa 1 crédito de renderização.
"Turn this Markdown report into a branded PDF and PNG with our logo and an orange accent"
"Render this invoice HTML to a PDF and give me a share link that expires in a week"
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
content | string | obrigatório | O corpo em Markdown ou HTML a renderizar (até ~4MB) |
inputFormat | "markdown" | "html" | "markdown" | Como interpretar content — markdown é convertido em HTML estilizado; html é usado como fragmento de corpo |
formats | ("pdf" | "png")[] | ["pdf","png"] | Quais formatos produzir. Cada um custa 1 crédito |
accentColor | string | — | Cor de destaque CSS para a barra, links e títulos (ex.: #EA580C) |
logo | string | — | URL http(s) de uma imagem de logotipo exibida no cabeçalho |
header | string | — | linha de texto simples do cabeçalho exibida ao lado do logotipo |
footer | string | — | linha de texto simples do rodapé exibida na parte inferior |
font | string | — | pilha CSS font-family para o corpo |
pageSetup | object | — | { size, orientation, margin{top,right,bottom,left}, scale, width, height, fullPage } |
data | object | — | Dados Mustache — quando definido, content é renderizado como um template Mustache sem lógica (mais {{logo}}/{{header}}/… de branding) antes da conversão |
expiresIn | number | 86400 | Segundos até as URLs hospedadas expirarem (3600–2592000). Padrão 24h |
Rendex Watch
Monitore uma URL em um agendamento e seja notificado quando ela mudar — diff visual com Chrome real (com sobreposição destacada), diff de texto extraído, ou ambos. Oito ferramentas permitem que um agente configure, inspecione, edite e remova watches na plataforma compartilhada da Rendex (uma chave rdx_, um pool de créditos).
"Watch https://example.com/pricing for visual changes and alert my webhook"
"Before I save it, test whether you can capture #pricing on that page"
"Show me the last few runs of watch <id> — did anything change?"
| Ferramenta | Finalidade | Entradas principais |
|---|---|---|
watch_create | Criar um watch (ativo → captura sua linha de base agora) | url, name?, intervalMinutes?, diffMode? (visual/texto/ambos), threshold?, renderParams?, webhookUrl? (Starter+), notifyEmail?, paused? |
watch_test | Testar uma configuração primeiro (não cria nada) | mesmos de watch_create |
watch_list | Listar seus watches | status? (ativo/pausado/todos), cursor?, limit? |
watch_get | Buscar um watch (+ URL da linha de base) | id |
watch_run | Executar uma verificação agora (1 crédito) | id |
watch_runs | Histórico de execuções com URLs assinadas de antes/depois/sobreposição | id, cursor?, limit? |
watch_update | Editar um watch no local — intervalo, modo de diff, canais, parâmetros de renderização | id, mais qualquer campo watch_create; webhookUrl/notifyEmail aceitam null para limpar um canal |
watch_delete | Excluir um watch + suas execuções | id |
renderParams carrega os controles de captura por verificação (fullPage padrão true, selector, device, geo (Pro+), além de controles de ruído ignoreRegions/ignoreText/minTextChars/suppressWhilePresent e uaMode). Pisos de intervalo são por plano (Free 1440 / Basic 180 / Starter 60 / Pro 30 / Enterprise 5). Metadados do watch + URLs de imagem assinadas são retornados como texto JSON.
rendex_account
Verifique a conta de dentro do agente: em qual plano ela está, quantos créditos de renderização foram usados neste mês versus o limite (e quando ele é redefinido), o limite de taxa por minuto e um link de upgrade com um toque. Permite que um agente responda "quanto eu usei?" ou "como consigo mais renders?" sem enviar o usuário ao painel. Somente leitura — não custa créditos.
"How many Rendex renders do I have left this month?"
"What plan am I on, and how do I upgrade for more?"
Retorna { plan, usage: { used, limit, remaining, unlimited, resetsAt }, rateLimitPerMinute, upgrade: { recommendedPlan, recommendedPlanCredits, upgradeUrl, manageBillingUrl } }.
Modelagem de dados
Transforme um modelo reutilizável em muitos documentos. Passe um objeto data junto com html
ou markdown, e a Rendex renderiza a string como um template Mustache sem lógica
antes da captura — interpolação {{var}}, loops {{#items}}…{{/items}} e
acesso aninhado a {{a.b}}. Ótimo para faturas, relatórios, certificados e cartões OG.
"Render this HTML invoice template to a PDF, filling it with this data:
<h1>Invoice {{number}}</h1><p>Total: {{total}}</p>
data = { number: 'INV-014', total: '$2,400' }"
data é válido apenas com html ou markdown — combiná-lo com url retorna um
erro de validação.
Autenticação
Obtenha sua chave de API em rendex.dev.
Defina a variável de ambiente RENDEX_API_KEY na configuração do seu cliente MCP.
Preços
| Plano | Chamadas/Mês | Taxa |
|---|---|---|
| Gratuito | 100 | 3/min |
| Iniciante | 10.000 | 60/min |
| Pro | 100.000 | 300/min |
| Empresarial | Personalizado | 1.000/min |
Licença
MIT — Copperline Labs LLC