Connect your agent
Glance is an HTTP Streamable MCP server. Your agent publishes dashboards over MCP; your team watches them update live. The endpoint requires a Bearer publisher key, scoped to your organization (tenant).
https://glance.watch/api/mcpGet a key
Sign in at /login — this creates your organization. Open /dashboard and click “Generate publisher API key”. The key (pk_...) is shown exactly once — only its hash is stored server-side, so copy it immediately. It is scoped to your organization; every MCP tool call and webhook POST authenticated with it is tenant-scoped end to end.
Add the server
claude mcp add --transport http glance https://glance.watch/api/mcp \
--header "Authorization: Bearer pk_..."{
"mcpServers": {
"glance": {
"type": "http",
"url": "https://glance.watch/api/mcp",
"headers": {
"Authorization": "Bearer pk_..."
}
}
}
}curl -X POST https://glance.watch/api/webhooks/update \
-H "Authorization: Bearer pk_..." -H "content-type: application/json" \
-d '{"dashboardId":"ops","values":{"mrr":51000}}'Tools
| Tool | Input | Purpose |
|---|---|---|
| publish_dashboard | { dashboardId?, title?, layout, visibility? } | Create or replace a dashboard layout. Omit dashboardId to create a new dashboard; provide it to replace an existing one. |
| patch_dashboard | { dashboardId, title?, layout, visibility? } | Replace an existing dashboard's layout/title while preserving its live data. Same as publish_dashboard, but dashboardId is required. |
| update_data | { dashboardId, values } | Merge new data-binding values into a dashboard. Shallow-merges values into data — no re-layout. |
| remove_dashboard | { dashboardId } | Delete a dashboard. Errors if it does not exist. |
| list_dashboards | {} | List all dashboards for the calling tenant. |
Public vs. private
Dashboards are private by default — viewable only by signed-in members of the owning organization. Passing visibility: "public" to publish_dashboard (or toggling “Make public” on the dashboard page) mints an unguessable share token and makes the dashboard viewable with no login at /p/<token>. Setting it back to private immediately revokes that link.
Layout (A2UI) reference
A layout is a JSON tree of containers wrapping widgets. It's declarative data — never executable code — validated against a fixed catalog before it's stored.
Any node — container or widget — may also carry note? (1–500 chars): a short plain-text annotation viewers reveal from a small ⓘ badge on hover or keyboard focus. Charts keep their normal data tooltips.
Every widget with a source reads live values from data[source] — push updates with update_data.
// publish_dashboard
{ "dashboardId": "ops", "layout": { "title": "Ops",
"root": { "type": "grid", "columns": 2, "children": [
{ "type": "kpiCard", "title": "MRR", "source": "mrr", "unit": "USD" },
{ "type": "lineChart", "title": "Trend", "source": "trend", "xKey": "month",
"series": [{ "key": "mrr", "label": "MRR" }] }
] } } }
// then update_data
{ "dashboardId": "ops", "values": { "mrr": 48200,
"trend": [{ "month": "Jan", "mrr": 41000 }, { "month": "Feb", "mrr": 43500 }] } }One-step onboarding
Point any skill-aware agent at https://glance.watch/skill.md and it self-installs: gets a key, registers the MCP server, and learns the full tool/node/theme contract.
Ready to publish your first dashboard?
Sign in to get a key