Skip to main content

Surface reference

Every surface has key, label, type, and optional icon and description fields.

frontendPage​

{key, label, type: 'frontendPage', page}

page is a reference to frontendPages.

dataWorkspaceView​

{key, label, type: 'dataWorkspaceView', table, viewKey?}

table references dataWorkspaceTables. viewKey selects a declared view from that table.

document​

{key, label, type: 'document', document?, documentFolder?}

Provide exactly one document or document folder reference.

chat​

{
key,
label,
type: 'chat',
preset: {
workflow?,
agent?,
space?,
outputDocumentFolder?,
allowedTools?,
initialMessage?,
instructions?,
showModelSelector?,
showBrowserControls?,
showAttachments?,
expectedOutput?,
},
}

Provide exactly one of workflow or agent. A workflow chat sends through the normal AI chat and may launch the bound workflow. An agent chat sends directly to the installed agent, carries its previous session history, and receives host-trusted app scope. allowedTools may contain only workflow.launch; expectedOutput may be only document.

agent​

{key, label, type: 'agent', agent}

agent references agentDefinitions. The host renders the existing Agent definition/detail UI on this dedicated tab. The chat surface remains the standard AI chat; it only displays a small connected-agent control that links to this surface.

contentScheduler​

{key, label, type: 'contentScheduler', documentFolder?, space?}

Use the optional bindings to scope the scheduler to app-owned content.

conversations​

{
key,
label,
type: 'conversations',
inboxKey,
allowRecordMessages?,
}

inboxKey identifies an inbox within the installed app. The host scopes it to the current organization and app installation, so two app installations cannot read one another's conversations.

The app requires conversations.read. Set allowRecordMessages: true and request conversations.write to show the composer. Recording a message adds it to the shared conversation store; delivery to an external channel remains the responsibility of a channel adapter or workflow.

knowledge​

{
key,
label,
type: 'knowledge',
containerKey,
allowWrite?,
}

containerKey identifies a memory container within the installed app. The host combines it with the app installation ID, so knowledge is isolated between organizations, installations, and independently declared knowledge surfaces.

The app requires memory.read. Set allowWrite: true and request memory.write to enable adding, editing, and deleting memories. Search and test-answer retrieval are provided by the Memory package.