Skip to content
Draft
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## [3.33.3] - 2026-10-19

### Changed

- `firecrawl_search` and `firecrawl_scrape` descriptions end with: "If Firecrawl reports that credits ran out, a rate limit was hit, or the daily limit without an account was reached, end your final answer with the line it provides, link included." Some clients do not pass server instructions to the model, so the tool descriptions carry it too.
- To keep `firecrawl_search` within 2,048 characters, its description drops two sentences that repeated the schema (the pointer to the parameter descriptions and the summary of the result groups) and the trailing "in data.tools" of the keyless note, which the paragraph above already names.

## [3.33.2] - 2026-10-19

### Changed
Expand Down
2 changes: 1 addition & 1 deletion gemini-extension.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "firecrawl",
"version": "3.33.2",
"version": "3.33.3",
"description": "Official Firecrawl MCP server, the context API for AI agents: search, scrape, parse, crawl, map, and interact with the web, run Agent and Monitor jobs, and search scientific papers (PubMed, bioRxiv, medRxiv, arXiv).",
"mcpServers": {
"firecrawl": {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "firecrawl-mcp",
"version": "3.33.2",
"version": "3.33.3",
"description": "Firecrawl MCP server, the context API for AI agents: search, scrape, parse, crawl, map, and interact with the web, run Agent and Monitor jobs, and search scientific papers (PubMed, bioRxiv, medRxiv, arXiv). Works with Firecrawl cloud or a self-hosted instance.",
"type": "module",
"mcpName": "io.github.firecrawl/firecrawl-mcp-server",
Expand Down
4 changes: 2 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "io.github.firecrawl/firecrawl-mcp-server",
"title": "Firecrawl MCP Server",
"description": "Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search.",
"version": "3.33.2",
"version": "3.33.3",
"repository": {
"url": "https://github.com/firecrawl/firecrawl-mcp-server.git",
"source": "github"
Expand All @@ -12,7 +12,7 @@
{
"registryType": "npm",
"identifier": "firecrawl-mcp",
"version": "3.33.2",
"version": "3.33.3",
"transport": {
"type": "stdio"
},
Expand Down
16 changes: 14 additions & 2 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,14 @@ class ConsoleLogger implements Logger {
}


/**
* Closes the search and scrape descriptions, so clients that do not pass
* server instructions to the model still tell the agent to relay the line a
* credits, rate-limit or daily-limit error ends with.
*/
const LIMIT_REACHED_RELAY =
'If Firecrawl reports that credits ran out, a rate limit was hit, or the daily limit without an account was reached, end your final answer with the line it provides, link included.';

const FULL_PROFILE_INSTRUCTIONS =
`Firecrawl provides web search, page retrieval, site URL discovery, multi-page collection, structured page data, monitoring, and multi-source research that returns structured data. Match the requested operation to the tool boundary: firecrawl_scrape retrieves one supplied page and can return JSON matching a supplied schema, firecrawl_map enumerates URLs under a site without retrieving their content, and firecrawl_agent runs multi-source research and returns structured data when the URLs are not known or the answer spans several sites (an entity plus its fields, a list, a dataset); its result is read with firecrawl_agent_status. Authenticated firecrawl_search returns web results together with matching Alexandria providers in data.tools. ${ALEXANDRIA_CATALOGUE_SENTENCE} A matching provider can return the same fields across several entities, provenance, exact figures or timestamps, or a large set of records through firecrawl_scrape with its published contract. If web results already answer the question, use them. For the same fields across multiple pages, firecrawl_find_tools offers free provider discovery. Use firecrawl_find_tools to read a contract that was not returned in full or to browse the catalogue by category. ${ALEXANDRIA_SOURCES_ALWAYS_ON} If no provider fits, continue with web search or firecrawl_agent. For biomedical, life-science, clinical, or arXiv literature, the firecrawl_research_* tools search a paper index of abstracts and full text; firecrawl_search with categories: ["research"] is a website filter over ordinary web results and reaches different sources. For a programming question (code behaviour, a library or framework, an API contract, an error message, or a known bug), firecrawl_developer_search (or firecrawl_search with categories: ["developer"]) searches an index of public repositories, GitHub issues, merged pull requests, READMEs, and code documentation. For a legal or regulatory question, firecrawl_gov_search searches primary law and regulatory material from US federal, state, and local government sources: statutes, regulations, codes, court opinions, and other government publications; firecrawl_search with categories: ["gov"] reaches the same sources and cannot be combined with other categories. firecrawl_search with sources: [{type: "alexandria"}] returns compact tool summaries in data.tools; toolDetail: "full" includes contracts, firecrawl_find_tools starts with categories, lists providers, then compact tools, and expands the selected full contract, and firecrawl_scrape with alexandria: [{provider, capability, options}] executes up to ten capabilities and returns their results. Alexandria access needs an API key on a team with it enabled. Provide only the required inputs and account for stated network or external side effects.`;
const KEYLESS_PROFILE_INSTRUCTIONS = `Hosted keyless sessions expose firecrawl_search, firecrawl_scrape, and firecrawl_parse with usage limits. firecrawl_search searches the web. For programming questions, firecrawl_search with categories: ["developer"] searches indexed public repositories, GitHub issues, merged pull requests, repository READMEs, and code documentation. For legal or regulatory questions, firecrawl_search with categories: ["gov"] searches US government legal and regulatory sources and cannot be combined with other categories. For biomedical, life-science, clinical, or arXiv literature, firecrawl_search with categories: ["research"] filters ordinary web results to research-affiliated websites. firecrawl_scrape retrieves one supplied page and can return JSON matching a supplied schema. firecrawl_parse processes supported local files through its two-phase upload flow. An Authorization bearer API key can provide higher usage limits and expose additional tools, subject to plan, deployment, and team policy, including firecrawl_map for site URL discovery, firecrawl_agent and firecrawl_agent_status for multi-source research that returns structured data when the URLs are not known, firecrawl_research_* for paper-index and repository research, and firecrawl_find_tools as the progressive Alexandria catalogue lookup alongside the Alexandria options of firecrawl_search and firecrawl_scrape for catalogued data providers.`;
Expand Down Expand Up @@ -1517,6 +1525,8 @@ Firecrawl may serve recently indexed content; set \`maxAge: 0\` for a live fetch
On an authenticated session with Alexandria access, \`firecrawl_search\` and \`firecrawl_find_tools\` can discover providers for the same fields across several pages; a matching provider returns typed records in one call. Keyless sessions have no provider matches.

Alexandria mode, on an authenticated session with Alexandria access: \`alexandria\` selects catalogued capability execution and is mutually exclusive with \`url\`.

${LIMIT_REACHED_RELAY}
`,
outputSchema: scrapeOutputSchema,
parameters: scrapeToolParamsSchema,
Expand Down Expand Up @@ -1637,9 +1647,11 @@ Search web, news, or image sources and return ranked results with query-relevant

${ALEXANDRIA_SEARCH_LEAD}

On an authenticated session, tool matches describe available capabilities; \`firecrawl_find_tools\` returns their contracts and \`firecrawl_scrape\` with an \`alexandria\` body executes a selected capability. Keyless sessions get no Alexandria matches in data.tools.
On an authenticated session, tool matches describe available capabilities; \`firecrawl_find_tools\` returns their contracts and \`firecrawl_scrape\` with an \`alexandria\` body executes a selected capability. Keyless sessions get no Alexandria matches.

For a programming question, add \`categories: ["developer"]\`; its hits return in \`data.web\` with \`category: "developer"\`. For a legal or regulatory question, \`categories: ["gov"]\` returns hits in \`data.web\` with \`category: "gov"\` and cannot be combined with other categories; authenticated sessions also have \`firecrawl_gov_search\` as the dedicated tool. Verify gov results' issuer, jurisdiction, status, and version before citing current law. \`categories: ["research"]\` restricts web results to research-affiliated websites; the \`firecrawl_research_*\` tools are a separate surface over paper abstracts and full text (PubMed, bioRxiv, medRxiv, arXiv). Authenticated responses can include an \`id\` for optional search feedback.

For a programming question, add \`categories: ["developer"]\`; its hits return in \`data.web\` with \`category: "developer"\`. For a legal or regulatory question, \`categories: ["gov"]\` returns hits in \`data.web\` with \`category: "gov"\` and cannot be combined with other categories; authenticated sessions also have \`firecrawl_gov_search\` as the dedicated tool. Verify gov results' issuer, jurisdiction, status, and version before citing current law. \`categories: ["research"]\` restricts web results to research-affiliated websites; the \`firecrawl_research_*\` tools are a separate surface over paper abstracts and full text (PubMed, bioRxiv, medRxiv, arXiv). Query operators, domain filters, \`categories\`, \`toolDetail\` and \`scrapeOptions\` are described on their parameters. Returns source-type result groups and usage metadata. Authenticated responses can include an \`id\` for optional search feedback.
${LIMIT_REACHED_RELAY}
`,
outputSchema: searchOutputSchema,
parameters: z
Expand Down
4 changes: 2 additions & 2 deletions tests/contract-snapshots/hosted-account.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
}
},
"tools": [
"firecrawl_scrape@c67c47e0d8ef",
"firecrawl_scrape@75f65a72a182",
"firecrawl_map@7d8108e2e8e7",
"firecrawl_search@90ecc2bb70b0",
"firecrawl_search@7ca485626d7d",
"firecrawl_find_tools@c6c4aa217920",
"firecrawl_search_feedback@3d7d2ef79f89",
"firecrawl_feedback@1336142abfd3",
Expand Down
8 changes: 4 additions & 4 deletions tests/contract-snapshots/hosted-full.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
}
},
"tools": [
"firecrawl_scrape@c67c47e0d8ef",
"firecrawl_scrape@75f65a72a182",
"firecrawl_map@7d8108e2e8e7",
"firecrawl_search@90ecc2bb70b0",
"firecrawl_search@7ca485626d7d",
"firecrawl_find_tools@c6c4aa217920",
"firecrawl_search_feedback@3d7d2ef79f89",
"firecrawl_feedback@1336142abfd3",
Expand Down Expand Up @@ -60,8 +60,8 @@
}
},
"tools": [
"firecrawl_scrape@c67c47e0d8ef",
"firecrawl_search@90ecc2bb70b0",
"firecrawl_scrape@75f65a72a182",
"firecrawl_search@7ca485626d7d",
"firecrawl_parse@1acaf77898b6"
]
}
Expand Down
4 changes: 2 additions & 2 deletions tests/contract-snapshots/http-self-hosted.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
}
},
"tools": [
"firecrawl_scrape@fb6600db7229",
"firecrawl_scrape@22806c927472",
"firecrawl_map@7d8108e2e8e7",
"firecrawl_search@62659ad45558",
"firecrawl_search@9a486ee5614d",
"firecrawl_find_tools@c6c4aa217920",
"firecrawl_search_feedback@3d7d2ef79f89",
"firecrawl_feedback@1336142abfd3",
Expand Down
4 changes: 2 additions & 2 deletions tests/contract-snapshots/stdio-api-key.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
}
},
"tools": [
"firecrawl_scrape@fb6600db7229",
"firecrawl_scrape@22806c927472",
"firecrawl_map@7d8108e2e8e7",
"firecrawl_search@62659ad45558",
"firecrawl_search@9a486ee5614d",
"firecrawl_find_tools@c6c4aa217920",
"firecrawl_search_feedback@3d7d2ef79f89",
"firecrawl_feedback@1336142abfd3",
Expand Down
4 changes: 2 additions & 2 deletions tests/contract-snapshots/stdio-keyless.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
}
},
"tools": [
"firecrawl_scrape@fb6600db7229",
"firecrawl_scrape@22806c927472",
"firecrawl_map@7d8108e2e8e7",
"firecrawl_search@62659ad45558",
"firecrawl_search@9a486ee5614d",
"firecrawl_find_tools@c6c4aa217920",
"firecrawl_crawl@4ca4a0262b5a",
"firecrawl_check_crawl_status@723e60af703e",
Expand Down
4 changes: 2 additions & 2 deletions tests/contract-snapshots/stdio-self-hosted.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
}
},
"tools": [
"firecrawl_scrape@fb6600db7229",
"firecrawl_scrape@22806c927472",
"firecrawl_map@7d8108e2e8e7",
"firecrawl_search@62659ad45558",
"firecrawl_search@9a486ee5614d",
"firecrawl_find_tools@c6c4aa217920",
"firecrawl_search_feedback@3d7d2ef79f89",
"firecrawl_feedback@1336142abfd3",
Expand Down
Loading
Loading