Skip to main content
Glama

firecrawl-mcp

firecrawl_search

Read-only

Search web, news, or image sources and return ranked results. Operators include quoted phrases, -term, site:host, inurl:term, intitle:term, and related:host; the set is non-exhaustive. includeDomains and excludeDomains are mutually exclusive hostname filters; categories limit results to GitHub, research, PDF, or developer sources.

For a programming question, add categories: ["developer"]. It searches an index of repositories, GitHub issues, merged pull requests, repository READMEs, and curated documentation sites, and returns the hits in data.web with category: "developer".

categories: ["research"] restricts these web results to research-affiliated websites and returns page snippets. The firecrawl_research_* tools are a separate surface that searches paper abstracts and full text across biomedical (PubMed, bioRxiv, medRxiv) and arXiv literature.

Each web result is a title, URL, and description, not the page. Add scrapeOptions to attach page content in the same call; those fetches ignore maxAge, so use firecrawl_scrape when you need a live fetch. Returns source-type result groups and usage metadata. Authenticated responses can include an id for optional search feedback.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tbsNo
limitNo
queryYes
filterNo
sourcesNo
locationNo
categoriesNo
enterpriseNo
highlightsNo
scrapeOptionsNo
excludeDomainsNo
includeDomainsNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark read-only and non-destructive, and the description adds meaningful behavior: result snippets are not page content, scrapeOptions fetches bypass maxAge, developer category results land in data.web with category: 'developer', and authenticated responses may include an id. None of this contradicts the 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 longer than minimal but front-loads the core purpose in the first sentence and organizes topics into purpose, category guidance, and result/scrape behavior. It is dense and does not contain filler, though it could be trimmed around peripheral details such as the optional authenticated id.

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 tool with 12 parameters and no output schema, the description covers the main call flow, return shape (ranked title/URL/description groups), category behavior, and scrape-vs-scrapeOptions tradeoff. It omits guidance on several less-common search parameters, but is complete enough for correct basic invocation.

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 description gives real meaning for query operators, includeDomains/excludeDomains mutual exclusivity, sources, categories, and scrapeOptions, which is important because schema description coverage is 0%. However, several parameters remain unexplained (tbs, filter, location, enterprise, highlights, limit), so the description only partially compensates for the schema's lack of 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?

Opens with a specific verb and resource: 'Search web, news, or image sources and return ranked results.' It further distinguishes search results from page content by stating each result is a title, URL, and description, and points to firecrawl_scrape for live fetches. This is enough to separate it from the scrape/parse siblings.

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?

Gives explicit when-to-use guidance: add categories: ['developer'] for programming questions, and use categories: ['research'] selectively. It names firecrawl_research_* as a separate surface for biomedical/arXiv literature and explicitly says to use firecrawl_scrape when a live fetch is needed because scrapeOptions fetches ignore maxAge.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation5/5

Parse handles local/documents, scrape handles a single remote URL, and search handles web queries. The remote-vs-local distinction prevents parse/scrape overlap, and search's result-list purpose is clear despite optional scrapeOptions.

Naming Consistency5/5

All tools use the same firecrawl_ prefix with lowercase verb names: parse, scrape, and search. This is a consistent, parallel, and predictable naming scheme.

Tool Count4/5

Three focused tools is within the well-scoped range and each tool earns its place, but the server feels slightly lean for a Firecrawl surface because descriptions reference crawl and map operations that are not included.

Completeness2/5

Single-page scraping, document parsing, and search are covered, but the descriptions explicitly point to firecrawl_crawl and firecrawl_map, which are absent. This leaves site-wide crawling and URL discovery as significant gaps that will cause multi-page extraction tasks to fail.

Resources