Surf MCP has well-structured tool definitions with complete schemas and descriptions for all 18 tools. Naming follows verb_noun convention (session_create, goto, click). However, descriptions are often terse (10-50 chars), falling below the 50-200 char LLM-optimized baseline. Parameter descriptions exist but lack actionable constraints (e.g., no enum validation guidance, no format specs). Error handling is minimal, no recovery guidance or categorization. Output schemas are not documented. The 'act' and 'act_autonomous' tools rely on external Fara service with no fallback or timeout guidance.
Execute a goal using direct Fara visual grounding. Fara decides what action to take (click, type, scroll, etc.) based on the goal and screenshot.
Execute a goal autonomously with multiple steps. Fara loops until task completion (terminate action) or max steps reached.
Navigate back in history
Click UI element by description (browser driver only)
Get current location for a driver
Navigate forward in history
Navigate to a location (path for filesystem, URL for browser)
Descriptions are terse (10-50 chars) and lack LLM-optimized context. E.g., 'Get current location for a driver' (45 chars) does not explain WHEN to call it vs other tools or what the response contains.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., session_create returns a session_id, but the response structure is not declared.
Error handling is absent. No recovery guidance, categorization, or actionable error messages. E.g., if 'act' fails due to Fara timeout, the LLM receives no guidance on retry strategy or fallback.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Get navigation history for a driver
List contents at current location (directory entries for filesystem, links for browser)
Locate UI element by natural language description (browser driver only)
Read content (file for filesystem, page text for browser)
Scroll page (browser driver only)
Create a new navigator session with one or more drivers
Destroy a session and cleanup all its drivers
List all active sessions
Capture current state (JSON for filesystem, PNG screenshot for browser)
Type text into UI element by description (browser driver only)
Wait for element or delay (browser driver only)
Parameter constraints lack actionable descriptions. E.g., 'direction' enum (up/down) is declared but not explained in the description. 'amount' has no min/max bounds documented.
External service dependency (Fara LLM) in 'act' and 'act_autonomous' has no timeout, fallback, or partial-failure handling. If Fara is unavailable, these tools fail silently.