`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

```text
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:

```json
{ "name": "apps", "arguments": {} }
```

```json
{ "name": "apps", "arguments": { "provider": "notion" } }
```

## Return shape

The result contains only the agent-safe workspace projection:

```json
{
  "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`: call `apps({})` and use one returned slug.
- Blank `provider`: omit it to list all apps.
- Extra input fields: call `apps({})` or `apps({ provider: "notion" })` only.

`apps` is read-only and free. App capabilities remain catalog data: use [discover](https://scrollport.com/docs/control-tools/discover), then [inspect](https://scrollport.com/docs/control-tools/inspect), before [run](https://scrollport.com/docs/control-tools/run).