# How to integrate Google Ads MCP with Autogen

```json
{
  "title": "How to integrate Google Ads MCP with Autogen",
  "toolkit": "Google Ads",
  "toolkit_slug": "googleads",
  "framework": "AutoGen",
  "framework_slug": "autogen",
  "url": "https://composio.dev/toolkits/googleads/framework/autogen",
  "markdown_url": "https://composio.dev/toolkits/googleads/framework/autogen.md",
  "updated_at": "2026-10-12T13:33:17.995Z"
}
```

## Introduction

This guide walks you through connecting Google Ads to AutoGen using the Composio tool router. By the end, you'll have a working Google Ads agent that can create a new customer list for holiday campaigns, get campaign details by campaign id, list all current customer lists in your account through natural language commands.
This guide will help you understand how to give your AutoGen agent real control over a Google Ads account through Composio's Google Ads MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Google Ads with

- [Claude Code](https://composio.dev/toolkits/googleads/framework/claude-code)
- [Cursor](https://composio.dev/toolkits/googleads/framework/cursor)
- [ChatGPT](https://composio.dev/toolkits/googleads/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/googleads/framework/claude-cowork)
- [Antigravity](https://composio.dev/toolkits/googleads/framework/antigravity)
- [OpenAI Agents SDK](https://composio.dev/toolkits/googleads/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/googleads/framework/claude-agents-sdk)
- [Grok Bot](https://composio.dev/toolkits/googleads/framework/grok-bot)
- [Codex](https://composio.dev/toolkits/googleads/framework/codex)
- [Kimi Code](https://composio.dev/toolkits/googleads/framework/kimi)
- [Grok Build](https://composio.dev/toolkits/googleads/framework/grok-build)
- [VS Code](https://composio.dev/toolkits/googleads/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/googleads/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/googleads/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/googleads/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/googleads/framework/atomic-agent)
- [CLI](https://composio.dev/toolkits/googleads/framework/cli)
- [Google ADK](https://composio.dev/toolkits/googleads/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/googleads/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/googleads/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/googleads/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/googleads/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/googleads/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/googleads/framework/pydantic-ai)

## TL;DR

Here's what you'll learn:
- Get and set up your OpenAI and Composio API keys
- Install the required dependencies for Autogen and Composio
- Initialize Composio and create a Tool Router session for Google Ads
- Wire that MCP URL into Autogen using McpWorkbench and StreamableHttpServerParams
- Configure an Autogen AssistantAgent that can call Google Ads tools
- Run a live chat loop where you ask the agent to perform Google Ads operations

## What is AutoGen?

Autogen is a framework for building multi-agent conversational AI systems from Microsoft. It enables you to create agents that can collaborate, use tools, and maintain complex workflows.
Key features include:
- Multi-Agent Systems: Build collaborative agent workflows
- MCP Workbench: Native support for Model Context Protocol tools
- Streaming HTTP: Connect to external services through streamable HTTP
- AssistantAgent: Pre-built agent class for tool-using assistants

## What is the Google Ads MCP server, and what's possible with it?

The Google Ads MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Google Ads account. It provides structured and secure access to your advertising data, so your agent can perform actions like creating customer lists, retrieving campaign details, and managing audience segments on your behalf.
- Automated customer list creation: Instantly have your agent create new customer lists for targeted marketing campaigns, streamlining your segmentation workflows.
- Campaign insights by ID or name: Let your agent fetch detailed information for any ad campaign using its ID or name, making reporting and optimization a breeze.
- Customer list management: Ask your agent to retrieve and review all your existing customer lists, so you always know who you're targeting.
- Add or remove contacts from lists: Seamlessly update audience membership by having your agent add or remove contacts from specified customer lists for more dynamic targeting.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `GOOGLEADS_ADD_OR_REMOVE_TO_CUSTOMER_LIST` | Add or remove to customer list | Adds or removes contacts from a Google Ads customer list (UserList/audience/remarketing list), not a Google Ads customer account. Note: It takes 6 to 12 hours for changes to be reflected in the customer list. Email addresses must comply with Google Ads policies and applicable privacy/consent laws. |
| `GOOGLEADS_BATCH_MUTATE` | Batch Mutate Google Ads Resources | Create, update, remove, or act on supported Google Ads resource types in one request. With partial_failure=false (the default), all operations are atomic and execute only if every operation is valid. With partial_failure=true, valid operations execute independently while invalid operations return errors. Use negative temporary resource IDs to connect resources created in the same request. Remove operations are destructive. |
| `GOOGLEADS_CREATE_CALLOUT_ASSET` | Create Callout Asset | Create an immutable account asset containing a validated callout. Associate the returned resource using Mutate Customer Assets with field_type CALLOUT. Cleanup removes that association; Google does not allow deleting the asset. |
| `GOOGLEADS_CREATE_CUSTOMER_LIST` | Create customer list | Creates a Google Ads customer list (UserList/audience/remarketing list), not a Google Ads customer account. Note: Requires an authenticated Google Ads connection with customer_id configured. Email-based lists must comply with Google Ads policies and applicable privacy/consent laws. Membership updates can take many hours to propagate; targeting eligibility is not immediate after creation. |
| `GOOGLEADS_GET_CAMPAIGN_BY_ID` | Get Campaign By Id | GetCampaignById Tool returns details of a campaign in Google Ads. Requires an active Google Ads OAuth connection with the correct customer_id configured; missing or mismatched customer_id will cause empty results. |
| `GOOGLEADS_GET_CAMPAIGN_BY_NAME` | Get campaign by name | Queries Google Ads via SQL to retrieve a campaign by its exact name. Requires an active Google Ads connection with valid customer_id and appropriate OAuth scopes. |
| `GOOGLEADS_GET_CONVERSION_ACTION_TAG_SNIPPETS` | Get Conversion Action Tag Snippets | Retrieve provider-generated website or call conversion tag snippets after creating a conversion action. Markup is returned exactly as Google provides it. |
| `GOOGLEADS_GET_CONVERSION_INGESTION_STATUS` | Get conversion ingestion status | Retrieve one Data Manager ingestion status snapshot. SUCCESS, FAILED, and PARTIAL_SUCCESS are terminal. PROCESSING and REQUEST_STATUS_UNKNOWN are not. The caller owns the documented backoff loop. |
| `GOOGLEADS_GET_CUSTOMER_LISTS` | Get customer lists | GetCustomerLists Tool lists all customer lists (audience/remarketing lists) in Google Ads. These are user segments for targeting, not Google Ads accounts — list IDs are distinct from account IDs. When multiple lists share similar names, review all returned results before selecting one for downstream operations. |
| `GOOGLEADS_GET_RMF_REPORT` | Get Required Google Ads Report | Run a prominent, bounded Google Ads report template for Customer, Campaign, Ad, Keyword, Search Term, Dynamic Search Ads Search Term, or Bidding Strategy. Official required columns are always selected; dates default to LAST_30_DAYS. |
| `GOOGLEADS_INGEST_CONVERSION_EVENTS` | Ingest conversion events | Validate or submit a bounded Google Ads conversion-event batch. Set validate_only=true for a no-ingestion check. False starts irreversible asynchronous processing and returns a request ID for later status checks. |
| `GOOGLEADS_LIST_ACCESSIBLE_CUSTOMERS` | List Accessible Customers | List Google Ads customer resource names directly accessible to the authenticated OAuth user. Google determines the complete result from the OAuth credentials and ignores customer_id and login-customer-id; this action does not filter the response. For MCC child account names, status, and direct hierarchy, use List Sub Accounts. |
| `GOOGLEADS_LIST_DATA_MANAGER_CONVERSION_ACTIONS` | List data manager conversion actions | List conversion actions usable as Google Ads Data Manager destinations. Returns numeric destination IDs, true owning accounts, action types, and availability; defaults to enabled offline and enhanced-lead actions. |
| `GOOGLEADS_LIST_SUB_ACCOUNTS` | List Sub Accounts | List direct child/sub-accounts under a Google Ads manager (MCC) account. Use this before account-scoped read or mutate calls when a user needs to choose which child account to target. The returned customer_id values can be passed to other Google Ads tools as their customer_id. |
| `GOOGLEADS_MUTATE_AD_GROUP_ADS` | Mutate Ad Group Ads | Create, update, or remove ads in Google Ads ad groups, including responsive search ads. Use this after creating campaigns, budgets, ad groups, and keywords so the ad group has creative that can serve. |
| `GOOGLEADS_MUTATE_AD_GROUP_ASSETS` | Mutate Ad Group Assets | Create, update, or remove links between assets and ad groups. Use this after creating assets to attach sitelinks, callouts, snippets, images, and other asset types at ad group level. |
| `GOOGLEADS_MUTATE_AD_GROUP_BID_MODIFIERS` | Mutate Ad Group Bid Modifiers | Create, update, or remove ad group bid modifiers, such as device bid adjustments or hotel-specific bid modifier criteria. |
| `GOOGLEADS_MUTATE_AD_GROUP_CRITERIA` | Mutate Ad Group Criteria | Create, update, or remove criteria attached to a Google Ads ad group in a single batch request. Supports keywords (positive and negative), audience targeting (user lists, custom audiences, combined audiences, in-market/affinity), demographics (age range, gender, parental status, income range), placements (websites, mobile apps, YouTube channels/videos), topics, webpages (for Dynamic Search Ads), and listing groups (for Shopping). Use this to programmatically manage keyword bids and match types, build audience targeting, or prune underperforming criteria. Remove operations are irreversible — deleted criteria cannot be recovered. For testing, set validate_only=true to dry-run without committing changes. |
| `GOOGLEADS_MUTATE_AD_GROUPS` | Mutate Ad Groups | Create, update, or remove ad groups within Google Ads campaigns. Supports batch operations with multiple ad group changes in a single request. Use when you need to manage ad groups programmatically, such as creating new ad groups for campaigns, updating ad group settings or status, or removing ad groups that are no longer needed. This action is irreversible for remove operations — deleted ad groups cannot be recovered once removed. |
| `GOOGLEADS_MUTATE_ASSETS` | Mutate Assets | Create or update supported Google Ads assets such as sitelinks, structured snippets, text assets, lead forms, promotions, calls, price assets, and media assets. Use Create Callout Asset for validated immutable callouts. Google Ads does not allow removing assets; cleanup removes their resource associations. |
| `GOOGLEADS_MUTATE_ASSET_SETS` | Mutate Asset Sets | Create, update, or remove Google Ads asset sets, which group assets for feeds, locations, and other campaign uses. Link assets to a set separately with an AssetSetAsset mutation, and attach sets to campaigns with Mutate Campaign Asset Sets. |
| `GOOGLEADS_MUTATE_BIDDING_STRATEGIES` | Mutate Bidding Strategies | Create, update, or remove portfolio bidding strategies such as Target CPA, Target ROAS, Target Spend, Maximize Conversions, Maximize Conversion Value, and Target Impression Share. |
| `GOOGLEADS_MUTATE_CAMPAIGN_ASSETS` | Mutate Campaign Assets | Create, update, or remove links between assets and campaigns. Use this after creating assets to attach sitelinks, callouts, snippets, and other asset types at campaign level. |
| `GOOGLEADS_MUTATE_CAMPAIGN_BUDGETS` | Mutate Campaign Budgets | Create, update, or remove Google Ads campaign budgets. Use this before creating campaigns because campaign creation requires an existing campaign_budget resource name. |
| `GOOGLEADS_MUTATE_CAMPAIGN_CRITERIA` | Mutate Campaign Criteria | Create, update, or remove campaign-level targeting criteria such as locations, languages, campaign-level negative keywords, devices, schedules, audiences, and IP exclusions. |
| `GOOGLEADS_MUTATE_CAMPAIGN_LABELS` | Mutate Campaign Labels | Create or remove relationships between campaigns and labels. Use this after creating labels to organize campaigns for filtering and reporting. |
| `GOOGLEADS_MUTATE_CAMPAIGNS` | Mutate Campaigns | Create, update, or remove Google Ads campaigns in batch. Supports multiple operations (create, update, remove) in a single request. Use when managing campaign lifecycle, applying bulk changes, or automating campaign management workflows. This action is irreversible for remove operations — deleted campaigns cannot be recovered. Plan accordingly and consider using validate_only=true to test changes before applying them. |
| `GOOGLEADS_MUTATE_CAMPAIGNS_V2` | Mutate Campaigns V2 | Create, update, or remove Google Ads campaigns in batch. Supports multiple operations (create, update, remove) in a single request. Use when managing campaign lifecycle, applying bulk changes, or automating campaign management workflows. This action is irreversible for remove operations — deleted campaigns cannot be recovered. Plan accordingly and consider using validate_only=true to test changes before applying them. |
| `GOOGLEADS_MUTATE_CONVERSION_ACTIONS` | Mutate Conversion Actions | Create, update, or remove Google Ads conversion actions for conversion tracking configuration. This manages Google Ads conversion action resources; installing website/app tags remains outside this action. |
| `GOOGLEADS_MUTATE_CUSTOM_AUDIENCES` | Mutate Custom Audiences | Create, update, or remove Google Ads custom audiences used to reach users by interests, searches, visited URLs, place categories, or installed apps. |
| `GOOGLEADS_MUTATE_CUSTOMER_ASSETS` | Mutate Customer Assets | Create or remove customer-level asset associations. Removal irreversibly removes the current association; recreate it to restore the link. Use this after creating assets to attach callouts, sitelinks, snippets, and other asset types across a Google Ads customer account. |
| `GOOGLEADS_MUTATE_LABELS` | Mutate Labels | Create, update, or remove Google Ads labels. Pair this with campaign label mutations to organize campaigns and support filtering. |
| `GOOGLEADS_MUTATE_PORTFOLIO_BIDDING_STRATEGIES` | Mutate Portfolio Bidding Strategies | Create, edit, or remove typed Target CPA and Target ROAS portfolio strategies. Attach with Mutate Campaigns, read with Get Required Google Ads Report, and transition all campaigns before removal. Budget alignment is not exposed because Google requires the bidding strategy and campaign budget to be changed atomically with GoogleAdsService.Mutate, while this action uses the resource-specific mutate endpoint. currency_code can be set on create only for manager-account strategies. |
| `GOOGLEADS_MUTATE_SHARED_SETS` | Mutate Shared Sets | Create, update, or remove Google Ads shared sets used to group shared criteria, such as negative keyword lists, for reuse across campaigns. |
| `GOOGLEADS_SEARCH_GOOGLE_ADS_FIELDS` | Search Google Ads Fields | Search the Google Ads v23 field metadata catalog with GAQL. |
| `GOOGLEADS_SEARCH_STREAM_GAQL` | Search Stream GAQL | Execute a Google Ads Query Language (GAQL) query and aggregate every streamed response batch in order. For very large reports, select only needed fields and use WHERE and LIMIT because action responses are returned inline and are not automatically offloaded. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Google Ads MCP server is an implementation of the Model Context Protocol that connects your AI agents and assistants directly to Google Ads. Instead of manually wiring Google Ads APIs, OAuth, and scopes yourself, you get a structured, tool-based interface that an LLM can call safely.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

You will need:
- A Composio API key
- An OpenAI API key (used by Autogen's OpenAIChatCompletionClient)
- A Google Ads account you can connect to Composio
- Some basic familiarity with Autogen and Python async

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install dependencies

Install Composio, Autogen extensions, and dotenv.
What's happening:
- composio connects your agent to Google Ads via MCP
- autogen-agentchat provides the AssistantAgent class
- autogen-ext-openai provides the OpenAI model client
- autogen-ext-tools provides MCP workbench support
```bash
pip install composio python-dotenv
pip install autogen-agentchat autogen-ext-openai autogen-ext-tools
```

### 3. Set up environment variables

Create a .env file in your project folder.
What's happening:
- COMPOSIO_API_KEY is required to talk to Composio
- OPENAI_API_KEY is used by Autogen's OpenAI client
- USER_ID is how Composio identifies which user's Google Ads connections to use
```bash
COMPOSIO_API_KEY=your-composio-api-key
OPENAI_API_KEY=your-openai-api-key
USER_ID=your-user-identifier@example.com
```

### 4. Import dependencies and create Tool Router session

What's happening:
- load_dotenv() reads your .env file
- Composio(api_key=...) initializes the SDK
- create(...) creates a Tool Router session that exposes Google Ads tools
- session.mcp.url is the MCP endpoint that Autogen will connect to
```python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Google Ads session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["googleads"]
    )
    url = session.mcp.url
```

### 5. Configure MCP parameters for Autogen

Autogen expects parameters describing how to talk to the MCP server. That is what StreamableHttpServerParams is for.
What's happening:
- url points to the Tool Router MCP endpoint from Composio
- timeout is the HTTP timeout for requests
- sse_read_timeout controls how long to wait when streaming responses
- terminate_on_close=True cleans up the MCP server process when the workbench is closed
```python
# Configure MCP server parameters for Streamable HTTP
server_params = StreamableHttpServerParams(
    url=url,
    timeout=30.0,
    sse_read_timeout=300.0,
    terminate_on_close=True,
    headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
)
```

### 6. Create the model client and agent

What's happening:
- OpenAIChatCompletionClient wraps the OpenAI model for Autogen
- McpWorkbench connects the agent to the MCP tools
- AssistantAgent is configured with the Google Ads tools from the workbench
```python
# Create model client
model_client = OpenAIChatCompletionClient(
    model="gpt-5",
    api_key=os.getenv("OPENAI_API_KEY")
)

# Use McpWorkbench as context manager
async with McpWorkbench(server_params) as workbench:
    # Create Google Ads assistant agent with MCP tools
    agent = AssistantAgent(
        name="googleads_assistant",
        description="An AI assistant that helps with Google Ads operations.",
        model_client=model_client,
        workbench=workbench,
        model_client_stream=True,
        max_tool_iterations=10
    )
```

### 7. Run the interactive chat loop

What's happening:
- The script prompts you in a loop with You:
- Autogen passes your input to the model, which decides which Google Ads tools to call via MCP
- agent.run_stream(...) yields streaming messages as the agent thinks and calls tools
- Typing exit, quit, or bye ends the loop
```python
print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
print("Ask any Google Ads related question or task to the agent.\n")

# Conversation loop
while True:
    user_input = input("You: ").strip()

    if user_input.lower() in ["exit", "quit", "bye"]:
        print("\nGoodbye!")
        break

    if not user_input:
        continue

    print("\nAgent is thinking...\n")

    # Run the agent with streaming
    try:
        response_text = ""
        async for message in agent.run_stream(task=user_input):
            if hasattr(message, "content") and message.content:
                response_text = message.content

        # Print the final response
        if response_text:
            print(f"Agent: {response_text}\n")
        else:
            print("Agent: I encountered an issue processing your request.\n")

    except Exception as e:
        print(f"Agent: Sorry, I encountered an error: {str(e)}\n")
```

## Complete Code

```python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Google Ads session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["googleads"]
    )
    url = session.mcp.url

    # Configure MCP server parameters for Streamable HTTP
    server_params = StreamableHttpServerParams(
        url=url,
        timeout=30.0,
        sse_read_timeout=300.0,
        terminate_on_close=True,
        headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
    )

    # Create model client
    model_client = OpenAIChatCompletionClient(
        model="gpt-5",
        api_key=os.getenv("OPENAI_API_KEY")
    )

    # Use McpWorkbench as context manager
    async with McpWorkbench(server_params) as workbench:
        # Create Google Ads assistant agent with MCP tools
        agent = AssistantAgent(
            name="googleads_assistant",
            description="An AI assistant that helps with Google Ads operations.",
            model_client=model_client,
            workbench=workbench,
            model_client_stream=True,
            max_tool_iterations=10
        )

        print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
        print("Ask any Google Ads related question or task to the agent.\n")

        # Conversation loop
        while True:
            user_input = input("You: ").strip()

            if user_input.lower() in ['exit', 'quit', 'bye']:
                print("\nGoodbye!")
                break

            if not user_input:
                continue

            print("\nAgent is thinking...\n")

            # Run the agent with streaming
            try:
                response_text = ""
                async for message in agent.run_stream(task=user_input):
                    if hasattr(message, 'content') and message.content:
                        response_text = message.content

                # Print the final response
                if response_text:
                    print(f"Agent: {response_text}\n")
                else:
                    print("Agent: I encountered an issue processing your request.\n")

            except Exception as e:
                print(f"Agent: Sorry, I encountered an error: {str(e)}\n")

if __name__ == "__main__":
    asyncio.run(main())
```

## Conclusion

You now have an Autogen assistant wired into Google Ads through Composio's Tool Router and MCP. From here you can:
- Add more toolkits to the toolkits list, for example notion or hubspot
- Refine the agent description to point it at specific workflows
- Wrap this script behind a UI, Slack bot, or internal tool
Once the pattern is clear for Google Ads, you can reuse the same structure for other MCP-enabled apps with minimal code changes.

## How to build Google Ads MCP Agent with another framework

- [Claude Code](https://composio.dev/toolkits/googleads/framework/claude-code)
- [Cursor](https://composio.dev/toolkits/googleads/framework/cursor)
- [ChatGPT](https://composio.dev/toolkits/googleads/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/googleads/framework/claude-cowork)
- [Antigravity](https://composio.dev/toolkits/googleads/framework/antigravity)
- [OpenAI Agents SDK](https://composio.dev/toolkits/googleads/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/googleads/framework/claude-agents-sdk)
- [Grok Bot](https://composio.dev/toolkits/googleads/framework/grok-bot)
- [Codex](https://composio.dev/toolkits/googleads/framework/codex)
- [Kimi Code](https://composio.dev/toolkits/googleads/framework/kimi)
- [Grok Build](https://composio.dev/toolkits/googleads/framework/grok-build)
- [VS Code](https://composio.dev/toolkits/googleads/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/googleads/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/googleads/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/googleads/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/googleads/framework/atomic-agent)
- [CLI](https://composio.dev/toolkits/googleads/framework/cli)
- [Google ADK](https://composio.dev/toolkits/googleads/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/googleads/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/googleads/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/googleads/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/googleads/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/googleads/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/googleads/framework/pydantic-ai)

## Related Toolkits

- [Metaads](https://composio.dev/toolkits/metaads) - Metaads is Meta's official Ads API that lets you manage, analyze, and optimize your Facebook and Instagram ad campaigns. Streamline ad operations and gain deeper insights with robust automation.
- [Adrapid](https://composio.dev/toolkits/adrapid) - Adrapid is a platform for rapid creation of digital marketing visuals using templates. It streamlines design workflows for banners, images, and HTML5 content with automation.
- [AdRoll](https://composio.dev/toolkits/adroll) - AdRoll is a digital marketing platform for managing advertising campaigns, audiences, and account-based marketing. It helps marketers retarget customers across channels and measure performance.
- [Adtraction](https://composio.dev/toolkits/adtraction) - Adtraction is an affiliate marketing platform for partner programs, tracking links, transactions, commissions, statistics, and payments. It helps advertisers and publishers manage performance marketing with clear reporting and payout workflows.
- [Adyntel](https://composio.dev/toolkits/adyntel) - Adyntel is an API that retrieves LinkedIn ads for any company using a domain or LinkedIn Page ID. Easily access competitive ad intelligence to power your marketing workflows.
- [Beaconstac](https://composio.dev/toolkits/beaconstac) - Beaconstac is a platform for creating and managing QR codes and proximity beacons. It helps businesses engage customers and track marketing performance with powerful analytics.
- [Bouncify](https://composio.dev/toolkits/bouncify) - Bouncify is an email verification service for single addresses and bulk lists. Use it to reduce bounces, protect sender reputation, and track verification credits.
- [Bulk Email Checker](https://composio.dev/toolkits/bulk_email_checker) - Bulk Email Checker is an email verification service for checking address validity, mailbox status, domains, and mail-server signals. It helps reduce bounces, spot risky emails, and keep outreach lists cleaner before you send.
- [Campaign cleaner](https://composio.dev/toolkits/campaign_cleaner) - Campaign cleaner is an email campaign optimization tool that boosts compatibility and deliverability across email clients. It helps marketers get better results by cleaning, enhancing, and ensuring high performance for every campaign.
- [Deadline funnel](https://composio.dev/toolkits/deadline_funnel) - Deadline Funnel lets you create personalized deadlines and timers for your marketing campaigns. It helps marketers boost conversions by adding authentic urgency to offers.
- [DeBounce](https://composio.dev/toolkits/debounce) - DeBounce is an email verification service for checking address validity, deliverability, and risk. It helps keep contact lists clean so your campaigns reach real inboxes.
- [Easy Email Verification](https://composio.dev/toolkits/easy_email_verification) - Easy Email Verification is an email validation service for checking single addresses and bulk lists. Use it to reduce bounces, clean contact data, and protect sender reputation.
- [Elastic Email](https://composio.dev/toolkits/elastic_email) - Elastic Email is an email delivery and marketing platform for transactional emails, campaigns, contacts, and reporting. Use it to send reliable emails, manage audiences, verify addresses, and track performance.
- [Fairing](https://composio.dev/toolkits/fairing) - Fairing is a post-purchase survey and attribution platform for ecommerce brands. It helps teams measure which marketing channels, campaigns, and customer touchpoints drive purchases.
- [GoDaddy MCP](https://composio.dev/toolkits/godaddy_mcp) - GoDaddy MCP is a domain discovery toolkit for checking availability and generating AI-powered name ideas. Use it to move from rough business keywords to practical domain options fast.
- [Google AdSense](https://composio.dev/toolkits/google_adsense) - Google AdSense is a platform for managing website advertising, payments, and performance reports. It helps publishers monetize content and track ad revenue in one place.
- [Handwrite.io](https://composio.dev/toolkits/handwrite) - Handwrite.io is a direct mail service for creating physical handwritten card orders. It helps teams send personal cards with selectable handwriting, stationery, and tracking.
- [Inblog](https://composio.dev/toolkits/inblog) - Inblog is an AI-powered blogging platform for posts, authors, tags, redirects, design settings, analytics, and lead forms. Use it to manage SEO-focused content, measure performance, and capture blog leads in one place.
- [Instantly](https://composio.dev/toolkits/instantly) - Instantly is a platform for automating cold email outreach, managing leads, and optimizing deliverability. Get better results from email campaigns with minimal manual effort.
- [Invalid Bounce](https://composio.dev/toolkits/invalid_bounce) - Invalid Bounce is an email verification service with a bulk verification API. Use it to clean email lists, reduce bounces, and protect sender reputation.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Google Ads MCP?

With a standalone Google Ads MCP server, the agents and LLMs can only access a fixed set of Google Ads tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Google Ads and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Autogen?

Yes, you can. Autogen fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Google Ads tools.

### Can I manage the permissions and scopes for Google Ads while using Tool Router?

Yes, absolutely. You can configure which Google Ads scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Google Ads data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
