Skip to content

fix(annotations): align firecrawl_search readOnlyHint with scrape tool - #312

Open
syf2211 wants to merge 1 commit into
firecrawl:mainfrom
syf2211:fix/search-readonly-hint-311
Open

fix(annotations): align firecrawl_search readOnlyHint with scrape tool#312
syf2211 wants to merge 1 commit into
firecrawl:mainfrom
syf2211:fix/search-readonly-hint-311

Conversation

@syf2211

@syf2211 syf2211 commented Jul 13, 2026

Copy link
Copy Markdown

Summary

Set firecrawl_search readOnlyHint to SAFE_MODE so it matches firecrawl_scrape and reflects whether interactive scrapeOptions.actions are exposed in the tool schema.

Motivation

firecrawl_search declared readOnlyHint: true while its input schema includes scrapeOptions.actions with click, write, press, and executeJavascript in self-hosted mode. MCP clients that honor readOnlyHint could skip confirmation prompts for a tool that can drive browser interactions. Reported in #311 via actlint write-as-readonly.

Changes

  • src/index.ts: readOnlyHint: truereadOnlyHint: SAFE_MODE on firecrawl_search
  • tests/mcp-smoke.test.mjs: assert firecrawl_search and firecrawl_scrape share the same readOnlyHint in stdio (non-cloud) mode

Tests

npm test — 9/9 pass (build + smoke tests)

Notes

  • Cloud mode (CLOUD_SERVICE=true) keeps readOnlyHint: true because interactive actions are omitted from the schema in safe mode.
  • Self-hosted mode now reports readOnlyHint: false, consistent with firecrawl_scrape.

Fixes #311

firecrawl_search accepts scrapeOptions.actions (click/write/executeJavascript)
in self-hosted mode but declared readOnlyHint: true, which could let MCP
clients skip confirmation prompts incorrectly.

Use SAFE_MODE for readOnlyHint so search matches firecrawl_scrape: read-only
when cloud/safe mode disables interactive actions, non-read-only otherwise.

Fixes firecrawl#311
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

firecrawl_search declares readOnlyHint: true but accepts scrapeOptions.actions (click/write/executeJavascript)

1 participant