MCP server for executing coding tasks in isolated sandboxes with real-time progress tracking via a web UI. Manages sessions, runs, and provides zero-trust authentication proxies for external APIs.
Three tools with clearly structured Zod schemas and generally good descriptions. Naming follows verb_noun patterns (opencode_run_task, opencode_get_result, opencode_list_runs). Schemas are explicit and type-safe. However, descriptions lack depth regarding recovery paths, dependencies, and error conditions. Tool composition is sound but lacks guidance on expected usage patterns. Output schemas are not documented in the tool definitions themselves, only inferred from response formatting.
Get the result of a completed run. Returns the task output, error details, or status if still running.
List runs with optional filters for session, status, and time range. Returns a flat list of all runs across all sessions.
Execute a coding task in a sandbox. Creates session if needed, or continues existing session. Returns immediately with status 'started'. IMPORTANT: (1) Share the webUiUrl with the user for real-time progress tracking. (2) Poll opencode_get_result every 10-30 seconds using the returned runId until status is 'completed' or 'failed' to get the final result.
Output schemas not explicitly documented. Tool definitions do not specify what fields the response contains or their types. LLMs cannot infer expected output structure from these definitions alone.
Error handling guidance missing. Descriptions do not explain what errors can occur, whether they are retryable, or what recovery actions the LLM should take. For example, opencode_get_result does not document what happens when runId is invalid.
Incomplete dependency documentation. opencode_run_task description mentions polling opencode_get_result but does not document that webUiUrl is returned or what runId format to expect. These dependencies force agents to reason about tool chaining without explicit guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Parameter relationship documentation incomplete. opencode_run_task accepts optional sessionId, repository, and branch, but their interactions are unclear. Can you create a new session without a repository? What is the expected workflow? These ambiguities force LLM trial-and-error.
No pagination documentation for opencode_list_runs. The 'limit' parameter defaults to 10 and caps at 100, but descriptions do not explain what happens when results exceed the limit or how to iterate through all runs. The 'before' cursor is documented but its interaction with filtering is unclear.
Ambiguous optional parameters. Repository is optional 'to clone', but opencode_run_task requires a task. Can you run a task in an existing session without cloning? Must repository be specified on first call only? LLMs cannot infer these semantics.