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"
  ]
}