Tools
Legacy

Fetching tools and schemas

If you're building an agent, we recommend using sessions instead. See Tools and toolkits for how sessions discover and fetch tools automatically.

Fetch specific tools, filter by permissions or search, and inspect schemas for type information. Tools are automatically formatted for your provider.

Basic usage

tools = composio.tools.get(
    user_id,
    toolkits=["GITHUB"]
)

Returns top 20 tools by default. Tools require a user_id because they're scoped to authenticated accounts. See User scoping and Authentication.

Tool schemas

Inspect tool parameters and types without a user_id:

tool = composio.tools.get_raw_composio_tool_by_slug("GMAIL_SEND_EMAIL")

Generate type-safe code for direct SDK execution with composio generate. This creates TypeScript or Python types from tool schemas.

View tool parameters and schemas visually in the Composio platform. Navigate to any toolkit and select a tool to see its input/output parameters.

Filtering tools

By toolkit

Get tools from specific apps. Returns top 20 tools by default.

# Fetch with limit for a specific user
tools = composio.tools.get(
    user_id,
    toolkits=["GITHUB"],
    limit=5  # Get top 5 tools
)

# Same filter but without user_id (for schemas)
raw_tools = composio.tools.get_raw_composio_tools(
    toolkits=["GITHUB"],
    limit=5
)

By name

Fetch specific tools when you know their names.

# Fetch specific tools by name
tools = composio.tools.get(
    user_id,
    tools=["GITHUB_CREATE_ISSUE", "GITHUB_CREATE_PULL_REQUEST"]
)

# Get schemas without user_id
raw_tools = composio.tools.get_raw_composio_tools(
    tools=["GITHUB_CREATE_ISSUE", "GITHUB_CREATE_PULL_REQUEST"]
)

By scopes

Filter OAuth tools by permission level. Only works with a single toolkit.

# Filter by OAuth scopes (single toolkit only)
tools = composio.tools.get(
    user_id,
    toolkits=["GITHUB"],
    scopes=["write:org"]
)

By search (experimental)

Find tools semantically.

# Search tools semantically
tools = composio.tools.get(
    user_id,
    search="create calendar event"
)

# Search schemas without user_id
raw_tools = composio.tools.get_raw_composio_tools(
    search="create calendar event"
)

# Search within a specific toolkit
tools = composio.tools.get(
    user_id,
    search="issues",
    toolkits=["GITHUB"],
)

# Search toolkit schemas without user_id
raw_tools = composio.tools.get_raw_composio_tools(
    search="issues",
    toolkits=["GITHUB"]
)

When no toolkit version is specified, the API returns tools from the base version (00000000_00), which may be fewer than what's available. Pass toolkit_versions="latest" or a specific version to get all tools. Never use latest in production. See toolkit versioning.

Next

Executing tools

Run tools with providers, agentic frameworks, or direct execution