apps is the read-only connected-app inventory. Use it before a workflow that depends on Gmail, Google Drive, Notion, Linear or another account the human controls.
Signature
apps({ provider? })Input fields:
| Field | Type | Required | Meaning |
|---|---|---|---|
provider | string | no | One exact app slug, such as notion. Omit it to list every app available to this workspace. |
Example requests:
{ "name": "apps", "arguments": {} }{ "name": "apps", "arguments": { "provider": "notion" } }Return shape
The result contains only the agent-safe workspace projection:
{
"count": 1,
"apps": [
{
"provider": "notion",
"name": "Notion",
"connected": false,
"capability_count": 4,
"live_capability_count": 3,
"connect_url": "https://scrollport.com/connect/notion"
}
],
"next_step": "Only the human can open connect_url and approve access. After they finish, call apps again to confirm the connection."
}connect_url appears only while an app is disconnected. A connected result omits it. If no apps are available, the response says to continue with ready-to-run catalog tools. If every requested app is connected, continue to discover for the outcome you want.
Human approval and privacy boundary
apps never starts OAuth, creates or polls a connection session, disconnects an app, or exposes an external account identity, connection id, credential or provider token. The human must open connect_url, sign in if needed and approve access on Scrollport. Call apps again only after the human says the flow is complete.
The inventory follows the same publication and workspace allowlist rules as the connected-apps dashboard. A shared connection profile does not make one workspace's hidden app visible to another workspace.
Common errors
- Unknown
provider: callapps({})and use one returned slug. - Blank
provider: omit it to list all apps. - Extra input fields: call
apps({})orapps({ provider: "notion" })only.
apps is read-only and free. App capabilities remain catalog data: use discover, then inspect, before run.