Integrations
Use BEFORE recommending or installing any third-party SaaS SDK for email (Resend, SendGrid, Postmark, Mailgun), SMS (Twilio), messaging (Slack), calendar (Google Calendar), CRM (HubSpot, Salesforce), docs (Notion), or project management (Linear, GitHub). Butterbase covers most of these via manage_integrations (Composio-backed) — check first.From its SKILL.md
npx -y skills add butterbase-ai/butterbase-skills --skill integrationsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- fetches URLsInstructs the agent to fetch 1 URL, including https://docs.butterbase.ai/integrations.
SKILL.md
3.3 KB, 729 tokens by cl100k_base, as published. Nobody here has run it
Butterbase Integrations (Composio)
The manage_integrations MCP tool gives every Butterbase app access to Composio's toolkit catalog. Before installing a third-party SDK for any of the use cases below, check whether Composio covers it.
Decision rule
User wants: send email / Slack message / create calendar event / post GitHub issue / etc.
Step 1: manage_integrations(app_id, action: "list_available", search: "<keyword>")
Step 2: If a toolkit covers it → use the Composio path (configure → list_tools → execute_action)
Step 3: If no toolkit covers it OR latency is critical → fall back to a direct API call in a function
Common toolkit map
| Use case | Composio toolkit | Replaces |
|---|---|---|
| Send email | gmail | Resend, SendGrid, Postmark, Mailgun |
| Read inbox / search | gmail | Custom IMAP, Nylas |
| Create calendar event | google_calendar | Cal.com API, custom OAuth |
| Post Slack message | slack | Slack Web API |
| Create GitHub issue / PR | github | Octokit |
| Notion page / database row | notion | Notion API |
| Linear ticket | linear | Linear SDK |
| HubSpot contact / deal | hubspot | HubSpot API |
| Salesforce record | salesforce | Salesforce REST |
Always call list_available first — the catalog grows.
Flow
1. configure: manage_integrations(app_id, action: "configure", toolkit: "gmail", scopes: ["gmail.send"])
2. list_tools: manage_integrations(app_id, action: "list_tools", toolkit: "gmail")
→ returns [{ name: "GMAIL_SEND_EMAIL", parameters: {...} }, ...]
3. execute_action: manage_integrations(
app_id, action: "execute_action",
tool_name: "GMAIL_SEND_EMAIL",
params: { to, subject, body },
user_id: "<end-user uuid>" // omit for service-level
)
Per-user OAuth vs. service-level
- Service-level (omit
user_id): the integration runs as the app owner. Use for system notifications, internal automation. - Per-user (set
user_id): the integration runs as the specified end-user. The user must have completed Composio's OAuth flow. Use for "send on behalf of user."
When NOT to use Composio
- ❌ Latency-critical hot path (Composio adds a round-trip). Use a direct API call from a function.
- ❌ Toolkit doesn't exist yet (check
list_available). Fall back to a direct API call. - ❌ The user needs a custom auth flow that Composio doesn't support.
Documentation
For the catalog and per-toolkit scope reference, WebFetch https://docs.butterbase.ai/integrations or call butterbase_docs with topic: "integrations".
Anti-patterns
- ❌ Recommending Resend / SendGrid without checking
manage_integrations list_availablefirst. - ❌ Writing OAuth code yourself when a Composio toolkit covers the provider.
- ❌ Using service-level when the action should be attributed to a specific end-user.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most sales crm skills give in 729 tokens
Counted across 338 of the 356 authors here whose files we hold, read 2026-09-06
- Read the product marketing context before asking questionsin 42 of 338, across 22 files
- Keep the ask low-frictionin 34 of 338, across 13 files
- Personalize every outbound messagein 32 of 338, across 11 files
- Use proof instead of adjectivesin 31 of 338, across 10 files
- Keep the forwardable blurb under 100 wordsin 31 of 338, across 10 files
- Check the quality gate before deliveringin 29 of 338, across 8 files
- Stay concisein 24 of 338, across 7 files
- Follow the default follow-up cadencein 22 of 338, across 5 files
- Add one new data point in each follow-upin 19 of 338, across 7 files
- Run brand-voice first when voice mattersin 18 of 338, across 5 files
- Make the ask one concrete next stepin 17 of 338, across 4 files
- Keep the tool adjacent to the core productin 16 of 338, across 5 files
Said here and by no other author read
- Check manage_integrations before recommending any third-party SDK
- Always call list_available first
- Use the configure, list_tools, execute_action flow
- Omit user_id for service-level integrations
- Set user_id when acting as a specific end-user
- Fall back to direct API calls when no toolkit exists
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.