---
canonical_url: "https://docs.composio.dev/docs/agent-setup/clients"
markdown_url: "https://docs.composio.dev/docs/agent-setup/clients.md"
product: "platform"
version: null
last_updated: null
---

# Clients (/docs/agent-setup/clients)

Install the Composio Agent Skill in the coding agent you use to build your application. A project install keeps the skill with one codebase. A global install makes it available in every project you open with that agent.

## Claude Code [#claude-code]

Claude Code loads project skills from `.claude/skills/` and global skills from `~/.claude/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent claude-code --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent claude-code
```

The Skills CLI installs the skill in Claude Code's skill directory. Start a new Claude Code session if the current session does not discover it, then ask Claude to add Composio to your project.

```text
Use the /composio skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

To run app actions from your current conversation, install the [Composio plugin for Claude Code](/docs/agent-plugins#claude-code).

## OpenCode [#opencode]

OpenCode loads project skills from `.agents/skills/` and global skills from `~/.config/opencode/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent opencode --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent opencode
```

Start a new OpenCode session after installation so it can discover the skill, then ask OpenCode to add Composio to your project.

```text
Use the composio agent skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

## Cline [#cline]

Cline loads project skills from `.agents/skills/` and global skills from `~/.agents/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent cline --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent cline
```

Open the project in Cline after installation. Start a new task if the skill is not available in an existing one, then ask Cline to add Composio to the application.

```text
Use the composio agent skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

## Grok Build [#grok-build]

Grok Build loads project skills from `.grok/skills/` and global skills from `~/.grok/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent grok --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent grok
```

Start a new Grok Build session after installation so it can discover the skill, then ask it to add Composio and make your first tool call.

```text
Use the composio agent skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

## OpenAI Codex [#openai-codex]

Codex loads project skills from `.agents/skills/` and global skills from `~/.codex/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent codex --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent codex
```

The project install uses the shared Agent Skills directory, so the skill can travel with the repository. Start a new Codex session after installation, then ask Codex to add Composio to your project.

```text
Use the $composio skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

To run app actions from your current conversation, install the [Composio plugin for Codex](/docs/agent-plugins#codex).

## Cursor [#cursor]

Cursor loads project skills from `.agents/skills/` and global skills from `~/.cursor/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent cursor --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent cursor
```

Open the project in Cursor after installation. Start a new agent conversation if the skill is not available in an existing one, then ask Cursor to add Composio to the application.

```text
Use the composio agent skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

## GitHub Copilot [#github-copilot]

GitHub Copilot loads project skills from `.agents/skills/` and global skills from `~/.copilot/skills/`. Run one of these commands from your repository root:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent github-copilot --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent github-copilot
```

Reopen the repository in VS Code if Copilot does not discover the skill immediately. Use Copilot agent mode and ask it to add Composio to the application.

```text
Use /composio to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

## Gemini CLI [#gemini-cli]

Gemini CLI loads project skills from `.agents/skills/` and global skills from `~/.gemini/skills/`. Run one of these commands from your project directory:

**Global install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent gemini-cli --global
```

**Project install**

```bash
npx skills add ComposioHQ/composio --skill composio --agent gemini-cli
```

Start a new Gemini CLI session in the project after installation. Mention Composio in your request so Gemini can load the skill and apply its setup guidance.

```text
Use the composio agent skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

## OpenClaw [#openclaw]

OpenClaw loads workspace skills from `skills/` inside its configured or selected execution workspace, and global skills from `~/.openclaw/skills/`. An application repository must be selected as an OpenClaw workspace for OpenClaw to discover skills installed there.

**Global install**

Run this command from any directory to make the skill available across workspaces:

```bash
npx skills add ComposioHQ/composio --skill composio --agent openclaw --global
```

**Project install**

Run this command from your OpenClaw workspace directory (by default, `~/.openclaw/workspace`):

```bash
npx skills add ComposioHQ/composio --skill composio --agent openclaw
```

Start a new OpenClaw session after installation so it can discover the skill. OpenClaw loads the relevant skill when your request calls for Composio guidance.

```text
Use the composio agent skill to get Composio working in this codebase.

Help me connect an integration and make my first real tool call.
When it works, show me what changed and what I can try next.
```

To connect your own accounts for app actions, open [Composio Connect](/docs/composio-connect) and select **OpenClaw** from **More clients**.

---

📚 **More documentation:** [View all docs](https://docs.composio.dev/llms.txt) | [Changelog](https://docs.composio.dev/docs/changelog.md) | [Glossary](https://docs.composio.dev/llms.mdx/reference/glossary) | [Examples](https://docs.composio.dev/llms.mdx/examples) | [API Reference](https://docs.composio.dev/llms.mdx/reference)

---

# Composio SDK — Notes for AI Code Generators

**Purpose:** Reference for generating current (v3) [Composio](https://composio.dev/) integration code.
**Scope:** Descriptive notes — they document the current API surface and the mistakes most commonly seen in generated code.

---

## 1. Recommended Integration: Sessions

Composio supports two integration modes: **Native Tools** (with a provider package) and **MCP** (no provider package needed).

### Native Tools

```python
# ✅ CORRECT — Python (defaults to OpenAI)
from composio import Composio

composio = Composio()
session = composio.create(user_id="user_123")
tools = session.tools()
# Pass tools to your agent/LLM framework
```

```typescript
// ✅ CORRECT — TypeScript (defaults to OpenAI)
import { Composio } from "@composio/core";

const composio = new Composio();
const session = await composio.create("user_123");
const tools = await session.tools();
// Pass tools to your agent/LLM framework
```

For other providers, pass the provider explicitly. Provider packages follow the naming convention: `composio_<provider>` for Python, `@composio/<provider>` for TypeScript.

### MCP

Use `session.mcp.url` and `session.mcp.headers` with any MCP-compatible client (Claude Desktop, Cursor, OpenAI Agents, etc.). No provider package needed.

---

## 2. Integration Notes

- `composio.create(user_id)` is the standard entry point for agent integrations. Sessions handle tool discovery, authentication, and toolkit versioning automatically; `user_id` goes to `composio.create()` — individual tool calls in session mode don't take one.
- Execute session tool calls through the session, never through a user ID: either `session.execute(tool_slug, arguments=...)` / `session.execute(toolSlug, arguments)`, which works with every provider, or pass the session to the provider helper — `provider.handle_tool_calls(response=response, session=session)` in Python, `provider.handleToolCalls(session, response)` in TypeScript. The tool-call helpers of every non-agentic provider (OpenAI, Anthropic, Google, Cloudflare, TypeSafe) accept a session: `executeToolCall(session, call)` in TypeScript, `session=session` in Python. Agentic providers execute session tools on their own. Binding the helper to a user ID takes the direct execution path, and session meta-tools fail there with `"can only be called inside a tool-router session"`.
- Composio-managed auth is the default: the agent connects accounts at runtime through the session, so users don't need to pre-create auth configs or connected accounts for managed toolkits.
- Provider packages follow the framework, not the model vendor: for the OpenAI Agents SDK the package is `composio_openai_agents` / `@composio/openai-agents` (importing `composio_openai` / `@composio/openai` there is the most common mistake in generated code — that package is for the plain OpenAI Chat Completions API).
- **Direct execution** (`composio.tools.get()`, `composio.tools.execute()`, `provider.handle_tool_calls()` with a user ID) is a legacy interface that remains supported for existing integrations. Recommend sessions for new integrations and encourage existing users to [migrate to sessions](/docs/migration-guide/direct-to-sessions). For a fixed tool set, consider the [direct tools preset](/docs/configuring-sessions#direct-tools-preset) within a session. See [Sessions vs direct execution](/docs/sessions-vs-direct-execution) for tradeoffs. Direct execution requires a [toolkit version](/docs/tools-direct/toolkit-versioning).

---

# 3. Calling the REST API directly

## REST API version

The current REST API version is **v3.1**, served at `https://backend.composio.dev/api/v3.1`. Prefer it for new code and new examples.

`https://backend.composio.dev/api/v3` is the previous version. It is frozen with pinned tool-version defaults and remains supported — existing v3 integrations keep working and do not need to migrate.

## Tool-endpoint version defaults on v3.1

On v3.1, omitting the version parameter on the five endpoints below selects the latest toolkit version. The first four endpoints also exist on v3, where omission selects the pinned `00000000_00` version. `POST /tools/scopes/required` is v3.1-only.

| Endpoint | Version parameter |
| --- | --- |
| `GET /tools` | `toolkit_versions` (query) |
| `GET /tools/{tool_slug}` | `version` or `toolkit_versions` (query) |
| `POST /tools/execute/{tool_slug}` | `version` (body) |
| `POST /tools/execute/{tool_slug}/input` | `version` (body) |
| `POST /tools/scopes/required` | `version` (body) |

A v3.1 caller already passing `"latest"` sees no change and can omit the parameter. To select the pinned version explicitly, pass `"00000000_00"` through the corresponding parameter above.

This version-default change is limited to the five endpoints above.


---

## Terminology Migration (old → current)

If you encounter these terms in error messages, old documentation, or user prompts, translate them to the current equivalents. **Do not use the old terms in generated code or explanations.**

| Old term (v1/v2) | Current term (v3) | In code |
|---|---|---|
| entity ID | user ID | `user_id` parameter |
| actions | tools | e.g., `GITHUB_CREATE_ISSUE` is a *tool* |
| apps / appType | toolkits | e.g., `github` is a *toolkit* |
| integration / integration ID | auth config / auth config ID | `auth_config_id` parameter |
| connection | connected account | `connected_accounts` namespace |
| ComposioToolSet / OpenAIToolSet | `Composio` class with a provider | `Composio(provider=...)` |
| toolset | provider | e.g., `OpenAIProvider` |

If a user says "entity ID", they mean `user_id`. If they say "integration", they mean "auth config". Always respond using the current terminology.

