Firecrawl MCP

officiel

Ajoute des capacités puissantes de scraping web et de recherche aux clients LLM comme Cursor et Claude.

Que pouvez-vous faire avec Firecrawl MCP ?

  • Scraper une URL connue — Demandez à votre assistant de récupérer une seule page en Markdown propre ou en JSON structuré correspondant à un schéma que vous fournissez via firecrawl_scrape.
  • Découvrir les URL d'un site — Demandez-lui de lister les URL indexées d'un site avec firecrawl_map avant de décider quelles pages récupérer.
  • Rechercher sur le web — Obtenez des résultats classés pour une requête avec firecrawl_search, en récupérant éventuellement le contenu complet de quelques résultats.
  • Crawler plusieurs pages — Extrayez le contenu d'un site avec firecrawl_crawl, en le limitant avec limit, includePaths/excludePaths ou maxDiscoveryDepth.
  • Piloter un navigateur — Cliquez, saisissez du texte, remplissez des formulaires ou naviguez sur des pages dynamiques avec firecrawl_interact, en poursuivant une session via scrapeId.
  • Vérifier l'utilisation des crédits — Demandez combien de crédits Firecrawl il reste ou à quoi ils ont été dépensés avec firecrawl_credit_usage.

Documentation

Serveur MCP Firecrawl

Un serveur Model Context Protocol (MCP) qui apporte Firecrawl, l'API de contexte pour les agents IA, aux clients compatibles MCP : recherchez, scrapez et interagissez avec le web en direct et récupérez du Markdown propre ou des données structurées.

Un grand merci à @vrknetha, @knacklabs pour l'implémentation initiale !

Fonctionnalités

  • Rechercher sur le web, éventuellement avec le contenu complet de la page pour chaque résultat
  • Rechercher dans les index de sources pour développeurs (issues GitHub, pull requests fusionnées, READMEs et docs), de sources gouvernementales américaines et d'articles scientifiques (PubMed, bioRxiv, medRxiv, arXiv)
  • Scraper n'importe quelle URL en Markdown propre ou en JSON structuré
  • Analyser des PDF et des documents
  • Crawler un site pour obtenir le contenu de nombreuses pages, ou le mapper pour découvrir ses URLs
  • Interagir avec les pages dans un vrai navigateur : cliquer, saisir du texte, remplir des formulaires et naviguer sur des pages dynamiques
  • Lancer des jobs Agent pour de la recherche multi-sources qui renvoie des données structurées
  • Surveiller des pages et être notifié lorsque leur contenu change
  • Consulter l'utilisation actuelle et historique des crédits Firecrawl
  • Nouvelles tentatives et limitation de débit automatiques
  • Prise en charge du cloud et de l'auto-hébergement
  • Prise en charge de SSE

Amusez-vous avec notre serveur MCP sur le playground de MCP.so ou sur Klavis AI.

Quand utiliser ce serveur

  • Utilisez firecrawl_scrape lorsque vous avez une URL connue et souhaitez son contenu en markdown ou en JSON correspondant à un schéma que vous fournissez.
  • Utilisez firecrawl_map lorsque vous devez découvrir les URLs d'un site sans récupérer leur contenu.
  • Utilisez firecrawl_crawl lorsque vous avez besoin du contenu de nombreuses pages d'un site ; définissez limit, includePaths/excludePaths, ou maxDiscoveryDepth pour le borner.
  • Utilisez firecrawl_search lorsque vous partez d'une requête plutôt que d'une URL et souhaitez des résultats web classés. Les résultats contiennent des extraits ; récupérez les pages complètes avec firecrawl_scrape sur les URLs dont vous avez besoin. scrapeOptions récupère la page de chaque résultat dans le même appel et facture chacun comme un scrape, donc réservez-le au texte intégral de quelques résultats (l'endpoint de recherche seule ne récupère jamais de contenu).
  • Utilisez firecrawl_interact lorsqu'une page nécessite un clic, une saisie ou une navigation avant que vous puissiez la lire : passez un url pour une nouvelle page ou un scrapeId pour continuer sur une page que vous avez déjà scrapée.
  • Utilisez les outils firecrawl_monitor_* lorsque la même page doit être vérifiée selon un calendrier récurrent avec des diffs et des alertes de changement, plutôt que récupérée une seule fois.
  • Utilisez firecrawl_credit_usage pour vérifier les crédits restants ou ce sur quoi les crédits ont été dépensés, par mois ou par jour, éventuellement ventilés par endpoint ou par clé API.
  • Envisagez autre chose lorsque vous devez maintenir une session de navigateur ouverte au fil de nombreuses étapes qui vous sont propres, avec votre propre logique de nouvelle tentative et de terminaison : chaque appel firecrawl_interact exécute un tour prompt ou code jusqu'à son terme et rend le contrôle. La session peut persister entre les appels via scrapeId et se termine avec firecrawl_interact_stop, mais vous ne pouvez pas la piloter de manière interactive étape par étape depuis le côté client au sein d'un seul appel.

Ce serveur expose 27 outils lorsque le profil complet s'enregistre avec les paramètres par défaut (outils de feedback inclus, sans exécution en mode local sans clé). Définir FIRECRAWL_NO_SEARCH_FEEDBACK=1 et/ou FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 retire les outils de feedback correspondants et réduit ce nombre, tout comme un démarrage local sans clé. Pour les clients disposant d'une limite d'emplacements d'outils : l'endpoint hébergé sans clé (https://mcp.firecrawl.dev/v2/mcp, sans clé API) n'expose que 3 outils (firecrawl_scrape, firecrawl_search, firecrawl_parse), et l'endpoint dédié à la recherche seule (https://mcp.firecrawl.dev/v2/mcp-search) expose un ensemble fixe de 9 outils (recherche web, développeur, gouvernementale et scientifique, plus la consultation et l'exécution du catalogue Alexandria).

Installation

MCP hébergé (offre gratuite sans clé)

Connectez-vous au serveur distant hébergé sans aucune configuration :

https://mcp.firecrawl.dev/v2/mcp

Sur l'offre gratuite sans clé, scrape, search et parse fonctionnent sans clé API (avec limitation de débit). D'autres outils comme crawl, map et agent nécessitent toujours une clé.

Préférez OAuth ou une clé API dès que l'humain peut s'inscrire. Cela débloque l'ensemble complet d'outils et des limites plus élevées.

Pour une connexion interactive au compte, configurez votre client MCP pour utiliser cette URL de serveur. Il s'agit d'un endpoint MCP, pas d'une page navigateur ; utilisez le flux de connexion au compte du client et n'ajoutez pas une seconde entrée de serveur Firecrawl lors de la reconnexion :

https://mcp.firecrawl.dev/v2/mcp-oauth

Pour une connexion par clé API (par exemple, une intégration non supervisée), conservez l'URL du serveur comme suit :

https://mcp.firecrawl.dev/v2/mcp

Configurez ensuite l'en-tête sécurisé ou le paramètre de secret du client avec :

Authorization: Bearer <FIRECRAWL_API_KEY>

Ne mettez jamais de clé API dans l'URL du serveur. Ne mettez jamais de clé API dans un chat d'agent. Configurez-la directement dans le client ou le gestionnaire de secrets. Consultez le guide de configuration du MCP hébergé et le guide d'intégration des agents pour les instructions propres à chaque client.

Nommer votre intégration

Une intégration qui se connecte via HTTP peut se nommer elle-même avec un en-tête X-Firecrawl-Origin, par exemple X-Firecrawl-Origin: my-agent. Le serveur le signale à Firecrawl comme origine de la requête mcp-my-agent@<server version>, à la place du nom de client ou du User-Agent qu'il signalerait autrement. Utilisez des lettres, des chiffres et des tirets : chaque suite d'autres caractères devient un tiret, les tirets de début et de fin sont supprimés, et le nom est tronqué à 48 caractères. Les résultats des outils ne sont pas affectés ; seule l'origine envoyée à l'API Firecrawl (et transmise au beforeKeylessRequest d'un embedder) change.

Endpoint de recherche seule

Une surface de recherche à périmètre fixe est également hébergée à l'adresse :

https://mcp.firecrawl.dev/v2/mcp-search

Elle expose un ensemble fixe de neuf outils : firecrawl_search, firecrawl_developer_search, firecrawl_gov_search, les quatre outils firecrawl_research_*, et les deux outils Alexandria firecrawl_find_tools et firecrawl_scrape. Son firecrawl_search ne récupère aucun contenu de page.

Exécution avec npx

env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

Installation manuelle

npm install -g firecrawl-mcp

Exécution sur Cursor

Configuration de Cursor 🖥️ Remarque : nécessite Cursor version 0.45.6+ Pour les instructions de configuration les plus à jour, veuillez consulter la documentation officielle de Cursor sur la configuration des serveurs MCP : Guide de configuration des serveurs MCP de Cursor

Pour configurer Firecrawl MCP dans Cursor v0.48.6

  1. Ouvrez les paramètres de Cursor
  2. Allez dans Features > MCP Servers
  3. Cliquez sur « + Add new global MCP server »
  4. Saisissez le code suivant :
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

Pour configurer Firecrawl MCP dans Cursor v0.45.6

  1. Ouvrez les paramètres de Cursor
  2. Allez dans Features > MCP Servers
  3. Cliquez sur « + Add New MCP Server »
  4. Saisissez ce qui suit :
    • Name: « firecrawl-mcp » (ou le nom de votre choix)
    • Type: « command »
    • Command: env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Si vous utilisez Windows et rencontrez des problèmes, essayez cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

Remplacez your-api-key par votre clé API Firecrawl. Si vous n'en avez pas encore, vous pouvez créer un compte et l'obtenir sur https://www.firecrawl.dev/app/api-keys

Après l'ajout, actualisez la liste des serveurs MCP pour voir les nouveaux outils. Le Composer Agent utilisera automatiquement Firecrawl MCP lorsque c'est approprié, mais vous pouvez le demander explicitement en décrivant ce dont vous avez besoin sur le web. Accédez au Composer via Command+L (Mac), sélectionnez « Agent » à côté du bouton d'envoi, et saisissez votre requête.

Exécution sur Windsurf

Ajoutez ceci à votre ./codeium/windsurf/model_config.json :

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Exécution en mode HTTP Streamable local

Pour exécuter le serveur en utilisant Streamable HTTP en local au lieu du transport stdio par défaut :

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

Utilisez l'url : http://localhost:3000/mcp

Dans ce mode, le serveur ne répond qu'aux requêtes adressées à localhost, 127.0.0.1 ou [::1] (sur n'importe quel port), ainsi qu'à l'adresse indiquée dans HOST lorsqu'elle n'est pas 0.0.0.0 ou ::. Une requête dont l'en-tête Host désigne un autre hôte, ou dont l'en-tête Origin désigne un autre site, reçoit 403, et les en-têtes CORS renvoient une origine autorisée au lieu de *. Les requêtes GET et HEAD vers /health reçoivent une réponse quel que soit l'hôte, afin que les health checks continuent de fonctionner, et le serveur journalise une ligne nommant FIRECRAWL_MCP_ALLOWED_HOSTS pour chaque requête qu'il refuse. Cela empêche les pages web que vous visitez d'appeler le serveur local via du DNS rebinding ou des requêtes cross-origin et d'utiliser son FIRECRAWL_API_KEY.

Pour joindre le serveur sous un autre nom ou une autre adresse, comme un nom d'hôte derrière un reverse proxy ou une IP de réseau local, listez-le dans FIRECRAWL_MCP_ALLOWED_HOSTS (séparés par des virgules ; les ports sont ignorés). La même liste détermine quelles origines de navigateur peuvent appeler le serveur. Un reverse proxy sur la même machine peut conserver l'adresse de bind par défaut :

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
  FIRECRAWL_MCP_ALLOWED_HOSTS=mcp.home.lan npx -y firecrawl-mcp

Les clients sur d'autres machines ont aussi besoin que le serveur écoute sur une adresse non-loopback, donc définissez également HOST. Chaque client pouvant atteindre le port est alors servi avec le FIRECRAWL_API_KEY du serveur, donc ne faites cela que sur un réseau de confiance :

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY HOST=0.0.0.0 \
  FIRECRAWL_MCP_ALLOWED_HOSTS=192.168.1.20 npx -y firecrawl-mcp

FIRECRAWL_MCP_ALLOWED_HOSTS=* désactive la vérification et rétablit l'en-tête CORS générique. Ne faites cela que lorsque quelque chose devant le serveur vérifie lui-même les hôtes et les origines.

Exécution avec Docker

L'image ghcr.io/firecrawl/firecrawl-mcp-server exécute le même serveur que npx -y firecrawl-mcp. Chaque build depuis main est étiqueté latest, v<package version> et sha-<commit sha>. v<package version> pointe vers le build le plus récent de cette version, donc épinglez sha-<commit sha> (ou un digest) lorsque vous avez besoin d'une image fixe.

stdio (par défaut), pour les clients MCP qui lancent le serveur comme une commande :

docker run -i --rm -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest
{
  "mcpServers": {
    "firecrawl-mcp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "FIRECRAWL_API_KEY", "ghcr.io/firecrawl/firecrawl-mcp-server:latest"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Streamable HTTP, servi à l'adresse http://localhost:3000/mcp :

docker run --rm -p 127.0.0.1:3000:3000 \
  -e HTTP_STREAMABLE_SERVER=true \
  -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
  ghcr.io/firecrawl/firecrawl-mcp-server:latest

L'image définit HOST=0.0.0.0 et PORT=3000 ; remplacez PORT (et le mappage -p) pour écouter ailleurs. Le serveur utilise le FIRECRAWL_API_KEY du conteneur pour les requêtes qui n'envoient pas leur propre identifiant, donc l'exemple publie le port sur 127.0.0.1 uniquement ; ne l'exposez pas plus largement sauf si les clients doivent fournir leur propre clé. Définissez FIRECRAWL_API_URL pour utiliser une API Firecrawl auto-hébergée. Le conteneur s'exécute en tant qu'utilisateur non privilégié node. Le serveur ne répond qu'à localhost, 127.0.0.1 et [::1] dans les en-têtes Host et Origin, donc le mappage -p 127.0.0.1:3000:3000 fonctionne tel quel ; pour le joindre sous un autre nom, définissez -e FIRECRAWL_MCP_ALLOWED_HOSTS=<host> (voir Mode HTTP Streamable local).

Exécution sur VS Code

Pour une installation en un clic, cliquez sur l'un des boutons d'installation ci-dessous...

Install with NPX in VS Code Install with NPX in VS Code Insiders

Pour une installation manuelle, ajoutez le bloc JSON suivant à votre fichier User Settings (JSON) dans VS Code. Vous pouvez le faire en appuyant sur Ctrl + Shift + P et en tapant Preferences: Open User Settings (JSON).

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "apiKey",
        "description": "Firecrawl API Key",
        "password": true
      }
    ],
    "servers": {
      "firecrawl": {
        "command": "npx",
        "args": ["-y", "firecrawl-mcp"],
        "env": {
          "FIRECRAWL_API_KEY": "${input:apiKey}"
        }
      }
    }
  }
}

En option, vous pouvez l'ajouter à un fichier nommé .vscode/mcp.json dans votre espace de travail. Cela vous permettra de partager la configuration avec d'autres :

{
  "inputs": [
    {
      "type": "promptString",
      "id": "apiKey",
      "description": "Firecrawl API Key",
      "password": true
    }
  ],
  "servers": {
    "firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "${input:apiKey}"
      }
    }
  }
}

Configuration

Variables d'environnement

Requises pour l'API Cloud

  • FIRECRAWL_API_KEY : votre clé API Firecrawl
    • Requise lors de l'utilisation de l'API cloud (par défaut)
    • Facultative lors de l'utilisation d'une instance auto-hébergée avec FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Facultative) : endpoint API personnalisé pour les instances auto-hébergées
    • Exemple : https://firecrawl.your-domain.com
    • Si non fournie, l'API cloud sera utilisée (nécessite une clé API)
  • FIRECRAWL_INTEGRATION (Facultative) : tag d'intégration pour les applications qui lancent ce serveur, comme une extension d'éditeur
    • Envoyé comme champ integration des requêtes scrape, batch scrape, crawl, map, search, extract, agent, parse, interact et feedback
    • Utilisez une valeur commençant par _, par exemple _zed

Mode HTTP local

  • FIRECRAWL_MCP_ALLOWED_HOSTS (Facultatif) : Noms d'hôtes ou adresses supplémentaires auxquels le serveur répond avec HTTP_STREAMABLE_SERVER=true ou SSE_LOCAL=true, séparés par des virgules
    • localhost, 127.0.0.1, [::1] et un HOST sans joker sont toujours autorisés ; les ports sont ignorés
    • Les requêtes dont l'en-tête Host ou Origin désigne tout autre hôte reçoivent 403, sauf les requêtes GET et HEAD vers /health
    • * désactive la vérification ; non utilisé avec CLOUD_SERVICE=true, qui répond à tous les hôtes

MCP OAuth (jetons d'accès Bearer)

Firecrawl émet des jetons d'accès OAuth (fco_…) via le serveur d'autorisation sur firecrawl.dev. Ce serveur MCP transmet les identifiants qu'il résout à l'API Firecrawl en tant que Authorization: Bearer ….

  • Transports HTTP stream (CLOUD_SERVICE=true, HTTP_STREAMABLE_SERVER=true ou SSE_LOCAL=true) : Les clients doivent envoyer Authorization: Bearer <fco_access_token> sur les requêtes MCP. Un jeton Bearer OAuth est prioritaire sur x-firecrawl-api-key / x-api-key lorsque les deux sont présents.
  • stdio : Utilisez FIRECRAWL_OAUTH_TOKEN pour un jeton d'accès statique, ou continuez d'utiliser FIRECRAWL_API_KEY pour une clé API.

Utilisez uniquement des jetons d'accès (fco_…). Les jetons de rafraîchissement (fcr_…) doivent être échangés au point de terminaison de jeton, et non transmis à l'API de scrape/search.

CLOUD_SERVICE=true

CLOUD_SERVICE=true sert les outils via HTTP streamable sur PORT (par défaut 3000, lié à 0.0.0.0) avec des valeurs par défaut plus strictes : chaque requête doit porter un identifiant (une clé API ou un jeton d'accès OAuth), le scrape est en lecture seule (voir l'outil scrape ci-dessous), et firecrawl_parse n'accepte que les téléversements.

FASTMCP_ENDPOINT sélectionne la surface d'outils : /v2/mcp (par défaut) pour l'ensemble complet d'outils, /v2/mcp-oauth pour la surface de compte, ou /v2/mcp-search pour les outils de recherche uniquement (cela nécessite également FIRECRAWL_MCP_SEARCH_OAUTH_ONLY=true). Avec la surface complète, une instance de recherche uniquement démarre également sur le port 3001 ; définissez FIRECRAWL_MCP_SEARCH_ENABLED=false pour la désactiver.

Exemples de configuration

Pour l'utilisation de l'API cloud :

export FIRECRAWL_API_KEY=your-api-key

Pour une instance auto-hébergée :

# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com

# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key  # If your instance requires auth

Utilisation avec Claude Desktop

Ajoutez ceci à votre claude_desktop_config.json :

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Comment choisir un outil

Utilisez ce guide pour sélectionner le bon outil pour votre tâche :

  • Si vous connaissez l'URL exacte que vous voulez : utilisez scrape (avec le format JSON pour les données structurées)
  • Si vous avez plusieurs URL connues : appelez scrape pour chaque URL. Si vous avez spécifiquement besoin d'une seule opération API en masse, utilisez le point de terminaison batch de l'API Firecrawl en dehors de MCP.
  • Si vous devez découvrir des URL sur un site : utilisez map
  • Si vous voulez rechercher des informations sur le web : utilisez search
  • Si vous avez une question de programmation (une bibliothèque, un contrat d'API, un message d'erreur, un bug connu) : utilisez developer search
  • Si vous avez une question juridique ou réglementaire (une loi, un règlement, un code, une décision de justice ou une autre publication du gouvernement américain) : utilisez le Firecrawl Government Index
  • Si vous avez besoin d'articles scientifiques (biomédical, sciences de la vie, clinique ou littérature arXiv) : utilisez les outils de recherche, qui recherchent dans les résumés et le texte intégral des articles. search avec categories: ["research"] est une chose différente : un filtre de site web sur des résultats web ordinaires.
  • Si vous avez besoin d'une recherche multi-sources qui renvoie des données structurées, que vous ne connaissez pas les URL, ou que la réponse s'étend sur plusieurs sites (une entité et ses champs, une liste, un jeu de données) : utilisez agent
  • Si vous voulez analyser un site entier ou une section : utilisez crawl (avec des limites !)
  • Si vous avez besoin d'automatisation de navigateur interactive (cliquer, saisir, naviguer) : utilisez interact avec une URL pour une nouvelle page, ou scrape + interact lorsque vous avez déjà scrapé la page ou avez besoin d'un contrôle de scrape plus fin
  • Si vous avez besoin de données d'un fournisseur catalogué (Alexandria) : recherchez avec sources: ["alexandria"], inspectez le contrat sélectionné avec find_tools, et exécutez-le avec scrape alexandria

Tableau de référence rapide

OutilIdéal pourRenvoie
scrapeContenu d'une seule pageJSON (préféré) ou markdown
interactInteragir avec une URL ou une page scrapéeRésultat d'exécution + scrapeId pour le mode URL
mapDécouvrir des URL sur un siteURL[]
crawlExtraction multi-pages (avec limites)statut/données finaux du crawl après interrogation interne
parseFichiers et références de téléversements hébergésmarkdown, JSON ou sortie de document
searchRecherche web d'informationsresults[]
find_toolsNavigation du catalogue Alexandria et recherche d'URLfournisseurs, contrats d'outils et navigation nextTool
developerQuestions de programmation sur des sources pour développeursresults[] avec passages
govDroit primaire et matériel réglementaire américainsresults[] avec extraits
agentRecherche multi-sources, sites inconnus ou nombreuxJSON (données structurées)
monitorVérifications récurrentes de pagesmétadonnées et diffs de monitor/check
researchRecherche d'articles et de dépôts GitHubrésultats de recherche et correspondances de dépôts

Guide de sélection du format

Lorsque vous utilisez scrape, choisissez le bon format :

  • Format JSON (recommandé dans la plupart des cas) : Utilisez-le lorsque vous avez besoin de données spécifiques d'une page. Définissez un schéma basé sur ce que vous devez extraire. Cela garde les réponses petites et évite le débordement de la fenêtre de contexte.
  • Format Markdown (à utiliser avec parcimonie) : Uniquement lorsque vous avez réellement besoin du contenu complet de la page, par exemple pour lire un article entier en vue d'un résumé ou pour analyser la structure d'une page.

Outils disponibles

1. Outil Scrape (firecrawl_scrape)

Scrape le contenu d'une seule URL avec des options avancées.

Idéal pour :

  • L'extraction du contenu d'une seule page, lorsque vous savez exactement quelle page contient l'information.

Non recommandé pour :

  • L'extraction de contenu à partir de plusieurs pages (utilisez des appels scrape répétés pour des URL connues, ou map + scrape pour découvrir d'abord les URL, ou crawl pour le contenu complet des pages)
  • Lorsque vous n'êtes pas sûr de la page qui contient l'information (utilisez search)

Erreurs courantes :

  • Passer une liste d'URL à un seul appel scrape. Appelez scrape une fois par URL dans MCP. Si vous avez spécifiquement besoin d'une seule opération API en masse, utilisez le point de terminaison batch de l'API Firecrawl en dehors de MCP.
  • Utiliser le format markdown par défaut (utilisez le format JSON pour n'extraire que ce dont vous avez besoin).

Choisir le bon format :

  • Format JSON (préféré) : Pour la plupart des cas d'usage, utilisez le format JSON avec un schéma pour n'extraire que les données spécifiques nécessaires. Cela garde les réponses ciblées et évite le débordement de la fenêtre de contexte.
  • Format Markdown : Uniquement lorsque la tâche nécessite réellement le contenu complet de la page (par exemple, résumer un article entier, analyser la structure d'une page).

Exemple de prompt :

« Récupère les détails du produit depuis https://example.com/product. »

Exemple d'utilisation (format JSON - préféré) :

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/product",
    "formats": [
      {
        "type": "json",
        "prompt": "Extract the product information",
        "schema": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "price": { "type": "number" },
            "description": { "type": "string" }
          },
          "required": ["name", "price"]
        }
      }
    ]
  }
}

Exemple d'utilisation (format markdown - lorsque le contenu complet est nécessaire) :

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/article",
    "formats": ["markdown"],
    "onlyMainContent": true
  }
}

Exemple d'utilisation (format branding - extraire l'identité de marque) :

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com",
    "formats": ["branding"]
  }
}

Format branding : Extrait une identité de marque complète (couleurs, polices, typographie, espacement, logo, composants d'interface) pour l'analyse de design ou la réplication de style. Confidentialité : Définissez redactPII: true pour renvoyer le contenu avec les informations personnellement identifiables masquées. Avec CLOUD_SERVICE=true : scrape est en lecture seule. Il ne prend aucun actions de navigateur et ne peut pas accepter les conditions du fournisseur. Un profile nommé charge l'état de navigateur enregistré sans y enregistrer de modifications, et le firecrawl_search du point de terminaison complet traite scrapeOptions.profile de la même manière. Pour enregistrer l'état du navigateur dans un profil, ouvrez la page avec firecrawl_interact (voir ci-dessous). Un administrateur d'organisation accepte les conditions dans le tableau de bord.

Renvoie :

  • Données structurées JSON, markdown, profil de marque ou autres formats selon les spécifications.

2. Outil Map (firecrawl_map)

Cartographie un site web pour découvrir toutes les URL indexées sur le site.

Idéal pour :

  • Découvrir des URL sur un site web avant de décider quoi scraper
  • Trouver des sections spécifiques d'un site web

Non recommandé pour :

  • Lorsque vous savez déjà quelle URL spécifique vous avez besoin (utilisez scrape)
  • Lorsque vous avez besoin du contenu des pages (utilisez scrape après le mapping)

Erreurs courantes :

  • Utiliser crawl pour découvrir des URL au lieu de map

Exemple de prompt :

« Liste toutes les URL sur example.com. »

Exemple d'utilisation :

{
  "name": "firecrawl_map",
  "arguments": {
    "url": "https://example.com"
  }
}

Renvoie :

  • Tableau des URL trouvées sur le site

3. Outil Search (firecrawl_search)

Recherche sur le web et extrait éventuellement le contenu des résultats de recherche.

Idéal pour :

  • Trouver des informations spécifiques sur plusieurs sites web, lorsque vous ne savez pas quel site web contient l'information.
  • Lorsque vous avez besoin du contenu le plus pertinent pour une requête

Non recommandé pour :

  • Lorsque vous savez déjà quel site web scraper (utilisez scrape)
  • Lorsque vous avez besoin d'une couverture complète d'un seul site web (utilisez map ou crawl)

Erreurs courantes :

  • Utiliser crawl ou map pour des questions ouvertes (utilisez search à la place)

Exemple d'utilisation :

{
  "name": "firecrawl_search",
  "arguments": {
    "query": "remote work stipend policies at tech companies",
    "highlights": true,
    "limit": 5,
    "lang": "en",
    "country": "us"
  }
}

Pour obtenir le texte intégral de quelques résultats dans le même appel, ajoutez "scrapeOptions": { "formats": ["markdown"], "onlyMainContent": true }. Chaque résultat récupéré est facturé comme un scrape, donc pour la plupart des questions, utilisez les extraits et ne firecrawl_scrape que les URL dont vous avez besoin.

Définissez highlights sur true pour demander des surlignages pertinents pour la requête, ou sur false pour conserver les extraits de recherche d'origine. Omettez-le pour utiliser le comportement par défaut de l'API.

Ajoutez "sources": ["alexandria"] pour la découverte sémantique d'outils dans data.tools, éventuellement combinée avec web/news/images. Une requête est requise. Utilisez firecrawl_find_tools pour la recherche contextuelle et la divulgation progressive ; voir Alexandria Tools.

Pour les articles scientifiques, voir Research Tools : ils recherchent dans les résumés et le texte intégral des articles, tandis que categories: ["research"] ici filtre les résultats web ordinaires vers des sites web affiliés à la recherche.

Renvoie :

  • Résultats de recherche regroupés par source (data.web, data.images, data.news), avec contenu scrapé facultatif, plus un champ id. Chaque résultat porte un source et un position indexé à partir de 1, numéroté à partir de 1 au sein de son propre groupe — copiez la paire directement dans le valuableResults de firecrawl_search_feedback plutôt que de compter les éléments du tableau. Passez ce id à firecrawl_search_feedback après avoir utilisé les résultats pour rembourser 1 crédit (la recherche coûte 2) et améliorer la qualité de la recherche.

Exemple de prompt :

« Compare les politiques d'indemnité de télétravail entre les entreprises technologiques. »

3b. Outil de retour de recherche (firecrawl_search_feedback)

Envoie un retour structuré sur un résultat firecrawl_search précédent. Le premier retour par identifiant de recherche rembourse 1 crédit et améliore la qualité de recherche de Firecrawl. Idempotent par identifiant de recherche.

Appelez-le après chaque recherche que vous utilisez réellement (ou qui n'a pas aidé). Un retour mauvais/partiel avec missingContent est tout aussi précieux qu'un bon retour.

Désactivation : définissez FIRECRAWL_NO_SEARCH_FEEDBACK=1 (ou FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) dans l'environnement au démarrage du serveur MCP. L'outil firecrawl_search_feedback ne sera pas enregistré, donc les agents ne pourront pas l'appeler. Les administrateurs d'équipe peuvent également désactiver le retour côté serveur ; dans ce cas, l'outil est enregistré mais renvoie toujours feedbackErrorCode: "TEAM_OPTED_OUT". Champ le plus important : missingContent. C'est un tableau des éléments de contenu spécifiques que l'agent s'attendait à trouver mais n'a pas trouvés. Une entrée par sujet manquant ; ces entrées s'agrègent entre les équipes et nous indiquent quoi indexer ensuite. Pour obtenir des résultats utiles, utilisez valuableResults avec la paire source/position apposée sur chaque résultat — les résultats sont regroupés et chaque groupe est numéroté à partir de 1 indépendamment, donc les deux sont requis. Listez chaque résultat utile (les résultats non listés sont traités comme non utiles), et réservez valuableSources pour les URL utiles qui ne figuraient pas parmi les résultats renvoyés.

Plafond de remboursement quotidien (par équipe, par jour UTC, 100 crédits par défaut). Une fois que le creditsRefundedToday d'une équipe atteint dailyRefundCap, les soumissions suivantes enregistrent toujours des retours mais ne remboursent plus de crédits. La réponse définit dailyCapReached: true. Les agents doivent cesser d'appeler cet outil pour le reste du jour UTC lorsqu'ils voient cet indicateur.

Exemple d'utilisation :

{
  "name": "firecrawl_search_feedback",
  "arguments": {
    "searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "good",
    "valuableResults": [
      { "source": "web", "position": 1 },
      { "source": "web", "position": 3 },
      { "source": "news", "position": 2, "reason": "Broke the pricing change." }
    ],
    "valuableSources": [
      {
        "url": "https://docs.firecrawl.dev/pricing",
        "reason": "Not in the results; found via a result's pricing link. Answered the question."
      }
    ],
    "missingContent": [
      {
        "topic": "Pricing for the search endpoint",
        "description": "No pricing tier table for /search specifically."
      },
      { "topic": "Per-team rate limits" }
    ],
    "querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
  }
}

Retourne :

  • { success, feedbackId, creditsRefunded, alreadySubmitted? } JSON.

3c. Outil de retour générique (firecrawl_feedback)

Envoie des retours structurés pour une tâche de point de terminaison v2 terminée via /v2/feedback. Utilisez-le pour les retours au niveau du point de terminaison sur les tâches scrape, parse, map ou search. Pour la qualité des résultats de recherche spécifiquement, préférez firecrawl_search_feedback car il inclut des conseils spécifiques à la recherche.

Gardez les retours concis : utilisez des codes de problème, des tags, des notes courtes, des URL, des numéros de page et de petits objets de métadonnées. N'incluez pas de sorties brutes de scraping/parsing.

Désactivation : définissez FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (ou FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) dans l'environnement au démarrage du serveur MCP. L'outil firecrawl_feedback ne sera pas enregistré, les agents ne pourront donc pas l'appeler.

Exemple d'utilisation :

{
  "name": "firecrawl_feedback",
  "arguments": {
    "endpoint": "scrape",
    "jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "partial",
    "issues": ["missing_markdown"],
    "tags": ["docs"],
    "note": "The pricing table was missing from the markdown output.",
    "url": "https://example.com/pricing",
    "pageNumbers": [1],
    "metadata": {
      "format": "markdown"
    }
  }
}

Retourne :

  • { success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, websiteCapReached?, alreadySubmitted?, warning? } JSON.

4. Outil de crawl (firecrawl_crawl)

Démarre une tâche de crawl, interroge jusqu'à atteindre un état terminal, et renvoie le statut/les données finaux du crawl.

Idéal pour :

  • Extraire du contenu de plusieurs pages liées, lorsque vous avez besoin d'une couverture complète.

Non recommandé pour :

  • Extraire du contenu d'une seule page (utilisez scrape)
  • Lorsque les limites de tokens sont une préoccupation (utilisez map + scrape pour un contrôle plus fin)
  • Lorsque vous avez besoin de résultats rapides (le crawl peut être lent)

Avertissement : Les réponses de crawl peuvent être très volumineuses et dépasser les limites de tokens. Limitez la profondeur du crawl et le nombre de pages, ou utilisez map + scrape pour un contrôle plus fin.

Erreurs courantes :

  • Définir limit ou maxDiscoveryDepth trop haut (provoque un débordement de tokens)
  • Utiliser crawl pour une seule page (utilisez scrape à la place)

Exemple de prompt :

« Récupère tous les articles de blog des deux premiers niveaux de example.com/blog. »

Exemple d'utilisation :

{
  "name": "firecrawl_crawl",
  "arguments": {
    "url": "https://example.com/blog/*",
    "maxDiscoveryDepth": 2,
    "limit": 100,
    "allowExternalLinks": false,
    "deduplicateSimilarURLs": true
  }
}

Retourne :

  • Le statut et les données finaux du crawl après interrogation interne, incluant id, status, completed, total, creditsUsed, expiresAt, next et data. Utilisez le id renvoyé avec firecrawl_check_crawl_status si vous devez revérifier la tâche plus tard.

5. Vérifier le statut du crawl (firecrawl_check_crawl_status)

Vérifie le statut et les résultats d'une tâche de crawl existante par ID.

{
  "name": "firecrawl_check_crawl_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Retourne :

  • La réponse inclut le statut de la tâche de crawl :

6. Outil de parsing (firecrawl_parse)

Analyse des fichiers locaux ou des références de téléversement hébergées avec le point de terminaison /v2/parse de Firecrawl.

Idéal pour : les PDF, documents Word, tableurs, fichiers HTML et autres documents nécessitant une sortie markdown ou JSON structuré. Le point de terminaison hébergé utilise un flux de téléversement en deux étapes ; la lecture directe de fichiers locaux nécessite un FIRECRAWL_API_URL auto-hébergé.

Non recommandé pour : les URL distantes (utilisez scrape), plusieurs fichiers en un seul appel (appelez parse une fois par fichier), ou les actions réservées au navigateur comme les captures d'écran et les clics.

Point de terminaison hébergé : il ne peut pas lire votre système de fichiers. Appelez firecrawl_parse avec filePath pour recevoir une commande de téléversement à courte durée de vie et un nextToolCall, téléversez le fichier localement, puis appelez à nouveau firecrawl_parse avec le uploadRef renvoyé. L'étape de téléversement nécessite l'authentification Firecrawl ou le niveau sans clé. En mode local npx firecrawl-mcp, le parsing direct de fichiers nécessite actuellement FIRECRAWL_API_URL pointant vers une API Firecrawl auto-hébergée ; un simple serveur local avec uniquement une clé API cloud ne peut pas lire et téléverser des fichiers via cet outil.

Exemple d'utilisation :

{
  "name": "firecrawl_parse",
  "arguments": {
    "filePath": "/absolute/path/to/document.pdf",
    "formats": ["markdown"],
    "parsers": ["pdf"],
    "zeroDataRetention": true
  }
}

Retourne : Le contenu du document analysé ou les instructions de téléversement hébergé avec un nextToolCall.

7. Données structurées avec Scrape JSON

Pour des données structurées à partir d'une page connue, appelez firecrawl_scrape une fois par URL avec formats: ["json"]. Placez le prompt d'extraction et le schéma JSON dans jsonOptions.

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/product",
    "formats": ["json"],
    "jsonOptions": {
      "prompt": "Extract the product name, price, and description.",
      "schema": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "price": { "type": "number" },
          "description": { "type": "string" }
        },
        "required": ["name", "price"]
      }
    }
  }
}

Lorsque les URL ne sont pas connues ou que les données s'étendent sur plusieurs sites, utilisez firecrawl_agent pour une recherche multi-sources.

8. Outil Agent (firecrawl_agent)

Agent de recherche web autonome qui renvoie des données structurées lorsque vous ne connaissez pas les URL ou que la réponse s'étend sur plusieurs sites. Décrivez les champs dont vous avez besoin, passez éventuellement un schéma JSON et des URL de départ, et l'agent recherche, navigue, lit les pages et renvoie un JSON assemblé à partir de plusieurs sources. Utilisez-le pour une entité et ses champs, pour des listes et des jeux de données, et pour les pages nécessitant une navigation pour atteindre les données. Pour une URL connue, utilisez firecrawl_scrape avec le format JSON à la place.

Fonctionnement :

L'agent effectue des recherches web, suit des liens, lit des pages et collecte des données de manière autonome. Cela s'exécute de manière asynchrone — il renvoie immédiatement un ID de tâche, et vous interrogez firecrawl_agent_status pour vérifier quand c'est terminé et récupérer les résultats.

Flux de travail asynchrone :

  1. Appelez firecrawl_agent avec votre prompt/schéma → renvoie un ID de tâche
  2. Effectuez d'autres tâches pendant que l'agent recherche (cela peut prendre plusieurs minutes pour des requêtes complexes)
  3. Interrogez firecrawl_agent_status avec l'ID de tâche pour vérifier la progression
  4. Lorsque le statut est « completed », la réponse inclut les données extraites

Idéal pour :

  • Les tâches de recherche complexes où vous ne connaissez pas les URL exactes
  • La collecte de données multi-sources
  • Trouver des informations dispersées sur le web
  • Les tâches où vous pouvez effectuer d'autres travaux en attendant les résultats

Non recommandé pour :

  • Le scraping simple d'une seule page où vous connaissez l'URL (utilisez scrape avec le format JSON — plus rapide et moins coûteux)

Arguments :

  • prompt : Description en langage naturel des données souhaitées (requis, max 10 000 caractères)
  • urls : Tableau optionnel d'URL pour concentrer l'agent sur des pages spécifiques
  • schema : Schéma JSON optionnel pour une sortie structurée
  • effort : Optionnel. Budget de raisonnement "low", "medium" ou "high" pour la tâche de l'agent.
  • maxCredits : Entier positif optionnel. Limite de dépenses en crédits pour cette exécution. L'API utilise 2 500 par défaut lorsqu'omis, et plafonne une requête gratuite à 2 500.
  • strictConstrainToURLs : Booléen optionnel. Si true, l'agent ne visite que les URL dans urls.
  • threadId : Optionnel. Continuer un fil existant : le threadId d'un résultat antérieur firecrawl_agent ou firecrawl_agent_status. Omettre pour démarrer un nouveau fil. Lors d'un suivi, les paramètres mode, urls, schema et exchange omis sont repris du tour précédent.
  • mode : Optionnel. "extract" (par défaut) renvoie le résultat structuré complet à chaque tour. "chat" permet à un suivi qui ne demande aucune nouvelle donnée d'obtenir une réponse courte en message au lieu d'une réexécution ; exchange.requireApproval en a besoin.
  • exchange : Optionnel. Paramètres du fournisseur Alexandria pour ce tour, transmis tels quels à POST /v2/agent :
    • enabled, toolkits (jusqu'à 5 slugs de fournisseurs), maxCalls (de 1 à 30), requireApproval (les appels payants terminent le tour avec un pendingApproval ; nécessite mode: "chat" sur le même appel, même lors d'un suivi)
    • onTermsRequired : que faire lorsqu'un fournisseur Alexandria que l'agent utiliserait nécessite des conditions de données que votre équipe n'a pas acceptées. Les fournisseurs soumis à conditions ne sont jamais appelés, quel que soit le mode. Omis lors d'un suivi, conserve la valeur du tour précédent.
      • "skip" (par défaut) : répondre uniquement avec les fournisseurs acceptés. exchange.skippedProviders sur le résultat de statut liste les fournisseurs soumis à conditions qui auraient aidé.
      • "ask" : la même chose, plus un pendingApproval et un exchange.requiresAction de conditions avec l'ID d'approbation et les exigences du fournisseur. Lisez les conditions avec terms/show ; un administrateur de l'organisation les accepte dans le tableau de bord Firecrawl.
    • approve : { approvalId, callIds?, always? } répond oui au pendingApproval sur lequel le tour précédent s'est terminé. callIds et always ne s'appliquent qu'aux approbations d'appels payants.
    • decline : { approvalId } répond non. Une offre de conditions refusée exclut ces fournisseurs du reste du fil.
    • approve et decline nécessitent threadId, et un seul d'entre eux peut être envoyé.

Conditions du fournisseur (mode demande) : il n'existe pas de mode d'acceptation automatique. Lorsqu'un tour se termine sur une offre de conditions, le résultat de statut porte pendingApproval (kind: "terms") et exchange.requiresAction avec le approvalId et les exigences du fournisseur. Tout descripteur terms/accept dans cette charge utile d'API est indisponible via MCP. Pour utiliser le fournisseur :

  1. Montrez les conditions à l'utilisateur (terms/show à firecrawl_scrape avec alexandria).
  2. Demandez à un administrateur de l'organisation d'accepter les conditions à l'URL du fournisseur, ou dans les paramètres des sources de données. Une demande de données ne constitue pas un consentement.
  3. Attendez que l'administrateur confirme l'acceptation dans le tableau de bord.
  4. Continuez le même fil : appelez firecrawl_agent avec le même threadId et exchange.approve: { "approvalId": "..." }. Cela reprend la recherche et n'accepte pas les conditions.

Si l'utilisateur dit non, appelez firecrawl_agent avec le même threadId et exchange.decline: { "approvalId": "..." } à la place.

Exemple de prompt :

« Trouve les fondateurs de Firecrawl et leurs parcours »

Exemple d'utilisation (démarrer l'agent, puis interroger pour les résultats) :

{
  "name": "firecrawl_agent",
  "arguments": {
    "prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
    "schema": {
      "type": "object",
      "properties": {
        "startups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "funding": { "type": "string" },
              "founded": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Interrogez ensuite avec firecrawl_agent_status en utilisant l'ID de tâche renvoyé.

Exemple d'utilisation (avec URL — l'agent se concentre sur des pages spécifiques) :

{
  "name": "firecrawl_agent",
  "arguments": {
    "urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
    "prompt": "Compare the features and pricing information from these pages"
  }
}

Exemple d'utilisation (suivi sur le même fil) :

{
  "name": "firecrawl_agent",
  "arguments": {
    "prompt": "Only keep the startups based in Europe",
    "threadId": "0199a1b2-0000-7000-8000-000000000031"
  }
}

Exemple d'utilisation (continuer le fil après qu'un administrateur a confirmé l'acceptation dans le tableau de bord) :

{
  "name": "firecrawl_agent",
  "arguments": {
    "prompt": "The admin confirmed acceptance of the Apollo terms in the dashboard. Continue.",
    "threadId": "0199a1b2-0000-7000-8000-000000000031",
    "exchange": { "approve": { "approvalId": "0199a1b2-0000-7000-8000-000000000033" } }
  }
}

Retourne :

  • L'ID de tâche pour vérifier le statut, plus threadId et threadTurn. Utilisez firecrawl_agent_status pour interroger les résultats.

9. Vérifier le statut de l'agent (firecrawl_agent_status)

Vérifie le statut d'une tâche d'agent et récupère les résultats une fois terminée. Utilisez-le pour interroger les résultats après avoir démarré un agent.

Modèle d'interrogation : La recherche de l'agent peut prendre plusieurs minutes pour des requêtes complexes. Interrogez ce point de terminaison périodiquement (par exemple, toutes les 10 à 30 secondes) jusqu'à ce que le statut soit « completed » ou « failed ».

{
  "name": "firecrawl_agent_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Statuts possibles :

  • processing : L'agent effectue encore ses recherches — revenez plus tard
  • completed : Recherche terminée — la réponse inclut les données extraites
  • failed : Une erreur s'est produite

10. Outil d'interaction (firecrawl_interact)

Interagissez avec une URL fraîche ou avec une page déjà ouverte par firecrawl_scrape.

Idéal pour : cliquer, saisir du texte, naviguer et extraire l'état de pages dynamiques sans restaurer les outils de navigateur obsolètes.

Options d'utilisation :

  • Passez url pour scraper et ouvrir une page en vue d'interaction en un seul appel MCP.
  • Passez scrapeId pour continuer à interagir avec une page déjà scrapée.
  • Pour enregistrer l'état du navigateur (cookies, localStorage) dans un profil nommé, passez url avec scrapeOptions: { "profile": { "name": "my-profile", "saveChanges": true } }. L'état est enregistré lorsque firecrawl_interact_stop termine la session.
  • Passez exactement l'un de url ou scrapeId, plus soit prompt soit code.

Exemple d'utilisation :

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com",
    "prompt": "Click the pricing link and summarize the visible plans"
  }
}

Retourne : Le résultat de l'interaction et, en mode URL, le scrapeId dérivé pour un suivi ou un nettoyage.

11. Outil d'arrêt d'interaction (firecrawl_interact_stop)

Arrête une session d'interaction pour une page scrapée lorsque vous avez terminé d'interagir.

{
  "name": "firecrawl_interact_stop",
  "arguments": {
    "scrapeId": "scrape-id-here"
  }
}

12. Outils de recherche (firecrawl_research_*)

Recherchez et inspectez des articles et des dépôts GitHub via les outils de recherche MCP.

Couvre : les résumés et le texte intégral d'articles de la littérature biomédicale, des sciences de la vie et clinique (PubMed, bioRxiv, medRxiv) ainsi qu'arXiv et d'autres sources scientifiques.

Outils de recherche disponibles :

  • firecrawl_research_search_papers : rechercher les métadonnées et les résumés d'articles avec une requête en langage naturel, avec des filtres facultatifs par auteur, catégorie et date.
  • firecrawl_research_inspect_paper : récupérer les métadonnées canoniques d'un identifiant d'article (arXiv, PMC, PMID ou DOI).
  • firecrawl_research_related_papers : étendre à partir d'un ou plusieurs articles d'ancrage via le graphe de citations.
  • firecrawl_research_read_paper : lire des passages en texte intégral d'un article spécifique.

Idéal pour : les workflows de revue de littérature, de recherche d'articles et de découverte de dépôts où l'agent a besoin d'une surface de recherche ciblée plutôt que d'une recherche web générale.

firecrawl_search avec categories: ["research"] est une surface différente : elle filtre les résultats web ordinaires vers des sites affiliés à la recherche et renvoie des extraits de page, et non des notices d'articles. Utilisez ces outils lorsque la question porte sur la littérature elle-même, et passez plusieurs formulations distinctes de la même question, car elles font remonter des articles différents de ceux d'une requête unique.

13. Outils de surveillance (firecrawl_monitor_*)

Créez et gérez des surveillances de pages récurrentes. Les surveillances exécutent des scrapes ou des crawls planifiés, comparent chaque résultat au dernier instantané conservé et peuvent notifier par webhook ou e-mail.

Idéal pour :

  • Surveiller une page ou quelques pages au fil du temps
  • Alerter sur des changements significatifs à l'aide d'un objectif en langage clair
  • Suivre l'historique des vérifications et les diffs au niveau des pages

Modèle de création recommandé :

Utilisez page ou pages plus goal. Le serveur MCP construit la requête de surveillance avec une planification de 30 minutes et l'API active automatiquement l'évaluation des changements significatifs.

L'évaluation des changements significatifs s'exécute automatiquement lorsque goal est défini. Les webhooks de page exposent isMeaningful et judgment sur les événements monitor.page.

Rédigez les objectifs sous forme d'instructions de surveillance concises de 2 à 3 phrases. Indiquez ce qui doit déclencher une alerte, préservez toute portée fournie par l'utilisateur et n'incluez des exclusions spécifiques à l'intention que lorsqu'elles sont évidentes d'après la demande. Le bruit générique tel que les espaces blancs, les changements de mise en forme uniquement, les identifiants de requête, les paramètres de suivi, les métadonnées génériques et l'habillage de page non pertinent est déjà géré par l'évaluateur, donc ne le répétez pas dans chaque objectif. Si l'utilisateur est vague, gardez l'objectif large ; s'il demande une surveillance large ou « tout changement », préservez cela. Si l'utilisateur dit qu'il ne se soucie pas de quelque chose, incluez-le explicitement.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "page": "https://example.com/pricing",
    "goal": "Alert when pricing, packaging, or launch messaging changes."
  }
}

Plusieurs pages avec webhooks :

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "pages": ["https://example.com/pricing", "https://example.com/changelog"],
    "goal": "Alert when pricing, packaging, or launch messaging changes.",
    "webhookUrl": "https://example.com/webhooks/firecrawl"
  }
}

Requêtes de création avancées :

Passez body lorsque vous avez besoin de cibles de crawl, de suivi des changements JSON, de rétention personnalisée ou d'un contrôle explicite de judgeEnabled.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Docs monitor",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Alert when docs pages add, remove, or materially change API behavior.",
      "targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
    }
  }
}

Autres outils de surveillance :

  • firecrawl_monitor_list : lister les surveillances.
  • firecrawl_monitor_get : obtenir une surveillance.
  • firecrawl_monitor_update : mettre à jour des champs, notamment goal, judgeEnabled, webhook et notification.
  • firecrawl_monitor_run : déclencher une vérification immédiatement.
  • firecrawl_monitor_delete : supprimer une surveillance (destructif ; à n'appeler que lorsque l'utilisateur a l'intention de la supprimer).
  • firecrawl_monitor_checks : lister les vérifications, avec filtrage facultatif par statut.
  • firecrawl_monitor_check : obtenir les résultats au niveau des pages, notamment diff, snapshot, judgment.meaningful et judgment.meaningfulChanges.

14. Outil de recherche pour développeurs (firecrawl_developer_search)

Recherchez dans un index conçu pour les agents de codage. L'index couvre les issues GitHub, les pull requests fusionnées, les README de dépôts et la documentation de code.

Idéal pour : une question de programmation : le comportement d'un code, une bibliothèque ou un framework, un contrat d'API, un message d'erreur ou un bug connu.

Arguments :

{
  "name": "firecrawl_developer_search",
  "arguments": {
    "query": "how do I configure retries",
    "k": 10,
    "skills": "only"
  }
}
  • query (obligatoire) : la question de développeur ou la phrase de recherche.
  • k : nombre de résultats classés. La valeur par défaut est 10 et le maximum est 100.
  • skills : défini sur "only" pour rechercher uniquement dans les fichiers de compétences d'agent.

Renvoie : des résultats classés. Chaque résultat comporte un ID, un type de source (issue, pull_request, readme ou doc), une URL, un titre et les passages correspondants en markdown.

firecrawl_search avec categories: ["developer"] recherche dans le même index à côté des résultats web. Utilisez plutôt cet outil lorsque vous voulez les passages correspondants, le filtre skills, ou aucun résultat web dans la réponse. Le point de terminaison de recherche seule expose les deux outils, et le même choix s'y applique.

14b. Outil de recherche dans l'index gouvernemental (firecrawl_gov_search)

Recherchez dans le droit primaire et les textes réglementaires issus de sources gouvernementales fédérales, étatiques et locales des États-Unis : lois, règlements, codes, décisions de justice et autres publications gouvernementales.

Idéal pour : une question juridique ou réglementaire qui nécessite le texte applicable ou une source gouvernementale officielle.

Arguments :

{
  "name": "firecrawl_gov_search",
  "arguments": {
    "query": "excessive force claims against police officers",
    "k": 10,
    "courtType": "federal-appellate",
    "cites": "42 U.S.C. § 1983"
  }
}
  • query (obligatoire) : la question juridique ou réglementaire ou la phrase de recherche.
  • k : nombre de résultats classés. La valeur par défaut est 10 et le maximum est 100.
  • jurisdiction : ne conserver que les pages d'une seule juridiction : "us" pour le fédéral, ou "us-" suivi d'un code d'État ou de territoire à deux lettres, comme "us-ca" ou "us-dc".
  • court : ne conserver que les pages étiquetées pour une seule cour, par identifiant de cour CourtListener, comme "scotus", "ca9" ou "nysd".
  • courtType : ne conserver que les pages d'un seul type de cour : federal-supreme, federal-appellate, federal-district, federal-bankruptcy, federal-special, military, state-supreme, state-appellate, state-trial, state-special ou state-attorney-general.
  • cites : ne conserver que les pages qui citent une seule loi ou affaire, sous forme de citation imprimée comme "42 U.S.C. § 1983" ou "5 U.S. 137", ou d'identifiant de citation comme "us:usc:42:1983".
  • domain : ne conserver que les pages d'un seul site, comme "irs.gov".

Les filtres sont facultatifs et se combinent : un résultat doit correspondre à tous les filtres définis. Les filtres ne conservent que les pages que l'index a étiquetées, donc une recherche filtrée peut omettre des pages pertinentes, et l'absence de résultats ne signifie pas qu'il n'en existe aucun. Les étiquettes de cour sont plus complètes pour les cours fédérales et les collections de jurisprudence.

Renvoie : des résultats classés. Chaque résultat comporte une position, un titre, une URL et l'extrait correspondant. Le point de terminaison de recherche seule expose également cet outil.

firecrawl_search avec categories: ["gov"] recherche dans les mêmes sources et renvoie les résultats dans data.web avec category: "gov". La catégorie gov n'accepte pas ces filtres et ne peut pas être combinée avec d'autres catégories.

15. Outils Alexandria

Firecrawl Alexandria est un catalogue de fournisseurs de données accessibles via l'API Firecrawl avec une clé d'API Firecrawl sur une équipe disposant de l'accès Alexandria. Les sessions sans clé (hébergées ou locales) obtiennent Alexandria requires an API key on a team with Alexandria access ; les outils de découverte Alexandria ne sont pas listés pour les sessions hébergées sans clé.

Découverte sémantique (firecrawl_search) :

{
  "name": "firecrawl_search",
  "arguments": {
    "query": "podcast conversations about AI agents",
    "sources": ["web", "alexandria"],
    "domainTools": true,
    "limit": 2
  }
}

data.tools vaut par défaut des suggestions compactes avec fournisseur, capacité et description. Définissez toolDetail: "summary" pour les métadonnées et la navigation, ou toolDetail: "full" pour les contrats incluant les entrées, les champs de réponse et les exemples. domainTools: true ajoute des correspondances contextuelles aux mentions de requête et aux URL de résultats dans ce même tableau. Vérifiez warning pour la découverte indisponible. La recherche nécessite une requête et n'accepte pas les filtres de parcours du catalogue. Cette découverte fonctionne sur les surfaces MCP complète et de recherche seule.

Divulgation progressive (firecrawl_find_tools) :

{
  "name": "firecrawl_find_tools",
  "arguments": {
    "providers": ["particle"],
    "capabilities": ["podcasts/episodes/search"],
    "expand": ["options", "response", "examples"],
    "limit": 2
  }
}

Commencez sans argument pour obtenir les catégories, puis affinez progressivement le catalogue :

ArgumentsRésultat
{}Catégories et descriptions courtes
{"categories":["podcasts"]}Fournisseurs de cette catégorie
{"categories":["podcasts"],"providers":["particle"]}Noms et descriptions compacts des outils
{"providers":["particle"],"capabilities":["podcasts/episodes/search"]}Entrées, contraintes, réponse et exemples complets sélectionnés

Aucun saut de groupe n'est requis. Un level explicite prend en charge categories, providers, groups ou tools ; un expand explicite sélectionne les sections de contrat. expand: [] garde les résultats compacts même lors de la sélection d'une capacité. Pour les contrats complets étendus, demandez explicitement level: "tools" et expand: ["options", "response", "examples"]. Les URL fournissent une découverte contextuelle sans récupérer la page. Les résultats d'outils omettent les prix en crédits par capacité sauf si includeCosts: true est défini ; les arguments de suivi nextTool le conservent.

Les résultats sont dans data.alexandria[0].data. Suivez le nextTool d'un élément en appelant son name avec son arguments ; le nextTool de la page fait avancer la pagination. Les objets next existants restent des appels de découverte Alexandria utilisables via firecrawl_scrape. La découverte coûte zéro crédit et n'exécute jamais les outils du fournisseur. Lisez le contrat complet sélectionné avant l'exécution.

Ces contrôles nécessitent le déploiement correspondant de l'API Alexandria.

Exécuter (firecrawl_scrape avec alexandria) : passez alexandria au lieu de url (exactement l'un des deux ; requestId et timeout peuvent aussi être fournis). Un appel unique ou un tableau de jusqu'à dix appels est accepté.

{
  "name": "firecrawl_scrape",
  "arguments": {
    "alexandria": [
      {
        "provider": "fred",
        "capability": "series/observations",
        "options": { "series_id": "CPIAUCSL" }
      }
    ]
  }
}

Renvoie : { success, scrape_id, requestId, data: { alexandria: [...], creditsCost } }. Chaque élément est soit un résultat (provider, capability, data, records, upstreamStatus), soit une error avec un code ; le lot n'échoue jamais dans son ensemble à cause d'une erreur de fournisseur et data.creditsCost est le total facturé pour la requête. Les corps d'erreur Alexandria (403 sans accès Alexandria, et statuts de facturation 402/409) sont relayés en bande avec leur code.

L'exécution génère un x-request-id et le renvoie en cas de succès ou d'échec. Réessayez la charge utile identique avec ce requestId ; ne créez pas de nouvel ID après un résultat incertain. Les crédits disponibles sont vérifiés par l'API.

Un fournisseur Alexandria dont les conditions n'ont pas été acceptées par l'équipe échoue avant toute exécution avec HTTP 403 et ce corps :

{
  "success": false,
  "code": "THIRD_PARTY_DATA_TERMS_REQUIRED",
  "error": "An organization admin must accept the benzinga provider's terms (version 2026-09-12-placeholder) before this request can run. Accept them at https://www.firecrawl.dev/app/alexandria/benzinga",
  "requiresAction": {
    "type": "accept_terms",
    "terms": "benzinga",
    "version": "2026-09-12-placeholder",
    "url": "https://www.firecrawl.dev/app/alexandria/benzinga"
  }
}

Le résultat de l'outil le relaie comme une erreur avec structuredContent portant code, status: 403, requestId, l'objet requiresAction inchangé, et next_actions (human_action_required puis retry_same_request). Accepter les conditions est un acte juridique, donc un administrateur d'organisation les accepte dans le tableau de bord Firecrawl, et non via MCP. Utilisez l'appel nextTool renvoyé pour lire l'accord via firecrawl_scrape avec alexandria: [{provider: "firecrawl", capability: "terms/show", options: {provider: "<provider>"}}], envoyé séparément de l'exécution du fournisseur, et présentez-le à l'utilisateur. Un administrateur d'organisation l'accepte ensuite à l'adresse requiresAction.url, ou à https://www.firecrawl.dev/app/settings?tab=data-sources. firecrawl_scrape refuse toute autre capacité terms/*, donc il n'effectue aucune modification de compte. Une demande de données ne vaut pas consentement, et aucune acceptation automatique ni nouvelle tentative incertaine n'a lieu. Aucun crédit n'est facturé pour la récupération bloquée. Après confirmation de l'acceptation par l'administrateur, appelez à nouveau le même outil avec la charge utile identique et requestId.

16. Outil d'utilisation des crédits

L'outil nécessite un compte Firecrawl authentifié et est en lecture seule.

  • firecrawl_credit_usage vaut par défaut { "view": "current" } et renvoie remainingCredits, planCredits, billingPeriodStart et billingPeriodEnd. Les crédits restants peuvent dépasser les crédits du forfait lorsque l'équipe dispose de recharges ou d'attributions.
  • Passez { "view": "historical" } pour des périodes de mois calendaire contenant startDate, endDate et creditsUsed. Passer { "byApiKey": true } sélectionne également la vue historique et divise les périodes par clé d'API ; chaque ligne inclut alors apiKey. Passer { "byEndpoint": true } divise plutôt les périodes par le point de terminaison qui a consommé les crédits (scrape, search, crawl, map, agent, ...) ; chaque ligne inclut alors endpoint. Passez { "bin": "day" } pour une période par jour UTC au lieu de par mois calendaire. Ne combinez pas byApiKey avec byEndpoint, ni aucun de ceux-ci avec { "view": "current" }. Le endDate de la dernière période peut être null. Si l'API Firecrawl ne propose pas encore la répartition par point de terminaison ni les périodes journalières, le résultat comporte un notice et des chiffres mensuels.

Utilisation programmatique (instable)

Le paquet expose également un point d'entrée de bibliothèque permettant d'intégrer le serveur dans un autre environnement d'exécution. Il est instable : l'API, ses options et ses types peuvent changer dans n'importe quelle version, y compris les versions mineures et correctives ; épinglez donc une version exacte.

npm install --save-exact firecrawl-mcp zod

L'exemple définit les paramètres d'outil avec zod, le projet d'intégration l'installe donc comme sa propre dépendance.

import { createFirecrawlMcpServer } from 'firecrawl-mcp/server';
import { z } from 'zod';

const server = createFirecrawlMcpServer({
  transport: 'httpStream',
  apiKey: process.env.FIRECRAWL_API_KEY,
  unstable_hooks: {
    registerExtraTools: (registrar) => {
      registrar.addTool({
        name: 'my_tool',
        description: 'An extra tool served next to the Firecrawl tools.',
        parameters: z.object({ text: z.string() }),
        execute: async ({ text }) => text,
      });
    },
  },
});

await server.start({
  transportType: 'httpStream',
  httpStream: { port: 3000, host: '127.0.0.1', endpoint: '/mcp', stateless: true },
});
// MCP endpoint: http://127.0.0.1:3000/mcp

Définissez host explicitement. Sans cela, le serveur écoute sur localhost, que Node lie à une seule adresse (souvent uniquement ::1), de sorte que les requêtes vers 127.0.0.1 sont refusées. Utilisez 0.0.0.0 ou :: pour accepter les connexions d'autres machines uniquement derrière des contrôles d'accès réseau ou une vérification unstable_hooks.authenticate : sans cela, tout appelant capable d'atteindre le port est servi avec le apiKey configuré.

La bibliothèque ne vérifie pas Host ni Origin sauf demande explicite, et ses en-têtes CORS autorisent toute origine. Un serveur joignable depuis un navigateur sur la même machine devrait passer httpStream.allowedHosts (par exemple ['localhost', '127.0.0.1', '[::1]']) : les requêtes dont l'en-tête Host ou Origin désigne un autre hôte reçoivent alors 403 (sauf GET et HEAD sur le chemin de santé), et les en-têtes CORS renvoient l'origine autorisée. La ligne de commande définit cette liste en mode HTTP local.

Les options reflètent les variables d'environnement de la CLI : apiUrl, apiKey, transport, logging, safeMode, fileAccess (local ou upload), requireCredential, searchFeedback et endpointFeedback. unstable_hooks accepte :

HookObjectif
authenticate(request)Résoudre la session d'une requête ; lever une Response pour la rejeter.
wrapTool(tool)Décorer chaque outil enregistré.
onToolResult(event)Observer le début et le résultat de chaque appel d'outil.
instructionsInstructions du serveur, ou une fonction choisissant parmi les valeurs par défaut.
registerExtraTools(registrar, context)Ajouter des outils après les outils intégrés.
outboundRequest(session)Identifiants et en-têtes supplémentaires pour chaque requête à l'API Firecrawl.
beforeKeylessRequest(session, origin)Refuser une requête sans clé en levant une exception.
toolFilter(name)Exclure les outils intégrés de l'instance.
configureHttp(app)Ajouter des routes HTTP.
oauth.protectedResourceServir les métadonnées de ressource protégée OAuth.

Le serveur est construit sur le SDK TypeScript officiel MCP (@modelcontextprotocol/server). Utilisez les types exportés depuis firecrawl-mcp/server (Session, ToolDefinition, ToolRegistrar, FirecrawlMcpServerHooks et autres) plutôt que ceux du SDK lui-même.

Le point d'entrée exporte également les utilitaires utilisés par les outils intégrés, tels que recoveryPayload, normalizeHeader, requestOrigin, isRuntimeUserAgent, initializeClientSlug, searchToolBaseFields, searchOutputSchema et structuredCompact, afin que les outils et hooks supplémentaires puissent reproduire le comportement intégré. Ils sont eux aussi instables.

Système de journalisation

Le serveur inclut une journalisation complète :

  • Statut et progression des opérations
  • Métriques de performance
  • Suivi des limites de débit
  • Conditions d'erreur

Exemples de messages de journal :

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded

Gestion des erreurs

Le serveur offre une gestion robuste des erreurs :

  • Erreurs de limite de débit de l'API remontées au client MCP
  • Messages d'erreur détaillés
  • Résilience réseau

Exemple de réponse d'erreur :

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded"
    }
  ],
  "isError": true
}

Développement

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Contribution

  1. Forkez le dépôt
  2. Créez votre branche de fonctionnalité
  3. Lancez les tests : npm test
  4. Soumettez une pull request

Remerciements aux contributeurs

Merci à @vrknetha, @cawstudios pour l'implémentation initiale !

Merci à MCP.so et Klavis AI pour l'hébergement et à @gstarwd, @xiangkaiz et @zihaolin96 pour l'intégration de notre serveur.

Licence

Licence MIT - voir le fichier LICENSE pour plus de détails

Données structurées et résultats volumineux

La recherche authentifiée utilise par défaut les résultats web, les outils sémantiques Alexandria et les correspondances de domaine. Commencez par la question réelle. Utilisez firecrawl_find_tools pour la recherche directe d'outils sémantiques, les contrats sélectionnés ou la navigation progressive : catégories → fournisseurs → outils compacts → contrat sélectionné. Exécutez les outils via firecrawl_scrape ; le scraping d'URL ordinaire et la recherche n'exécutent jamais automatiquement les outils de fournisseur.

Pour les contrats sélectionnés, privilégiez expand: ["options", "response"] et ne demandez des exemples que si la forme de l'entrée n'est pas claire. Inspectez les capacités associées ensemble et réutilisez les contrats renvoyés.

Pour un résultat de workflow potentiellement volumineux, fournissez et conservez un requestId de niveau supérieur avant l'exécution. Cet ID reste disponible même si le client rejette la réponse. Les scrapes d'URL ordinaires utilisent plutôt l'ID de scrape renvoyé.

Pour un résultat de workflow retenu volumineux ou un résultat de scrape ordinaire volumineux, appelez firecrawl_scrape avec :

{
  "alexandria": {
    "provider": "firecrawl",
    "capability": "bash",
    "options": {
      "requestId": "<source-request-or-scrape-id>",
      "command": "ls -lh"
    }
  }
}

Lisez stdout, stderr, exitCode et workspaceId dans data.alexandria[0].data. Continuez avec options: {workspaceId, command} pour inspecter response.json à l'aide de jq, ou document.md à l'aide de commandes textuelles bornées pour les scrapes ordinaires. Gardez la sortie sélective. Le chargement de source doit être un appel autonome ; son ID de source imbriqué diffère de l'ID de requête d'exécution de niveau supérieur. Les espaces de travail expirent après cinq minutes d'inactivité, et tous les résultats ne sont pas conservés (y compris les charges utiles de workflow ZDR et de fournisseur d'API). Les ID de recherche ne sont pas pris en charge.

Pour les sources de workflow, response.json préserve l'enveloppe de l'API : sélectionnez .data.alexandria[].data, puis le response.key du contrat sélectionné lorsqu'il n'est pas vide. Combinez les comptages et projections associés dans une seule commande Bash lorsque cette forme est connue, plutôt que d'inspecter les clés de façon répétée.

Les réponses d'exécution Alexandria réussies dépassant 20 000 jetons estimés (octets UTF-8 sérialisés divisés par quatre) renvoient un petit relais après que le Bash distant a confirmé que le lot complet est accessible. Suivez nextTool pour inspecter les données retenues. Cela ajoute un appel Bash et démarre un espace de travail avec une TTL d'inactivité de cinq minutes. La charge utile complète est préservée. Si la confirmation échoue, la réponse d'origine reste en ligne. La recherche, le scrape d'URL ordinaire, les réponses d'erreur et les appels utilitaires Firecrawl sont inchangés. Ce budget de livraison ne mesure pas le contexte restant du client ; aucun cache de résultats local au processus n'est ajouté. Lorsque des outils de système de fichiers locaux sont disponibles, enregistrer la sortie de la CLI et lire des sections sélectionnées est une autre option.

La séquence de découverte de la CLI correspond à ces appels MCP :

IntentionOutilArguments
Outils web + sémantiques + domainefirecrawl_search{"query":"<user question>"}
Outils sémantiques uniquementfirecrawl_search{"query":"<user question>","sources":["alexandria"]}
Catégoriesfirecrawl_find_tools{}
Fournisseurs dans une catégoriefirecrawl_find_tools{"categories":["<category-id>"]}
Outils compacts d'un fournisseurfirecrawl_find_tools{"providers":["<provider-id>"]}
Contrat sélectionnéfirecrawl_find_tools{"providers":["<provider-id>"],"capabilities":["<capability-id>"]}
Exécuterfirecrawl_scrape{"alexandria":{"provider":"<provider-id>","capability":"<capability-id>","options":{"<required-field>":"<value>"}}}

Find Tools et l'exécution sont disponibles à la fois sur la surface complète et sur la surface de recherche. Réutilisez un contrat complet issu de la recherche lorsqu'il est présent plutôt que d'effectuer un autre appel de découverte. Suivez la navigation nextTool renvoyée uniquement lorsque davantage de résultats sont nécessaires.

Retour de session Alexandria

L'outil existant firecrawl_feedback accepte endpoint: "alexandria" :

{
  "endpoint": "alexandria",
  "rating": "partial",
  "requestedWebsite": {
    "url": "https://example.com",
    "requestedFunctionality": "Find records and download their attachments"
  },
  "objective": "Compare contract requirements across agencies before bidding",
  "rationale": "Found summaries but could not retrieve attachments"
}

Le objective facultatif est l'objectif sous-jacent de la session : ce que l'agent ou son utilisateur cherchait finalement à accomplir, au-delà du seul site web dans requestedWebsite.

Cela utilise POST /v2/feedback authentifié, sans ID de tâche. Il doit arriver dans les 20 minutes suivant la recherche, la découverte ou l'exécution Alexandria la plus récente de l'équipe ; un retour plus tardif est rejeté avec FEEDBACK_WINDOW_EXPIRED. Un retour éligible peut rembourser 1 crédit, sous réserve de plafonds quotidiens de 10 crédits par site web et de 100 crédits par équipe (jour UTC). Au-delà de l'un ou l'autre plafond, le retour est tout de même enregistré sans remboursement, et la réponse définit websiteCapReached ou dailyCapReached. Les tableaux facultatifs providerFeedback et capabilityFeedback décrivent les lacunes de couverture et les problèmes d'exécution ; le schéma de l'outil liste les valeurs de problème prises en charge. Un new_capability_request exige requestedFunctionality ; missing_capability (le fournisseur existe mais n'a pas la capacité) non. Les contrôles existants de désactivation du retour et d'authentification s'appliquent.

Les résultats éligibles d'exécution et de découverte Alexandria incluent un pointeur feedbackTool avec le nom de l'outil et un squelette des arguments. Le pointeur est omis pour les appels internes à Firecrawl tels que bash et lorsque firecrawl_feedback n'est pas enregistré (FIRECRAWL_NO_ENDPOINT_FEEDBACK ou démarrage sans clé).