MCP server for Firecrawl Simple — a web scraping and site mapping tool enabling LLMs to access and process web content
The server defines 2 tools with clear verb-noun naming (firecrawl_scrape, firecrawl_map). Both tools have descriptions and input schemas with parameter details. However, there are significant gaps: (1) No documented output schemas, callers cannot determine what fields to expect; (2) Parameter descriptions lack constraint details (valid ranges, format specifications, regex patterns); (3) No error handling guidance in descriptions or tool docs; (4) Missing documentation on when/why to use each tool vs alternatives; (5) No mention of pagination limits or result size caps despite tools potentially returning large datasets. The tool factory and error handler show good engineering patterns, but tool definitions themselves need deeper LLM-optimization work. Average of individual tool scores: (firecrawl_scrape: 63 + firecrawl_map: 61) / 2 = 62.
Generate a sitemap of a given site
Scrape content from a URL with JavaScript rendering support
Output schemas not documented. Neither firecrawl_scrape nor firecrawl_map document what fields are returned, what types they are, or how the agent should parse the response. Callers cannot plan downstream tool chains.
Parameter constraints missing or vague. timeout has a default (30000ms) but no documented min/max. waitFor has no range guidance. limit defaults to 5000 with no explanation of result set size implications or pagination strategy. formats enum is present but descriptions of each format (markdown vs rawHtml vs screenshot) are missing.
No error handling guidance in tool descriptions. What happens if a URL is unreachable? What if JavaScript rendering times out? What if the site blocks crawling? Descriptions do not tell the agent what to do next (retry, ask user, abort), violating pattern:recovery-guide.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 47 | - | v1 |
No documentation of when to use each tool. The two tools operate on URLs (scrape content, map site structure), but the descriptions do not explain the distinction clearly enough for an LLM to decide between them without trial. E.g., 'use scrape when you need content from a specific page; use map to discover all pages in a site.'
Result set limits not enforced or explained. firecrawl_map defaults limit=5000 and firecrawl_scrape can return multiple formats. Neither tool documents caps on output size, pagination strategy, or guidance for large result sets. Baseline pattern:paginated-result expects limit + offset or cursor, and documentation of total counts.
Parameter descriptions are too brief. 'Headers to send with the request' (headers), 'Milliseconds to wait for JS execution' (waitFor) lack actionable detail. Baseline pattern:tool-description expects 50-150 chars with format, range, and examples (in description, not as sample values).