# 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 **50+ 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.

## Platform Health

### healthcheck

Confirms MediaMath API availability, latency, and connection health. Use this as a first step to verify connectivity before running other operations.

**Use when:** Validating the platform is responsive, diagnosing connectivity issues, or confirming readiness before batch workflows.

## 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.

## 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_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.

### 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.

### get_native_creative_approvals

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

### 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_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

Bulk fetches video creative details for an array of creative IDs (1–100 per call).

### 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.

### 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.

### 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 → 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 → 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).

## 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`.

## Reporting & Analytics

### query_report

Flexible query tool for the MediaMath Reporting API V2. Supports the `performance` dataset and custom datasets. Returns results as JSONL-style rows.

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

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

### 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.

### list_datasets

Discovers available reporting datasets with metadata including codes, names, descriptions, and endpoints. Use to explore what data is available before building queries.

## 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.

## 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.


## 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.

### find_deals

Searches PMP deals with filters for name, deal identifier, supply source, status, deal type (standard or PG), and more. Supports partial/wildcard matching on name and description fields.

### 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.

### site_list_create

Creates a new site list under an organization. Requires organization ID, site list name, domains and restriction (INCLUDE or EXCLUDE). Optionally accepts status.

**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_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.

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

### 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 the full configuration of a single deal group by ID, including its name, description, status, owner, timestamps, and the complete list of deal IDs it contains.

**Use when:** Inspecting a deal group before modifying it, confirming its current deal membership, or verifying a create/update operation.

### 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.

### 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.

## 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.

## Tool Interaction Patterns

### 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: {...})
```

### Pagination

Search tools that return multiple results support cursor-based pagination. When a result set exceeds the page limit (typically 25), the response includes a cursor value that can be passed to the next call to retrieve additional results.

### 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.

## Next Steps

- See [Best Practices](/guides/mcp/best-practices) for recommended workflows and prompt patterns.
- Return to [Overview](/guides/mcp/overview) for general product information.