Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Firecrawl MCP server

Vendor MCP
Open markdown

The Firecrawl MCP connector routes your AI agent's tool calls to Firecrawl's own MCP server through Scalekit. Each user connects their own Firecrawl access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 26 tools.

Tools
26
What they doRead · write · destructive
16 · 8 · 216 read8 write2 destructive
Users sign in with

What you can do

  • Scrape web pages: pull content from any URL as markdown, JSON, or screenshots
  • Search the web: run web searches and scrape the top results in the same step
  • Crawl and map sites: discover every URL on a website and extract content from all its pages
  • Run research agents: send an AI agent to browse the web and answer a question for you
  • Search papers and code: find research papers, related citations, GitHub issues, pull requests, and docs
  • Monitor pages for changes: schedule recurring checks on a URL and review what changed since the last run

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Firecrawl MCP connection

    In AgentKit > Connections, create a Firecrawl MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Console steps with screenshots

    Register your Firecrawl API key with Scalekit so it can authenticate and proxy scraping requests on behalf of your users. Firecrawl MCP uses API key authentication.

    1. Get a Firecrawl API key

      • Go to firecrawl.dev and sign in or create a free account.
      • Your API key is shown on the Overview page under API Key. Copy it — it starts with fc-.

    2. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKit → Connections → Create Connection.
      • Search for Firecrawl MCP and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., firecrawlmcp).
    3. Add a connected account

      Connected accounts link a specific user identifier in your system to a Firecrawl API key. Add one in the dashboard to test. In production, each user adds their own through the authorization link: they enter their credentials on the page it opens.

      In the dashboard, to test

      • Open the connection and click the Connected Accounts tab → Add account.
      • Fill in Your User’s ID and API Key, then click Save.

      From your backend, if your app already has the credentials

      For example, when users enter them on a settings page in your app:

      import { ConnectorStatus } from '@scalekit-sdk/node'
      const authorizationDetails = {
      details: {
      case: 'staticAuth',
      value: { details: { token: 'fc-...' } },
      },
      };
      let { connectedAccount } = await scalekit.actions.upsertConnectedAccount({
      connectionName: 'firecrawlmcp',
      identifier: 'user_123',
      authorizationDetails,
      });
      // Make sure the account is ACTIVE before the first tool call.
      if (connectedAccount?.status !== ConnectorStatus.ACTIVE) {
      ({ connectedAccount } = await scalekit.actions.upsertConnectedAccount({
      connectionName: 'firecrawlmcp',
      identifier: 'user_123',
      authorizationDetails,
      }));
      }
  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'firecrawlmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Firecrawl MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'firecrawlmcp_firecrawl_monitor_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Firecrawl MCP server credentials there. If your app already has a user's credentials, add the account from your backend instead, as the console steps above show. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • firecrawlmcp_firecrawl_agent_statusRetrieve the status and results of a running AI research agent job by its ID.Read-only

    Firecrawl Agent Status

    Retrieve the status and results of a running AI research agent job by its ID.

    Inputs

    idstringrequired
    The unique identifier of the resource.
  • firecrawlmcp_firecrawl_check_crawl_statusCheck the progress and results of an in-progress crawl job by its ID.Read-only

    Firecrawl Check Crawl Status

    Check the progress and results of an in-progress crawl job by its ID.

    Inputs

    idstringrequired
    The unique identifier of the resource.
  • firecrawlmcp_firecrawl_mapDiscover all indexed URLs on a website or within a URL subtree, with optional search filtering.Read-only

    Firecrawl Map

    Discover all indexed URLs on a website or within a URL subtree, with optional search filtering.

    Inputs

    urlstringrequired
    The URL of the page or website to scrape, crawl, or map.
    ignoreQueryParametersboolean
    Set to true to treat URLs differing only by query string as duplicates.
    includeSubdomainsboolean
    Set to true to include subdomains of the target domain.
    limitnumber
    Maximum number of results to return.
    searchstring
    Search term to filter URLs returned by the map.
    sitemapstring
    How to use the sitemap: include to discover URLs from it, only to crawl only sitemap URLs, skip to ignore it.one of includeskiponly
  • firecrawlmcp_firecrawl_monitor_checkRetrieve the page-level diff results for a single monitor check run.Read-only

    Firecrawl Monitor Check

    Retrieve the page-level diff results for a single monitor check run.

    Inputs

    checkIdstringrequired
    The ID of a specific monitor check. Get it from firecrawlmcp_firecrawl_monitor_checks.
    idstringrequired
    The unique identifier of the resource.
    limitinteger
    Maximum number of results to return.
    pageStatusstring
    Filter check results to pages with this change status.one of samenewchangedremovederror
    skipinteger
    Number of items to skip for pagination.
  • firecrawlmcp_firecrawl_monitor_checksList the historical check runs for a monitor, with pagination.Read-only

    Firecrawl Monitor Checks

    List the historical check runs for a monitor, with pagination.

    Inputs

    idstringrequired
    The unique identifier of the resource.
    limitinteger
    Maximum number of results to return.
    offsetinteger
    Number of items to skip for pagination.
  • firecrawlmcp_firecrawl_monitor_getRetrieve the configuration and status of a single monitor by its ID.Read-only

    Firecrawl Monitor Get

    Retrieve the configuration and status of a single monitor by its ID.

    Inputs

    idstringrequired
    The unique identifier of the resource.
  • firecrawlmcp_firecrawl_monitor_listList all monitors configured for the authenticated account, with pagination.Read-only

    Firecrawl Monitor List

    List all monitors configured for the authenticated account, with pagination.

    Inputs

    limitinteger
    Maximum number of results to return.
    offsetinteger
    Number of items to skip for pagination.

Workflows

Scrape a page

Use firecrawlmcp_firecrawl_scrape to extract clean markdown content from any URL.

const result = await actions.executeTool({
connector: 'firecrawlmcp',
identifier: 'user_123',
toolName: 'firecrawlmcp_firecrawl_scrape',
toolInput: {
url: 'https://docs.example.com/getting-started',
onlyMainContent: true,
},
});
console.log(result.data);

Search the web

Use firecrawlmcp_firecrawl_search to run a live web search and get scraped content from the top results.

const result = await actions.executeTool({
connector: 'firecrawlmcp',
identifier: 'user_123',
toolName: 'firecrawlmcp_firecrawl_search',
toolInput: {
query: 'best practices for API rate limiting 2026',
limit: 5,
},
});
console.log(result.data);

Extract structured data from a URL

Use firecrawlmcp_firecrawl_scrape with the json format and a jsonOptions prompt (plus an optional JSON Schema) to pull structured data from a page.

const result = await actions.executeTool({
connector: 'firecrawlmcp',
identifier: 'user_123',
toolName: 'firecrawlmcp_firecrawl_scrape',
toolInput: {
url: 'https://example.com/pricing',
formats: ['json'],
jsonOptions: {
prompt: 'Extract all pricing plan names and their monthly costs.',
},
},
});
console.log(result.data);