MCP server that integrates Skyvern AI agent for browser automation and web task execution, plus utility tools
Server has 4 tools with mixed quality. Tool naming is inconsistent: 'skyvern_v1' violates verb_noun convention and lacks clarity; 'add_two_numbers' is generic and not domain-relevant. Descriptions are present but minimal (10-60 chars), below the 50-200 char baseline for LLM optimization. Input schemas are visible and typed, but lack constraints (enums, ranges, patterns). No output schemas documented. Error handling is absent, tools return raw responses without recovery guidance. The skyvern_v1 tool is particularly problematic: it performs a complex, long-running operation (timeout_seconds=3600) with no progress reporting, cancellation support, or timeout error handling visible in the code.
Add two numbers provided by the user
Get weather alerts for a US state.
Get weather forecast for a location.
Browse the internet using a browser to achieve a user goal.
Tool naming violates verb_noun convention. 'skyvern_v1' is opaque and version-suffixed; 'add_two_numbers' is generic and not domain-specific. LLMs cannot infer intent from these names alone.
No output schemas documented. Tools return raw responses (e.g., skyvern_v1 returns model_dump()['extracted_information'] as string; weather tools return undocumented structures). LLMs cannot plan downstream calls or extract typed fields.
Descriptions are too short (10-60 chars, below 50-200 baseline). 'Add two numbers provided by the user' and 'Get weather alerts for a US state' lack context for when/why to use each tool and what they return.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
No error handling or recovery guidance. skyvern_v1 has a 3600-second timeout but no visible error handling for timeouts, network failures, or invalid URLs. Weather tools have no documented error cases.
No input constraints. 'state' parameter in get_alerts accepts any string; no enum or pattern validation. 'latitude'/'longitude' in get_forecast lack range constraints (±90, ±180). LLMs will pass invalid values.