Adbutler

by adbutler

175 downloads
Not rated
GitHub

About

MCP server for the AdButler ad management API — 36 tools for AI assistants

Details

Author
adbutler
Downloads
175
Categories
Other

- 600+ tools covering 100% of the AdButler v2 API (604 endpoints)
- 9 workflow prompts for end-to-end tasks (campaign launch, reporting, VAST video, etc.)
- 3 fallback meta-tools: search, describe, and call any API endpoint
- Supports both hosted (Streamable HTTP/SSE) and local stdio deployment
- Works with any MCP client (Claude, ChatGPT, Cursor, Windsurf, Cline)
- Hosted version collects only anonymous usage analytics; self-installed copies collect nothing

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Adbutler
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Two options: hosted (recommended) – configure your MCP client with the URL https://mcp.adbutler.com/mcp (or /sse for legacy) and pass your AdButler API key via an Authorization: Bearer header. Local stdio – run npx -y @adbutler/mcp-server with the environment variable ADBUTLER_API_KEY set in your client‘s MCP config. No API key? The hosted server guides you through a free trial signup.

list_advertisers

List all advertisers in your AdButler account

get_advertiser

Get details of a specific advertiser by ID

create_advertiser

Create a new advertiser

update_advertiser

Update an existing advertiser

delete_advertiser

Delete an advertiser

archive_advertiser

Archive an advertiser (soft-delete, can be restored later)

list_archived_advertisers

List all archived advertisers

get_archived_advertiser

Get details of a specific archived advertiser

unarchive_advertiser

Restore an archived advertiser back to active status

list_all_campaigns

List all campaigns across all types

list_campaigns

List all standard campaigns

get_campaign

Get details of a specific standard campaign

create_campaign

Create a new standard campaign

update_campaign

Update an existing standard campaign

delete_campaign

Delete a standard campaign

archive_campaign

Archive a standard campaign (soft-delete, can be restored later)

list_archived_campaigns

List all archived standard campaigns

get_archived_campaign

Get details of a specific archived standard campaign

delete_archived_campaign

Permanently delete an archived standard campaign

unarchive_campaign

Restore an archived standard campaign back to active status

get_campaign_conversion_tag

Get conversion tag for a campaign

get_campaign_eligible_zones

Get eligible zones for a campaign

campaign_bulk_create_catalog_ad_items

Bulk create catalog ad items in a campaign

campaign_bulk_delete_catalog_ad_items

Bulk delete catalog ad items from a campaign

list_campaign_assignments

List all campaign assignments (ad items assigned to campaigns)

get_campaign_assignment

Get details of a specific campaign assignment

create_campaign_assignment

Create a new campaign assignment (assign an ad item to a campaign)

update_campaign_assignment

Update an existing campaign assignment

delete_campaign_assignment

Delete a campaign assignment

list_channels

List all channels

get_channel

Get details of a specific channel

create_channel

Create a new channel

update_channel

Update an existing channel

delete_channel

Delete a channel

archive_channel

Archive a channel (soft-delete, can be restored later)

list_archived_channels

List all archived channels

get_archived_channel

Get details of a specific archived channel

delete_archived_channel

Permanently delete an archived channel

unarchive_channel

Restore an archived channel back to active status

list_channel_zone_assignments

List all channel zone assignments

get_channel_zone_assignment

Get details of a specific channel zone assignment

create_channel_zone_assignment

Assign a zone to a channel

delete_channel_zone_assignment

Remove a zone from a channel

list_all_zones

List all zones across all types (standard, email, catalog)

list_zones

List all standard zones

get_zone

Get details of a specific standard zone

create_zone

Create a new standard zone. Set dimensions to "dynamic" for a dynamic zone (width/height must be 0), or "fixed" (default) for a fixed-size zone.

update_zone

Update an existing standard zone

delete_zone

Delete a standard zone

get_zone_tag

Get the ad serving tag (embed code) for a zone

get_zone_conversion_tag

Get the conversion tracking tag for a standard zone

generate_bulk_zone_tags

Generate ad serving tags for multiple zones at once

archive_zone

Archive a standard zone (soft-delete, can be restored later)

list_archived_zones

List all archived standard zones

get_archived_zone

Get details of a specific archived standard zone

unarchive_zone

Restore an archived standard zone back to active status

list_email_zones

List all email zones

get_email_zone

Get details of a specific email zone

create_email_zone

Create a new email zone for serving ads in email newsletters

update_email_zone

Update an existing email zone

delete_email_zone

Delete an email zone

get_email_zone_tag

Get the ad serving tag for an email zone

get_email_zone_conversion_tag

Get the conversion tracking tag for an email zone

archive_email_zone

Archive an email zone

list_archived_email_zones

List all archived email zones

get_archived_email_zone

Get details of a specific archived email zone

unarchive_email_zone

Restore an archived email zone back to active status

list_catalog_zones

List all catalog zones (for product/retail ad serving)

get_catalog_zone

Get details of a specific catalog zone

create_catalog_zone

Create a new catalog zone for product/retail ad serving

update_catalog_zone

Update an existing catalog zone

delete_catalog_zone

Delete a catalog zone

get_catalog_zone_tag

Get the ad serving tag for a catalog zone

list_publishers

List all publishers in your AdButler account

get_publisher

Get details of a specific publisher

create_publisher

Create a new publisher

update_publisher

Update an existing publisher

delete_publisher

Delete a publisher

archive_publisher

Archive a publisher (soft-delete, can be restored later)

list_archived_publishers

List all archived publishers

get_archived_publisher

Get details of a specific archived publisher

unarchive_publisher

Restore an archived publisher back to active status

list_ad_items

List all ad items (banners) across all types (image, custom HTML, rich media, native, catalog)

list_image_ad_items

List all image ad items

get_image_ad_item

Get details of a specific image ad item

create_image_ad_item

Create a new image ad item (banner)

update_image_ad_item

Update an existing image ad item

delete_image_ad_item

Delete an image ad item

get_image_ad_item_conversion_tag

Get conversion tracking tag for an image ad item

list_custom_html_ad_items

List all custom HTML ad items

get_custom_html_ad_item

Get details of a specific custom HTML ad item

create_custom_html_ad_item

Create a new custom HTML ad item

update_custom_html_ad_item

Update an existing custom HTML ad item

delete_custom_html_ad_item

Delete a custom HTML ad item

get_custom_html_ad_item_conversion_tag

Get conversion tracking tag for a custom HTML ad item

list_rich_media_ad_items

List all rich media ad items

get_rich_media_ad_item

Get details of a specific rich media ad item

create_rich_media_ad_item

Create a new rich media ad item

update_rich_media_ad_item

Update an existing rich media ad item

delete_rich_media_ad_item

Delete a rich media ad item

get_rich_media_ad_item_conversion_tag

Get conversion tracking tag for a rich media ad item

list_native_ad_items

List all native ad items

get_native_ad_item

Get details of a specific native ad item

create_native_ad_item

Create a new native ad item using a native template

update_native_ad_item

Update an existing native ad item

delete_native_ad_item

Delete a native ad item

get_native_ad_item_conversion_tag

Get conversion tracking tag for a native ad item

list_catalog_ad_items

List all catalog ad items

get_catalog_ad_item

Get details of a specific catalog ad item

create_catalog_ad_item

Create a new catalog ad item

update_catalog_ad_item

Update an existing catalog ad item

delete_catalog_ad_item

Delete a catalog ad item

convert_native_to_image

Convert a native ad item to an image ad item

list_all_creatives

List all creatives across all types (image, rich media, video, audio)

list_creatives

List all image creatives

get_creative

Get details of a specific image creative

create_creative

Create a new image creative. The API uses multipart file upload — pass the media group ID and file attributes.

update_creative

Update an existing image creative

delete_creative

Delete an image creative

list_rich_media_creatives

List all rich media creatives

get_rich_media_creative

Get details of a specific rich media creative

create_rich_media_creative

Create a new rich media creative. The API uses multipart file upload (ZIP for HTML5).

update_rich_media_creative

Update an existing rich media creative

delete_rich_media_creative

Delete a rich media creative

list_video_creatives

List all video creatives

get_video_creative

Get details of a specific video creative

create_video_creative

Create a new video creative. The API uses multipart file upload.

update_video_creative

Update an existing video creative

delete_video_creative

Delete a video creative

list_audio_creatives

List all audio creatives

get_audio_creative

Get details of a specific audio creative

create_audio_creative

Create a new audio creative. The API uses multipart file upload.

update_audio_creative

Update an existing audio creative

delete_audio_creative

Delete an audio creative

replace_image_creative_file

Replace the file on an image creative

replace_rich_media_creative_file

Replace the file on a rich media creative

replace_video_creative_file

Replace the file on a video creative

replace_audio_creative_file

Replace the file on an audio creative

list_placements

List all placements (assignments of ad items to zones)

get_placement

Get details of a specific placement

create_placement

Create a new placement (assign an ad item or campaign to a zone or channel)

update_placement

Update an existing placement

delete_placement

Delete a placement (remove an ad item from a zone)

get_placement_conversion_tag

Get conversion tracking tag for a placement

list_native_templates

List all native ad templates

get_native_template

Get details of a specific native template

create_native_template

Create a new native ad template with HTML and variable placeholders

update_native_template

Update an existing native template. Variables uses add/remove format for updates.

delete_native_template

Delete a native template

list_schedules

List all schedules (time-based delivery rules for ad items)

get_schedule

Get details of a specific schedule

create_schedule

Create a new schedule for time-based ad delivery. Schedules are automatically linked to ad items via placements.

update_schedule

Update an existing schedule

delete_schedule

Delete a schedule

list_media_groups

List all media groups (collections of creatives)

get_media_group

Get details of a specific media group

create_media_group

Create a new media group

update_media_group

Update an existing media group

delete_media_group

Delete a media group

list_data_keys

List all data keys (custom key-value targeting variables)

get_data_key

Get details of a specific data key

create_data_key

Create a new data key for custom targeting

update_data_key

Update an existing data key

delete_data_key

Delete a data key

list_data_key_targets

List all data key targets (targeting rules using data key values)

get_data_key_target

Get details of a specific data key target

create_data_key_target

Create a new data key target (targeting rule)

update_data_key_target

Update an existing data key target

delete_data_key_target

Delete a data key target

list_day_partings

List all day parting rules (time-of-day targeting)

get_day_parting

Get details of a specific day parting rule

create_day_parting

Create a new day parting rule for time-of-day targeting. Ranges is an object with day names as keys and arrays of time range strings (e.g. "09:00:00-17:00:00") as values.

update_day_parting

Update an existing day parting rule

delete_day_parting

Delete a day parting rule

list_geo_targets

List all geo targets (geographic targeting rules)

get_geo_target

Get details of a specific geo target

create_geo_target

Create a new geo target for geographic targeting. Areas is an array of objects with continent, country (2-letter code), region, city fields.

update_geo_target

Update an existing geo target

delete_geo_target

Delete a geo target

list_postal_code_targets

List all postal code targets

get_postal_code_target

Get details of a specific postal code target

create_postal_code_target

Create a new postal code target

update_postal_code_target

Update an existing postal code target

delete_postal_code_target

Delete a postal code target

list_list_targets

List all list targets (allowlist/blocklist targeting)

get_list_target

Get details of a specific list target

create_list_target

Create a new list target (inclusion/exclusion using a data list)

update_list_target

Update an existing list target

delete_list_target

Delete a list target

list_platform_targets

List all platform targets (device/OS/browser targeting)

get_platform_target

Get details of a specific platform target

create_platform_target

Create a new platform target for device/OS/browser targeting

update_platform_target

Update an existing platform target

delete_platform_target

Delete a platform target

list_data_targets

List all data targets

remove_list_target_usages

Remove all usages of a list target

get_display_report

Get display advertising report with impressions, clicks, and CTR

get_vast_report

Get VAST video advertising report

get_event_logs

Get event logs for account activity (changes, logins, etc.)

get_click_details_report

Get click details report

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "adbutler": {
            "adbutler": {
                "command": "npx",
                "args": [
                    "-y",
                    "@adbutler/mcp-server"
                ],
                "env": {
                    "ADBUTLER_API_KEY": "your_api_key_here"
                }
            }
        }
    }
}

McpServers

{
    "adbutler": {
        "command": "npx",
        "args": [
            "-y",
            "@adbutler/mcp-server"
        ],
        "env": {
            "ADBUTLER_API_KEY": "your_api_key_here"
        }
    }
}

AdButler MCP Server

npm
License: MIT

Manage your entire AdButler account from any AI assistant — Claude, ChatGPT, Cursor, Windsurf, Cline, and any other Model Context Protocol client.

This MCP server exposes the full AdButler v2 API — 600+ tools covering advertisers, campaigns, zones, creatives, placements, VAST video ads, programmatic / RTB, reporting, targeting, drafts, contracts, product catalogs, and more — plus 9 pre-built workflow prompts that walk an AI through common tasks like launching a campaign or setting up retail media.

What you can ask

> "Create a new campaign for Pepsi targeting users in Canada with a $5,000 lifetime budget, and assign it to my Homepage Banner zone."

> "Show me the top 10 underperforming ad items in the last 7 days by CTR."

> "Set up a VAST 4.2 pre-roll campaign with a 30-second skippable creative and three companion banners."

> "Walk me through creating a new programmatic deal."

> "Audit my ad units — which zones have no active placements?"

The AI translates these into the right sequence of AdButler API calls, runs them, and shows you the result.

Install

You have two options. Most users want the hosted version — zero setup, just paste a URL.

Option A — Hosted (recommended)

Use AdButler's hosted MCP server. No install, no Node, no npm.

The hosted server speaks both modern Streamable HTTP (/mcp) and legacy SSE (/sse) transports. New clients should prefer Streamable HTTP; SSE remains for backward compatibility.

| Client | Configuration |
|--------|---------------|
| Claude Desktop / Code | Add an MCP server with URL https://mcp.adbutler.com/mcp (or /sse for older clients) and header Authorization: Bearer YOUR_ADBUTLER_API_KEY |
| Cursor | Settings → Features → Model Context Protocol → Add server with the URL + auth header above |
| Any MCP client | Streamable HTTP: https://mcp.adbutler.com/mcp  ·  SSE: https://mcp.adbutler.com/sse — pass your API key via Authorization: Bearer … or ?api_key=… |

Option B — Local stdio (npm)

Run the server locally as a Node process. Useful if you want to keep your API key out of any external service or run against a self-hosted AdButler.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "adbutler": {
      "command": "npx",
      "args": ["-y", "@adbutler/mcp-server"],
      "env": {
        "ADBUTLER_API_KEY": "your_api_key_here"
      }
    }
  }
}

Claude Code

claude mcp add adbutler --env ADBUTLER_API_KEY=your_api_key_here -- npx -y @adbutler/mcp-server

Cursor / Windsurf / Cline

Add to the client's MCP config:

{
  "mcpServers": {
    "adbutler": {
      "command": "npx",
      "args": ["-y", "@adbutler/mcp-server"],
      "env": { "ADBUTLER_API_KEY": "your_api_key_here" }
    }
  }
}

Get your AdButler API key

AdButler Dashboard → Settings → API Keys → create a new key. It's the same key the AdButler v2 REST API uses.

Authentication

The AdButler MCP works for both new and existing customers. What you see depends on whether you've already configured an API key.

Already an AdButler customer? (existing API key)

Use one of these:

Option 1 — set the API key in your client config (recommended for hosted)

Add an Authorization: Bearer YOUR_ADBUTLER_API_KEY header on the SSE connection. Examples:

- Claude Desktop — edit claude_desktop_config.json → add headers: { "Authorization": "Bearer YOUR_API_KEY" } next to the SSE URL
- Cursor — MCP server settings → Headers → add Authorization: Bearer YOUR_API_KEY
- Any client — pass the header on the SSE GET to https://mcp.adbutler.com/sse

Reconnect — all 600+ tools become available immediately.

Option 2 — configure inside the chat (works in any MCP client)

If your client doesn't support custom headers, just connect to the hosted MCP without auth and you'll see four onboarding tools. Then in the chat say:

> "Configure my AdButler API key: your_api_key_here"

Your AI will call the setup_api_key tool, validate the key against your account, and unlock all the AdButler tools. You may need to disconnect and reconnect to refresh your client's tool list after.

New to AdButler? (no account yet)

Connect to the hosted MCP without auth. The chat will guide you through a free trial signup using create_trial_account → check your email → verify_trial_email with the code. The API key is configured automatically.

Local stdio install

If you're running locally via npx, set ADBUTLER_API_KEY in the env block of your client's MCP config (see Option B above). The setup tools also work — and on local the key is remembered between sessions.

What's included

9 workflow prompts

Pre-built skill prompts that guide the AI through complete workflows end-to-end. Invoke them as MCP prompts (/launch-campaign etc.) from your client.

| Prompt | What it does |
|--------|--------------|
| launch-campaign | Walks an end-to-end campaign launch — advertiser → campaign → ad items → creatives → targeting → placements |
| retail-media-setup | Sets up sponsored products / retail media for an e-commerce site |
| reporting | Generates a custom report with the right dimensions and filters |
| vast-video | Builds a VAST video ad with linear + companion creatives |
| programmatic | Configures programmatic deals, bidders, and demand sources |
| targeting | Builds geo / platform / data-key / list targets |
| contracts | Creates IO contracts and assigns them to campaigns |
| channels | Bundles zones into a channel and assigns campaigns |
| drafts | Stages a complete campaign as drafts before going live |

3 fallback meta-tools (search, describe, call)

When you need an endpoint that no specific tool wraps — or when the user asks about a field (e.g. "priority", "frequency cap") rather than a resource — three escape-hatch tools cover the gap:

| Tool | What it does |
|------|--------------|
| search_adbutler_api | Keyword-search the full AdButler OpenAPI spec for matching endpoints |
| describe_adbutler_api | Get the full schema (params, body, response) for one endpoint |
| call_adbutler_api | Invoke any endpoint by method+path, with the session's auth applied automatically |

These complement (don't replace) the specific tools below — the LLM continues to prefer specific tools when they obviously match.

600+ tools across the full AdButler API

| Domain | Tools | Examples |
|--------|------:|----------|
| Display ads | 100+ | list_advertisers, create_campaign, create_image_ad_item, create_native_ad_item, create_placement, create_schedule, create_campaign_assignment |
| VAST 2/3/4 video | 156 | vast_create_creative, vast_create_linear_media, vast_create_companion, vast_create_placement, vast_create_schedule, plus full VAST 4.2 sub-resource coverage |
| Zones & publishing | 50+ | create_zone, create_zone_catalog, create_zone_email, create_native_template, create_publisher, ORTB native assets |
| Targeting | 37 | create_geo_target, create_platform_target, create_data_key, create_data_list, create_postal_code_target |
| Reporting | 39 | get_display_report, get_vast_report, get_event_logs, custom report configs, scheduled reports |
| Programmatic / RTB | 25 | create_demand_source, create_demand_endpoint, create_bidder, create_pmp_deal |
| Product catalogs | 20 | create_product_db_catalog, bulk_upload_products, ad item ↔ catalog item linking |
| Drafts | 48 | Stage campaigns/ad items/placements/schedules as drafts; publish atomically |
| Contracts | 43 | Insertion orders, contract documents, signature requests, payments |
| Account & security | 27 | Users, roles, redirect domains, beacon signing keys, SFTP connections |
| Ad serving | 2 | serve_ad, live_website_preview |

100% coverage of the AdButler v2 OpenAPI spec (604/604 endpoints).

Telemetry

The hosted server at mcp.adbutler.com collects usage analytics so we can understand which tools are popular, prioritize improvements, and diagnose failures. We capture, per tool call:

- Tool name (e.g. list_zones, create_campaign) — never tool arguments
- Account ID (derived once per session from /self)
- API-key fingerprint (SHA-256, truncated to 16 hex chars) — identifies which key was used without storing the key itself
- Transport (HTTP or SSE), MCP client name and version (e.g. Claude Desktop), call duration, success/error status
- On errors: upstream HTTP status code, a categorical error class (e.g. forbidden, network), and the error message text (truncated to 1000 characters)

We never collect: tool arguments, response bodies, your raw API key, IP addresses, request bodies. The instrumentation only sees the tool name, timing, and (on failure) the error message produced by the MCP server or AdButler API.

Self-installed copies — npm package, stdio, your own deployment — collect zero data. The instrumentation only fires when the ANALYTICS_INGEST_URL environment variable is set, which is only true for the hosted endpoint at mcp.adbutler.com.

If you'd prefer to opt out of analytics on the hosted server, run your own copy via stdio or self-host the SSE/HTTP server.

Development

Local source for contributors:

git clone https://github.com/adbutler/mcp-server
cd mcp-server
npm install
npm run build
ADBUTLER_API_KEY=your_key node dist/index.js

Inspect with the official MCP inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Resources

- AdButler API documentation — https://api.adbutler.com/openapi.json
- MCP Protocol — https://modelcontextprotocol.io
- Hosted server status — https://mcp.adbutler.com/health
- Issues / feature requests — https://github.com/adbutler/mcp-server/issues

License

MIT

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.