Views v1
- URI:
https://standards.upperhandai.com/ext/views/v1 - Kind: declarative-only AgentCard extension (no runtime negotiation)
- Status: Current
- Since: 2026-08-18
Purpose
An agent often hosts standing web surfaces beyond chat — dashboards, report pages, download indexes — served from its own origin, under its own auth. This extension lets the agent declare those surfaces on its AgentCard so a workbench can surface them (typically in navigation) without any per-agent configuration.
The workbench's sidebar is a projection of what enabled, entitlement- visible agents currently declare. Registration is nothing more than declaration: an agent adds a view by editing its own card, and every consuming workbench picks it up on its next card read.
Declaration
The extension appears in the AgentCard's capabilities.extensions[]:
{
"uri": "https://standards.upperhandai.com/ext/views/v1",
"required": false,
"description": "Standing web surfaces this agent hosts.",
"params": {
"views": [
{
"id": "waves",
"name": "Wave Tracker",
"url": "https://versant-agent.thefocus.ai/waves",
"kind": "page",
"description": "All-brand KPI table by survey wave"
},
{
"id": "quarters",
"name": "Quarterly Workbooks",
"url": "https://versant-agent.thefocus.ai/quarters",
"kind": "downloads"
}
]
}
}
params schema
{
"type": "object",
"required": ["views"],
"properties": {
"views": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "name", "url", "kind"],
"properties": {
"id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
"name": { "type": "string", "maxLength": 60 },
"url": { "type": "string", "format": "uri" },
"kind": { "enum": ["page", "downloads"] },
"description": { "type": "string", "maxLength": 200 }
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
id— stable within the agent; consumers key favorites and preferences on(agent, id). Renamingnameis free; changingidorphans user state.url— absolute HTTPS URL on an origin the agent controls. The page is served and authenticated by the agent, not the workbench.kind—pageis an interactive surface opened as a deep link;downloadsis an index of downloadable artifacts. Future kinds (e.g. an embeddable variant) will be added as optional enum values without a version bump; consumers MUST ignore entries whosekindthey do not recognize.
Consumer requirements
A workbench consuming this extension:
- MUST treat the card as the source of truth, re-reading it at call time (a cache TTL at or below the card's own HTTP cache headers is acceptable). Admin-side overrides may hide a declared view but never invent one.
- MUST scope visibility to users entitled to the agent itself.
- MUST NOT proxy or re-serve the view's content; the link resolves on the agent's origin under the agent's auth.
- MUST ignore the extension entirely when absent — agents without it are fully functional peers.
Conformance (probed)
paramsvalidates against the schema above.- Every declared
urlresponds to an authenticated GET without a 5xx. idvalues are unique within the declaration.