Composio

Elixir client for the Composio API — tool and action integrations for AI agents.

Installation

def deps do
  [
    {:composio, "~> 0.1.0"}
  ]
end

Quick Start

# Create a client
client = Composio.client(api_key: "your-api-key")

# List available toolkits
{:ok, %{"items" => toolkits}} = Composio.Toolkits.list(client)

# List tools for a specific search
{:ok, %{"items" => tools}} = Composio.Tools.list(client, search: "github star")

# Execute a tool for a specific user
{:ok, result} = Composio.Tools.execute(client, "GITHUB_STAR_REPO",
  %{"owner" => "composiohq", "repo" => "composio"},
  user_id: "user-123"
)

Multi-User Support

The client is designed for multi-tenant applications. Create one client per API key and pass user_id to individual operations:

client = Composio.client(api_key: "your-key")

# Each user has their own connected accounts
{:ok, accounts} = Composio.ConnectedAccounts.list(client, user_id: "user-123")

# Execute tools on behalf of specific users
{:ok, result} = Composio.Tools.execute(client, "GMAIL_SEND_EMAIL",
  %{"to" => "bob@example.com", "subject" => "Hello"},
  user_id: "user-456"
)

Connection Pooling

The library starts an HTTP/2 connection pool to backend.composio.dev automatically. HTTP/2 multiplexing allows many concurrent requests over a single connection.

Configure the pool in your application config:

config :composio, :pool,
  count: 1,               # HTTP/2 connections (each handles ~256 concurrent requests)
  connect_timeout: 5_000   # TCP connect timeout in ms

Modules

Module Description
Composio.Client Client struct and constructor
Composio.Toolkits List and inspect available service integrations
Composio.Tools List tool schemas, execute tools, proxy requests
Composio.AuthConfigs Manage authentication configurations
Composio.ConnectedAccounts Manage per-user authenticated connections
Composio.TriggerTypes Browse available event trigger types
Composio.TriggerInstances Manage active trigger subscriptions
Composio.WebhookSubscriptions Manage webhook endpoints
Composio.WebhookPlug Plug for webhook signature verification

License

MIT