Integrations (Composio)
Third-party OAuth connections.
8 actions. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.
integrations.list_toolkits
GET
List available integration toolkits (X/Twitter, LinkedIn, Instagram, TikTok, YouTube, Threads, Bluesky, plus productivity & developer tools). Optionally filter by category.
- AI tool:
integrations_list_toolkits - API:
GET /api/invoke/integrations.list_toolkits
Input
| Field | Type | Required | Description |
|---|---|---|---|
category |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"category": {
"type": "string"
}
}
}integrations.list_connections
GET
List the currently connected integration accounts, optionally scoped to a subject.
- AI tool:
integrations_list_connections - API:
GET /api/invoke/integrations.list_connections
Input
| Field | Type | Required | Description |
|---|---|---|---|
subjectId |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"subjectId": {
"type": "string",
"minLength": 1
}
}
}integrations.connect_init
POST · mutating
Initiate an OAuth connection for a toolkit. Returns a redirect URL the user opens to complete authorization. Pass subjectId to scope the connection to a specific subject (lets multiple X/Twitter / LinkedIn etc. accounts coexist per subject). Pass authConfigId when the toolkit requires a custom OAuth app (e.g. Twitter — you create the auth config in the Composio dashboard and pass its id here).
- AI tool:
integrations_connect_init - API:
POST /api/invoke/integrations.connect_init
Input
| Field | Type | Required | Description |
|---|---|---|---|
toolkit |
string | yes | |
subjectId |
string | — | |
label |
string | — | |
authConfigId |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"toolkit": {
"type": "string"
},
"subjectId": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string"
},
"authConfigId": {
"type": "string"
}
},
"required": [
"toolkit"
]
}integrations.create_auth_config
POST · mutating
Create a custom Composio auth config for a toolkit that doesn't support Composio-managed OAuth (Twitter/X is the most common case — you bring your own OAuth app from the platform's developer console). After this returns, call integrations.connect_init with the returned authConfigId.
- AI tool:
integrations_create_auth_config - API:
POST /api/invoke/integrations.create_auth_config
Input
| Field | Type | Required | Description |
|---|---|---|---|
toolkit |
string | yes | |
name |
string | — | |
credentials |
object | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"toolkit": {
"type": "string"
},
"name": {
"type": "string"
},
"credentials": {
"type": "object",
"properties": {
"clientId": {
"type": "string"
},
"clientSecret": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"clientId",
"clientSecret"
]
}
},
"required": [
"toolkit",
"credentials"
]
}integrations.reconnect
POST · mutating
Re-run the OAuth flow for an existing connection (e.g. expired or failed) in place — same toolkit, subject scope, and auth config. Returns a fresh redirect URL the user opens to re-authorize. Use this to refresh an expired credential without deleting it.
- AI tool:
integrations_reconnect - API:
POST /api/invoke/integrations.reconnect
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}integrations.sync_connection
POST · mutating
Finish/refresh a connection by reading its live status from Composio and updating the local row (flips Initiated → Active once the user completes the OAuth redirect). Idempotent; safe to poll.
- AI tool:
integrations_sync_connection - API:
POST /api/invoke/integrations.sync_connection
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}integrations.disconnect
POST · mutating
Remove an integration connection.
- AI tool:
integrations_disconnect - API:
POST /api/invoke/integrations.disconnect
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}integrations.update_connection
PATCH · mutating
Re-tie an existing connection to a different subject scope, or relabel it. Useful for moving a workspace-shared connection to a specific subject (or vice versa) without re-running OAuth. Pass subjectId=null to move it back to workspace scope.
- AI tool:
integrations_update_connection - API:
PATCH /api/invoke/integrations.update_connection
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
label |
string | — | |
subjectId |
union | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string"
},
"subjectId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
}
},
"required": [
"id"
]
}