# Microsoft Advertising

```json
{
  "name": "Microsoft Advertising",
  "slug": "microsoft_advertising",
  "url": "https://composio.dev/toolkits/microsoft_advertising",
  "markdown_url": "https://composio.dev/toolkits/microsoft_advertising.md",
  "logo_url": "https://logos.composio.dev/api/microsoft_advertising",
  "categories": [
    "advertising & marketing"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-24T05:34:10.152Z"
}
```

![Microsoft Advertising logo](https://logos.composio.dev/api/microsoft_advertising)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Microsoft Advertising MCP or direct API to manage campaigns, update ad groups, adjust bids, and run performance reports through natural language.

## Summary

Microsoft Advertising is Microsoft's platform for managing search advertising campaigns across Bing and partner sites.
It provides campaign controls, audience targeting, bidding, and performance reporting in one place.

## Categories

- advertising & marketing

## Toolkit Details

- Tools: 14

## Images

- Logo: https://logos.composio.dev/api/microsoft_advertising

## Authentication

- **Oauth2**
  - Type: `oauth2`
  - Description: Oauth2 authentication for Microsoft Advertising.
  - Setup:
    - Configure Oauth2 credentials for Microsoft Advertising.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- List active campaigns with their current budgets
- Run a performance report for last month
- Update bids for underperforming ad groups

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `MICROSOFT_ADVERTISING_ACTIVATE_AD_GROUPS` | Activate Ad Groups | Activate up to 1,000 ad groups in a Microsoft Advertising campaign. WARNING: Activation can immediately make eligible ads deliver and incur spend when the parent campaign, bids, targeting, and ads permit delivery. Verify the selected IDs and campaign configuration before calling. Inspect partial_errors because Microsoft can accept the request while rejecting individual activations. |
| `MICROSOFT_ADVERTISING_ACTIVATE_CAMPAIGNS` | Activate Campaigns | Activate 1 to 100 Microsoft Advertising campaigns. This can immediately make configured ads eligible for delivery and cause the account to incur ad spend. Inspect partial_errors because Microsoft can accept the request while rejecting individual campaign activations. |
| `MICROSOFT_ADVERTISING_CREATE_SEARCH_AD_GROUPS` | Create Search Ad Groups | Create up to 1,000 Search ad groups under a Microsoft Advertising campaign. Ad groups default to Paused. HTTP success can include failed items, represented by null ad_group_ids and indexed partial_errors. |
| `MICROSOFT_ADVERTISING_CREATE_SEARCH_CAMPAIGNS` | Create Search Campaigns | Create up to 100 Search campaigns with unshared budgets in a Microsoft Advertising account. Campaigns default to Paused. HTTP success can include failed items, represented by null campaign_ids and indexed partial_errors. |
| `MICROSOFT_ADVERTISING_DELETE_AD_GROUPS` | Delete Ad Groups | Permanently delete 1 to 1,000 ad groups from a Microsoft Advertising campaign. This destructive operation cannot be undone. A successful HTTP response can still contain item-level failures in partial_errors. |
| `MICROSOFT_ADVERTISING_DELETE_CAMPAIGNS` | Delete Campaigns | Permanently delete 1 to 100 campaigns from a Microsoft Advertising account. This destructive operation cannot be undone. A successful HTTP response can still contain item-level failures, which are preserved in partial_errors. |
| `MICROSOFT_ADVERTISING_GENERATE_ACCOUNT_PERFORMANCE_REPORT` | Generate Account Performance Report | Submit an account-performance report without polling, or check an existing report_request_id once. A submission returns Pending promptly; wait 2 to 15 minutes before checking that ID again until Success. Does not download the ZIP. |
| `MICROSOFT_ADVERTISING_GET_CURRENT_USER` | Get Current Advertising User | Return the connected Microsoft Advertising user and their customer/account roles; optionally look up another accessible user by ID. |
| `MICROSOFT_ADVERTISING_LIST_ACCOUNTS` | List Advertiser Accounts | Return advertiser accounts accessible under a customer, including lifecycle and pause state needed before campaign work. |
| `MICROSOFT_ADVERTISING_LIST_AD_GROUPS` | List Ad Groups | Return ad groups in a Microsoft Advertising campaign. Omit ad_group_ids to use the campaign-wide route, or supply up to 1,000 IDs to use Microsoft's ID-filtered route. ID-filtered responses preserve nullable ad-group slots and partial_errors instead of treating HTTP 200 as complete success. |
| `MICROSOFT_ADVERTISING_LIST_CAMPAIGNS` | List Campaigns | Return campaigns in a Microsoft Advertising account. Omit campaign_ids to use the account-wide route, or supply up to 100 IDs to use Microsoft's ID-filtered route. ID-filtered responses preserve nullable campaign slots and matching partial_errors instead of treating HTTP 200 as complete success. |
| `MICROSOFT_ADVERTISING_LIST_CUSTOMERS` | List Accessible Customers | Return Microsoft Advertising customers accessible to the connected user, optionally filtered by a case-insensitive name prefix. |
| `MICROSOFT_ADVERTISING_UPDATE_AD_GROUPS` | Update Ad Groups | Partially update up to 1,000 ad groups in a Microsoft Advertising campaign. Only supplied fields are sent, so omitted settings remain unchanged. This action is financially consequential: increasing a CPC bid or expanding network reach can increase spend on an active ad group. Inspect partial_errors because Microsoft can accept the request while rejecting individual ad-group patches. |
| `MICROSOFT_ADVERTISING_UPDATE_CAMPAIGNS` | Update Campaigns | Partially update up to 100 campaigns in a Microsoft Advertising account. Only supplied fields are sent, so omitted settings remain unchanged. This action is financially consequential: increasing a budget can increase spend on an active campaign. It can pause campaigns but cannot activate them; use ACTIVATE_CAMPAIGNS for activation. Inspect partial_errors because Microsoft can accept the request while rejecting individual campaign patches. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to Microsoft Advertising
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["microsoft_advertising"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["microsoft_advertising"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run Microsoft Advertising tools with your agent

Send a request, execute the Microsoft Advertising tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "List all active campaigns in my Microsoft Advertising account"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "List all active campaigns in my Microsoft Advertising account" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to Microsoft Advertising and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["microsoft_advertising"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["microsoft_advertising"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a Microsoft Advertising request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to Microsoft Advertising tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("List all active campaigns in my Microsoft Advertising account")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "List all active campaigns in my Microsoft Advertising account",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native Microsoft Advertising Integration

- Supports both Microsoft Advertising MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Microsoft Advertising data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Microsoft Advertising access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Microsoft Advertising
- Scoped, least privilege access to Microsoft Advertising resources
- Full audit trail of agent actions to support review and compliance

## Use Microsoft Advertising with any AI Agent Framework

Choose a framework you want to connect Microsoft Advertising with:

- [ChatGPT](https://composio.dev/toolkits/microsoft_advertising/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/microsoft_advertising/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/microsoft_advertising/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/microsoft_advertising/framework/atomic-agent)

## 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 Ads](https://composio.dev/toolkits/googleads) - Google Ads is Google's online advertising platform for creating, managing, and optimizing digital campaigns. It helps businesses reach targeted customers and maximize return on ad spend.
- [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.

## Frequently Asked Questions

### Do I need my own developer credentials to use Microsoft Advertising with Composio?

Yes, Microsoft Advertising requires you to configure your own OAuth credentials. Once set up, Composio handles token storage, refresh, and lifecycle management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

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