MCP Server

Connect AI agents like ChatGPT, Claude, or custom clients to Kevel through a standard Model Context Protocol (MCP) server.

Kevel's MCP server gives agents secure, read-only access to campaign, inventory, reporting, forecasting, and related network data using your existing Kevel API key.

Overview

Kevel's MCP server lets AI agents query Kevel through a standard MCP interface instead of integrating directly with multiple APIs. The server is read-only and is designed for safe exploration and analysis of data across your network.

Use cases include:

  • Reviewing advertisers, campaigns, flights, ads, creatives, and targeting
  • Querying inventory such as channels, sites, and zones
  • Running and polling reports
  • Checking forecasts and ad products
  • Reading catalog, content, and job data
  • Requesting ad decisions for analysis or testing

How to use

Before you begin

You will need:

  • Access to the Kevel Management UI
  • A valid Kevel API key

To generate an API key:

  • Open the Kevel Management UI
  • Go to Settings
  • Generate or copy an API key
πŸ“˜

Please note

We recommend generating a new API key specifically for MCP usage rather than reusing a shared key. This makes it possible to audit on a per-user basis, since each key can be associated with a single user and use case.

Connect to the MCP server

Add the Kevel MCP server to your MCP-compatible client using:

Server URL: https://mcp.kevel.com/
Authentication: Kevel API key

After adding the server, authenticate using your API key from the Kevel Management UI.

The exact setup flow depends on the client you are using. Setup steps for the most common clients are below.

Claude

Custom remote MCP connectors are available on Claude Pro, Max, Team, and Enterprise plans. On Team and Enterprise plans, an Owner must add the connector at the organization level before individual members can enable it.

  1. Open Claude in your browser and click your profile icon, then Settings.
  2. In the sidebar, click Connectors.
  3. Scroll to the bottom and click Add custom connector.
  4. Enter:
    • Name: Kevel
    • Remote MCP server URL: https://mcp.kevel.com/
  5. Click Add.
  6. Back on the Connectors page, open the new Kevel connector and connect using your Kevel API key when prompted.

Once connected, Kevel tools will appear automatically in your Claude conversations.

ChatGPT

Custom MCP connectors in ChatGPT require Developer Mode, which is available on Pro, Plus, Business, Enterprise, and Edu plans. On Business and Enterprise/Edu workspaces, an admin must first enable Developer Mode in workspace settings before users can add connectors.

  1. In ChatGPT, go to Settings β†’ Apps & Connectors β†’ Advanced settings.
  2. Toggle Developer Mode to ON and confirm the warning.
  3. Return to Apps & Connectors and click Add new connector.
  4. Enter:
    • Name: Kevel
    • Description: Kevel ad server (optional)
    • MCP Server URL: https://mcp.kevel.com/
  5. Complete the connector setup and authenticate with your Kevel API key when prompted.

Enabling Developer Mode disables ChatGPT memory automatically.

Cursor

Cursor supports remote MCP servers via the mcp.json configuration file. You can scope the server globally or per project.

  1. Open Cursor and go to Settings β†’ Tools & Integrations (or Tools on the Free plan).

  2. Under MCP Tools, click Add Custom MCP. Cursor opens the mcp.json file.

    • Global config lives at ~/.cursor/mcp.json (macOS/Linux) or %USERPROFILE%\.cursor\mcp.json (Windows).
    • Project-scoped config lives at .cursor/mcp.json in your project root.
  3. Add the Kevel server entry:

    {
      "mcpServers": {
        "kevel": {
          "url": "https://mcp.kevel.com/"
        }
      }
    }
  4. Save the file. Cursor will prompt you to authenticate with your Kevel API key. A green dot next to the server name indicates a successful connection.

Other clients

For client-specific setup instructions not covered above, refer to your MCP client's documentation. This is the best place to find the latest steps for MCP-compatible tools.

Verifying the connection

In any client, ask the agent to list available tools or run a simple read, for example:

List my advertisers in Kevel.

The agent should call kevel_list_advertisers and return results from your network.

Available tools

Reporting (7 tools)

  • kevel_create_report β€” Create async queued report (returns GUID)
  • kevel_get_report β€” Poll for queued report results
  • kevel_get_instant_counts β€” Real-time counts for a single entity (90-day window)
  • kevel_get_bulk_counts β€” Real-time counts for multiple entities
  • kevel_list_report_runs β€” List report execution history
  • kevel_list_scheduled_reports β€” List scheduled reports
  • kevel_get_scheduled_report β€” Get scheduled report by ID

Management (34 tools)

  • kevel_list_advertisers β€” List/search advertisers
  • kevel_get_advertiser β€” Get advertiser by ID
  • kevel_create_advertiser β€” Create an advertiser
  • kevel_update_advertiser β€” Update an advertiser (full replace)
  • kevel_list_campaigns β€” List/search campaigns
  • kevel_get_campaign β€” Get campaign by ID
  • kevel_create_campaign β€” Create a campaign under an advertiser
  • kevel_update_campaign β€” Update a campaign (full replace)
  • kevel_list_flights β€” List flights (filter by campaign/advertiser)
  • kevel_get_flight β€” Get flight by ID
  • kevel_create_flight β€” Create a flight under a campaign
  • kevel_update_flight β€” Update a flight (full replace)
  • kevel_list_ads β€” List ads (filter by flight)
  • kevel_get_ad β€” Get ad by ID
  • kevel_create_ad β€” Attach a creative to a flight (create ad)
  • kevel_update_ad β€” Update an ad (flight-creative mapping)
  • kevel_list_creatives β€” List creatives (filter by advertiser)
  • kevel_get_creative β€” Get creative by ID
  • kevel_create_creative β€” Create a creative under an advertiser
  • kevel_update_creative β€” Update a creative (full replace)
  • kevel_list_creative_templates β€” List creative templates
  • kevel_get_creative_template β€” Get creative template by ID
  • kevel_create_creative_template β€” Create a creative template
  • kevel_list_segments β€” List segments
  • kevel_get_segment β€” Get segment by ID
  • kevel_create_segment β€” Create a segment
  • kevel_update_segment β€” Update a segment (full replace)
  • kevel_list_priorities β€” List priorities (filter by channel)
  • kevel_get_priority β€” Get priority by ID
  • kevel_create_priority β€” Create a priority under a channel
  • kevel_update_priority β€” Update a priority (full replace)
  • kevel_list_advertiser_segments β€” List segments for an advertiser
  • kevel_list_flight_categories β€” List flight categories
  • kevel_get_entity_counts β€” Get counts of all entity types

Inventory (18 tools)

  • kevel_list_channels β€” List channels
  • kevel_get_channel β€” Get channel by ID
  • kevel_create_channel β€” Create a channel
  • kevel_update_channel β€” Update a channel (full replace)
  • kevel_list_channel_priorities β€” Get priorities for a channel
  • kevel_list_channels_for_site β€” List channels for a site
  • kevel_list_sites β€” List sites (filter by channel)
  • kevel_get_site β€” Get site by ID
  • kevel_create_site β€” Create a site
  • kevel_update_site β€” Update a site (full replace)
  • kevel_list_zones β€” List zones
  • kevel_get_zone β€” Get zone by ID
  • kevel_create_zone β€” Create a zone
  • kevel_update_zone β€” Update a zone (full replace)
  • kevel_list_ad_types β€” List ad types (filter by channel)
  • kevel_list_channel_site_maps β€” List channel-site associations
  • kevel_create_channel_site_map β€” Map a site to a channel
  • kevel_update_channel_site_map β€” Update a channel-site map

Decision (1 tool)

  • kevel_request_decision β€” Request ad decisions

Forecast (8 tools)

  • kevel_create_forecast β€” Create a new forecast (existing/available/deliverable)
  • kevel_list_forecasts β€” List active forecasts
  • kevel_get_forecast β€” Get forecast by ID
  • kevel_list_traffic_modifiers β€” List traffic modifiers
  • kevel_get_traffic_modifier β€” Get traffic modifier by ID
  • kevel_get_forecast_network_settings β€” Get forecast network settings
  • kevel_list_ad_products β€” List ad products
  • kevel_get_ad_product β€” Get ad product (optionally with targeting sets)

Targeting (25 tools)

  • kevel_list_flight_segment_targeting β€” List segment targeting on a flight
  • kevel_get_flight_segment_targeting β€” Get segment targeting rule on a flight
  • kevel_create_flight_segment_targeting β€” Create segment targeting rule on a flight
  • kevel_update_flight_segment_targeting β€” Update segment targeting rule on a flight
  • kevel_delete_flight_segment_targeting β€” Delete segment targeting rule from a flight
  • kevel_list_ad_segment_targeting β€” List segment targeting overrides on an ad
  • kevel_get_ad_segment_targeting β€” Get segment targeting rule on an ad
  • kevel_create_ad_segment_targeting β€” Create segment targeting rule on an ad
  • kevel_update_ad_segment_targeting β€” Update segment targeting rule on an ad
  • kevel_delete_ad_segment_targeting β€” Delete segment targeting rule from an ad
  • kevel_create_flight_sitezone_targeting β€” Create site/zone targeting rule on a flight
  • kevel_update_flight_sitezone_targeting β€” Update site/zone targeting rule on a flight
  • kevel_delete_flight_sitezone_targeting β€” Delete site/zone targeting rule from a flight
  • kevel_list_flight_geo_targeting β€” List geo targeting on a flight
  • kevel_create_flight_geo_targeting β€” Create geo targeting rule on a flight
  • kevel_update_flight_geo_targeting β€” Update geo targeting rule on a flight
  • kevel_delete_flight_geo_targeting β€” Delete geo targeting rule from a flight
  • kevel_list_flight_distance_targeting β€” List distance targeting on a flight
  • kevel_create_flight_distance_targeting β€” Create distance targeting (lat/long + radius) on a flight
  • kevel_update_flight_distance_targeting β€” Update distance targeting on a flight
  • kevel_delete_flight_distance_targeting β€” Delete distance targeting from a flight
  • kevel_list_flight_day_parting β€” List day parting rules on a flight
  • kevel_create_flight_day_parting β€” Create day parting rule on a flight
  • kevel_update_flight_day_parting β€” Update day parting rule on a flight
  • kevel_delete_flight_day_parting β€” Delete day parting rule from a flight

UserDB (2 tools)

  • kevel_read_user β€” Read full user record
  • kevel_get_user_segments β€” Get user's segment IDs

ContentDB (1 tool)

  • kevel_get_content_record β€” Get content record by schema/key

Catalog (7 tools)

  • kevel_list_catalogs β€” List product catalogs
  • kevel_get_catalog β€” Get catalog by ID
  • kevel_list_catalog_items β€” List catalog items (with search)
  • kevel_get_catalog_item β€” Get catalog item by ID
  • kevel_upsert_catalog_items β€” Insert-or-replace catalog items in batch
  • kevel_patch_catalog_items β€” Partially update catalog items in batch
  • kevel_create_ingest_url β€” Mint signed S3 upload URL for bulk catalog ingestion

Jobs (3 tools)

  • kevel_list_jobs β€” List all jobs
  • kevel_get_job β€” Get job by ID
  • kevel_create_job β€” Submit an async batch job

Docs (1 tool)

  • kevel_lookup_docs β€” Look up Kevel reference documentation