Merge pull request #692 from rowboatlabs/feat/composio-curated-toolkits

feat(x): expand curated Composio toolkits and fix broken Microsoft slugs
This commit is contained in:
arkml 2026-07-08 00:51:45 +05:30 committed by GitHub
commit 4c4488c3e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 89 additions and 7 deletions

View file

@ -22,30 +22,71 @@ export const skill = String.raw`
| Google Calendar | \`googlecalendar\` |
| Google Sheets | \`googlesheets\` |
| Google Docs | \`googledocs\` |
| Google Slides | \`googleslides\` |
| Google Drive | \`googledrive\` |
| Google Tasks | \`googletasks\` |
| Google Meet | \`googlemeet\` |
| Google Photos | \`googlephotos\` |
| Google Maps | \`google_maps\` |
| Google Analytics | \`google_analytics\` |
| Google Search Console | \`google_search_console\` |
| Google Ads | \`googleads\` |
| Google BigQuery | \`googlebigquery\` |
| Slack | \`slack\` |
| Discord | \`discord\` |
| GitHub | \`github\` |
| GitLab | \`gitlab\` |
| Bitbucket | \`bitbucket\` |
| Notion | \`notion\` |
| Linear | \`linear\` |
| Jira | \`jira\` |
| Confluence | \`confluence\` |
| Asana | \`asana\` |
| Trello | \`trello\` |
| ClickUp | \`clickup\` |
| monday.com | \`monday\` |
| Wrike | \`wrike\` |
| Basecamp | \`basecamp\` |
| Todoist | \`todoist\` |
| Productboard | \`productboard\` |
| Miro | \`miro\` |
| Figma | \`figma\` |
| Canva | \`canva\` |
| HubSpot | \`hubspot\` |
| Salesforce | \`salesforce\` |
| Attio | \`attio\` |
| LinkedIn | \`linkedin\` |
| X (Twitter) | \`twitter\` |
| Reddit | \`reddit\` |
| Reddit Ads | \`reddit_ads\` |
| Facebook | \`facebook\` |
| Instagram | \`instagram\` |
| YouTube | \`youtube\` |
| WhatsApp | \`whatsapp\` |
| Dropbox | \`dropbox\` |
| OneDrive | \`onedrive\` |
| Microsoft Outlook | \`microsoft_outlook\` |
| Box | \`box\` |
| OneDrive | \`one_drive\` |
| SharePoint | \`share_point\` |
| Microsoft Outlook | \`outlook\` |
| Microsoft Teams | \`microsoft_teams\` |
| Microsoft Excel | \`excel\` |
| Calendly | \`calendly\` |
| Cal.com | \`cal\` |
| Zoom | \`zoom\` |
| Intercom | \`intercom\` |
| Zendesk | \`zendesk\` |
| Airtable | \`airtable\` |
| Mailchimp | \`mailchimp\` |
| Typeform | \`typeform\` |
| Eventbrite | \`eventbrite\` |
| Stripe | \`stripe\` |
| Square | \`square\` |
| QuickBooks | \`quickbooks\` |
| Supabase | \`supabase\` |
| Sentry | \`sentry\` |
| PagerDuty | \`pagerduty\` |
**IMPORTANT:** Always use these exact slugs. Do NOT guess e.g., Google Sheets is \`googlesheets\` (no underscore), not \`google_sheets\`.
**IMPORTANT:** Always use these exact slugs. Do NOT guess e.g., Google Sheets is \`googlesheets\` (no underscore), not \`google_sheets\`, while OneDrive IS \`one_drive\` (with underscore) and Microsoft Outlook is just \`outlook\`.
## Critical: Check First, Connect Second

View file

@ -1546,7 +1546,7 @@ export const BuiltinTools: z.infer<typeof BuiltinToolsSchema> = {
'composio-list-toolkits': {
description: 'List available Composio integrations (Gmail, Slack, GitHub, etc.) and their connection status. Use this to show the user what services they can connect to.',
inputSchema: z.object({
category: z.enum(['all', 'communication', 'productivity', 'development', 'crm', 'social', 'storage', 'support']).optional()
category: z.enum(['all', 'communication', 'productivity', 'development', 'crm', 'social', 'storage', 'support', 'design', 'marketing', 'finance']).optional()
.describe('Filter by category. Defaults to "all".'),
}),
execute: async ({ category }: { category?: string }) => {

View file

@ -32,7 +32,7 @@ export const ZListToolkitsResponse = z.object({
* Sorted by slug (ASC) for maintainability.
*/
export type ToolkitCategory = 'communication' | 'productivity' | 'development' | 'crm' | 'social' | 'storage' | 'support';
export type ToolkitCategory = 'communication' | 'productivity' | 'development' | 'crm' | 'social' | 'storage' | 'support' | 'design' | 'marketing' | 'finance';
export interface CuratedToolkit {
slug: string;
@ -43,30 +43,71 @@ export interface CuratedToolkit {
export const CURATED_TOOLKITS: CuratedToolkit[] = [
{ slug: 'airtable', displayName: 'Airtable', category: 'productivity' },
{ slug: 'asana', displayName: 'Asana', category: 'productivity' },
{ slug: 'attio', displayName: 'Attio', category: 'crm' },
{ slug: 'basecamp', displayName: 'Basecamp', category: 'productivity' },
{ slug: 'bitbucket', displayName: 'Bitbucket', category: 'development' },
{ slug: 'box', displayName: 'Box', category: 'storage' },
{ slug: 'cal', displayName: 'Cal.com', category: 'productivity' },
{ slug: 'calendly', displayName: 'Calendly', category: 'productivity' },
{ slug: 'canva', displayName: 'Canva', category: 'design' },
{ slug: 'clickup', displayName: 'ClickUp', category: 'productivity' },
{ slug: 'confluence', displayName: 'Confluence', category: 'productivity' },
{ slug: 'discord', displayName: 'Discord', category: 'communication' },
{ slug: 'dropbox', displayName: 'Dropbox', category: 'storage' },
{ slug: 'eventbrite', displayName: 'Eventbrite', category: 'marketing' },
{ slug: 'excel', displayName: 'Microsoft Excel', category: 'productivity' },
{ slug: 'facebook', displayName: 'Facebook', category: 'social' },
{ slug: 'figma', displayName: 'Figma', category: 'design' },
{ slug: 'github', displayName: 'GitHub', category: 'development' },
{ slug: 'gitlab', displayName: 'GitLab', category: 'development' },
{ slug: 'gmail', displayName: 'Gmail', category: 'communication' },
{ slug: 'google_analytics', displayName: 'Google Analytics', category: 'marketing' },
{ slug: 'google_maps', displayName: 'Google Maps', category: 'productivity' },
{ slug: 'google_search_console', displayName: 'Google Search Console', category: 'marketing' },
{ slug: 'googleads', displayName: 'Google Ads', category: 'marketing' },
{ slug: 'googlebigquery', displayName: 'Google BigQuery', category: 'development' },
{ slug: 'googlecalendar', displayName: 'Google Calendar', category: 'productivity' },
{ slug: 'googledocs', displayName: 'Google Docs', category: 'productivity' },
{ slug: 'googledrive', displayName: 'Google Drive', category: 'storage' },
{ slug: 'googlemeet', displayName: 'Google Meet', category: 'communication' },
{ slug: 'googlephotos', displayName: 'Google Photos', category: 'storage' },
{ slug: 'googlesheets', displayName: 'Google Sheets', category: 'productivity' },
{ slug: 'googleslides', displayName: 'Google Slides', category: 'productivity' },
{ slug: 'googletasks', displayName: 'Google Tasks', category: 'productivity' },
{ slug: 'hubspot', displayName: 'HubSpot', category: 'crm' },
{ slug: 'instagram', displayName: 'Instagram', category: 'social' },
{ slug: 'intercom', displayName: 'Intercom', category: 'support' },
{ slug: 'jira', displayName: 'Jira', category: 'development' },
{ slug: 'linear', displayName: 'Linear', category: 'development' },
{ slug: 'linkedin', displayName: 'LinkedIn', category: 'social' },
{ slug: 'microsoft_outlook', displayName: 'Microsoft Outlook', category: 'communication' },
{ slug: 'mailchimp', displayName: 'Mailchimp', category: 'marketing' },
{ slug: 'microsoft_teams', displayName: 'Microsoft Teams', category: 'communication' },
{ slug: 'miro', displayName: 'Miro', category: 'productivity' },
{ slug: 'monday', displayName: 'monday.com', category: 'productivity' },
{ slug: 'notion', displayName: 'Notion', category: 'productivity' },
{ slug: 'onedrive', displayName: 'OneDrive', category: 'storage' },
{ slug: 'one_drive', displayName: 'OneDrive', category: 'storage' },
{ slug: 'outlook', displayName: 'Microsoft Outlook', category: 'communication' },
{ slug: 'pagerduty', displayName: 'PagerDuty', category: 'development' },
{ slug: 'productboard', displayName: 'Productboard', category: 'productivity' },
{ slug: 'quickbooks', displayName: 'QuickBooks', category: 'finance' },
{ slug: 'reddit', displayName: 'Reddit', category: 'social' },
{ slug: 'reddit_ads', displayName: 'Reddit Ads', category: 'marketing' },
{ slug: 'salesforce', displayName: 'Salesforce', category: 'crm' },
{ slug: 'sentry', displayName: 'Sentry', category: 'development' },
{ slug: 'share_point', displayName: 'SharePoint', category: 'storage' },
{ slug: 'slack', displayName: 'Slack', category: 'communication' },
{ slug: 'square', displayName: 'Square', category: 'finance' },
{ slug: 'stripe', displayName: 'Stripe', category: 'finance' },
{ slug: 'supabase', displayName: 'Supabase', category: 'development' },
{ slug: 'todoist', displayName: 'Todoist', category: 'productivity' },
{ slug: 'trello', displayName: 'Trello', category: 'productivity' },
{ slug: 'twitter', displayName: 'X', category: 'social' },
{ slug: 'typeform', displayName: 'Typeform', category: 'productivity' },
{ slug: 'whatsapp', displayName: 'WhatsApp', category: 'communication' },
{ slug: 'wrike', displayName: 'Wrike', category: 'productivity' },
{ slug: 'youtube', displayName: 'YouTube', category: 'social' },
{ slug: 'zendesk', displayName: 'Zendesk', category: 'support' },
{ slug: 'zoom', displayName: 'Zoom', category: 'communication' },
];
/** Slug → display-name lookup. */