Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: "Integrate Arcade tools with Google ADK agents"

# Arcade with Google ADK

Arcade integrates with Google ADK to give your agents access to Gmail, GitHub, Slack, and 100+ other tools.

[Google ADK](https://github.com/google/adk-python/) is a modular framework for building and deploying AI agents. It's optimized for Gemini and the Google ecosystem. Arcade integrates with both the Python and TypeScript versions, giving your agents access to Gmail, GitHub, Slack, and 100+ other tools.

## Get started
Expand All @@ -24,4 +26,4 @@ With Arcade and Google ADK, your agents can:
- Search the web and extract content
- Access 100+ other integrations

Browse the [full MCP server catalog](/resources/integrations) to see all available tools.
Browse the [full MCP server catalog](/resources/integrations) to see all available tools.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { Steps, Callout } from "nextra/components";

# Setup Arcade with Google ADK (Python)

Learn how to integrate Arcade tools with Google ADK to build an AI agent.

Google ADK is a modular framework for building and deploying AI agents. It optimizes for Gemini and the Google Ecosystem, but supports any model.

<GuideOverview>
Expand Down Expand Up @@ -59,7 +61,7 @@ uv add arcadepy google-adk

### Configure API keys

Provide your Arcade and Google API keys. You can store it in environment variables or directly in your code:
Provide your Arcade and Google API keys. You can store them in environment variables or directly in your code:

> Need an Arcade API key? Visit the [Get an API key](/get-started/setup/api-keys) page to create one.

Expand Down Expand Up @@ -103,29 +105,29 @@ import os
This includes multiple imports, here's a breakdown:

- Arcade imports:
- `AsyncArcade`: The Arcade client, used to interact with the Arcade API.
- `ToolDefinition`: The tool definition type, used to define the input and output of a tool.
- `AsyncArcade`: The Arcade client for interacting with the Arcade API.
- `ToolDefinition`: The tool definition type for defining the input and output of a tool.
- `ExecuteToolResponse`: The response type for the execute tool response.
- Google ADK imports:
- `Agent`: The Google ADK agent class, used to define an agent.
- `Runner`: The Google ADK runner, used to manage and run the agentic loop.
- `InMemoryArtifactService`: The in-memory artifact service, used to store and retrieve artifacts, such as the agent's state.
- `InMemorySessionService`: The in-memory session service, used to store and retrieve sessions, such as the conversation history.
- `Session`: The session type, used to define a session.
- `ToolContext`: The tool context, used to provide contextual information, such as the user ID.
- `FunctionTool`: The Google ADK function tool class, used to define a function tool.
- `Agent`: The Google ADK agent class for defining an agent.
- `Runner`: The Google ADK runner for managing and running the agentic loop.
- `InMemoryArtifactService`: The in-memory artifact service for storing and retrieving artifacts, such as the agent's state.
- `InMemorySessionService`: The in-memory session service for storing and retrieving sessions, such as the conversation history.
- `Session`: The session type for defining a session.
- `ToolContext`: The tool context for providing contextual information, such as the user ID.
- `FunctionTool`: The Google ADK function tool class for defining a function tool.
- `_map_pydantic_type_to_property_schema`: A utility function that maps Pydantic types to Google ADK schemas.
- Google GenAI imports:
- `types`: The Google GenAI types, used to define the types for the Google GenAI API.
- `types`: The Google GenAI types for defining the types for the Google GenAI API.
- Pydantic imports:
- `BaseModel`: The Pydantic base model, used to define a base model.
- `Field`: The Pydantic field, used to define a field.
- `create_model`: A Pydantic function used to create a model from a dictionary of fields.
- `typing` imports: Used to provide type hints for the code.
- `dotenv`: Used to load environment variables from a `.env` file.
- `BaseModel`: The Pydantic base model for defining a base model.
- `Field`: The Pydantic field for defining a field.
- `create_model`: A Pydantic function for creating a model from a dictionary of fields.
- `typing` imports: For providing type hints for the code.
- `dotenv`: For loading environment variables from a `.env` file.
- Other imports:
- `logging`: The logging module, used to log messages to the console.
- `os`: Used to retrieve loaded environment variables.
- `logging`: The logging module for logging messages to the console.
- `os`: For retrieving loaded environment variables.

### Configure the agent

Expand Down Expand Up @@ -314,7 +316,7 @@ class ArcadeTool(FunctionTool):

### Retrieve Arcade tools and transform them into Google ADK tools

Here you get the Arcade tools you want the agent to utilize, and transform them into Google ADK tools. The first step is to initialize the Arcade client, and get the tools you want to work with.
Here you get the Arcade tools you want the agent to utilize and transform them into Google ADK tools. The first step is to initialize the Arcade client and get the tools you want to work with.

This helper function is long, here's a breakdown of what it does for clarity:

Expand Down Expand Up @@ -378,7 +380,7 @@ The main function is where you:
- Initialize the conversation
- Run the loop

Google ADK provides a `Runner` class that manages the agentic loop, and will employ the session and artifact services you created earlier to store the conversation history and agent state. Therefore, you don't need to manually store the conversation history or agent state, and you can just pass the latest user message to the runner.
Google ADK provides a `Runner` class that manages the agentic loop and will employ the session and artifact services you created earlier to store the conversation history and agent state. Therefore, you don't need to manually store the conversation history or agent state, and you can just pass the latest user message to the runner.

```python filename="main.py"
async def main():
Expand Down Expand Up @@ -453,7 +455,7 @@ You should see the agent responding to your prompts like any model, as well as h
## Tips for selecting tools

- **Relevance**: Pick only the tools you need. Avoid utilizing all tools at once.
- **User identification**: Always provide a unique and consistent `user_id` for each user. Apply your internal or database user ID, not something entered by the user.
- **User identification**: Always provide a unique and consistent `user_id` for each user. Use your internal or database user ID, not something entered by the user.

## Next steps

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Looking at the Vale issues, I need to remove exclamation points from two instances of "Hello! " (on lines 239 and 458). Let me find and fix these specific instances while keeping everything else exactly the same.

---
title: "Setup Arcade with Google ADK (TypeScript)"
description: "Build an agent with Arcade tools using Google ADK for TypeScript"
Expand All @@ -7,6 +9,8 @@ import { Steps, Tabs, Callout } from "nextra/components";

# Setup Arcade with Google ADK (TypeScript)

Build an agent that uses Arcade tools with Google ADK for TypeScript to access Gmail, Slack, and 100+ other services.

[Google ADK for TypeScript](https://github.com/google/adk-js) provides a framework for building AI agents in TypeScript. Arcade's `@arcadeai/arcadejs` library provides the tools integration, allowing your agents to access Gmail, GitHub, Slack, and 100+ other services.

<GuideOverview>
Expand Down Expand Up @@ -234,7 +238,7 @@ async function main() {
output: process.stdout,
});

console.log("Hello! I'm your Google ADK Agent with Arcade Tools.");
console.log("Hello I'm your Google ADK Agent with Arcade Tools.");
console.log("Try asking me to summarize your recent emails or send a Slack message!");
console.log("Type 'exit' to quit.\n");

Expand Down Expand Up @@ -453,7 +457,7 @@ async function main() {
output: process.stdout,
});

console.log("Hello! I'm your Google ADK Agent with Arcade Tools.");
console.log("Hello I'm your Google ADK Agent with Arcade Tools.");
console.log("Try asking me to summarize your recent emails or send a Slack message!");
console.log("Type 'exit' to quit.\n");

Expand Down Expand Up @@ -494,4 +498,4 @@ main().catch(console.error);

- Add more tools by modifying `MCP_SERVERS` and `INDIVIDUAL_TOOLS`
- Build multi-agent systems with different Arcade tools
- Explore [creating custom tools](/guides/create-tools/tool-basics/build-mcp-server) with the Arcade Tool SDK
- Explore [creating custom tools](/guides/create-tools/tool-basics/build-mcp-server) with the Arcade Tool SDK
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: "Integrate Arcade tools with LangChain agents"

# Arcade with LangChain

Arcade integrates with LangChain to give your agents access to Gmail, GitHub, Slack, and 100+ other tools.

[LangChain](https://www.langchain.com/) is a popular framework for building AI agents that abstracts much of the complexity of agent development. Arcade integrates with both the Python and JavaScript versions, giving your agents access to Gmail, GitHub, Slack, and 100+ other tools.

## Get started
Expand All @@ -28,4 +30,4 @@ Browse the [full MCP server catalog](/resources/integrations) to see all availab

## Advanced topics

- **[Authorizing existing tools](/get-started/agent-frameworks/langchain/auth-langchain-tools)** - Add Arcade authorization to your existing LangChain tools
- **[Authorizing existing tools](/get-started/agent-frameworks/langchain/auth-langchain-tools)** - Add Arcade authorization to your existing LangChain tools