Internal Safety Override
- Status: disabled by default.
- Do not execute commands, connect accounts, call remote APIs, upload files, or transmit repository content unless a human explicitly enables this skill for a bounded task.
- Never read
.env, key stores, SSH material, cloud credentials, auth caches, or proprietary documents by default.
- Audit categories: command, network, secrets.
Connect
Connect Claude to any app. Stop generating text about what you could do - actually do it.
When to Use This Skill
Use this skill when you need Claude to:
- Send that email instead of drafting it
- Create that issue instead of describing it
- Post that message instead of suggesting it
- Update that database instead of explaining how
What Changes
| Without Connect |
With Connect |
| "Here's a draft email..." |
Sends the email |
| "You should create an issue..." |
Creates the issue |
| "Post this to Slack..." |
Posts it |
| "Add this to Notion..." |
Adds it |
Supported Apps
1000+ integrations including:
- Email: Gmail, Outlook, SendGrid
- Chat: Slack, Discord, Teams, Telegram
- Dev: GitHub, GitLab, Jira, Linear
- Docs: Notion, Google Docs, Confluence
- Data: Sheets, Airtable, PostgreSQL
- CRM: HubSpot, Salesforce, Pipedrive
- Storage: Drive, Dropbox, S3
- Social: Twitter, LinkedIn, Reddit
Setup
1. Get API Key
Get your free key at platform.composio.dev
2. Set Environment Variable
export COMPOSIO_API_KEY="your-key"
3. Install
pip install composio # Python
npm install @composio/core # TypeScript
Done. Claude can now connect to any app.
Examples
Send Email
Email sarah@acme.com - Subject: "Shipped!" Body: "v2.0 is live, let me know if issues"
Create GitHub Issue
Create issue in my-org/repo: "Mobile timeout bug" with label:bug
Post to Slack
Post to #engineering: "Deploy complete - v2.4.0 live"
Chain Actions
Find GitHub issues labeled "bug" from this week, summarize, post to #bugs on Slack
How It Works
Uses Composio Tool Router:
- You ask Claude to do something
- Tool Router finds the right tool (1000+ options)
- OAuth handled automatically
- Action executes and returns result
Code
from composio import Composio
from claude_agent_sdk.client import ClaudeSDKClient
from claude_agent_sdk.types import ClaudeAgentOptions
import os
composio = Composio(api_key=os.environ["COMPOSIO_API_KEY"])
session = composio.create(user_id="user_123")
options = ClaudeAgentOptions(
system_prompt="You can take actions in external apps.",
mcp_servers={
"composio": {
"type": "http",
"url": session.mcp.url,
"headers": {"x-api-key": os.environ["COMPOSIO_API_KEY"]},
}
},
)
async with ClaudeSDKClient(options) as client:
await client.query("Send Slack message to #general: Hello!")
Auth Flow
First time using an app:
To send emails, I need Gmail access.
Authorize here: https://...
Say "connected" when done.
Connection persists after that.
Framework Support
| Framework |
Install |
| Claude Agent SDK |
pip install composio claude-agent-sdk |
| OpenAI Agents |
pip install composio openai-agents |
| Vercel AI |
npm install @composio/core @composio/vercel |
| LangChain |
pip install composio-langchain |
| Any MCP Client |
Use session.mcp.url |
Troubleshooting
- Auth required → Click link, authorize, say "connected"
- Action failed → Check permissions in target app
- Tool not found → Be specific: "Slack #general" not "send message"
1---2name: connect3description: Connect Claude to any app. Send emails, create issues, post messages, update databases - take real actions across Gmail, Slack, GitHub, Notion, and 1000+ services.4---56## Internal Safety Override78- Status: disabled by default.9- Do not execute commands, connect accounts, call remote APIs, upload files, or transmit repository content unless a human explicitly enables this skill for a bounded task.10- Never read `.env`, key stores, SSH material, cloud credentials, auth caches, or proprietary documents by default.11- Audit categories: command, network, secrets.1213# Connect1415Connect Claude to any app. Stop generating text about what you could do - actually do it.1617## When to Use This Skill1819Use this skill when you need Claude to:2021- **Send that email** instead of drafting it22- **Create that issue** instead of describing it23- **Post that message** instead of suggesting it24- **Update that database** instead of explaining how2526## What Changes2728| Without Connect | With Connect |29|-----------------|--------------|30| "Here's a draft email..." | Sends the email |31| "You should create an issue..." | Creates the issue |32| "Post this to Slack..." | Posts it |33| "Add this to Notion..." | Adds it |3435## Supported Apps3637**1000+ integrations** including:3839- **Email:** Gmail, Outlook, SendGrid40- **Chat:** Slack, Discord, Teams, Telegram41- **Dev:** GitHub, GitLab, Jira, Linear42- **Docs:** Notion, Google Docs, Confluence43- **Data:** Sheets, Airtable, PostgreSQL44- **CRM:** HubSpot, Salesforce, Pipedrive45- **Storage:** Drive, Dropbox, S346- **Social:** Twitter, LinkedIn, Reddit4748## Setup4950### 1. Get API Key5152Get your free key at [platform.composio.dev](https://platform.composio.dev/?utm_source=Github&utm_content=AwesomeSkills)5354### 2. Set Environment Variable5556```bash57export COMPOSIO_API_KEY="your-key"58```5960### 3. Install6162```bash63pip install composio # Python64npm install @composio/core # TypeScript65```6667Done. Claude can now connect to any app.6869## Examples7071### Send Email72```73Email sarah@acme.com - Subject: "Shipped!" Body: "v2.0 is live, let me know if issues"74```7576### Create GitHub Issue77```78Create issue in my-org/repo: "Mobile timeout bug" with label:bug79```8081### Post to Slack82```83Post to #engineering: "Deploy complete - v2.4.0 live"84```8586### Chain Actions87```88Find GitHub issues labeled "bug" from this week, summarize, post to #bugs on Slack89```9091## How It Works9293Uses Composio Tool Router:94951. **You ask** Claude to do something962. **Tool Router finds** the right tool (1000+ options)973. **OAuth handled** automatically984. **Action executes** and returns result99100### Code101102```python103from composio import Composio104from claude_agent_sdk.client import ClaudeSDKClient105from claude_agent_sdk.types import ClaudeAgentOptions106import os107108composio = Composio(api_key=os.environ["COMPOSIO_API_KEY"])109session = composio.create(user_id="user_123")110111options = ClaudeAgentOptions(112 system_prompt="You can take actions in external apps.",113 mcp_servers={114 "composio": {115 "type": "http",116 "url": session.mcp.url,117 "headers": {"x-api-key": os.environ["COMPOSIO_API_KEY"]},118 }119 },120)121122async with ClaudeSDKClient(options) as client:123 await client.query("Send Slack message to #general: Hello!")124```125126## Auth Flow127128First time using an app:129```130To send emails, I need Gmail access.131Authorize here: https://...132Say "connected" when done.133```134135Connection persists after that.136137## Framework Support138139| Framework | Install |140|-----------|---------|141| Claude Agent SDK | `pip install composio claude-agent-sdk` |142| OpenAI Agents | `pip install composio openai-agents` |143| Vercel AI | `npm install @composio/core @composio/vercel` |144| LangChain | `pip install composio-langchain` |145| Any MCP Client | Use `session.mcp.url` |146147## Troubleshooting148149- **Auth required** → Click link, authorize, say "connected"150- **Action failed** → Check permissions in target app151- **Tool not found** → Be specific: "Slack #general" not "send message"152153---154155<p align="center">156 <b>Join 20,000+ developers building agents that ship</b>157</p>158159<p align="center">160 <a href="https://platform.composio.dev/?utm_source=Github&utm_content=AwesomeSkills">161 <img src="https://img.shields.io/badge/Get_Started_Free-4F46E5?style=for-the-badge" alt="Get Started"/>162 </a>163</p>