MCP server providing web scraping tools (scrape, crawl, map, extract_media, fetch_savings) over a REST API backend
FireScrapling defines 6 tools with complete input schemas and descriptions. However, descriptions are minimal (10-60 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit error recovery guidance. Parameter descriptions are present but terse. Output schemas are not documented. Tools lack error handling patterns and recovery guidance. No tool annotations (readOnlyHint, etc.) despite all being read-only. Naming is clear (verb_noun pattern) but descriptions do not explain dependencies or prerequisites.
Start a BFS crawl job. Returns job id; poll with crawl_status.
Get crawl job status and paginated page results.
Extract media/catalog manifests (URLs only — no proxy/download) for supported sites.
Estimated fetch-credit savings vs always using the expensive tier.
Discover links on a site (map).
Scrape a URL into LLM-ready markdown (or other formats).
Descriptions are 10 - 60 characters, far below the 194-char baseline. They lack WHEN to use each tool, prerequisites, and error recovery guidance. E.g., 'Scrape a URL into LLM-ready markdown' does not explain when to call scrape vs crawl, or what happens on network errors.
Output schemas are not documented. LLMs cannot plan downstream calls or extract required fields. E.g., crawl_status returns paginated results but the response structure (fields, pagination tokens, total count) is not visible in the tool definition.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Agents cannot infer safety properties without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. E.g., crawl does not explain what happens if the seed URL is invalid, unreachable, or returns 403.
Parameter descriptions are terse (5 - 20 chars). E.g., 'Seed URL' does not explain format, validation rules, or what happens if the URL is invalid. 'Max pages' lacks min/max bounds.