v0.2.0 · live
CAPFRAME
← leaderboard/Firecrawl MCP/tool · firecrawl_interact
§ toolsandboxFirecrawl MCP

firecrawl_interact

on npm:firecrawl-mcp@3.20.2

Severity

critical1
high0
medium2
low0
info0

3 findings on this tool

  1. criticalexcessive agencyf-r7-firecrawl_interact

    Tool `firecrawl_interact` exposes a code/command execution surface

    `firecrawl_interact` looks like it executes code or shell commands ( Interact with a previously scraped page in a live browser session. Scrape a page first with firecrawl_scrape, then use the returned scrapeId to click buttons, fill forms, extract dynamic content, or navigate deeper. **Best for:** Multi-step workflows on a single page — searching a site, clicking through results, filling forms, extracting data that requires interaction. **Requires:** A scrapeId from a previous firecrawl_scrape call (found in the metadata of the scrape response). **Arguments:** - scrapeId: The scrape job ID from a previous scrape (required) - prompt: Natural language instruction describing the action to take (use this OR code) - code: Code to execute in the browser session (use this OR prompt) - language: "bash", "python", or "node" (optional, defaults to "node", only used with code) - timeout: Execution timeout in seconds, 1-300 (optional, defaults to 30) **Usage Example (prompt):** ```json { "name": "firecrawl_interact", "arguments": { "scrapeId": "scrape-id-from-previous-scrape", "prompt": "Click on the first product and tell me its price" } } ``` **Usage Example (code):** ```json { "name": "firecrawl_interact", "arguments": { "scrapeId": "scrape-id-from-previous-scrape", "code": "agent-browser click @e5", "language": "bash" } } ``` **Returns:** Execution result including output, stdout, stderr, exit code, and live view URLs. ). Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability.

    fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call.

    OWASP LLM08NIST MANAGE-2.2ATLAS T0051
  2. mediumunconstrained inputf-r1-firecrawl_interact

    Tool `firecrawl_interact` accepts unconstrained string input

    The following string parameter(s) have no `maxLength` constraint: `code`, `language`, `prompt`, `scrapeId`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.

    fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.

    OWASP LLM01NIST MEASURE-2.3ATLAS T0051
  3. mediumindirect injectionf-r6-firecrawl_interact

    Tool `firecrawl_interact` fetches external web content -- indirect-injection surface

    Description: " Interact with a previously scraped page in a live browser session. Scrape a page first with firecrawl_scrape, then use the returned scrapeId to click buttons, fill forms, extract dynamic content, or navigate deeper. **Best for:** Multi-step workflows on a single page — searching a site, clicking through results, filling forms, extracting data that requires interaction. **Requires:** A scrapeId from a previous firecrawl_scrape call (found in the metadata of the scrape response). **Arguments:** - scrapeId: The scrape job ID from a previous scrape (required) - prompt: Natural language instruction describing the action to take (use this OR code) - code: Code to execute in the browser session (use this OR prompt) - language: "bash", "python", or "node" (optional, defaults to "node", only used with code) - timeout: Execution timeout in seconds, 1-300 (optional, defaults to 30) **Usage Example (prompt):** ```json { "name": "firecrawl_interact", "arguments": { "scrapeId": "scrape-id-from-previous-scrape", "prompt": "Click on the first product and tell me its price" } } ``` **Usage Example (code):** ```json { "name": "firecrawl_interact", "arguments": { "scrapeId": "scrape-id-from-previous-scrape", "code": "agent-browser click @e5", "language": "bash" } } ``` **Returns:** Execution result including output, stdout, stderr, exit code, and live view URLs. " -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions.

    fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a `domain in [...]` caveat.

    OWASP LLM01NIST MEASURE-2.3ATLAS T0051

About this tool

firecrawl_interact is one of 20 tools exposed by Firecrawl MCP. The server scored 0/100 overall against the capframe rule engine (source: sandbox). Last scanned 2026-06-05.

The findings above are emitted by the public capframe.findings.v1 schema. Disagree with one? Open an issue.