ComposioToolSet

Description

Composio is an integration platform that allows you to connect your AI agents to 250+ tools. Key features include:

  • Enterprise-Grade Authentication: Built-in support for OAuth, API Keys, JWT with automatic token refresh
  • Full Observability: Detailed tool usage logs, execution timestamps, and more

Installation

To incorporate Composio tools into your project, follow the instructions below:

pip install composio-crewai
pip install crewai

After the installation is complete, either run composio login or export your composio API key as COMPOSIO_API_KEY. Get your Composio API key from here

Example

The following example demonstrates how to initialize the tool and execute a github action:

  1. Initialize Composio toolset
Code
from composio_crewai import ComposioToolSet, App, Action
from crewai import Agent, Task, Crew

toolset = ComposioToolSet()
  1. Connect your GitHub account
composio add github
  1. Get Tools
  • Retrieving all the tools from an app (not recommended for production):
Code
tools = toolset.get_tools(apps=[App.GITHUB])
  • Filtering tools based on tags:
Code
tag = "users"

filtered_action_enums = toolset.find_actions_by_tags(
    App.GITHUB,
    tags=[tag], 
)

tools = toolset.get_tools(actions=filtered_action_enums)
  • Filtering tools based on use case:
Code
use_case = "Star a repository on GitHub"

filtered_action_enums = toolset.find_actions_by_use_case(
    App.GITHUB, use_case=use_case, advanced=False
)

tools = toolset.get_tools(actions=filtered_action_enums)
Set advanced to True to get actions for complex use cases
  • Using specific tools:

In this demo, we will use the GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER action from the GitHub app.

Code
tools = toolset.get_tools(
    actions=[Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER]
)

Learn more about filtering actions here

  1. Define agent
Code
crewai_agent = Agent(
    role="GitHub Agent",
    goal="You take action on GitHub using GitHub APIs",
    backstory="You are AI agent that is responsible for taking actions on GitHub on behalf of users using GitHub APIs",
    verbose=True,
    tools=tools,
    llm= # pass an llm
)
  1. Execute task
Code
task = Task(
    description="Star a repo composiohq/composio on GitHub",
    agent=crewai_agent,
    expected_output="Status of the operation",
)

crew = Crew(agents=[crewai_agent], tasks=[task])

crew.kickoff()
  • More detailed list of tools can be found here