List Apps
Fetch available apps with optional pagination and thread context.Method
Parameters
Opaque pagination cursor from previous response
Page size (server defaults if unset)
Thread ID for feature gating (uses global config if omitted)
Bypass app caches and fetch fresh data from sources
Response
Array of app metadata
Cursor for next page (null if no more pages)
Notifications
Emitted when app sources finish loadingPayload:
{ data: AppInfo[] }App Object
Unique app identifier (connector ID)
Human-readable app name
App description
Light theme logo URL
Dark theme logo URL
Distribution channel identifier
App branding metadata
Additional app metadata
App category labels
URL to install or configure the app
Whether the user has access to this app
Whether the app is enabled in config
Example
Invoking an App
To invoke an app, include$<app-slug> in the text input and add a mention input item with the app path.
The slug is derived from the app name: lowercase with non-alphanumeric characters replaced by -.
Examples:
- “GitHub” becomes
$github - “Demo App” becomes
$demo-app
Always include the
mention input item so the server uses the exact app://<connector-id> path rather than guessing by name.App Sources
Apps are loaded from two sources:Accessible Apps
Apps the user has authorized and can accessSource: ChatGPT account integrations
Directory Apps
Public apps available in the app directorySource: ChatGPT app marketplace
app/list response merges both sources. Cache entries are only replaced when refetches succeed.
App Availability
Indicates whether the user has authorized this appfalse: User needs to install/authorize the app via
installUrltrue: App is ready to useIndicates whether the app is enabled in Codex configApps can be disabled via
config.toml even if accessible.App Configuration
Apps can be configured inconfig.toml:
Configuration Options
Enable or disable the entire app
Allow destructive operations (delete, modify)
Allow operations that affect external systems
Default approval mode for all tools
auto- Execute without askingprompt- Ask for approvalapprove- Always approve
Enable all tools by default
Next Steps
Overview
Review the API architecture
Initialization
Initialize your connection