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
- Get API Key
Get your free key at platform.composio.dev
- Set Environment Variable
export COMPOSIO_API_KEY="your-key"
- 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"