Skip to main content
Glama

firecrawl-mcp

Server Details

Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.2/5 across 26 of 26 tools scored. Lowest: 3.2/5.

Server CoherenceA
Disambiguation4/5

Most tools have clearly distinct purposes (scrape vs crawl vs search vs agent), but some overlap exists between firecrawl_agent and firecrawl_extract (both do extraction) and between firecrawl_scrape and firecrawl_crawl (content retrieval). Detailed descriptions help mitigate confusion.

Naming Consistency5/5

All tools follow the firecrawl_noun_or_verb pattern consistently (e.g., firecrawl_scrape, firecrawl_search, firecrawl_monitor_create). Even sub-groups like firecrawl_research_* maintain internal consistency. No mixed conventions.

Tool Count4/5

26 tools is on the high side but justified by the broad scope of web data extraction, search, file parsing, monitoring, research, and feedback. Each tool covers a distinct operation, though some could be consolidated (e.g., feedback tools).

Completeness5/5

The tool surface covers the full lifecycle of web data tasks: discovery (map, search), single-page extraction (scrape), multi-page extraction (crawl), autonomous research (agent), structured extraction (extract), file parsing (parse), browser interaction (interact), and monitoring. Research-specific tools add depth. No obvious gaps for the stated purpose.

Available Tools

26 tools
firecrawl_agentAInspect

Autonomous web research agent. This is a separate AI agent layer that independently browses the internet, searches for information, navigates through pages, and extracts structured data based on your query. You describe what you need, and the agent figures out where to find it.

How it works: The agent performs web searches, follows links, reads pages, and gathers data autonomously. This runs asynchronously - it returns a job ID immediately, and you poll firecrawl_agent_status to check when complete and retrieve results.

IMPORTANT - Async workflow with patient polling:

  1. Call firecrawl_agent with your prompt/schema → returns job ID immediately

  2. Poll firecrawl_agent_status with the job ID to check progress

  3. Keep polling for at least 2-3 minutes - agent research typically takes 1-5 minutes for complex queries

  4. Poll every 15-30 seconds until status is "completed" or "failed"

  5. Do NOT give up after just a few polling attempts - the agent needs time to research

Expected wait times:

  • Simple queries with provided URLs: 30 seconds - 1 minute

  • Complex research across multiple sites: 2-5 minutes

  • Deep research tasks: 5+ minutes

Best for: Complex research tasks where you don't know the exact URLs; multi-source data gathering; finding information scattered across the web; extracting data from JavaScript-heavy SPAs that fail with regular scrape. Not recommended for:

  • Single-page extraction when you have a URL (use firecrawl_scrape, faster and cheaper)

  • Web search (use firecrawl_search first)

  • Interactive page tasks like clicking, filling forms, login, or navigating JS-heavy SPAs (use firecrawl_scrape + firecrawl_interact)

  • Extracting specific data from a known page (use firecrawl_scrape with JSON format)

Arguments:

  • prompt: Natural language description of the data you want (required, max 10,000 characters)

  • urls: Optional array of URLs to focus the agent on specific pages

  • schema: Optional JSON schema for structured output

Prompt Example: "Find the founders of Firecrawl and their backgrounds" Usage Example (start agent, then poll patiently for results):

{
  "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" }
            }
          }
        }
      }
    }
  }
}

Then poll with firecrawl_agent_status every 15-30 seconds for at least 2-3 minutes.

Usage Example (with URLs - agent focuses on specific pages):

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

Returns: Job ID for status checking. Use firecrawl_agent_status to poll for results.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNo
promptYes
schemaNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds significant behavioral context beyond annotations: asynchronous execution, polling workflow, expected wait times, and that it returns a job ID. Annotations only indicate openWorldHint and readOnlyHint, but the description fully elaborates on the external interaction and mutation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headings, bullet points, and code blocks. It is slightly lengthy but each section adds value. Front-loaded with the key purpose and async workflow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is comprehensive for an async tool with 3 parameters and no output schema. It covers the asynchronous workflow, polling strategy, expected wait times, parameter details, and usage examples, leaving no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 0%, the tool description compensates fully by explaining each parameter (prompt, urls, schema), including constraints (maxLength, optional), and providing usage examples with JSON snippets.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is an autonomous web research agent that independently browses, searches, and extracts data. It distinguishes itself from siblings like firecrawl_scrape and firecrawl_search by explaining its use case for complex multi-source research.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists when to use ('Best for:') and when not to use ('Not recommended for:'), with specific alternative tools named (firecrawl_scrape, firecrawl_search, firecrawl_interact). Provides clear context for decision making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_agent_statusA
Read-only
Inspect

Check the status of an agent job and retrieve results when complete. Use this to poll for results after starting an agent with firecrawl_agent.

IMPORTANT - Be patient with polling:

  • Poll every 15-30 seconds

  • Keep polling for at least 2-3 minutes before considering the request failed

  • Complex research can take 5+ minutes - do not give up early

  • Only stop polling when status is "completed" or "failed"

Usage Example:

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

Possible statuses:

  • processing: Agent is still researching - keep polling, do not give up

  • completed: Research finished - response includes the extracted data

  • failed: An error occurred (only stop polling on this status)

Returns: Status, progress, and results (if completed) of the agent job.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds critical behavioral details beyond annotations: polling intervals, patience requirements, and status interpretations. No contradiction with annotations (readOnlyHint=true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then important polling guidance. Includes a usage example and status list. The polling instructions are slightly verbose but necessary for correct usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status polling tool with no output schema, the description covers returns ('Status, progress, and results'), possible statuses, and polling strategy. Fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'id' of type string. Schema coverage is 0%, but description does not add parameter meaning beyond the usage example. Could explicitly state it's the agent ID from firecrawl_agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Check the status of an agent job and retrieve results when complete.' This is a specific verb+resource pair and distinguishes from sibling tools like firecrawl_agent which starts the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this to poll for results after starting an agent with firecrawl_agent.' Provides polling timing and status meanings. While it doesn't say when not to use, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_check_crawl_statusC
Read-only
Inspect

Check the status of a crawl job.

Usage Example:

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

Returns: Status and progress of the crawl job, including results if available.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that it returns 'Status and progress' including results, but does not disclose possible status values, error states, or whether the job ID is required and what happens if it's invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes a multi-line JSON example that takes up space. The structure is decent: one-liner, example, return info. However, it could be more concise by removing the example or integrating parameter description into the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is adequate but lacks detail on the return format and possible status values. The tool is a status check, so more information about the response structure would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the single parameter 'id'. The description provides an example with a UUID but does not explicitly state that 'id' is the crawl job ID or where to obtain it. The agent must infer the meaning from the example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Check the status of a crawl job', using a specific verb and resource. It distinguishes from sibling tools like firecrawl_crawl (which starts a crawl) and firecrawl_scrape (which scrapes a single page).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not explain that this should be used after starting a crawl with firecrawl_crawl, nor does it mention polling behavior or typical usage patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_crawlAInspect

Starts a crawl job on a website, polls until it reaches a terminal state, and returns the final crawl status/data.

Best for: Extracting content from multiple related pages, when you need comprehensive coverage. Not recommended for: Extracting content from a single page (use scrape); when token limits are a concern (use map + scrape for tighter control); when you need fast results (crawling can be slow). Warning: Crawl responses can be very large and may exceed token limits. Limit the crawl depth and number of pages, or use map + scrape for tighter control. Common mistakes: Setting limit or maxDiscoveryDepth too high (causes token overflow) or too low (causes missing pages); using crawl for a single page (use scrape instead). Using a /* wildcard is not recommended. Prompt Example: "Get all blog posts from the first two levels of example.com/blog." Usage Example:

{
  "name": "firecrawl_crawl",
  "arguments": {
    "url": "https://example.com/blog/*",
    "maxDiscoveryDepth": 5,
    "limit": 20,
    "allowExternalLinks": false,
    "deduplicateSimilarURLs": true,
    "sitemap": "include"
  }
}

Returns: Final crawl status and data after internal polling, including the crawl id. Use firecrawl_check_crawl_status only when you need to re-check an existing crawl ID later. Safe Mode: Read-only crawling. Webhooks and interactive actions are disabled for security.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
delayNo
limitNo
promptNo
sitemapNo
excludePathsNo
includePathsNo
scrapeOptionsNo
maxConcurrencyNo
allowSubdomainsNo
crawlEntireDomainNo
maxDiscoveryDepthNo
allowExternalLinksNo
ignoreQueryParametersNo
deduplicateSimilarURLsNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint: false, openWorldHint: true, destructiveHint: false. Description adds behavioral context: 'Safe Mode: Read-only crawling. Webhooks and interactive actions are disabled for security.' Also warns about large responses and token limits. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Relatively long but well-structured with bold headers for 'Best for', 'Not recommended for', 'Warning', 'Common mistakes', 'Prompt Example', 'Usage Example'. Front-loaded with clear purpose. Could be slightly more concise but structure aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given complexity (15 params, nested objects, no output schema), description covers usage scenarios, warnings, examples, and return value ('Final crawl status and data...including the crawl id'). Also explains when to use sibling tool for re-checking. Missing detailed parameter docs, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. Description does not explain all 15 parameters individually, but provides a usage example with key parameters (url, maxDiscoveryDepth, limit, etc.) and a prompt example. This adds some meaning but is not comprehensive. Baseline for low coverage is lower, but the examples help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it starts a crawl job, polls until terminal state, and returns final status/data. Distinguishes from siblings by explicitly recommending for multiple related pages and advising against single-page use (use scrape) and when token limits are a concern (use map+scrape). Also mentions using firecrawl_check_crawl_status for re-checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when to use (multiple pages, comprehensive coverage), when not to use (single page, token limits, speed), alternatives (scrape, map+scrape), and common mistakes (setting limit/maxDiscoveryDepth too high or low). Very thorough guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_extractA
Read-only
Inspect

Extract structured information from web pages using LLM capabilities. Supports both cloud AI and self-hosted LLM extraction.

Best for: Extracting specific structured data like prices, names, details from web pages. Not recommended for: When you need the full content of a page (use scrape); when you're not looking for specific structured data. Arguments:

  • urls: Array of URLs to extract information from

  • prompt: Custom prompt for the LLM extraction

  • schema: JSON schema for structured data extraction

  • allowExternalLinks: Allow extraction from external links

  • enableWebSearch: Enable web search for additional context

  • includeSubdomains: Include subdomains in extraction Prompt Example: "Extract the product name, price, and description from these product pages." Usage Example:

{
  "name": "firecrawl_extract",
  "arguments": {
    "urls": ["https://example.com/page1", "https://example.com/page2"],
    "prompt": "Extract product information including name, price, and description",
    "schema": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "price": { "type": "number" },
        "description": { "type": "string" }
      },
      "required": ["name", "price"]
    },
    "allowExternalLinks": false,
    "enableWebSearch": false,
    "includeSubdomains": false
  }
}

Returns: Extracted structured data as defined by your schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
promptNo
schemaNo
enableWebSearchNo
includeSubdomainsNo
allowExternalLinksNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, openWorldHint, destructiveHint. The description adds that it uses LLM, supports cloud/self-hosted, and returns structured data. No contradictions, but could mention potential costs or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with sections and code blocks. Slightly verbose but earns its length by providing examples and clear guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, parameters, usage examples, and return type. No output schema, but description describes the return. Could mention handling of multiple URLs more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage. The description lists all parameters with brief explanations and provides a prompt example and usage example, significantly compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool extracts structured information from web pages using LLM. It distinguishes from siblings by mentioning alternatives like scrape for full content and search for non-specific data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly specifies best use cases and when not to use, naming alternative tools (scrape, search) for different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_feedbackAInspect

Send structured feedback for a completed Firecrawl v2 job. Use this for endpoint-level feedback on scrape, parse, map, or search jobs when the job result was useful, partially useful, or failed to meet expectations.

For search-result quality specifically, prefer firecrawl_search_feedback when available because it has search-focused guidance. This generic tool posts to /v2/feedback and accepts endpoint-wide signals:

  • endpoint — one of search, scrape, parse, or map.

  • jobId — the id returned by that endpoint.

  • rating — overall result quality: good, partial, or bad.

  • issues — stable lowercase issue codes such as missing_markdown, bad_pdf_parse, or wrong_links.

  • tags — optional lowercase tags for grouping feedback.

  • note — short human-readable context. Do not include huge page contents or raw scrape results.

  • url, pageNumbers, and metadata — small contextual fields that identify what the feedback refers to.

Do not store multi-MB outputs in feedback. Use concise notes, issue codes, URLs, and page numbers.

Returns: { success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? } JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
noteNo
tagsNo
jobIdYes
issuesNo
ratingYes
endpointYes
metadataNo
pageNumbersNo
missingContentNo
valuableSourcesNo
querySuggestionsNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds behavioral context: it posts to /v2/feedback, explains payload constraints (no large data, concise notes), and outlines the return JSON structure. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed but structured: it starts with purpose, then sibling guidance, parameter explanation, and caveats. Every sentence adds value, but could be slightly more concise, especially in the parameter listing. The front-loaded structure helps quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, usage context, parameter semantics, and return value. Given the complexity (12 parameters, nested objects, no output schema), it is sufficiently complete. It explains the return fields and provides constraints for all major aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description fully compensates. It explains each parameter's purpose, constraints (lowercase, max lengths), and examples (issue codes like missing_markdown). Required parameters are clearly indicated, and the structure of nested arrays/objects is explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it sends structured feedback for completed Firecrawl v2 jobs, specifying the endpoints (scrape, parse, map, search). It distinguishes from the sibling tool firecrawl_search_feedback by noting the latter is preferred for search-specific feedback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using firecrawl_search_feedback for search-result quality feedback, providing clear alternatives. It also states when to use this tool (after job completion). However, it does not explicitly mention cases where the tool should not be used, such as for in-progress jobs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_interactAInspect

Interact with a page in a live browser session: 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. Two ways to target a page:

  • Pass a url to interact directly. The session is opened for you in one call (use this for a fresh page).

  • Pass a scrapeId from a previous firecrawl_scrape to reuse that already-loaded page (cheaper when you just scraped it).

Arguments:

  • url: Page to interact with; opens a session for you (use this OR scrapeId)

  • scrapeId: Scrape job ID from a previous scrape, found in its metadata (use this OR url)

  • 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: Interact execution timeout in seconds, 1-300 (optional, defaults to 30)

  • scrapeOptions: Optional scrape controls used only with url mode, such as waitFor, maxAge, proxy, or zeroDataRetention

Usage Example (prompt, direct via url):

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com/products",
    "prompt": "Click on the first product and tell me its price"
  }
}

Usage Example (code):

{
  "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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
codeNo
promptNo
timeoutNo
languageNo
scrapeIdNo
scrapeOptionsNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate it's not read-only but interactive (readOnlyHint=false, openWorldHint=true). Description adds that it executes actions in a live browser and returns output, stdout, stderr, exit code, and live view URLs. Does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with sections, bullet points, and examples. Every part adds value, though slightly lengthy. Could be more concise, but readability and completeness are strong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, parameters, examples, and return values comprehensively for a tool with 7 params and nested objects. Does not detail every sub-property of scrapeOptions, but given context, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description compensates fully by explaining each parameter's purpose, constraints (e.g., scrapeId from previous scrape), and providing usage examples. Adds meaning beyond schema types and enums.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool interacts with a live browser session to perform actions like clicking, filling forms, and extracting dynamic content. Distinguishes itself from sibling tools like firecrawl_scrape by focusing on multi-step interactions. Examples reinforce the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Best for multi-step workflows on a single page.' Describes two methods (url vs scrapeId) with clear context for each. Includes when to use each method, aiding correct tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_interact_stopA
Destructive
Inspect

Stop an interact session for a scraped page. Call this when you are done interacting to free resources.

Usage Example:

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

Returns: Success confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
scrapeIdYes
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the description's addition of 'free resources' adds marginal context. No details on side effects, required permissions, or resource implications are provided beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, delivering the essential information in two sentences plus a clear usage example. No superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one required parameter, no output schema), the description covers the core action and usage trigger. However, it omits how to retrieve the scrapeId from the interact session, which is necessary for first-time use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter scrapeId lacks a description in the schema and in the tool description. While the usage example shows a placeholder, the description does not explain what scrapeId represents or how to obtain it, which is critical for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies 'Stop an interact session for a scraped page', clearly indicating the verb (stop) and resource (interact session). This distinctly differentiates from the sibling tool firecrawl_interact (which presumably starts a session).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'Call this when you are done interacting to free resources', providing a clear usage context. It does not explicitly exclude alternative tools, but the sibling pair is obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_mapA
Read-only
Inspect

Map a website to discover all indexed URLs on the site.

Best for: Discovering URLs on a website before deciding what to scrape; finding specific sections or pages within a large site; locating the correct page when scrape returns empty or incomplete results. Not recommended for: When you already know which specific URL you need (use scrape); when you need the content of the pages (use scrape after mapping). Common mistakes: Using crawl to discover URLs instead of map; jumping straight to firecrawl_agent when scrape fails instead of using map first to find the right page.

IMPORTANT - Use map before agent: If firecrawl_scrape returns empty, minimal, or irrelevant content, use firecrawl_map with the search parameter to find the specific page URL containing your target content. This is faster and cheaper than using firecrawl_agent. Only use the agent as a last resort after map+scrape fails.

Prompt Example: "Find the webhook documentation page on this API docs site." Usage Example (discover all URLs):

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

Usage Example (search for specific content - RECOMMENDED when scrape fails):

{
  "name": "firecrawl_map",
  "arguments": {
    "url": "https://docs.example.com/api",
    "search": "webhook events"
  }
}

Returns: Array of URLs found on the site, filtered by search query if provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo
searchNo
sitemapNo
includeSubdomainsNo
ignoreQueryParametersNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it discovers URLs, can filter with search parameter, returns array of URLs. Consistent with readOnlyHint=true annotation; no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with sections, examples, and no redundant text. Front-loaded with purpose and usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key use cases, common mistakes, return value, and workflow with agent/scrape. No output schema, but description explains what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only url and search are explained via examples; other parameters (limit, sitemap, includeSubdomains, ignoreQueryParameters) are not described. Schema coverage is 0%, so description partially compensates but leaves gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Map a website to discover all indexed URLs on the site.' Differentiates from siblings like scrape and agent through explicit best-use scenarios.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Best for:', 'Not recommended for:', 'Common mistakes', and 'IMPORTANT' section guiding when to use map vs scrape, crawl, agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_checkA
Read-only
Inspect

Get a single check with page-level diff results. Filter pageStatus to surface only the pages that changed (or were new, removed, etc.).

Each entry in data.pages[] has url, status (same | new | changed | removed | error), optional judgment when goal-based judging ran, and — when changed — a diff and possibly a snapshot. The shape of diff depends on the monitor's formats configuration:

  • Markdown mode (default). diff.text is the unified markdown diff; diff.json is a parse-diff AST ({ files: [...] }). No snapshot.

  • JSON mode (changeTracking with modes: ["json"]). diff.json is a per-field map keyed by JSON path into the extraction, e.g. plans[0].price, with each value being { previous, current }. snapshot.json is the full current extraction. No diff.text.

  • Mixed mode (modes: ["json", "git-diff"]). Both diff.text (markdown sidecar) AND diff.json (per-field map) are present, plus snapshot.json.

Example JSON-mode response pages[] entry:

{
  "url": "https://example.com/pricing",
  "status": "changed",
  "diff": {
    "json": {
      "plans[0].price":       { "previous": "$19/mo",        "current": "$24/mo" },
      "plans[1].features[2]": { "previous": "10 GB storage", "current": "25 GB storage" }
    }
  },
  "snapshot": { "json": { "plans": [/* current full extraction matching the monitor's schema */] } },
  "judgment": {
    "meaningful": true,
    "confidence": "high",
    "reason": "The pricing changed, which matches the monitor goal.",
    "meaningfulChanges": [
      {
        "type": "changed",
        "before": "$19/mo",
        "after": "$24/mo",
        "reason": "The tracked plan price changed."
      }
    ]
  }
}

When summarizing a check for the user, prefer diff.json paths (e.g. "plans[0].price changed from $19/mo to $24/mo") over re-printing the markdown diff — it's more concise and grounded in the schema fields they asked for.

When judgment is present, use it to decide what to surface. judgment.meaningful: false means the change was classified as noise for the monitor's goal. When judgment.meaningfulChanges is present, prefer those goal-relevant changes over raw diff hunks; each item includes type, before, after, and reason.

The endpoint paginates via a top-level next URL; this tool returns one page at a time. Increase limit (max 100) to fetch fewer pages.

Usage Example:

{
  "name": "firecrawl_monitor_check",
  "arguments": {
    "id": "mon_abc123",
    "checkId": "chk_xyz",
    "pageStatus": "changed"
  }
}
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
skipNo
limitNo
checkIdYes
pageStatusNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, and the description adds extensive behavioral context: response structure, diff modes (markdown, JSON, mixed), judgment field usage, pagination behavior (one page at a time, next URL), and limit maximum. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: starts with purpose, then filtering, then detailed response schema with examples, and ends with a usage example. It front-loads key info but includes a large JSON example that could be condensed. Still efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description thoroughly documents the output shape, including pages array, diff variants, judgment, snapshot, and pagination. It covers all necessary aspects for an agent to invoke the tool and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains pageStatus enum and limit (max 100), and the usage example shows id and checkId, but skip is not explicitly described. The description could be more thorough, but it provides meaningful context for most parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a single check with page-level diff results', specifying both the action and the resource. It distinguishes from sibling tools like firecrawl_monitor_checks (which lists checks) by focusing on a single check with detailed diff information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on using the pageStatus filter to surface specific page types, and advises on when to prefer diff.json over markdown diffs. Also mentions pagination and limit. However, it does not explicitly contrast with alternatives like firecrawl_monitor_checks for listing vs. getting details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_checksC
Read-only
Inspect

List historical checks for a monitor.

Usage Example:

{ "name": "firecrawl_monitor_checks", "arguments": { "id": "mon_abc123", "limit": 10, "status": "completed" } }
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
offsetNo
statusNo
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds no behavioral context beyond 'list historical checks'. No mention of pagination, rate limits, or ordering. Minimal additional value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very concise: one line plus a code example. Front-loaded with purpose. Could benefit from more structure, but no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no output schema, and no parameter descriptions, the description is insufficient. Lacks essential details like parameter meanings, ordering, and error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for 4 parameters. Description does not explain any parameter (id, limit, offset, status). The usage example shows values but no semantics. Fails to compensate for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List historical checks for a monitor' using a specific verb and resource. It distinguishes from sibling tools like firecrawl_monitor_list (lists monitors) and firecrawl_monitor_check (singular check).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. The usage example shows parameters but does not explain when to choose this over firecrawl_monitor_get or firecrawl_monitor_list. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_createAInspect

Create a Firecrawl monitor — a recurring scrape, crawl, or search that diffs each result against the last retained snapshot.

Prefer the simple path: pass page or pages plus goal to monitor specific URLs, OR pass queries plus goal to monitor web search results for new/changed hits. The tool will create the monitor with a 30-minute schedule and meaningful-change judging enabled by the API. Use body only for advanced requests such as crawl targets, JSON change tracking, custom retention, or manual judgeEnabled control.

Meaningful-change judge: set goal to a plain-language description of what the user actually cares about. judgeEnabled defaults to true when goal is set, so providing goal is enough. Page webhooks expose isMeaningful and judgment on monitor.page events.

Simple fields:

  • page: one page URL to monitor.

  • pages: multiple page URLs to monitor.

  • queries: one or more search queries (1-12) to monitor instead of fixed URLs. Each check runs the searches and diffs the result set, so you get alerted when new or changed results appear. Mutually exclusive with page/pages in the simple path.

  • searchWindow: optional recency window for search targets — one of 5m, 15m, 1h, 6h, 24h, 7d (default 24h).

  • maxResults: optional max results per search, 1-50 (default 10).

  • includeDomains / excludeDomains: optional domain allow/deny lists for search targets.

  • goal: plain-English instruction for what changes matter. Required for the simple path (and always required when queries are set — web monitors must have a goal).

  • scheduleText: optional natural-language schedule, default every 30 minutes.

  • email: optional email recipient for summaries.

  • webhookUrl: optional webhook URL. Configures monitor.page and monitor.check.completed.

Search-mode example:

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "queries": ["new LLM release", "frontier model launch"],
    "goal": "Notify me about major new LLM model releases.",
    "searchWindow": "24h",
    "maxResults": 10
  }
}

Goal guidance:

  • Expand the user's one-line monitoring intent into a concise 2-3 sentence monitor goal.

  • State what should trigger an alert, restate any scope the user gave, and include intent-specific exclusions only when obvious from the user's request.

  • Generic noise such as whitespace, formatting-only changes, request IDs, tracking params, generic metadata, and unrelated page chrome is already handled by the judge; do not repeat it in every goal.

  • If the user is vague, keep the goal broad rather than guessing exclusions. If the user asks for broad monitoring or "any change", preserve that and do not add exclusions that hide changes.

  • If the user says they do not care about something, include that explicitly. It is okay to ask whether they want to ignore specific noise when it is likely to matter.

  • Do not invent page-specific sections, thresholds, entities, or business rules unless the user mentioned them.

Query guidance (web monitors): queries control recall (what search retrieves) and goal controls precision (which results alert) — tune both.

  • Write keywords, not sentences: OpenAI new model release, not tell me when OpenAI releases a new model.

  • Quote multi-word entities ("Llama 4"); group synonyms with OR (launch OR release OR announcement).

  • Keep each query tight (~2-6 terms). One broad query usually beats several narrow ones — extra queries split the maxResults budget. Use one query per distinct entity; do not emit one per facet of a single subject.

  • Keep site: operators out of queries — use includeDomains / excludeDomains.

  • A healthy web monitor mostly returns new: 0 and alerts only on genuinely new, on-goal results. Many ignored results ⇒ queries too broad (tighten them); nothing for long stretches ⇒ queries too narrow or window too tight (broaden); dismissed alerts ⇒ goal too broad (add an intent-specific Ignore). Aim for high precision with enough recall.

Full body requests require: name, schedule (with cron or text), and targets (one or more { type: 'scrape', urls: [...] }, { type: 'crawl', url: '...' }, or { type: 'search', queries: [...], searchWindow?, maxResults?, includeDomains?, excludeDomains? }). Optional: goal (required when any search target is present), judgeEnabled, webhook, notification, retentionDays.

Markdown-mode (default): Each check produces a unified text diff of the page's markdown. No extra configuration needed.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "page": "https://example.com/blog",
    "goal": "Alert when a new blog post is published or an existing headline changes.",
    "email": "alerts@example.com"
  }
}

Multiple pages:

{
  "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"
  }
}

JSON-mode change tracking: To detect changes in specific structured fields (price, headline, in-stock flag, list items) instead of the whole page, add a changeTracking format with modes: ["json"] and a JSON schema to the target's scrapeOptions.formats. The check response will then carry a per-field diff (keyed by JSON path, e.g. plans[0].price) and a snapshot.json with the full current extraction. See firecrawl_monitor_check for the response shape.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Pricing watch",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Alert when a pricing tier, price, billing period, limit, or headline feature changes. Ignore unrelated marketing copy unless it changes the pricing offer.",
      "targets": [{
        "type": "scrape",
        "urls": ["https://example.com/pricing"],
        "scrapeOptions": {
          "formats": [{
            "type": "changeTracking",
            "modes": ["json"],
            "prompt": "Extract pricing tiers and headline features for each plan.",
            "schema": {
              "type": "object",
              "properties": {
                "plans": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name":     { "type": "string" },
                      "price":    { "type": "string" },
                      "features": { "type": "array", "items": { "type": "string" } }
                    }
                  }
                }
              }
            }
          }]
        }
      }]
    }
  }
}

Mixed mode (JSON + git-diff): Use modes: ["json", "git-diff"] to get both per-field diffs and a markdown sidecar. The page is marked changed whenever either surface changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
goalNo
nameNo
pageNo
emailNo
pagesNo
queriesNo
timezoneNo
maxResultsNo
webhookUrlNo
includeDiffsNo
scheduleTextNo
searchWindowNo
excludeDomainsNo
includeDomainsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the recurring nature, default 30-minute schedule, meaningful-change judging, webhook behavior, and diffing modes. No contradiction with annotations (readOnlyHint=false, openWorldHint=true). Adds significant context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with headings and examples, but quite verbose. All information earns its place given complexity, but could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Extremely thorough: covers simple and advanced usage, parameter semantics, examples, goal and query guidance. References response shape for check. No output schema needed given this coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description fully compensates by explaining each parameter's meaning and usage in detail, including constraints (e.g., mutual exclusivity, enums, defaults).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a Firecrawl monitor for recurring scrape/crawl/search with diffing. It distinguishes between simple and advanced paths, and implicitly differentiates from sibling create/update/delete tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance on when to use the simple path (page/pages + goal) vs. body for advanced requests. Includes examples and clear parameter descriptions. Also provides goal and query guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_deleteA
Destructive
Inspect

Permanently delete a monitor and stop its schedule. This cannot be undone.

Usage Example:

{ "name": "firecrawl_monitor_delete", "arguments": { "id": "mon_abc123" } }
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint: true. The description adds context about permanence and stopping the schedule, which goes beyond annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, with purpose stated first, followed by the irreversible nature and a usage example. Every sentence adds value, and the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with one parameter, the description covers the core action and permanence. It lacks details on error handling or how to obtain the ID, but is largely complete given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with no parameter description in schema. The description only provides an example usage with 'id,' implying it's the monitor identifier. Enough for a single parameter, but lacks explicit documentation of format or source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Permanently delete a monitor and stop its schedule,' specifying the verb 'delete' and resource 'monitor,' with emphasis on permanence. It distinguishes this tool from sibling monitor tools like create, update, and get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for deletion, but does not provide explicit guidance on when to use vs. alternatives (e.g., checking existence first). However, the destructive nature is clear, and the example helps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_getA
Read-only
Inspect

Get a single monitor by ID.

Usage Example:

{ "name": "firecrawl_monitor_get", "arguments": { "id": "mon_abc123" } }
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is clearly a safe read operation. However, the description adds no additional behavioral context beyond that, such as what happens when the ID does not exist, rate limits, or response format. With annotations carrying most of the burden, the description provides minimal added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence plus a code block. Every element is necessary and useful. No fluff. The usage example is well-structured and front-loaded. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, no output schema, read-only) and the presence of annotations, the description covers the essential purpose and usage. However, it lacks any mention of return values or error handling. For a minimal tool, it is slightly incomplete but still satisfactory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It provides a usage example with an argument 'id': 'mon_abc123', which gives some semantics (the ID is a string like 'mon_abc123'). However, it does not explain the format of the ID or where to obtain it. This is adequate but not thorough, earning a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a single monitor by ID,' which matches the tool name and title. It is a specific verb+resource combination that distinguishes from sibling tools like firecrawl_monitor_list (list all monitors) and firecrawl_monitor_checks (get checks for a monitor).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool vs alternatives. While it is self-evident that one would use it when they have a monitor ID, there is no guidance like 'if you want to list all monitors, use firecrawl_monitor_list instead.' A score of 3 reflects adequate but missing explicit differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_listB
Read-only
Inspect

List all Firecrawl monitors for the authenticated account.

Usage Example:

{ "name": "firecrawl_monitor_list", "arguments": { "limit": 20 } }
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and destructiveHint, so the description need not repeat that. The usage example hints at pagination (limit parameter) but does not explicitly explain behavior (e.g., ordering, default limit). The description adds modest context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and includes a usage example. It is well-structured and front-loaded with the main purpose. The example is in a code block, which is clear. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the tool description should at least mention what fields or structure the returned list contains. It does not. The parameters are not described, and the behavior is only hinted via example. The tool is minimal but incomplete for an agent to fully understand its use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the parameters. The usage example shows 'limit: 20', but does not define what limit or offset do, their default values, or how pagination works. This is insufficient for an agent to use the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists all Firecrawl monitors for the authenticated account. The verb 'list' and resource 'monitors' are precise. It distinguishes itself from sibling tools like firecrawl_monitor_get (single) and firecrawl_monitor_create (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description and example, but there is no explicit guidance on when to use this tool versus alternatives like firecrawl_monitor_get or firecrawl_monitor_create. No when-not-to-use or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_runAInspect

Trigger a monitor check immediately, outside its normal schedule. Returns the queued check.

Usage Example:

{ "name": "firecrawl_monitor_run", "arguments": { "id": "mon_abc123" } }
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond annotations by specifying the function is immediate and returns a queued check. However, it does not disclose any potential side effects, rate limits, or error conditions. Annotations already indicate it is not read-only and not destructive, so the description's additional info is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences and a usage example, all front-loaded. Every part serves a purpose with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description covers the core purpose and behavior. However, it lacks explicit parameter documentation and fails to mention prerequisites (e.g., monitor must exist) or return value details. It is adequate but not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter 'id' with no description (0% coverage). The description provides a usage example showing 'id': 'mon_abc123' but does not explicitly define what the parameter represents (e.g., the monitor ID). This offers minimal semantic help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Trigger', the resource 'monitor check', and distinguishes it by specifying 'immediately, outside its normal schedule'. It also mentions the return value ('Returns the queued check'). This effectively differentiates it from sibling tools like firecrawl_monitor_check and firecrawl_monitor_checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when an immediate check is needed) but does not explicitly state when not to use it or suggest alternatives. Given the many sibling monitor tools, more explicit guidance would be beneficial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_monitor_updateA
Destructive
Inspect

Update a monitor. Pass any subset of fields to patch: name, status ("active" | "paused"), schedule, targets, goal, judgeEnabled, webhook, notification, retentionDays.

Usage Example:

{
  "name": "firecrawl_monitor_update",
  "arguments": {
    "id": "mon_abc123",
    "body": { "status": "paused" }
  }
}
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds value by enumerating the specific fields that can be updated (name, status, schedule, etc.), which the schema does not detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear opening sentence, a bullet-like list of fields, and a concrete usage example. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the description covers the action, parameters, and example. It could mention whether the tool returns the updated monitor, but given no output schema, it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 0%, the description compensates by listing the allowed fields within the body object and showing an example. It clarifies that 'id' is the monitor ID and 'body' contains the patch fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates an existing monitor with the verb 'Update' and resource 'monitor'. It lists the patchable fields, differentiating it from sibling tools like create, delete, and list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by listing the fields that can be patched and including a usage example. However, it does not explicitly state when not to use this tool versus alternatives like create or delete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_parseA
Read-only
Inspect

Parse a file using Firecrawl's /v2/parse endpoint.

In local/non-cloud MCP mode, this tool reads filePath from the MCP server filesystem and posts multipart data to the configured self-hosted FIRECRAWL_API_URL, preserving the existing direct-read behavior.

In hosted CLOUD_SERVICE mode, this tool is a two-call flow because hosted MCP cannot read your local filesystem:

  1. Call with filePath, contentType, parse options, and optional declaredSizeBytes. The hosted server mints a short-lived upload URL and returns a safe local curl PUT command plus nextToolCall.

  2. Run the returned curl command locally, then call firecrawl_parse again with uploadRef and the desired parse options. The hosted server calls /v2/parse server-side with your session credential.

Best for: Extracting content from a local document (PDF, Word, Excel, HTML, etc.); pulling structured data out of a file with JSON format; converting binary documents into markdown for downstream reasoning. Not recommended for: Remote URLs (use firecrawl_scrape); multiple files at once (call parse multiple times); documents that require interactive actions, screenshots, or change tracking — those aren't supported by the parse endpoint. Common mistakes: In hosted mode, do not pass both filePath and uploadRef. Phase 1 uses filePath only to generate upload instructions; phase 2 uses uploadRef only to parse server-side.

Supported file types: .html, .htm, .xhtml, .pdf, .docx, .doc, .odt, .rtf, .xlsx, .xls Unsupported options: actions, screenshot/branding/changeTracking formats, waitFor > 0, location, mobile, proxy values other than "auto" or "basic". Privacy: Set redactPII: true to return content with personally identifiable information redacted.

CRITICAL - Format Selection (same rules as firecrawl_scrape): When the user asks for SPECIFIC data points from a document, you MUST use JSON format with a schema. Only use markdown when the user needs the ENTIRE document content.

Handling PDFs: Add "parsers": ["pdf"] (optionally with pdfOptions.maxPages) when parsing a PDF so the PDF engine is invoked explicitly. For very long documents, cap maxPages to keep the response within token limits.

Hosted phase 1 example:

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

Hosted phase 2 example:

{
  "name": "firecrawl_parse",
  "arguments": {
    "uploadRef": "upload-ref-from-phase-1",
    "formats": ["markdown"],
    "parsers": ["pdf"],
    "zeroDataRetention": true
  }
}

Returns: Phase 1 hosted upload instructions or a parsed document with markdown, html, links, summary, json, or query results depending on the requested formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
proxyNo
maxAgeNo
formatsNo
parsersNo
filePathNo
redactPIINo
uploadRefNo
pdfOptionsNo
contentTypeNo
excludeTagsNo
includeTagsNo
jsonOptionsNo
queryOptionsNo
storeInCacheNo
onlyMainContentNo
declaredSizeBytesNo
zeroDataRetentionNo
removeBase64ImagesNo
skipTlsVerificationNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description elaborates extensively on behavior beyond annotations: two modes (local vs cloud), multi-step flow in hosted mode, supported file types, unsupported options, privacy features, and format selection. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is long but well-structured with headings, examples, and bullet points. Front-loaded with main purpose. Could be slightly more concise, but structure aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given complexity (19 params, nested objects, two modes), description is comprehensive: covers best practices, caveats, examples, and return values. No output schema, but return values are described briefly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description carries full burden. It explains key parameters (filePath, contentType, formats, parsers, redactPII, uploadRef, pdfOptions, zeroDataRetention) in context. However, not all 19 parameters are covered (e.g., proxy, maxAge, excludeTags). Significant value added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it parses a file using Firecrawl's /v2/parse endpoint. Distinguishes from siblings by explicitly saying remote URLs use firecrawl_scrape and multiple files call parse multiple times. Title in annotations is 'Parse a local file', aligning perfectly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Best for' and 'Not recommended for' sections provide clear guidance on when to use this tool vs alternatives. Explains two-call flow for hosted mode and lists common mistakes. Provides comprehensive usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_research_inspect_paperA
Read-only
Inspect

Fetch canonical metadata for one paper by primaryId or canonical paperId. Use this after search/related results when you need the full title, abstract, authors, categories, source ids, and dates rendered as markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
paperIdYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnly and non-destructive, and the description adds that it returns data rendered as markdown, listing specific fields. No contradictions; full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states the action and input, second provides usage guidance and output summary. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description fully covers purpose, usage, and output fields. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description compensates by explaining paperId can be a primaryId or canonical paperId, adding significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it fetches canonical metadata for one paper by paperId, and specifies it provides full title, abstract, authors, categories, source ids, and dates as markdown. This clearly distinguishes it from sibling search and read tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use after search/related results when needing full metadata, providing clear context. Does not explicitly mention alternatives but implies its role in the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_research_read_paperA
Read-only
Inspect

Read the most relevant in-body (full-text) passages of ONE specific paper for a question. Use this to VERIFY whether a candidate actually satisfies a constraint before you include or reject it (e.g. 'does this paper actually use technique X / report a score on benchmark Y'). Returns the best-matching passages, or a notice if the paper's full text is unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
paperIdYes
questionYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds useful detail: returns best-matching passages or notice if full text unavailable, which is helpful given no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and purpose, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main functionality, use case, and return type. Lacks explicit handling of optional 'k' parameter, but otherwise sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description implicitly uses paperId and question, but does not explicitly describe any parameter. Optional 'k' is not explained. With 0% schema coverage, the description partially compensates but misses the optional parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description specifies verb 'Read', resource 'paper', and scope 'ONE specific paper for a question', clearly distinguishing from sibling tools like firecrawl_research_search_papers or firecrawl_research_inspect_paper.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States explicit use case: verify whether a candidate paper satisfies a constraint, with examples. Does not explicitly list alternatives, but the context and examples provide clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_research_search_githubB
Read-only
Inspect

Search GitHub issue/PR history and repository readmes. Returns ranked matches with repo, url, a short snippet, and (when available) the full matched content in markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
queryYes
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint, covering safety. The description adds that results include 'ranked matches' and 'when available, full matched content in markdown', which provides basic behavioral expectations beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero fluff. The first sentence states the action and scope, the second enumerates return fields. Appropriately brief and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description covers what it searches and what it returns. Missing parameter explanations slightly reduce completeness, but overall adequate given complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description does not explain either parameter. The agent must rely solely on the schema's type/constraints (query string, k integer with bounds) without any semantic hints about their purpose or usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches 'GitHub issue/PR history and repository readmes', which is a specific resource. It distinguishes itself from sibling tools like firecrawl_search (general web) and firecrawl_research_search_papers (academic papers) by focusing on GitHub-specific content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool vs. alternatives, nor does it mention prerequisites or contexts where it is appropriate. It solely describes functionality without usage heuristics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_research_search_papersA
Read-only
Inspect

Primary entry point for finding research papers by topic across AI/ML, computer science, math, physics, biomedical, life sciences, and clinical literature. Semantic (HyDE) search over indexed paper metadata and abstracts; returns ranked papers with paper id, title, authors, and abstract. The query should be a natural-language research topic or question. Run SEVERAL distinct framings of the question (sibling domains, rival methods, dataset or benchmark names, conditions, populations, interventions, or outcomes) rather than one query — recall improves markedly with diverse framings.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
toNo
fromNo
queryYes
authorsNo
categoriesNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the tool's safety is clear. The description adds that it uses semantic HyDE search over indexed metadata/abstracts and returns specific fields. It does not disclose potential rate limits, pagination, or latency, but the annotations cover the most critical behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that efficiently conveys the tool's purpose, domain scope, search type, output, and a key usage tip. It is not overly verbose, though it could be slightly more structured. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 parameters, no output schema), the description covers the primary search function and query parameter well, but omits details on optional parameters like date range, authors, categories, and pagination. It does not mention how results are ordered or if there are limits. The inclusion of the output fields is helpful, but more detail on filtering would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 6 parameters with 0% schema description coverage, so the description must compensate. It only explains the 'query' parameter (natural-language topic or question) and gives usage tips. Parameters like 'k', 'to', 'from', 'authors', and 'categories' are not described, leaving their roles unclear. This is a significant gap for a tool with multiple optional filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is the primary entry point for finding research papers by topic across a wide range of scientific domains. It specifies the search technique (semantic HyDE) and what it returns (ranked papers with id, title, authors, abstract). This effectively distinguishes it from sibling tools like firecrawl_research_related_papers or firecrawl_research_read_paper.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to run several distinct framings of the query for better recall, providing concrete examples of query variations (sibling domains, rival methods, etc.). It positions itself as the primary entry point but does not explicitly mention when not to use it or direct to alternatives for specific needs like reading a paper or searching GitHub.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_scrapeA
Read-only
Inspect

Scrape content from a single URL with advanced options. This is the most powerful, fastest and most reliable scraper tool, if available you should always default to using this tool for any web scraping needs.

Best for: Single page content extraction, when you know exactly which page contains the information. Not recommended for: Multiple pages (call scrape multiple times or use crawl), unknown page location (use search). Common mistakes: Using markdown format when extracting specific data points (use JSON instead). Other Features: Use 'branding' format to extract brand identity (colors, fonts, typography, spacing, UI components) for design analysis or style replication.

CRITICAL - Format Selection (you MUST follow this): When the user asks for SPECIFIC data points, you MUST use JSON format with a schema. Only use markdown when the user needs the ENTIRE page content.

Use JSON format when user asks for:

  • Parameters, fields, or specifications (e.g., "get the header parameters", "what are the required fields")

  • Prices, numbers, or structured data (e.g., "extract the pricing", "get the product details")

  • API details, endpoints, or technical specs (e.g., "find the authentication endpoint")

  • Lists of items or properties (e.g., "list the features", "get all the options")

  • Any specific piece of information from a page

Use markdown format ONLY when:

  • User wants to read/summarize an entire article or blog post

  • User needs to see all content on a page without specific extraction

  • User explicitly asks for the full page content

Handling JavaScript-rendered pages (SPAs): If JSON extraction returns empty, minimal, or just navigation content, the page is likely JavaScript-rendered or the content is on a different URL. Try these steps IN ORDER:

  1. Add waitFor parameter: Set waitFor: 5000 to waitFor: 10000 to allow JavaScript to render before extraction

  2. Try a different URL: If the URL has a hash fragment (#section), try the base URL or look for a direct page URL

  3. Use firecrawl_map to find the correct page: Large documentation sites or SPAs often spread content across multiple URLs. Use firecrawl_map with a search parameter to discover the specific page containing your target content, then scrape that URL directly. Example: If scraping "https://docs.example.com/reference" fails to find webhook parameters, use firecrawl_map with {"url": "https://docs.example.com/reference", "search": "webhook"} to find URLs like "/reference/webhook-events", then scrape that specific page.

  4. Use firecrawl_agent: As a last resort for heavily dynamic pages where map+scrape still fails, use the agent which can autonomously navigate and research

Usage Example (JSON format - REQUIRED for specific data extraction):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/api-docs",
    "formats": ["json"],
    "jsonOptions": {
      "prompt": "Extract the header parameters for the authentication endpoint",
      "schema": {
        "type": "object",
        "properties": {
          "parameters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": { "type": "string" },
                "type": { "type": "string" },
                "required": { "type": "boolean" },
                "description": { "type": "string" }
              }
            }
          }
        }
      }
    }
  }
}

Prefer markdown format by default. You can read and reason over the full page content directly — no need for an intermediate query step. Use markdown for questions about page content, factual lookups, and any task where you need to understand the page.

Use JSON format when user needs:

  • Structured data with specific fields (extract all products with name, price, description)

  • Data in a specific schema for downstream processing

Use query format only when:

  • The page is extremely long and you need a single targeted answer without processing the full content

  • You want a quick factual answer and don't need to retain the page content

  • Set queryOptions.mode to "directQuote" when you need verbatim page text; otherwise it defaults to "freeform"

Usage Example (markdown format - default for most tasks):

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

Usage Example (branding format - extract brand identity):

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

Branding format: Extracts comprehensive brand identity (colors, fonts, typography, spacing, logo, UI components) for design analysis or style replication. Performance: Add maxAge parameter for 500% faster scrapes using cached data. Lockdown mode: Set lockdown: true to serve the request only from the existing index/cache without any outbound network request. For air-gapped or compliance-constrained use where the request URL itself is considered sensitive. Errors on cache miss. Billed at 5 credits. Privacy: Set redactPII: true to return content with personally identifiable information redacted. Returns: JSON structured data, markdown, branding profile, or other formats as specified. Safe Mode: Read-only content extraction. Interactive actions (click, write, executeJavascript) are disabled for security.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
proxyNo
maxAgeNo
mobileNo
formatsNo
parsersNo
profileNo
waitForNo
locationNo
lockdownNo
redactPIINo
pdfOptionsNo
excludeTagsNo
includeTagsNo
jsonOptionsNo
queryOptionsNo
storeInCacheNo
onlyMainContentNo
screenshotOptionsNo
zeroDataRetentionNo
removeBase64ImagesNo
skipTlsVerificationNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false. The description confirms safe mode by stating 'Interactive actions are disabled for security,' and adds context about caching, lockdown mode, privacy (redactPII), and performance (maxAge). There is no contradiction; the description enriches the annotation's behavioral information beyond what is already provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections, bullet points, and code blocks, making it easy to scan. However, it is lengthy and contains some redundancy (format selection guidance appears twice). While front-loaded with purpose, it could be more concise without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 22 parameters, nested objects, and no output schema, the description provides extensive guidance including usage examples, troubleshooting, performance tips, and safety notes. The lack of detail on return value structure is a minor gap, but overall the description equips an agent well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining the purpose and usage of key parameters like formats, jsonOptions, queryOptions, waitFor, onlyMainContent, and more. It includes examples and specific guidance (e.g., 'waitFor: 5000 to waitFor: 10000'). However, some parameters (proxy, mobile, profile, location, etc.) are not covered, preventing a perfect score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Scrape content from a single URL with advanced options,' providing a specific verb and resource. It distinguishes itself from siblings by explicitly naming firecrawl_crawl for multiple pages and firecrawl_search for unknown locations, satisfying the criteria for a top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers explicit when-to-use sections (Best for/Not recommended for), common mistakes, and detailed format selection criteria (JSON vs markdown vs query). It also provides troubleshooting steps and refers to alternative tools (firecrawl_map, firecrawl_agent), fully defining appropriate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

firecrawl_search_feedbackAInspect

Send structured feedback on a previous firecrawl_search result. Call this immediately after a search where you used the results so we can improve search quality and refund 1 credit (search costs 2).

Pass the searchId returned by firecrawl_search (the id field on the response) and tell us:

  • rating — overall result quality: good, partial, or bad.

  • valuableSources — which result URLs were actually useful, and a short reason why.

  • missingContentthe most important field. An ARRAY of specific pieces of content you expected to find but didn't. One entry per missing piece, each with a short topic and an optional longer description. Examples: {"topic":"enterprise pricing","description":"no pricing tier table for the Enterprise plan was returned"}, {"topic":"API rate limits"}, {"topic":"comparison vs competitors"}. Be specific — these aggregate across teams and tell us what to index next. Do not pack multiple topics into one entry.

  • querySuggestions — how the query or response shape could be improved (e.g. "would have liked official docs first", "should boost github.com").

Substantive-feedback requirement (zero-effort feedback is rejected with HTTP 400):

  • good — must include at least one valuableSources entry

  • partial — must include valuableSources or at least one missingContent entry

  • bad — must include at least one missingContent entry or querySuggestions

Time window: Feedback must be submitted within ~2 minutes of the search. Beyond that, the call returns HTTP 409 with feedbackErrorCode: "FEEDBACK_WINDOW_EXPIRED" — do not retry, just move on. Same goes for any 4xx response: do not retry-loop.

Behaviors:

  • Idempotent per searchId. Re-submitting for the same id returns alreadySubmitted: true with creditsRefunded: 0.

  • Refund only applies to billable searches; preview teams are blocked.

  • Failed searches cannot receive feedback (the search itself already returned an error you can act on).

  • Daily refund cap (per team, per UTC day, default 100 credits). Once a team's creditsRefundedToday reaches dailyRefundCap, the response returns dailyCapReached: true with creditsRefunded: 0. The feedback is still recorded for search-quality improvement — only the credit refund is gated. Stop calling this tool for the rest of the UTC day when you see dailyCapReached: true.

When to call: Right after processing a search result. If the result didn't help, send rating bad with a clear missingContent — that is just as valuable as a good rating.

Usage Example (good rating with valuable sources + missing content):

{
  "name": "firecrawl_search_feedback",
  "arguments": {
    "searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "good",
    "valuableSources": [
      { "url": "https://docs.firecrawl.dev/features/search", "reason": "Most up-to-date description of /search." }
    ],
    "missingContent": [
      { "topic": "Pricing for the search endpoint", "description": "No pricing tier table for /search specifically." },
      { "topic": "Rate limits", "description": "Per-team RPS for /search not documented." }
    ],
    "querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
  }
}

Usage Example (bad rating, what was missing):

{
  "name": "firecrawl_search_feedback",
  "arguments": {
    "searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "bad",
    "missingContent": [
      { "topic": "Recent benchmarks", "description": "All results were >12 months old." },
      { "topic": "Comparison vs Algolia" }
    ]
  }
}

Returns: { success, feedbackId, creditsRefunded, creditsRefundedToday, dailyRefundCap, dailyCapReached?, alreadySubmitted?, warning? } JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
ratingYes
searchIdYes
missingContentNo
valuableSourcesNo
querySuggestionsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide basic hints (readOnlyHint=false, destructiveHint=false), but description adds extensive behavioral context: idempotent per searchId, refund only for billable searches, daily refund cap with response fields, 409 for expired window, substantative feedback validation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is long but well-structured with sections, bullet points, and two usage examples. Front-loads purpose and key behaviors. Some repetition (e.g., time window mentioned twice) but every sentence adds value. Could be slightly more concise, but structured effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, 0% schema coverage, no output schema, and complexity (validation rules, time window, daily cap, idempotency), the description is fully complete. Covers all parameters, error responses, success response fields, and edge cases. Examples illustrate valid arguments.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0% means description must compensate. It explains all five parameters in detail: searchId (returned id from search), rating (enum with meaning), valuableSources (array with url and reason), missingContent (most important field, with examples), querySuggestions string. Provides substantive-feedback requirements per rating level. Adds meaning beyond schema constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is for sending structured feedback on a firecrawl_search result. It uses specific verbs ('Send structured feedback') and resource ('previous firecrawl_search result'), and is distinct from sibling tools like firecrawl_search, firecrawl_crawl, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-call: immediately after a search and using its results. Exclusions: failed searches, beyond ~2-minute window (returns 409), daily cap reached. Also instructs to stop calling for the rest of the UTC day when dailyCapReached is true. Provides clear context for when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources