# Tool Reference

> **Status: Closed Beta** - Tools and capabilities are subject to change as the beta progresses. This reference reflects the current tool set.


**Important:** New tools are added to the Agent Connector on a regular basis, and this documentation may not always reflect the very latest additions. Your AI agent automatically discovers all available tools when it connects to the MCP server, so we recommend periodically asking your agent what tools are currently available to ensure you're taking advantage of the latest capabilities.

## Overview

The Infillion Agent Connector exposes **60+ tools** that AI agents can discover and invoke. Each tool includes built-in documentation, parameter schemas, and contextual guidance that helps the AI agent understand when and how to use it.

Tools are organized into the following functional areas. Within each area, tools follow consistent patterns: **find_*** tools for search/discovery, **get_*_info** tools for detailed inspection, and action-specific tools for create/update operations.

## Tool Interaction Patterns

### Related Tool Guidance

Each tool includes contextual guidance about related tools - what to call before and after - enabling AI agents to chain operations into coherent workflows without requiring explicit scripting.

### Discovery > Inspection > Action

Most workflows follow a three-step pattern:

1. **Discover** entities using `find_*` tools with filters
2. **Inspect** specific entities using `get_*_info` tools
3. **Act** on entities using `create`, `update`, or specialized tools


For example:


```
find_campaigns(advertiser_id: 242869, status: true)
  > get_campaign_info(campaign_id: 1383420, extended: true)
    > campaign_update(campaign_id: 1383420, pacing: {...})
```

## Organization & Entity Management

### find_organizations

Searches organizations with filters for governance, identity, and contract settings.

### get_organization_info

Retrieves an organization's contract controls, identity policies, exchange seats, and billing configuration.

### find_agencies

Searches agencies with filters for organization, data sharing, MFA posture, and status.

### get_agency_info

Retrieves a single agency's configuration including data sharing settings, MFA inheritance, and organization linkage.

### find_advertisers

Searches advertisers with filters for agency, organization, domain, identity, and compliance flags.

### get_advertiser_info

Retrieves an advertiser's full configuration including cross-strategy settings, MFA inheritance, and vendor attribution pixels.

## Campaign Management

### find_campaigns

Searches campaigns with comprehensive filters including advertiser, agency, organization, date ranges, goal type, status, and more. Returns compact summaries by default; use `full=true` for complete campaign objects or `extended=true` for strategy context. Supports pagination for large result sets (up to 25 per call).

**Key filters:** advertiser_id, agency_id, organization_id, status, goal_type, date ranges (created_on, start_date, end_date), name (partial match)

### get_campaign_info

Retrieves a single campaign's full configuration including budgets, pacing, goals, frequency settings, flight schedules, attribution, and identity settings. Use `extended=true` to include strategy IDs and MFA inheritance.

### campaign_create

Creates a new campaign under a specified advertiser. Requires at minimum: advertiser ID, campaign name, and goals configuration. Supports full configuration of budgets, flights, pacing, frequency, attribution, and inventory settings.

### campaign_update

Applies partial updates to an existing campaign's settings. Only specified fields are modified; omitted fields remain unchanged.

## Strategy Management

### find_strategies

Searches strategies with filters for campaign, advertiser, pacing, goals, supply type, media type, and targeting flags. Supports `full` and `extended` modes for detailed payloads.

**Key filters:** campaign_id, advertiser_id, agency_id, status, goal_type, media_type, supply_type, pacing_type

### get_strategy_info

Retrieves comprehensive strategy configuration including pacing, goals, inventory, and targeting details. Use `extended=true` for audience/contextual group details and full targeting breakdowns.

### strategy_create

Creates a new strategy under an existing campaign. Requires campaign ID, strategy name, and goal configuration. Supports full configuration of pacing, frequency, budget, inventory (exchanges, deals, site lists), targeting (audience, contextual, geo, daypart, technology), and creative assignments.

**Business rules:**

- `goal_type` cannot be `roi` or `cpa` unless `use_optimization` is true and a merit pixel is set on the parent campaign.
- `spend` goal type is only supported when `use_optimization` is false.


### strategy_update

Applies partial updates to an existing strategy. Supports modification of all strategy fields including goals, pacing, targeting, inventory, and creative assignments.

## Concepts (Creative Groups)

### find_concepts

Searches concepts by advertiser, status, or name. Concepts group creatives together and are referenced by strategies.

> **Note:** "Creative group" and "concept" are interchangeable terms in MediaMath.


### get_concept_info

Retrieves concept metadata including advertiser ownership and attached creative/strategy associations.

### creative_group_create

Creates a new creative group (concept) under a given advertiser. Requires advertiser ID and a name. Status defaults to active if omitted. Use `get_concept_info` to verify creation, then attach creatives via `atomic_creative_update` by setting `concept_id`.

## Creative Management

### find_atomic_creatives

Searches atomic creatives (the base creative object for display, video, and native) with filters for advertiser, concept, dimensions, format, approval status, file type, and more.

**Key filters:** advertiser_id, concept_id, ad_format, width/height, approval_status, media_type, file_type

### get_atomic_creative_info

Retrieves a single atomic creative's full configuration including dimensions, tags, approval status, click-through URL, and metadata.

### get_atomic_creative_preview

Returns a focused preview of an atomic creative with visual properties, dimensions, ad tag, and preview URL. A lighter alternative to full info when only preview details are needed.

### atomic_creative_create

Creates a new 3PAS display atomic creative from a third-party ad server (TPAS) tag. Requires advertiser ID, creative name, and dimensions. Supply `tag` and `tag_type` (`SCRIPT` or `IMG`) for third-party tags.

### atomic_creative_update

Applies partial updates to an existing display atomic creative. Only specified fields are modified; omitted fields remain unchanged.

### atomic_creative_healthcheck

Checks exchange approval status for display and video creatives across advertising exchanges (AppNexus, Google AdX, MoPub, Microsoft Ad Exchange, etc.). Returns per-exchange approval status and net health.

**Accepts:** Single creative ID or array of up to 100 IDs for bulk checking.

### mmas_creative_upload

Uploads a display creative (JPG, PNG, GIF, or HTML5 ZIP) to MMAS (MediaMath Ad Server) to create one or more hosted display atomic creatives. Also known as: **MMAS creative**, **MMAS display creative**, **HTML5 creative**. Supports two input modes:

- **Public URL**: supply `file_source` (public HTTPS URL) - the server fetches the file server-side.
- **Interactive file picker**: call with only `advertiser_id` (no file URL) to open the MCP App upload form (`ui://display-creative-upload`). The form reads the selected file as base64 in-browser and sends it over the MCP connection - no public URL required. **When no file URL is provided - including all requests for HTML5, MMAS, or MMAS display creatives - the form is opened automatically.**


The upload form includes inline **typeahead search** for the Advertiser field: users can type a name to search matching advertisers, then select from a dropdown. Submission rows include the same lookup for Creative Group (concept) filtered to the selected advertiser.

**Multi-file batch upload**: the file picker accepts multiple files simultaneously. Each file gets its own submission row and is uploaded in a separate API call; results are shown in a combined table.

**ZIP auto-detection**: when a ZIP is selected in the form, the content is parsed in-browser to pre-fill submission rows automatically:

- **HTML5 bulk mode**: nested ZIPs produce one submission per nested ZIP, with `name` set to the nested ZIP filename and `backup` auto-detected from the first image (JPG/JPEG/PNG/GIF) in the same directory.
- **Image bulk mode**: no nested ZIPs produce one submission per image file found in the ZIP.


**`submissions` array**: required when a file is provided. Each entry specifies the creative `name`, `click_through_url`, and `concept_id`. For HTML5 ZIPs with a backup image, include `backup` (image filename within the ZIP). The form pre-fills these fields automatically when ZIP auto-detection runs.

**Returns:** created creative IDs and platform preview/edit links per creative. Returns `prefill` only when no file is provided (form-open response).

### find_native_creatives

Searches native (component) creatives with filters for advertiser, organization, status, and text search. Native creatives contain component assets like title, body, images, and videos.

### get_native_creative_info

Retrieves detailed information for a single native creative including all component assets, clickthrough URLs, concept information, and optional preview data.

### native_creative_create

Creates native (component) creatives in bulk from a ZIP file containing image/logo assets and a `creatives_bulk_native.xlsx` manifest. Each data row in the Excel produces one creative.

Supply the ZIP via one of two inputs (mutually exclusive):

- `zip_source_url` - public HTTPS URL; the server fetches the ZIP directly.
- `zip_base64` - base64-encoded ZIP content sent by the MCP App file picker over the MCP connection.


When called with neither input, the tool opens the MCP App upload form pre-filled with `advertiser_id` and `concept_id`. The form includes inline **typeahead search** for the Advertiser and Creative Group fields: type a name to search, then select from the dropdown to populate the numeric ID automatically.

**Requires:** `advertiser_id` (optional when opening the form); `concept_id` as fallback when a row's `Group Name (ID)` column is blank.

**Returns:** `bulk_results` array with per-row status and created creative IDs, plus a `summary` with total/succeeded/failed counts. Returns `prefill` only when no ZIP is provided (form-open response).

### native_creative_update

Applies changes to an existing native creative. Partial update - only supplied fields are modified. When `assets` is provided it **replaces all existing assets** (full replacement, not merge). Supports `asset_source_url` on individual assets to supply images or videos by public HTTPS URL without encoding binary in the context window.

**Requires:** `atomic_creative_id`.

### get_native_creative_approvals

Checks approval status for native/component creatives across advertising sources. Use this instead of `atomic_creative_healthcheck` for native creatives.

### get_video_creative_info

Retrieves detailed information for a single video creative including duration, encoding status, VAST version, security status, companion ads, event pixels, and vendor information.

### list_video_creatives

Retrieves video creative details for multiple creatives at once by providing an array of creative IDs. Accepts 1 to 100 creative IDs per call. Returns encoding status, VAST version, readiness-to-serve status, duration, security status, and vendor information for each creative. Use this for bulk inspection of video creatives, such as confirming encoding completion or readiness before assigning to campaigns.

**Use when:** You have multiple video creative IDs (from `find_atomic_creatives` or an external system) and need to check their details or status in a single call rather than calling `get_video_creative_info` individually for each one.

### video_creative_create

Creates a new Third Party Ad Served (3PAS) video creative. Requires advertiser ID, creative name, concept ID, and either inline VAST XML or a VAST URL.

### video_creative_update

Applies partial updates to an existing video creative. Supports both T1AS and 3PAS creatives.

### video_creative_bulk_create

Creates multiple Third Party Ad Served (3PAS) video creatives in a single bulk operation. Accepts an array of creatives - each requiring advertiser ID, creative name, concept ID, and either inline VAST XML or a VAST URL. Returns a `data` array of created creatives (each including `platform_preview_links` with preview and edit URLs) and an `errors.field_error` array for any per-item failures (indexed by request position).

### video_creative_bulk_update

Applies partial updates to multiple existing video creatives in a single bulk operation. Each item must include `id`; only specified fields are modified, omitted fields remain unchanged. Returns a `data` array of updated creatives (each including `platform_preview_links` with preview and edit URLs) and an `errors.field_error` array for any per-item failures.

## Inventory & Supply

### find_supply_sources

Searches supply sources with filters for RTB settings, inventory capabilities (display, video, mobile, CTV), fraud filtering, and PMP enablement.

### get_supply_source_info

Retrieves full supply source configuration including RTB settings, inventory flags, attribution groups, and seat identifiers.

### find_site_lists

Searches site lists by name, organization, status, and restriction type (INCLUDE or EXCLUDE).

### get_site_list_info

Retrieves a site list's restriction mode, organization ownership, and content counts.

### site_list_create

Creates a new site list under an organization. Requires organization ID, site list name, and restriction (INCLUDE or EXCLUDE). Accepts `domains`, `app_ids`, and `primary_seller_ids`; at least one of these must be provided, with a combined maximum of 1000 entries. Optionally accepts status.

### find_publishers

Searches publishers by name or ID within an organization. Requires `organization_id`. Supports exact and wildcard name matching (e.g., `name*`, `*name*`), pagination, and sorting.

### find_target_values

Searches geo, technology, and video targeting values by name and/or dimension code. Returns the numeric `id` for each match — these IDs are what you supply in `strategy_update` targeting payloads (e.g. `targeting.location`, `targeting.technology`).

**Supported dimension codes:**

- **Geo:** DMAX (DMA), COUNTRY, REGN (Region), CITY
- **Technology:** BSER (Browser), BRLG (Browser Language), CSPD (Connection Speed), DVMD (Device Make), DVCE (Device Type), ISPX (ISP), OSXX (Operating System), INVT (Inventory Type)
- **Video:** VAUD, VCON, VLIN, VPLC, VPSZ, VSKP


Pass a comma-separated list of codes to search across multiple dimensions at once (e.g. `dimension_code: "DMAX,COUNTRY,REGN,CITY"` to find any geo value named "New York"). At least one of `name` (minimum 3 characters) or `dimension_code` is required.

**Use when:** Looking up a DMA, country, browser, OS, ISP, or device ID before applying targeting to a strategy.

**Use when:** Looking up a publisher ID before creating or updating a deal.

### get_channels_info

Retrieves all available advertising channels (e.g., display, video). Takes no parameters and returns the complete list of channels with their IDs and names.

**Use when:** Looking up a channel ID by name before creating or updating a deal.

### find_deals

Searches PMP deals with filters for name, deal identifier, status, deal type (STANDARD or PG), supply source, and channels. Requires `owner_organization_id`. Supports exact and partial/wildcard name matching (e.g., `*keyword*`), pagination, and sorting by fields such as name, price, created_on, and updated_on. Optionally converts prices to a specified currency.

**Key filters:** owner_organization_id (required), name_exact, name_partial, deal_identifier_exact, deal_identifier_partial, deal_type, status, supply_source_id, supply_source_name_exact, channels

**Use when:** Discovering deals for an organization, filtering active deals by exchange or type, or locating specific deals by name or identifier before targeting them in a strategy.

### get_deal_info

Retrieves a single deal's full configuration including pricing, publisher details, and identifiers. Supports currency conversion.

### deal_create

Creates a new PMP deal under an organization. Requires organization ID, deal name, deal identifier, supply source, start date, deal type (STANDARD or PG), price, and price type (FIXED or FLOOR). Optionally accepts channels, publisher, end date, and description.

**Business rules:**

- PG (Programmatic Guaranteed) deals require `price_type` set to `FIXED` and valid `start_datetime` and `end_datetime`.
- Use `get_channels_info` to look up channel IDs, `find_supply_sources` for supply source IDs, and `find_publishers` for publisher IDs before creating.


### deal_update

Applies partial updates to an existing deal's settings. Supports modification of name, status, pricing, deal type, dates, channels, publisher, and description. Only specified fields are modified; omitted fields remain unchanged.

### find_deal_strategies

Searches strategies assigned to a specific deal. Requires the deal ID. Returns active strategies by default; set `with_not_active=true` to include inactive strategies as well. Supports pagination.

**Use when:** Checking which strategies are targeting a particular deal, auditing deal utilization, or troubleshooting delivery by understanding which strategies are consuming a deal's inventory.

### find_deal_groups

Searches deal groups by name, ID, organization, or status. Requires `owner_organization_id`. Returns deal group metadata including associated deal IDs and strategy counts.

**Use when:** Discovering deal groups for an organization, filtering by active/inactive status, or looking up specific deal groups by ID.

### get_deal_group_info

Retrieves full configuration for a specific deal group by ID, including its metadata and the list of deal IDs it contains. Returns deal group ID, name, organization, description, status, the full list of deal IDs in the group, and a computed deal count. For full details of each individual deal, call `get_deal_info` for each deal ID.

### deal_group_create

Creates a new deal group under an organization. Requires `organization_id` and `name`. Optionally accepts `description`, `status`, and an initial list of `deal_ids`.

**Business rules:**

- All deals in `deal_ids` must exist and belong to the same organization.
- Omit `deal_ids` or pass an empty array to create an empty group for later population.
- Duplicate group names within the same organization are not allowed.


### deal_group_update

Applies partial updates to an existing deal group's configuration and deal membership. Only specified fields are modified; omitted fields remain unchanged.

**Supported updates:** `name`, `description`, `status`, `deal_ids` (replaces the full deal list).

**Modifying deal membership:** `deal_ids` replaces the complete list. To add or remove specific deals, first call `get_deal_group_info` to retrieve the current list, then supply the updated full list. Pass an empty array to remove all deals from the group.

## Audience & Data

### find_audience_segments

Searches audience segments across vendors, taxonomy paths, and buyable status.

> **Important:** Search queries must be at least three characters to avoid API errors.


## Reporting & Analytics

### get_dataset_schema

Discovers available reporting datasets and retrieves the schema for a specific dataset. Call with no parameters to list available dataset codes (the catalog). Call with a dataset code (e.g., `performance`, `all-dimensions-and-metrics`) to fetch its full schema including available fields, their data types, supported rollups, and time windows. Use this tool before building report queries to understand which dimensions and metrics are available.

**Use when:** You need to know what fields, rollups, or time windows a dataset supports before querying it, or when a user asks what reporting data is available.

### query_performance_report

Queries the `performance` dataset in the MediaMath Reporting API V2. Returns results as JSONL-style rows. Designed for standard campaign, strategy, and organization performance pulls including impressions, spend, CPM, CPA, CTR, and conversion metrics.

**Required:** At least one dimension/metric field, at least one filter (typically organization_id or campaign_id), and a time specification (time_window or start_time).

**Rollup options:** `all`, `by_day`, `by_week`, `by_month`

> **Note:** `agg_timestamp` cannot be used in `fields` - it is added automatically when rollup is not `all`, and can be used in `order`.


### query_hourly_performance_report

Dedicated tool for hourly performance metrics using the `performance-hourly` dataset. Automatically applies `by_hour` rollup. Optimized for intraday pacing analysis, time-of-day optimization, and delivery troubleshooting.

**Time windows:** current_day, yesterday, last_24_hours, last_48_hours, last_7_days, last_30_days, month_to_date, or custom start/end times.

### query_all_dimensions_report

Queries the `all-dimensions-and-metrics` dataset - the widest set of available dimensions in a single report. Ideal for ad-hoc analysis, QBR exports, CPA/supply/creative deep-dives, and multi-pivot exports.

### query_win_loss_report

Queries auction metrics before a win or bid has taken place, broken out by strategy, exchange, and deal dimensions. Use for bid rate optimization, win rate analysis, and auction competitiveness assessment.

### query_pixel_loads_report

Queries pixel load and unique user metrics for data and event pixels with referrer breakout and daily granularity.

## User & Permissions

### find_user

Searches for MediaMath users by name, email, role, scope, or account type.

### get_user_info

Retrieves a user's profile, roles, and basic access. Defaults to the authenticated user when no ID is supplied.

### get_user_permissions

Retrieves detailed permission flags and entity-level access lists (organizations, agencies, advertisers) for a user.

## System

### healthcheck

Confirms API connectivity, latency, and connection pool status. Use this to verify that your MCP integration is working correctly.