MCP server exposing the Boardstate dashboard control plane to any AI. Exposes dashboard tools (dashboard_*) as MCP tools (boardstate_*) with a local fs-backed store, plus a live boardstate://workspace resource and interactive board view.
Boardstate MCP server has well-structured tool definitions with consistent naming (verb_noun pattern), comprehensive input schemas with proper constraints (enums, min/max bounds), and clear descriptions. However, output schemas are not documented, error handling lacks recovery guidance, and several tools have descriptions under the 50-char baseline for LLM optimization. Tool annotations (destructiveHint, readOnlyHint) are present and correctly applied. The server demonstrates solid foundational quality but falls short of production-grade polish in error messaging and response documentation.
Render the interactive Boardstate board (MCP Apps). Self-contained; fetches nothing.
Resolve a dashboard binding exactly as a widget sees it. RPC bindings return binding_client_resolved.
Create a new dashboard tab. Call dashboard_workspace_get first when you need the current document.
Delete a dashboard tab. Call dashboard_workspace_get first when you need the current document.
Update a dashboard tab's metadata. Call dashboard_workspace_get first when you need the current document.
Search external MCP tool catalogs and request tools from connectors. SEARCH a connector's (or every connector's) full catalog — bounded, schema-free. REQUEST tools: append them to the connector grant's requested set (re-pending a granted grant per the merged partial-grant lifecycle). NEVER grants.
Approve or reject a pending custom widget. NOTE: approval is an operator action — in a shared setup a human should own this decision, not the agent.
Output schemas not documented. Tools return results but LLMs cannot plan downstream calls without knowing response structure. Affects all 13 tools.
Error handling lacks recovery guidance. Tools do not return actionable error messages telling LLMs what to do next (e.g., 'Tab not found. Call boardstate_workspace_get to see available tabs'). Affects destructive and write operations.
Descriptions for delete/patch operations are under 60 characters and lack context on irreversibility. 'Delete a dashboard tab' does not explain consequences or when to use it vs. other tools. LLMs need explicit state-modification warnings.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2025-06-18+ | v2 |
Add a widget to a dashboard tab. Call dashboard_workspace_get first when you need the current document.
Remove a widget from a tab. Call dashboard_workspace_get first when you need the current document.
Update a widget's properties. Call dashboard_workspace_get first when you need the current document.
Create a custom widget scaffold. Agent-authored scaffolds enter the registry as pending.
Read the current dashboard workspace document. Call this first when you need the current document.
Replace the entire workspace document. Sanitized so an agent can never self-approve a widget or forge tab provenance. Call dashboard_workspace_get first when you need the current document.
boardstate_board tool description is vague ('Render the interactive Boardstate board'). Does not explain when to call it, what it returns, or how it differs from boardstate_workspace_get. LLMs cannot disambiguate.
boardstate_widget_approve description mentions 'operator action' and 'human should own this decision' but does not provide a confirmation/dry-run pattern. Destructive approval decisions lack a safety gate.