Agent-Computer Interface (ACI) — FastAPI server providing REST endpoints for session management, action execution, and environment perception. Routes actions to execution bridges (web, desktop, CLI) via WebSocket connections.
OpenClaw has 14 tools with schemas and descriptions present, but quality is inconsistent. Most descriptions are adequate (50-150 chars) but lack LLM-optimized guidance on WHEN to use each tool vs. alternatives. Parameter descriptions exist but are minimal (10-30 chars). No tool annotations (readOnlyHint/destructiveHint). Error handling is absent, no recovery guidance, no categorization of retryable vs. fatal errors. Output schemas are not documented. Several tools expose internal implementation details (e.g., 'ActionRequest object', 'ContextPerception snapshot') rather than user-facing abstractions. Tools like dispatch_action and request_perception duplicate functionality of higher-level tools, violating single-responsibility principle.
Execute a command via subprocess with configurable timeout. Captures stdout/stderr and returns them as ActionResult.
Create a new ACI session. If target_url is provided and the corresponding bridge is connected, the bridge is immediately instructed to navigate to that URL.
OpenCV contour detection in OCR-sparse areas. Processes regions flagged needs_contour by the OCR tier using Canny edge detection, morphological operations, and non-maximum suppression.
Send an action to the appropriate bridge and wait for the result. Routes ActionRequests to the correct bridge worker via WebSocket connections.
Execute an action — the main LLM endpoint. Acquires the per-session I/O lock, transitions through the state machine, dispatches to the appropriate bridge, and returns the result.
Capture current environment state and return a ContextPerception snapshot describing the live accessibility tree, window title, URL, and other context the LLM needs to decide what to do next.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. Tools like cli_execute_command and probe_cursor modify system state but lack destructiveHint.
Duplicate/overlapping tool responsibilities. dispatch_action, request_perception, request_screenshot, send_navigate are low-level bridge primitives that duplicate higher-level tools (execute_action, perceive, screenshot). LLMs waste reasoning cycles choosing between them.
No output schemas documented. Tools return 'ActionResult', 'ContextPerception snapshot', etc., but LLMs cannot see the field structure. Agents cannot plan downstream calls or extract required IDs.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Return working directory listing and recent command output for CLI context.
Win32 cursor mutation probing — scans a target window by moving the cursor across a grid and reading back the system cursor shape. Cursor shape changes reveal OS-level ground truth about interactability (HAND=clickable, IBEAM=text input, ARROW=non-interactable).
Query the knowledge base for application-specific information by app name, window class, or process name.
Ask a bridge to perceive the current environment and return context perception data.
Ask a bridge to capture a screenshot.
Resolve an application name to its full executable path on Windows. Searches known paths, registry, common installation directories, PATH environment variable, and Start Menu shortcuts.
Capture a screenshot of the current environment.
Tell a bridge to navigate to the given URL.
No error handling guidance. Tools lack recovery hints, error categorization, or actionable messages. E.g., 'Session not found' should suggest 'Call create_session first' or list available sessions.
Parameter descriptions are minimal (10-30 chars). 'Session identifier', 'Environment type', 'Target UI element UID' lack context on valid values, formats, or constraints. LLMs cannot infer whether to pass 'web' or 'Web' or 'WEB'.