Google ADK agents and Dome
Keep your ADK agents. Govern every call they make.
ADK is built around Gemini. Through Dome, the same agent can think with Claude or GPT. Swap its model for a LiteLLM model pointed at the Broker and its tools for an MCP toolset on the Gateway. Sub-agents and the runner don't change, and a rule decides every call.
How Dome helps
Dome provides governance for every Google ADK tool and model call
Sub-agents stay as they are
Agents, instructions and the runner are unchanged. The model and the toolset change.
Any model, not only Gemini
ADK's LiteLLM wrapper talks to the Broker's OpenAI-compatible endpoint. The model name is a pool, so Claude, GPT and Gemini sit behind one setting.
Gemini and Claude in one trail
Whichever pool answers, the model call is recorded beside the agent's tool calls, against the person it acted for.
Get started
Google ADK on Dome in two changes
Two edits to the agent's constructor: a LiteLlm model with the Broker as api_base, and an McpToolset on the Gateway.
01
Install the packages
ADK with its MCP extra, and LiteLLM for non-Gemini endpoints. Python 3.10 or later.
$ pip install "google-adk[mcp]" litellm02
Load tools from the Gateway
McpToolset connects over streamable HTTP and lists the tools this agent is granted, schemas included.
from google.adk.tools.mcp_tool import McpToolset, StreamableHTTPConnectionParamsdome = McpToolset(connection_params=StreamableHTTPConnectionParams(url=f"{GATEWAY_URL}/mcp",headers={"Authorization": f"Bearer {DOME_AGENT_KEY}"},))03
Call models through the Broker
LiteLLM's OpenAI route with the Gateway as its base. The model name is a pool.
from google.adk.models.lite_llm import LiteLlmmodel = LiteLlm(model="openai/claude-opus-5-5",api_base=f"{GATEWAY_URL}/v1",api_key=DOME_AGENT_KEY,)
Commands and rules tested against a Dome workspace on October 1, 2026. For anything about Google ADK itself, see Google's documentation.
Example agents
One agent, end to end
An ADK LlmAgent that runs Claude Opus through LiteLlm and takes its tools from a McpToolset on the Gateway. No Google or Anthropic key in the code.
researcher
Answer questions about the code
InMemoryRunner drives the agent through the repositories. The Gateway decides each tool call, and the Broker sends each model call to a provider that answers.
import asyncio from google.adk.agents import LlmAgentfrom google.adk.models.lite_llm import LiteLlmfrom google.adk.runners import InMemoryRunnerfrom google.adk.tools.mcp_tool import McpToolset, StreamableHTTPConnectionParamsfrom google.genai import types researcher = LlmAgent( name="researcher", instruction="Answer questions about the code. Search before you answer.", # Model: a pool on the Broker, through the OpenAI-compatible endpoint model=LiteLlm( model="openai/claude-opus-5-5", api_base=f"{GATEWAY_URL}/v1", api_key=DOME_AGENT_KEY, ), # Tools: whatever this agent is granted on the Gateway tools=[McpToolset(connection_params=StreamableHTTPConnectionParams( url=f"{GATEWAY_URL}/mcp", headers={"Authorization": f"Bearer {DOME_AGENT_KEY}"}, ))],) async def main(): runner = InMemoryRunner(agent=researcher, app_name="researcher") session = await runner.session_service.create_session(app_name="researcher", user_id="k.brandt") question = types.Content(role="user", parts=[types.Part(text="Where is rate limiting handled?")]) async for event in runner.run_async(user_id="k.brandt", session_id=session.id, new_message=question): if event.is_final_response() and event.content: print(event.content.parts[0].text) asyncio.run(main())Agent workflow
Bringing it together
Connecting Google ADK agents to tools, models, and identity in Dome completes a governed agent application.
Acting for
Agent
Runtime
Google ADK
This page
Control point
Gateway
- Rules
- Guards
- Quotas
Every call decided and audited
Models
FAQ
Common questions
Can Google ADK use models other than Gemini?
Yes. Wrap the model in LiteLlm with openai/ plus a pool name and the Gateway's /v1 endpoint as api_base.
How do I connect Google ADK to a remote MCP server?
Use McpToolset with StreamableHTTPConnectionParams, the Gateway's /mcp URL, and the Dome key as a bearer token. Install google-adk with its mcp extra.
What does an ADK agent see when Dome refuses a call?
A 403 with the reason, from the Gateway. The call never reaches the model or the tool.
Explore
More of what Dome works with
Model
Claude Fable
Fable 5.1 from Anthropic and Amazon Bedrock in one failover pool, open to one group and capped by quota.
Read moreProvider
Anthropic
The Claude API behind the Model Broker: the key held in Dome, every call authorized, metered and audited.
Read moreMCP server
GitHub
The GitHub MCP server behind the Tool Gateway, with rules that decide each call on its owner and repository.
Read moreIdentity
Okta
Okta tokens verified on every agent call, so rules and audit name the person each agent acted for.
Read moreClient
Claude Code
Claude Code on a Dome Gateway with per-developer sign-in, rules on every tool call, and audit by name.
Read moreAgent service
TinyFish
TinyFish's web agents behind the Tool Gateway, with rules that decide each run on the site it targets.
Read moreNext steps
Talk with our FDE team
Our forward deployed engineers work with your platform team to get your agents into production and under control: the first one governed on your own systems, and a pattern your teams can repeat for every agent after it.
No card required to start. Register your first agent in minutes.
Agent frameworks and runtimes: govern agents without a rewrite
Build agents on the framework you already use. Dome governs their tool and model calls without a rewrite.
See them all