Composio Tool
ComposioToolSet
Section titled “ComposioToolSet”Description
Section titled “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
Section titled “Installation”To incorporate Composio tools into your project, follow the instructions below:
pip install composio composio-crewaipip install crewaiAfter the installation is complete, set your Composio API key as COMPOSIO_API_KEY. Get your Composio API key from here
Example
Section titled “Example”The following example demonstrates how to initialize the tool and execute a github action:
- Initialize Composio with CrewAI Provider
from composio_crewai import ComposioProviderfrom composio import Composiofrom crewai import Agent, Task, Crew
composio = Composio(provider=ComposioProvider())- Create a new Composio Session and retrieve the tools
Code
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
- 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.
connection_request = session.authorize("github")print(f"Open this URL to authenticate: {connection_request.redirect_url}")- Define agent
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)- Execute task
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