Tools and toolkits

View as markdown

Tool Router gives your agent access to most Composio toolkits by default. For details on configuring which toolkits are available in a session, see Users and sessions.

Toolkits and tools

A toolkit is a collection of related tools for a service and a tool is an individual action your agent can execute.

ToolkitTools
githubGITHUB_CREATE_A_COMMIT, GITHUB_ACTIVITY_LIST_STARGAZERS_FOR_REPO, GITHUB_SEARCH_REPO_S, ...
gmailGMAIL_SEND_EMAIL, GMAIL_FETCH_EMAILS, GMAIL_CREATE_EMAIL_DRAFT, ...
linearLINEAR_CREATE_LINEAR_ISSUE, LINEAR_UPDATE_ISSUE, LINEAR_CREATE_LINEAR_LABEL, ...

Available toolkits

Browse all available toolkits in the Composio platform under "All Toolkits". Each toolkit page shows its tools (with input and output parameters) and authentication methods supported for that toolkit.

You can also list toolkits programmatically:

# Returns top 20 toolkits by default
toolkits = composio.toolkits.get()

for toolkit in toolkits:
    print(toolkit.name)
// Returns top 20 toolkits by default
const 
const toolkits: {
    slug: string;
    name: string;
    meta: {
        description?: string | undefined;
        logo?: string | undefined;
        availableVersions?: string[] | undefined;
        createdAt?: string | undefined;
        updatedAt?: string | undefined;
        categories?: {
            slug: string;
            name: string;
        }[] | undefined;
        appUrl?: string | undefined;
        toolsCount?: number | undefined;
        triggersCount?: number | undefined;
    };
    isLocalToolkit: boolean;
    authSchemes?: string[] | undefined;
    composioManagedAuthSchemes?: string[] | undefined;
    noAuth?: boolean | undefined;
}[]
toolkits
= await const composio: Composio<OpenAIProvider>composio.Composio<OpenAIProvider>.toolkits: Toolkits
Retrieve toolkit metadata and authorize user connections
toolkits
.Toolkits.get(query?: ToolkitListParams): Promise<ToolKitListResponse> (+1 overload)
Retrieves a list of toolkits based on the provided query parameters.
@paramquery - The query parameters to filter toolkits@returnsA paginated list of toolkits matching the query criteria@example```typescript // Get all toolkits const allToolkits = await composio.toolkits.get({}); // Get toolkits by category const devToolkits = await composio.toolkits.get({ category: 'developer-tools' }); // Get local toolkits const localToolkits = await composio.toolkits.get({ isLocal: true }); ```
get
();
for (const
const toolkit: {
    slug: string;
    name: string;
    meta: {
        description?: string | undefined;
        logo?: string | undefined;
        availableVersions?: string[] | undefined;
        createdAt?: string | undefined;
        updatedAt?: string | undefined;
        categories?: {
            slug: string;
            name: string;
        }[] | undefined;
        appUrl?: string | undefined;
        toolsCount?: number | undefined;
        triggersCount?: number | undefined;
    };
    isLocalToolkit: boolean;
    authSchemes?: string[] | undefined;
    composioManagedAuthSchemes?: string[] | undefined;
    noAuth?: boolean | undefined;
}
toolkit
of
const toolkits: {
    slug: string;
    name: string;
    meta: {
        description?: string | undefined;
        logo?: string | undefined;
        availableVersions?: string[] | undefined;
        createdAt?: string | undefined;
        updatedAt?: string | undefined;
        categories?: {
            slug: string;
            name: string;
        }[] | undefined;
        appUrl?: string | undefined;
        toolsCount?: number | undefined;
        triggersCount?: number | undefined;
    };
    isLocalToolkit: boolean;
    authSchemes?: string[] | undefined;
    composioManagedAuthSchemes?: string[] | undefined;
    noAuth?: boolean | undefined;
}[]
toolkits
) {
var console: Console
The `console` module provides a simple debugging console that is similar to the JavaScript console mechanism provided by web browsers. The module exports two specific components: * A `Console` class with methods such as `console.log()`, `console.error()` and `console.warn()` that can be used to write to any Node.js stream. * A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstdout) and [`process.stderr`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module. _**Warning**_: The global console object's methods are neither consistently synchronous like the browser APIs they resemble, nor are they consistently asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v24.x/api/process.html#a-note-on-process-io) for more information. Example using the global `console`: ```js console.log('hello world'); // Prints: hello world, to stdout console.log('hello %s', 'world'); // Prints: hello world, to stdout console.error(new Error('Whoops, something bad happened')); // Prints error message and stack trace to stderr: // Error: Whoops, something bad happened // at [eval]:5:15 // at Script.runInThisContext (node:vm:132:18) // at Object.runInThisContext (node:vm:309:38) // at node:internal/process/execution:77:19 // at [eval]-wrapper:6:22 // at evalScript (node:internal/process/execution:76:60) // at node:internal/main/eval_string:23:3 const name = 'Will Robinson'; console.warn(`Danger ${name}! Danger!`); // Prints: Danger Will Robinson! Danger!, to stderr ``` Example using the `Console` class: ```js const out = getStreamSomehow(); const err = getStreamSomehow(); const myConsole = new console.Console(out, err); myConsole.log('hello world'); // Prints: hello world, to out myConsole.log('hello %s', 'world'); // Prints: hello world, to out myConsole.error(new Error('Whoops, something bad happened')); // Prints: [Error: Whoops, something bad happened], to err const name = 'Will Robinson'; myConsole.warn(`Danger ${name}! Danger!`); // Prints: Danger Will Robinson! Danger!, to err ```
@see[source](https://github.com/nodejs/node/blob/v24.x/lib/console.js)
console
.Console.log(message?: any, ...optionalParams: any[]): void (+1 overload)
Prints to `stdout` with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args)). ```js const count = 5; console.log('count: %d', count); // Prints: count: 5, to stdout console.log('count:', count); // Prints: count: 5, to stdout ``` See [`util.format()`](https://nodejs.org/docs/latest-v24.x/api/util.html#utilformatformat-args) for more information.
@sincev0.1.100
log
(
const toolkit: {
    slug: string;
    name: string;
    meta: {
        description?: string | undefined;
        logo?: string | undefined;
        availableVersions?: string[] | undefined;
        createdAt?: string | undefined;
        updatedAt?: string | undefined;
        categories?: {
            slug: string;
            name: string;
        }[] | undefined;
        appUrl?: string | undefined;
        toolsCount?: number | undefined;
        triggersCount?: number | undefined;
    };
    isLocalToolkit: boolean;
    authSchemes?: string[] | undefined;
    composioManagedAuthSchemes?: string[] | undefined;
    noAuth?: boolean | undefined;
}
toolkit
.name: stringname);
}

For details on browsing tools within toolkits and inspecting schemas, see Fetching tools and schemas.

Some toolkits require you to provide your own credentials. See Using custom auth configs.

Need a toolkit that doesn't exist? Request it here.

Default session behavior

When you create a session, all toolkits are available:

session = composio.create(user_id="user_123")
const const session: ToolRouterSession<unknown, unknown, OpenAIProvider>session = await const composio: Composio<OpenAIProvider>composio.Composio<OpenAIProvider>.create: (userId: string, routerConfig?: ToolRouterCreateSessionConfig) => Promise<ToolRouterSession<unknown, unknown, OpenAIProvider>>
Creates a new tool router session for a user.
@paramuserId The user id to create the session for@paramconfig The config for the tool router session@returnsThe tool router session@example```typescript import { Composio } from '@composio/core'; const composio = new Composio(); const userId = 'user_123'; const session = await composio.create(userId, { manageConnections: true, }); console.log(session.sessionId); console.log(session.url); console.log(session.tools()); ```
create
("user_123");

Your agent can search and use tools from any toolkit. To restrict or configure which toolkits are available, see Users and sessions.

Triggers can be used alongside Tool Router to respond to events in connected apps. See Triggers for setup instructions.