Skip to main content

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 composio-crewai
pip install crewai
After the installation is complete, set 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 with CrewAI Provider
Code
from composio_crewai import ComposioProvider
from composio import Composio
from crewai import Agent, Task, Crew

composio = Composio(provider=ComposioProvider())
  1. Create a new Composio Session and retrieve the tools
session = composio.create(
    user_id="your-user-id",
    toolkits=["gmail", "github"] # optional, default is all toolkits
)
tools = session.tools()
Read more about sessions and user management here
  1. Authenticating users manually
Composio automatically authenticates the users during the agent chat session. However, you can also authenticate the user manually by calling the authorize method.
Code
connection_request = session.authorize("github")
print(f"Open this URL to authenticate: {connection_request.redirect_url}")
  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