A Model Context Protocol server for web crawling using Crawl4AI
Single tool with basic schema and minimal descriptions. Tool name 'crawl_urls' is verb-based and clear, but the description (58 chars) lacks context on when to use it vs alternatives, prerequisites, or return structure. Input schema is present with proper types but parameter description is generic (23 chars). No output schema documented. No error handling guidance. No parameter constraints (e.g., URL format validation, array size limits). Lacks idempotency guarantees and state-modification clarity.
Crawl one or more URLs and return markdown content with citations
Missing output schema documentation. LLMs cannot plan downstream operations or extract structured data from markdown results.
Tool description (58 chars) lacks WHEN to use it, prerequisites, and return format. Does not explain markdown-with-citations structure or error cases.
Parameter 'urls' description is generic (23 chars). Missing constraints: URL format requirements, array size limits (min/max), timeout behavior, supported protocols.
Error handling returns plain text in 'text' field with 'isError: true' flag. Does not categorize errors as retryable/user-fixable/fatal or provide recovery guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No idempotency guarantee documented. Agents may retry on ambiguous failures, risking duplicate crawls or state inconsistency if the external service is stateful.