#23534: fix(config): add firecrawl and readability fields to ToolsWebFetchSchema
size: XS
Cluster:
Configuration Fixes and Enhancements
## Summary
- Adds `ToolsWebFetchFirecrawlSchema` zod validation for the Firecrawl web fetch fallback config
- Adds `readability` boolean field to `ToolsWebFetchSchema`
- Both fields already exist in `types.tools.ts` and `schema.help.ts` but were missing from the zod schema, causing `.strict()` validation to reject them with "Unrecognized key: firecrawl"
## Test plan
- [x] All 75 config test files pass (568 tests)
- [x] Build succeeds
- [ ] Gateway starts with `tools.web.fetch.firecrawl.apiKey` config set
- [ ] Gateway starts with `tools.web.fetch.readability: false` config set
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
Added missing `readability` boolean field and `firecrawl` nested object to `ToolsWebFetchSchema` zod validation schema.
- Both fields already existed in TypeScript types (`types.tools.ts`) and help documentation (`schema.help.ts`)
- Without these fields, `.strict()` validation rejected configs containing `tools.web.fetch.firecrawl` or `tools.web.fetch.readability`
- New `ToolsWebFetchFirecrawlSchema` follows existing pattern for nested config schemas (similar to `SandboxDockerSchema`, `SandboxBrowserSchema`)
- Field types and validations match TypeScript interface and runtime usage in `web-fetch.ts`
<h3>Confidence Score: 5/5</h3>
- Safe to merge - straightforward schema fix that aligns validation with existing types
- The changes are minimal, well-tested (568 config tests passing), and fix a clear mismatch between the zod schema and TypeScript types. The new schema follows established patterns in the codebase and all field definitions match their documented behavior.
- No files require special attention
<sub>Last reviewed commit: 8129020</sub>
<!-- greptile_other_comments_section -->
<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#16412: fix(config): align tools.web.fetch schema with firecrawl/readabilit...
by ciberponk · 2026-02-14
91.2%
#20445: fix(tools): restore Firecrawl config schema and add FIRECRAWL_BASE_...
by heyhudson · 2026-02-18
76.4%
#10943: fix(config): resolve Control UI "Unsupported schema node" for confi...
by kraftbj · 2026-02-07
76.1%
#12499: fix(config): add missing customBindHost to gateway Zod schema
by sfo2001 · 2026-02-09
75.0%
#10807: fix(config): coerce numeric meta.lastTouchedAt to ISO string
by mcaxtr · 2026-02-07
74.0%
#10056: fix: allow extra fields in HookConfig schema
by 7Sageer · 2026-02-06
73.6%
#21712: feat(config): add custom commands to CommandsSchema
by Jimmysnielsen · 2026-02-20
72.0%
#10197: fix: add missing allowAgents to agent defaults subagents schema
by Yida-Dev · 2026-02-06
71.3%
#12794: fix: catch firecrawl fallback errors in web_fetch to prevent unhand...
by zerone0x · 2026-02-09
71.2%
#22644: feat(web-fetch): add allowPrivateNetwork config for web_fetch
by qingxuecc · 2026-02-21
71.2%