MewCP Firecrawl MCP
Servidor MCP de Firecrawl alojado, sin estado y multiinquilino que permite a los asistentes de IA rastrear, extraer y obtener datos web estructurados a través de Firecrawl.
Documentación
Convierte cualquier sitio web en datos limpios y listos para IA.
Un servidor de Model Context Protocol (MCP) que expone la API de Firecrawl para scraping, crawling, mapeo, búsqueda, análisis de documentos, automatización de navegador e investigación académica.
Descripción general
El servidor MCP de Firecrawl proporciona potentes capacidades de extracción de datos web e investigación:
- Extrae páginas individuales o rastrea sitios web completos a markdown, HTML, JSON y más
- Busca en la web, mapea estructuras de sitios y ejecuta extracción de datos autónoma basada en agentes
- Automatiza navegadores con código o lenguaje natural, analiza documentos y busca artículos académicos y GitHub
Ideal para:
- Asistentes de IA que necesitan obtener y procesar contenido web en vivo
- Automatizar la extracción de datos estructurados y pipelines de investigación
- Crear flujos de trabajo de inteligencia competitiva, revisión de literatura y auditoría de sitios
Herramientas
Scrape
scrape_url — Extrae una sola URL
Extrae una sola URL y devuelve su contenido en los formatos solicitados. Devuelve la página como markdown, HTML, captura de pantalla, enlaces o un resumen. Para URLs de documentos públicos (PDF, DOCX), Firecrawl los detecta y analiza automáticamente. La respuesta incluye data.metadata.scrapeId que se puede pasar a browser_interact para continuar interactuando con la misma sesión de navegador en vivo.
Entradas:
- `url` (string, required) — Full URL to scrape, including https://.
- `formats` (list[string], optional, default: ["markdown"]) — Output formats to request: markdown (default), html, rawHtml, links, screenshot, summary, json, audio, video, branding, product, menu. Use ['markdown'] for text content, add 'screenshot' for visual capture.
- `only_main_content` (bool, optional, default: true) — Strip navigation, headers, footers, and ads — keep the article/content body.
- `wait_for` (int, optional, default: 0) — Milliseconds to wait after page load before capturing (0–30000). Use for JS-rendered pages.
- `timeout_ms` (int, optional, default: 30000) — Maximum time the page load may take in milliseconds (1000–300000).
- `mobile` (bool, optional, default: false) — Emulate a mobile viewport.
- `proxy` (string, optional, default: "auto") — Proxy tier: 'auto' (default), 'basic', or 'enhanced' (stealth, higher credit cost).
- `block_ads` (bool, optional, default: true) — Block ads and cookie consent banners before capturing.
- `include_tags` (list[string], optional) — HTML tags to include in output (e.g. ['article', 'main']). Omit to include all.
- `exclude_tags` (list[string], optional) — HTML tags to strip from output (e.g. ['nav', 'footer', 'aside']).
- `remove_base64_images` (bool, optional, default: true) — Drop inline base64 images from markdown output to reduce token usage.
Esquema de salida data:
{
markdown: string | null;
summary: string | null;
html: string | null;
rawHtml: string | null;
screenshot: string | null;
links: string[] | null;
metadata: {
title: string | null;
description: string | null;
language: string | null;
sourceURL: string | null;
url: string | null;
keywords: string | null;
statusCode: number | null;
contentType: string | null;
error: string | null;
scrapeId: string | null;
} | null;
warning: string | null;
}
batch_scrape_urls — Inicia un trabajo de scrape por lotes
Inicia un trabajo de scrape por lotes asíncrono para una lista de URLs. Devuelve un ID de trabajo inmediatamente. Usa get_batch_scrape_status para consultar la finalización y recuperar el contenido extraído. Ideal para extraer de 5 a 1000 URLs en paralelo sin bloquear.
Entradas:
- `urls` (list[string], required) — List of URLs to scrape.
- `formats` (list[string], optional, default: ["markdown"]) — Output formats to request: markdown (default), html, rawHtml, links, screenshot, summary, json, audio, video, branding, product, menu. Use ['markdown'] for text content, add 'screenshot' for visual capture.
- `only_main_content` (bool, optional, default: true) — Strip navigation, headers, footers, and ads from each page.
- `proxy` (string, optional, default: "auto") — Proxy tier: 'auto' (default), 'basic', or 'enhanced' (stealth, higher credit cost).
- `block_ads` (bool, optional, default: true) — Block ads and cookie banners.
- `remove_base64_images` (bool, optional, default: true) — Drop inline base64 images to reduce response size.
- `ignore_invalid_urls` (bool, optional, default: false) — Skip invalid URLs instead of failing the entire job.
- `max_concurrency` (int, optional) — Maximum simultaneous scrapes (leave None for Firecrawl default).
Esquema de salida data:
{
id: string;
url: string | null;
invalidURLs: string[] | null;
}
get_batch_scrape_status — Consulta el estado del scrape por lotes
Consulta el estado de un trabajo de scrape por lotes iniciado por batch_scrape_urls. Devuelve el estado (scraping/completed/failed), contadores de progreso y las páginas extraídas cuando termina. Si data.next está presente en la respuesta, llama de nuevo con el mismo job_id para obtener la siguiente página de resultados.
Entradas:
- `job_id` (string, required) — Batch scrape job ID returned by `batch_scrape_urls`.
Esquema de salida data:
{
status: string;
total: number | null;
completed: number | null;
creditsUsed: number | null;
expiresAt: string | null;
next: string | null;
data: {
markdown: string | null;
summary: string | null;
html: string | null;
rawHtml: string | null;
screenshot: string | null;
links: string[] | null;
metadata: {
title: string | null;
description: string | null;
language: string | null;
sourceURL: string | null;
url: string | null;
keywords: string | null;
statusCode: number | null;
contentType: string | null;
error: string | null;
scrapeId: string | null;
} | null;
warning: string | null;
}[] | null;
}
cancel_batch_scrape — Cancela un trabajo de scrape por lotes
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Detiene un trabajo de scrape por lotes en ejecución. Todo el scraping en curso se termina y cualquier resultado incompleto se pierde permanentemente — esto no se puede deshacer. NUNCA llames a esta herramienta de forma autónoma o como parte de un flujo automatizado. DEBES detenerte, informar al usuario exactamente qué trabajo de scrape por lotes se cancelará y que los resultados incompletos se perderán permanentemente, y esperar su confirmación escrita explícita antes de continuar.
Entradas:
- `job_id` (string, required) — Batch scrape job ID to cancel.
Esquema de salida data:
{
status: string;
}
Crawl
crawl_url — Inicia un rastreo de sitio completo
Inicia un trabajo de rastreo asíncrono desde una URL semilla, siguiendo enlaces internos hasta la profundidad y el límite de páginas especificados. Devuelve un ID de trabajo inmediatamente. Usa get_crawl_status para consultar el progreso y los resultados. Usa los patrones regex include_paths/exclude_paths para controlar qué URLs se visitan. Ideal para extraer todo el contenido de un sitio, documentación o blog.
Entradas:
- `url` (string, required) — Seed URL to start crawling from.
- `limit` (int, optional, default: 10000) — Maximum number of pages to crawl (1–10000).
- `max_discovery_depth` (int, optional) — Maximum link depth from the seed URL. Omit for unlimited.
- `include_paths` (list[string], optional) — Regex patterns — only URLs matching at least one pattern are crawled.
- `exclude_paths` (list[string], optional) — Regex patterns — URLs matching any pattern are skipped.
- `sitemap` (string, optional, default: "include") — Sitemap usage: 'include' (use sitemap + crawl), 'skip' (crawl only), 'only' (sitemap only).
- `allow_subdomains` (bool, optional, default: false) — Follow links to subdomains of the seed URL.
- `allow_external_links` (bool, optional, default: false) — Follow links to entirely different domains.
- `ignore_query_parameters` (bool, optional, default: false) — Treat URLs that differ only in query parameters as duplicates.
- `formats` (list[string], optional, default: ["markdown"]) — Output formats to request: markdown (default), html, rawHtml, links, screenshot, summary, json, audio, video, branding, product, menu. Use ['markdown'] for text content, add 'screenshot' for visual capture.
- `only_main_content` (bool, optional, default: true) — Strip navigation, headers, footers, and ads from each page.
- `proxy` (string, optional, default: "auto") — Proxy tier: 'auto' (default), 'basic', or 'enhanced' (stealth, higher credit cost).
- `block_ads` (bool, optional, default: true) — Block ads and cookie banners.
Esquema de salida data:
{
id: string;
url: string | null;
}
get_crawl_status — Consulta el estado del rastreo
Consulta el estado de un trabajo de rastreo iniciado por crawl_url. Devuelve el estado (scraping/completed/failed/cancelled), contadores de progreso y las páginas rastreadas. Si data.next está presente, llama de nuevo para recuperar la siguiente página de resultados.
Entradas:
- `job_id` (string, required) — Crawl job ID returned by `crawl_url`.
Esquema de salida data:
{
status: string;
total: number | null;
completed: number | null;
creditsUsed: number | null;
expiresAt: string | null;
createdAt: string | null;
completedAt: string | null;
duration: number | null;
next: string | null;
data: {
markdown: string | null;
summary: string | null;
html: string | null;
rawHtml: string | null;
screenshot: string | null;
links: string[] | null;
metadata: {
title: string | null;
description: string | null;
language: string | null;
sourceURL: string | null;
url: string | null;
keywords: string | null;
statusCode: number | null;
contentType: string | null;
error: string | null;
scrapeId: string | null;
} | null;
warning: string | null;
}[] | null;
}
cancel_crawl — Cancela un trabajo de rastreo
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Detiene un trabajo de rastreo en ejecución. Todo el rastreo en curso se termina y cualquier página incompleta se pierde permanentemente — esto no se puede deshacer. NUNCA llames a esta herramienta de forma autónoma o como parte de un flujo automatizado. DEBES detenerte, informar al usuario qué trabajo de rastreo se cancelará y que las páginas incompletas se perderán permanentemente, y esperar su confirmación escrita explícita antes de continuar.
Entradas:
- `job_id` (string, required) — Crawl job ID to cancel.
Esquema de salida data:
{
status: string;
}
Discover
map_url — Mapea todas las URLs de un sitio web
Descubre todas las URLs de un sitio web sin extraer su contenido. Devuelve una lista de enlaces con título y descripción. Úsala antes de crawl_url para entender la estructura del sitio, o pasa search para filtrar URLs por relevancia a un tema. Es mucho más rápida y económica que el rastreo cuando solo necesitas la lista de URLs.
Entradas:
- `url` (string, required) — Root URL of the site to map.
- `search` (string, optional) — Filter and rank URLs by relevance to this search query.
- `sitemap` (string, optional, default: "include") — 'include' (sitemap + crawl), 'skip' (crawl only), 'only' (sitemap only).
- `include_subdomains` (bool, optional, default: true) — Include URLs from subdomains of the root URL.
- `ignore_query_parameters` (bool, optional, default: true) — Deduplicate URLs that differ only in query parameters.
- `ignore_cache` (bool, optional, default: false) — Bypass sitemap cache to get the freshest URL list.
- `limit` (int, optional, default: 5000) — Maximum number of URLs to return (1–100000).
- `country` (string, optional) — ISO 3166-1 alpha-2 country code for geo-targeting (e.g. 'US', 'DE').
Esquema de salida data:
{
links: {
url: string;
title: string | null;
description: string | null;
}[];
}
search_web — Busca en la web
Busca en la web y opcionalmente extrae el contenido completo de cada resultado. Devuelve páginas web, imágenes o noticias según sources. Establece scrape_formats en ['markdown'] para obtener el contenido completo de la página junto con cada resultado — omítelo para obtener solo título, descripción y URL. Admite sintaxis de operadores: site:, filetype:, intitle:, -exclude, "frase exacta".
Entradas:
- `query` (string, required) — Search query. Supports operators: site:domain.com, filetype:pdf, intitle:keyword, -exclude, "exact phrase", related:domain.com.
- `limit` (int, optional, default: 10) — Number of results to return (1–100).
- `sources` (list[string], optional, default: ["web"]) — Result types to return: 'web', 'images', 'news'. Combine as needed.
- `categories` (list[string], optional) — Filter to specific result categories: 'github', 'research', 'pdf'.
- `country` (string, optional) — ISO country code for geo-targeted results (e.g. 'US', 'DE', 'JP'). Default: US.
- `location` (string, optional) — City/region for geo-targeted results (e.g. 'San Francisco,California,United States').
- `tbs` (string, optional) — Time-based filter: 'qdr:d' (past day), 'qdr:w' (past week), 'qdr:m' (past month).
- `include_domains` (list[string], optional) — Restrict results to these domains (mutually exclusive with exclude_domains).
- `exclude_domains` (list[string], optional) — Remove these domains from results (mutually exclusive with include_domains).
- `scrape_formats` (list[string], optional) — If provided, each result page is scraped and content returned in these formats. Omit to return only title/description/URL without scraping.
- `timeout_ms` (int, optional, default: 45000) — Request timeout in milliseconds (1000–300000). Default 45000.
Esquema de salida data:
{
results: {
web: {
title: string | null;
description: string | null;
url: string | null;
markdown: string | null;
html: string | null;
rawHtml: string | null;
category: string | null;
}[] | null;
images: {
title: string | null;
imageUrl: string | null;
imageWidth: number | null;
imageHeight: number | null;
url: string | null;
position: number | null;
}[] | null;
news: {
title: string | null;
snippet: string | null;
url: string | null;
date: string | null;
imageUrl: string | null;
position: number | null;
markdown: string | null;
}[] | null;
} | null;
warning: string | null;
id: string | null;
creditsUsed: number | null;
}
Parse
parse_document — Analiza un archivo de documento
Analiza un documento local o privado (PDF, DOCX, XLSX, HTML y más) a markdown limpio o datos estructurados. Úsala cuando el archivo no sea accesible públicamente por URL — para URLs públicas usa scrape_url en su lugar. El archivo debe proporcionarse como bytes codificados en base64, lo que la hace adecuada para cadenas de flujo de trabajo donde un paso anterior obtiene y codifica el contenido del archivo.
Entradas:
- `file_content_b64` (string, required) — Base64-encoded file bytes to parse.
- `file_name` (string, required) — Filename including extension (e.g. 'report.pdf', 'data.docx'). Extension determines parser.
- `formats` (list[string], optional, default: ["markdown"]) — Output formats: markdown, html, rawHtml, links, summary.
- `only_main_content` (bool, optional, default: true) — Strip headers, footers, and decorative content.
Esquema de salida data:
{
markdown: string | null;
summary: string | null;
html: string | null;
rawHtml: string | null;
links: string[] | null;
metadata: {
title: string | null;
description: string | null;
language: string | null;
sourceURL: string | null;
url: string | null;
keywords: string | null;
statusCode: number | null;
contentType: string | null;
error: string | null;
scrapeId: string | null;
} | null;
warning: string | null;
}
Agent
run_agent — Inicia un agente autónomo de extracción de datos
Inicia un agente de investigación web autónomo que busca, navega y extrae datos basándose en un prompt de lenguaje natural. No se requieren URLs — el agente las encuentra. Usa schema para obtener salida JSON estructurada. Devuelve un ID de trabajo; usa get_agent_status para consultar. Usa spark-1-mini (predeterminado, 60% más económico) para la mayoría de las tareas; spark-1-pro para investigación compleja de múltiples dominios. Establece max_credits para limitar el gasto — el trabajo falla sin cargos si se alcanza el límite.
Entradas:
- `prompt` (string, required) — Natural language description of the data to find (max 10000 chars). Be specific: 'Find the 5 most-funded AI startups in 2024 with founder names and total funding.'
- `urls` (list[string], optional) — Optional seed URLs to focus the agent. Omit to let the agent search freely.
- `schema` (string, optional) — JSON schema string for structured output. Omit for free-form text.
- `model` (string, optional, default: "spark-1-mini") — 'spark-1-mini' (default, cheaper) or 'spark-1-pro' (higher accuracy).
- `max_credits` (int, optional) — Credit cap for this job (default 2500). Job fails without charges if exceeded.
Esquema de salida data:
{
id: string | null;
status: string | null;
data: object | null;
expiresAt: string | null;
creditsUsed: number | null;
}
get_agent_status — Consulta el estado del trabajo del agente
Consulta el estado de un trabajo de agente iniciado por run_agent. Devuelve el estado (processing/completed/failed/cancelled), los datos extraídos cuando termina y el uso de créditos. Consulta cada 15–30 segundos; los trabajos normalmente se completan en 1–5 minutos.
Entradas:
- `job_id` (string, required) — Agent job ID returned by `run_agent`.
Esquema de salida data:
{
id: string | null;
status: string | null;
data: object | null; // shape matches the schema passed to run_agent
expiresAt: string | null;
creditsUsed: number | null;
}
cancel_agent — Cancela un trabajo de agente
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Solicita la cancelación de un trabajo de agente en ejecución. Los pasos de razonamiento en curso se completan antes de que el trabajo pase a cancelado — los créditos de los pasos completados pueden seguir cobrándose y no se pueden recuperar. NUNCA llames a esta herramienta de forma autónoma o como parte de un flujo automatizado. DEBES detenerte, informar al usuario qué trabajo de agente se cancelará y las implicaciones de créditos, y esperar su confirmación escrita explícita antes de continuar.
Entradas:
- `job_id` (string, required) — Agent job ID to cancel.
Esquema de salida data:
{
status: string;
}
Browser
browser_interact — Interactúa con una sesión de navegador
Ejecuta código o un prompt de lenguaje natural en la sesión de navegador en vivo vinculada a un trabajo de scrape anterior. El scrape_id proviene de data.metadata.scrapeId en una respuesta de scrape_url. La primera llamada crea la sesión de navegador en el mismo estado de página que el scrape. Las llamadas posteriores con el mismo scrape_id reutilizan la sesión en vivo. Proporciona code (Playwright/Node/Python/Bash para ejecutar) o prompt_text (navegación impulsada por IA), no ambos. Devuelve URL de CDP, URL de vista en vivo, stdout y salida de IA. Llama a browser_close cuando termines para liberar la sesión.
Entradas:
- `scrape_id` (string, required) — Scrape job ID from `data.metadata.scrapeId` in a `scrape_url` response.
- `code` (string, optional) — Code to execute in the browser sandbox (1–100000 chars). Provide this OR prompt_text, not both.
- `prompt_text` (string, optional) — Natural language task for the AI browser agent (1–10000 chars). Provide this OR code, not both.
- `language` (string, optional, default: "node") — Code language when using `code`: 'node' (default), 'python', or 'bash'.
- `timeout` (int, optional, default: 30) — Execution timeout in seconds (1–300).
Esquema de salida data:
{
cdpUrl: string | null;
liveViewUrl: string | null;
interactiveLiveViewUrl: string | null;
output: string | null; // AI response when using prompt_text
stdout: string | null;
result: string | null;
stderr: string | null;
exitCode: number | null;
killed: boolean | null;
}
browser_close — Cierra una sesión de navegador
DESTRUCTIVO — REQUIERE CONFIRMACIÓN EXPLÍCITA DEL USUARIO ANTES DE LLAMAR. Destruye la sesión de navegador adjunta a un trabajo de scrape. Todo el estado del navegador, cookies y datos de sesión se pierden permanentemente y la sesión no se puede reanudar — esto no se puede deshacer. Llama siempre a esta herramienta cuando termines de interactuar para evitar fugas de recursos del navegador y créditos. NUNCA llames a esta herramienta de forma autónoma o como parte de un flujo automatizado. DEBES detenerte, confirmar con el usuario que la sesión de navegador ya no es necesaria, y esperar su confirmación escrita explícita antes de continuar.
Entradas:
- `scrape_id` (string, required) — Scrape job ID whose browser session to close (same ID used in browser_interact).
Esquema de salida data:
{
status: string;
}
Research
search_papers — Busca artículos de investigación académica
Busca en el índice de investigación académica de Firecrawl por tema, método, benchmark o autor. Devuelve artículos clasificados con paperId, título, resumen y puntuación de relevancia. Usa paperId de los resultados para llamar a get_paper o find_related_papers. Admite filtrado por subcadena del nombre del autor, categoría (p. ej. 'cs.LG') y rango de fechas.
Entradas:
- `query` (string, required) — Natural language search query (e.g. 'diffusion models image synthesis').
- `k` (int, optional, default: 40) — Maximum number of ranked papers to return (1–500).
- `authors` (string, optional) — Filter by author name substring (e.g. 'LeCun'). Comma-separate for multiple.
- `categories` (string, optional) — Filter by paper category (e.g. 'cs.LG', 'cs.CV'). Comma-separate for multiple.
- `from_date` (string, optional) — Inclusive lower bound on paper date in YYYY-MM-DD format (e.g. '2023-01-01').
- `to_date` (string, optional) — Inclusive upper bound on paper date in YYYY-MM-DD format.
Esquema de salida data:
{
results: {
paperId: string | null;
primaryId: string | null;
ids: { arxiv: string[] | null; } | null;
title: string | null;
abstract: string | null;
score: number | null;
}[];
}
get_paper — Obtén detalles completos de un artículo de investigación
Recupera los detalles completos de un artículo de investigación específico por su ID. Devuelve título, resumen, autores, categorías y fechas. El paper_id puede ser un paperId canónico (p. ej. '2014215642691656232') o un ID con prefijo de fuente (p. ej. 'arxiv:2105.05233') de los resultados de search_papers.
Entradas:
- `paper_id` (string, required) — Paper ID — either canonical paperId or source-prefixed ID like 'arxiv:2105.05233'.
- `k` (int, optional) — Number of related papers to include alongside the paper details.
Esquema de salida data:
{
paper: {
paperId: string | null;
primaryId: string | null;
ids: { arxiv: string[] | null; } | null;
title: string | null;
abstract: string | null;
authors: string | null;
categories: string[] | null;
createdDate: string | null;
updateDate: string | null;
};
}
find_related_papers — Encuentra artículos relacionados con un artículo semilla
Encuentra artículos relacionados con un artículo semilla, clasificados por relevancia semántica a una intención. Usa mode para elegir la estrategia de expansión: 'similar' (semánticamente cercanos), 'citers' (artículos que citan la semilla), 'references' (artículos citados por la semilla). Devuelve resultados clasificados con puntuaciones de relevancia. Ideal para flujos de trabajo de revisión de literatura: search_papers → find_related_papers → get_paper.
Entradas:
- `paper_id` (string, required) — Seed paper ID (canonical paperId or 'arxiv:XXXX.XXXXX').
- `intent` (string, required) — Natural language ranking intent (e.g. 'applications in medical imaging').
- `mode` (string, optional, default: "similar") — Expansion mode: 'similar' (default), 'citers', or 'references'.
- `k` (int, optional, default: 40) — Maximum number of related papers to return (1–500).
- `rerank` (bool, optional, default: false) — Apply an additional reranking pass over the fused candidate set.
Esquema de salida data:
{
results: {
paperId: string | null;
primaryId: string | null;
title: string | null;
abstract: string | null;
score: number | null;
}[];
poolSize: number | null;
truncated: boolean | null;
}
search_github — Busca issues, PRs y repositorios de GitHub
Busca en el historial de issues de GitHub, pull requests, discusiones y READMEs de repositorios usando lenguaje natural. Devuelve contenido coincidente con metadatos del repositorio, URLs y fragmentos en markdown. Útil para investigar cómo se corrigió un bug, qué han dicho los mantenedores de una librería, o para encontrar trabajo previo en proyectos de código abierto.
Entradas:
- `query` (string, required) — Natural language query (e.g. 'race condition in worker shutdown firecrawl').
- `k` (int, optional, default: 20) — Maximum number of results to return (1–100).
Esquema de data de salida:
{
results: {
resultType: string | null; // issue | pull_request | repository | discussion
repo: string | null;
url: string | null;
pageType: string | null;
number: number | null;
title: string | null;
snippet: string | null;
contentMd: string | null;
}[];
}
Referencia de Parámetros de la API
Envoltura de Respuesta
Cada herramienta devuelve la misma envoltura de nivel superior. Solo data varía según la herramienta.
// Success
{
success: true;
statusCode: number;
retriable: false;
retry_after_seconds: null;
error: null;
data: { ... }; // schema shown per tool above
}
// Error
{
success: false;
statusCode: number;
retriable: boolean;
retry_after_seconds: number | null;
error: {
code: string; // VALIDATION_ERROR | AUTH_ERROR | UPSTREAM_ERROR | SERVER_ERROR
message: string;
details: object;
};
data: null;
}
retriable—truecuando es seguro reintentar (límite de tasa, error de red, 503).falsepara errores de validación y autenticación.retry_after_seconds— segundos a esperar antes de reintentar; presente solo cuandoretriableestruey el proveedor upstream especifica un retraso.error.code— cadena legible por máquina:VALIDATION_ERROR,AUTH_ERROR,UPSTREAM_ERROR,SERVER_ERROR.
Formatos de Salida
Todas las herramientas de scraping aceptan una lista de formats:
markdown— Markdown limpio (predeterminado)html— HTML limpiorawHtml— HTML crudo de la páginascreenshot— Captura de pantalla de la página como base64links— Todos los enlaces encontrados en la páginasummary— Resumen de la página generado por IAjson— Extracción JSON estructuradaaudio,video,branding,product,menu— Modos de extracción especializados
Opciones de Proxy
auto— Selecciona automáticamente el mejor proxy (predeterminado)basic— Proxy estándar para uso generalenhanced— Proxy sigiloso para sitios protegidos contra bots (mayor costo de créditos)
Flujo de Trabajo de Trabajos Asíncronos
batch_scrape_urls, crawl_url y run_agent son asíncronos: devuelven un ID de trabajo inmediatamente:
- Llama a la herramienta → recibe
data.id - Consulta la herramienta de estado correspondiente (
get_batch_scrape_status,get_crawl_status,get_agent_status) con el ID de trabajo - Sigue consultando hasta que
statusseacompleted,failedocancelled - Si
data.nextestá presente en la respuesta de estado, llama de nuevo con el mismo ID de trabajo para paginar los resultados
Intervalo de consulta recomendado: cada 15–30 segundos. Permite al menos 2–3 minutos para trabajos de rastreo y agente.
Filtros de Búsqueda por Tiempo (tbs)
Usa el parámetro tbs en search_web para filtrar resultados por antigüedad:
qdr:h — Past hour
qdr:d — Past day
qdr:w — Past week
qdr:m — Past month
qdr:y — Past year
IDs de Artículos de Investigación
get_paper y find_related_papers aceptan dos formatos de ID:
Canonical: 2014215642691656232
Source-prefixed: arxiv:2105.05233
Usa paperId o primaryId de los resultados de search_papers.
Cómo Obtener tu Clave API de Firecrawl
Pasos
- Ve a Firecrawl e inicia sesión o crea una cuenta
- Navega a API Keys en tu panel de control
- Haz clic en Create API Key
- Copia la clave generada: solo la verás una vez
Solución de Problemas
Encabezados Faltantes o Inválidos
- Causa: Clave API no proporcionada en los encabezados de la solicitud o formato incorrecto
- Solución:
- Verifica que los encabezados
Authorization: Bearer YOUR_API_KEYyX-Mewcp-Credential-Id: CREDENTIAL-IDestén presentes - Comprueba que la clave API esté activa en tu cuenta de MewCP
- Verifica que los encabezados
Créditos Insuficientes
- Causa: Las llamadas a la API han excedido tus límites de solicitud
- Solución:
- Revisa el uso de créditos en tu panel de Curious Layer
- Mejora a un plan de pago o agrega créditos para límites más altos
- Contacta al soporte para ajustes de créditos
Credencial No Conectada
- Causa: No hay una credencial de Firecrawl vinculada a tu cuenta
- Solución:
- Ve a Credentials en tu panel de MewCP
- Agrega tu clave API de Firecrawl
- Reintenta la solicitud con el encabezado
X-Mewcp-Credential-Idcorrecto
Carga de Solicitud Malformada
- Causa: El payload JSON es inválido o le faltan campos obligatorios
- Solución:
- Valida la sintaxis JSON antes de enviar
- Asegúrate de que todos los parámetros obligatorios de la herramienta estén incluidos
- Verifica que los tipos de parámetros coincidan con los valores esperados (por ejemplo,
timeout_msdebe ser 1000–300000)
Servidor No Encontrado
- Causa: Nombre de servidor incorrecto en el endpoint de la API
- Solución:
- Verifica el formato del endpoint:
{server-name}/mcp/{tool-name} - Usa el nombre de servidor correcto de la documentación
- Revisa los servidores disponibles en tu cuenta de Curious Layer
- Verifica el formato del endpoint:
Error de la API de Firecrawl
- Causa: La API upstream de Firecrawl devolvió un error
- Solución:
- Revisa el estado del servicio de Firecrawl en Firecrawl Status
- Verifica que tu clave API tenga suficientes créditos para la operación
- Revisa el mensaje de error en la respuesta para obtener detalles específicos
Recursos
- Documentación de Firecrawl — Referencia oficial de la API
- Referencia de la API de Firecrawl — Referencia completa de endpoints
- Docs de FastMCP — Especificación de FastMCP
- Credenciales de FastMCP — Paquete de Credenciales de FastMCP para el manejo de credenciales