Model B · live binding
A widget fed live by an MCP server
The chart below is not seeded with mock data. On load, BoundWidget posts a binding to a server route, which dials a demo MCP server (scripts/demo-mcp.ts), calls its cash_balancestool, maps the returned rows onto the widget’s contract ({ date: "month", cash: "balance" }), and hands them over. The widget’s own validation guards the payload, and ChartStates covers the loading / error / stale moments. It re-fetches every 20s.
Loading
Swap the endpoint for the shipped /api/sextant/bind and point a named connection at your own MCP to make any row-array widget live.