Skip to Content
HomeLangChainAuthorizing existing tools

Authorize Existing Tools

In this guide, we’ll show you how to authorize LangChain like the GmailToolkit using Arcade. You may already have tools you want to use, and this guide will show you how to authorize them. Arcade handles retrieving, authorizing, and managing tokens so you don’t have to. For complete working examples, see our Python  and JavaScript  examples.

Prerequisites

Install the required packages

Instead of the langchain_arcade package, you only need the arcadepy package to authorize existing since Arcade tools are not being used.

Terminal
pip install langchain-openai langgraph arcadepy langchain-google-community

Import the necessary packages

Python
import os from arcadepy import Arcade from google.oauth2.credentials import Credentials from langchain_google_community import GmailToolkit from langchain_google_community.gmail.utils import build_resource_service from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent

Initialize the Arcade client

Python
api_key = os.getenv("ARCADE_API_KEY") client = Arcade(api_key=api_key)

Start the authorization process for Gmail

Python
user_id = "{arcade_user_id}" auth_response = client.auth.start( user_id=user_id, provider="google", scopes=["https://www.googleapis.com/auth/gmail.readonly"], )

Prompt the user to authorize

Python
if auth_response.status != "completed": print("Please authorize the application in your browser:") print(auth_response.url)

The auth_response.status will be "completed" if the has already authorized the application, so they won’t be prompted to authorize again.

Wait for authorization completion

Python
auth_response = client.auth.wait_for_completion(auth_response)

The wait_for_completion method will do nothing if the has already authorized the application.

Use the token to initialize the Gmail MCP Server

Python
creds = Credentials(auth_response.context.token) api_resource = build_resource_service(credentials=creds) toolkit = GmailToolkit(api_resource=api_resource) tools = toolkit.get_tools()

Initialize the agent

Python
model = ChatOpenAI(model="gpt-4o") agent_executor = create_react_agent(model, tools)

Execute the agent

Python
example_query = "Read my latest emails and summarize them." events = agent_executor.stream( {"messages": [("user", example_query)]}, stream_mode="values", ) for event in events: event["messages"][-1].pretty_print()

Next Steps

Now you’re ready to explore more LangChain tools with Arcade. Try integrating additional Servers and crafting more complex queries to enhance your AI workflows.

Last updated on