Gmail Labeler
With Composio’s managed authentication, tool calling and triggers, it’s easy to
build the AI agents that can interact and react the real world events reducing
the boilerplate required to setup and manage the authentication. This cookbook
will walk you through the process of building agents using Composio, LangChain.
Prerequisites
- Python3.x
- UV
- Composio API key
- OpenAI API key
- Understanding of building AI agents (Preferably with LangChain)
Build gmail agent to label your messages
Authenticating users
To authenticate your users with Composio you need an auth config for the given
app, In this case you need one for gmail. You can create and manage auth configs
from the dashboard.
Composio platform provides composio managed authentication for some apps to help
you fast-track your development, gmail being one of them. You can use these
default auth configs for development, but for production you should always use
your own oauth app configuration.
Using dashboard is the preferred way of managing authentication configs, but if you want to do it manually you can follow the guide below
Click to expand
To create an authentication config for gmail you need client_id and client_secret
from your from your Google OAuth Console.
Once you have the required credentials you can use the following piece of
code to set up authentication for gmail.
This will create an authentication config for gmail which you can use to
authenticate your users for your app. Ideally you should just create one
authentication object per project, so check for an existing auth config
before you create a new one.
Once you have authentication management in place, we can start with connecting
your users to your gmail app. Let’s implement a function to connect the users
to your gmail app via composio.
Now, when creating tools for your agent always check if the user already has a connected account before creating a new one.
Creating Triggers
You can use triggers to make your agents react to real world events. In this example, we will use triggers to invoke your agent everytime there’s a new message in your gmail inbox.
When creating triggers, make sure there are no duplicate triggers. Use following code as reference for checking if trigger for given connected account exists or not.
Once trigger is created, you can listen to events using a trigger subscription.
Putting everything together
Let’s put together everything by making the agent react to new messages in your inbox.
Package everything as a single entry point.
To test the above function as CLI, follow the steps below
- 
Clone the repository 
- 
Setup environment Fill the api keys Create the virtual env 
- 
Run the agent 
Using Composio for managed auth and tools
Composio reduces a lot of boilerplate for building AI agents with ability access and use a wide variety of apps. For example in this cookbook, to build gmail integration without composio you would have to write code to
- manage gmailoauth app
- manage user connections
- tools for your agents to interact with gmail
- Infra for listening to changes in your gmail inbox
Using composio simplifies all of the above to a few lines of code as we’ve seen the cookbook.
Best practices
🔒 User Management:
- Use unique, consistent user_idvalues for each person
- Each user maintains their own gmail connection
- User IDs can be email addresses, usernames, or any unique identifier
Troubleshooting
Connection Issues:
- Ensure your .envfile has validCOMPOSIO_API_KEYandOPENAI_API_KEY
- Check that the user has completed gmailauthorization
- Verify the user_id matches exactly between requests
API Errors:
- Check the server logs for detailed error messages
- Ensure request payloads match the expected format
- Visit /docsendpoint for API schema validation