Files
composio-skills-reference/composio-sdk/rules/app-toolkits.md
sohamganatra b8b711dff6 Add Composio SDK skill with rules and agent config
Adds composio-sdk/ with SKILL.md, AGENTS.md, and 18 rule files
covering Tool Router, direct execution, triggers, and auth patterns.

Source: composiohq/skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 22:54:21 -08:00

5.0 KiB

title, impact, description, tags
title impact description tags
Toolkit Management MEDIUM Discover and query toolkits, categories, and authentication requirements for application integration
toolkits
discovery
metadata
categories
apps

Toolkit Management

Toolkits are collections of related tools (GitHub, Gmail, Slack). Use the toolkits API to discover and query toolkit metadata.

Important: toolkits.get() returns an array, not an object with .items. Access directly: toolkits[0], toolkits.length, etc.

Get Toolkit Metadata

// Get specific toolkit
const github = await composio.toolkits.get('github');
console.log(github.name); // GitHub
console.log(github.authConfigDetails); // Auth details
console.log(github.meta.toolsCount); // Number of tools
console.log(github.meta.triggersCount); // Number of triggers

// Get all toolkits
const all = await composio.toolkits.get();
console.log(all.length); // Number of toolkits

Toolkit properties:

  • name, slug - Display name and identifier
  • meta - toolsCount, triggersCount, createdAt, updatedAt
  • authConfigDetails - Available auth schemes and required fields
  • composioManagedAuthSchemes - Composio-managed auth
  • baseUrl - API base URL
  • getCurrentUserEndpoint - User info endpoint

Query Parameters

All available filters for toolkits.get():

const toolkits = await composio.toolkits.get({
  category: 'developer-tools',           // Filter by category ID
  managedBy: 'composio',                // 'all' | 'composio' | 'project'
  sortBy: 'usage',                      // 'usage' | 'alphabetically'
  limit: 10,                            // Results per page
  cursor: 'next_page_cursor',           // Pagination
});

Examples

// Composio-managed only
const composio = await composio.toolkits.get({ managedBy: 'composio' });

// By category
const devTools = await composio.toolkits.get({ category: 'developer-tools' });

// Popular toolkits
const popular = await composio.toolkits.get({ sortBy: 'usage', limit: 10 });

// Paginated
const page1 = await composio.toolkits.get({ limit: 10 });
const page2 = await composio.toolkits.get({ limit: 10, cursor: page1Cursor });

List Categories

const categories = await composio.toolkits.listCategories();
console.log(categories.items);
// [
//   { id: 'developer-tools', name: 'Developer Tools' },
//   { id: 'communication', name: 'Communication' },
//   { id: 'productivity', name: 'Productivity' },
// ]

Auth Requirements

Get Auth Config Creation Fields

Find fields needed to create custom auth config:

// All fields for GitHub OAuth2
const fields = await composio.toolkits.getAuthConfigCreationFields(
  'github',
  'OAUTH2'
);

// Only required fields
const required = await composio.toolkits.getAuthConfigCreationFields(
  'github',
  'OAUTH2',
  { requiredOnly: true }
);

console.log(fields);
// [
//   { name: 'client_id', displayName: 'Client ID', type: 'string', required: true },
//   { name: 'client_secret', displayName: 'Client Secret', type: 'string', required: true },
//   { name: 'scopes', displayName: 'Scopes', type: 'string', default: 'repo,user', required: false }
// ]

Get Connected Account Initiation Fields

Find fields needed when calling initiate() with custom auth:

const fields = await composio.toolkits.getConnectedAccountInitiationFields(
  'zendesk',
  'OAUTH2'
);

// Only required fields
const required = await composio.toolkits.getConnectedAccountInitiationFields(
  'zendesk',
  'OAUTH2',
  { requiredOnly: true }
);

console.log(fields);
// [
//   { name: 'subdomain', displayName: 'Subdomain', type: 'string', required: true }
// ]

Use case: Some services (Zendesk, PostHog) require extra parameters during OAuth. These fields tell you what's needed.

Common Patterns

Build Toolkit Selection UI

const toolkits = await composio.toolkits.get({
  sortBy: 'alphabetically'
});

const toolkitOptions = toolkits.map(tk => ({
  value: tk.slug,
  label: tk.name,
  toolCount: tk.meta.toolsCount,
  authSchemes: tk.composioManagedAuthSchemes,
}));

Check If OAuth Requires Extra Fields

async function needsExtraParams(toolkit: string, authScheme: string) {
  const fields = await composio.toolkits.getConnectedAccountInitiationFields(
    toolkit,
    authScheme
  );
  return fields.length > 0;
}

// Usage
if (await needsExtraParams('zendesk', 'OAUTH2')) {
  // Show form to collect subdomain
}

Filter Toolkits by Category

async function getToolkitsByCategory(categoryId: string) {
  return await composio.toolkits.get({
    category: categoryId,
    sortBy: 'usage',
  });
}

Key Points

  • Returns array - Not .items, access directly
  • managedBy filter - 'all', 'composio', or 'project'
  • sortBy options - 'usage' or 'alphabetically'
  • Auth field queries - Know what's required before creating configs
  • Extra OAuth params - Some services need subdomain, region, etc.