A comprehensive Rust-based agent runtime and daemon system with MCP server support, LSP integration, ACP bridge, and multi-provider LLM capabilities. Includes browser automation, call intelligence, voice synthesis, and extensible tool framework.
Ocean OS provides 18 tools with basic schemas and descriptions, but falls short of production quality. All tools have descriptions (10-50 chars, mostly terse) and input schemas with type definitions. However, descriptions lack LLM-optimization guidance (no WHEN to use, no prerequisites, no recovery hints). Parameter descriptions are minimal (5-20 chars). Output schemas are undocumented, no evidence of return type specifications. Error handling is absent from tool definitions. Tool naming follows verb_noun convention (good), but several tools combine multiple concerns (browser_evaluate executes arbitrary JS; execute_command runs shell with args array). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Security concerns: execute_command and browser_evaluate are high-risk but lack confirmation/dry-run patterns. Composition is weak, browser tools are tightly coupled (navigate → click → type → screenshot), forcing multi-step agent reasoning. Memory tools (store/retrieve/search) lack pagination and result limits. Overall: functional but below production baseline (median 45-55 for community servers).
Click an element on the page
Execute JavaScript in the browser context
Navigate to a URL in the browser
Take a screenshot of the current browser viewport
Scroll the page
Type text into a focused input element
Wait for an element to appear on the page
Call a Language Server Protocol method
Convene a council to deliberate on a decision
Output schemas undocumented. No tool returns a documented schema, LLMs cannot infer what fields to expect or plan downstream calls. Violates pattern:tool and pattern:response-shaper.
Descriptions are terse (10-50 chars) and lack LLM-optimization. Missing WHEN to use, prerequisites, and recovery hints. Baseline is 194 chars for A+ tools. Examples: 'Navigate to a URL in the browser' (35 chars) lacks guidance on when to call vs other tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. execute_command (DESTRUCTIVE), write_file (WRITE), browser_evaluate (WRITE) lack annotations. Violates pattern:tool-annotation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Execute a shell command
Get code context and structure information
List contents of a directory
Retrieve information from agent memory
Search agent memory
Store information in agent memory
Read the contents of a file
Search for code patterns in the codebase
Write contents to a file
High-risk tools lack confirmation/dry-run patterns. execute_command and browser_evaluate can cause irreversible damage but offer no dry-run or confirmation step. Violates pattern:confirmation-request.
Parameter descriptions are minimal (5-20 chars). 'Path to the file' (15 chars) lacks format/constraint guidance. Baseline is 72 chars for A+ tools. LLMs cannot infer valid ranges, formats, or constraints.