MMetadata /docs
Docs/Tools/search_experiments

search_experiments

Search for experiments by name, status, and budget group with flexible filtering.

Read campaigns

Returns data. Calling it changes nothing, so it is safe in an unattended loop.

What it does

Search for experiments by name, status, and budget group with flexible filtering.

                KEYWORDS: experiment, search, find, ad, test, status, active, paused, performance, campaign

                WHEN TO USE:
                - User wants to "find experiment X"
                - User asks to "show experiments for campaign Y"
                - User requests to "search for experiments matching Z"
                - User wants to "see all experiments with name containing A"
                - User asks "what experiments are in campaign B?"
                - User asks "what is the ID of experiment C?"
                - User wants to "find experiments in budget group X"
                - User asks to "search experiments in specific budget groups"
                - User wants to "show all active experiments"
                - User asks "list paused experiments"
                - User wants to "find experiments with status X"

                PURPOSE:
                This tool searches across all experiments with flexible filtering options.
                You can search by name (partial, case-insensitive), filter by budget groups, and filter by status.
                All filters are optional - use any combination to narrow down results.

                SEARCH CAPABILITIES:
                - Search by experiment name: Returns experiments with matching names
                - Search by campaign name: Returns all experiments from campaigns with matching names
                - Filter by budget groups: Narrow results to specific budget group IDs
                - Filter by status: Show experiments with specific statuses (Active, Paused, etc.)
                - Partial matching: Search term doesn't need to be exact
                - Case-insensitive: "Test" matches "test", "TEST", "TeSt"

                STATUS VALUES EXPLAINED:
                - Active: Currently running and spending budget
                - WithoutSpend: Running but not currently spending budget
                - Paused: Temporarily stopped, can be restarted
                - Completed: Finished (reached end date or completion criteria)
                - Failed: Encountered an error during execution
                - Disconnected: Connection to ad channel was lost

                RETURN EXPERIMENT DATA FIELDS:
                - experimentId, experimentName, wizCampaignId, wizCampaignName
                - campaignGroup, statusLabel, dailyBudget, spent, impressions, clicks
                - startDate, endDate

Arguments

ArgumentTypeNotes
search_name string The experiment or campaign name to search for (partial, case-insensitive matching). Optional - omit to skip name filtering.
budget_group_ids array Optional array of budget group IDs to filter experiments. Only returns experiments that belong to these budget groups.
launched_experiment_statuses array Optional array of experiment statuses to filter by. Valid values: Active, WithoutSpend, Paused, Completed, Failed, Disconnected
page integer Page number for pagination (default: 0)
size integer Number of results per page (default: 5)
sort string Sort criteria in format 'field,direction' (e.g., 'name,asc')

Request

curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
  -H "Authorization: $METADATA_PAT" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_experiments","arguments":{}}}'

Response

Real, from the production server, in 8179 ms. The full response was 17,256 bytes; this is the first part of it. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.

recorded response
{
 "totalElements": "[number redacted]",
 "totalPages": "[number redacted]",
 "data": [
  {
   "experimentId": "[number redacted]",
   "experimentName": "[experimentName redacted]",
   "actionClicks": 0,
   "adIds": [
    "[number redacted]"
   ],
   "adImage": "[adImage redacted]",
   "adTypes": [
    "VIDEO"
   ],
   "audienceSize": "[number redacted]",
   "bid": {
    "strategy": "AUTO_BID",
    "amount": null,
    "adLocation": null,
    "impressionShare": null,
    "deviceBidModifiers": [],
    "metadataBidAgentParams": null
   },
   "biddingOptimizationGoal": "[biddingOptimizationGoal redacted]",
   "caGroupId": "[number redacted]",
   "caGroupName": "[caGroupName redacted]",
   "caIds": [
    "[number redacted]"
   ],
   "campaignGroup": "[campaignGroup redacted]",
   "campaignId": "[number redacted]",
   "campaignName": "[campaignName redacted]",
   "channelType": "INSTAGRAM",
   "clickThroughLeads": 0,
   "clicks": 4,
   "companyPageClicks": 0,
   "conversionRate": 0,
   "costPerCompanyPageClick": 0,
   "costPerFollow": 0,
   "costPerOpen": 0,
   "costPerSend": 0,
   "costType": "CPM",
   "cpOppInfluenced": 0,
   "cpOppTriggered": 0,
   "cpc": "[number redacted]",
   "cpm": "[number redacted]",
   "ctr": "[number redacted]",
   "dailyBudget": "[number redacted]",
   "endDate": "2027-07-16T23:59:59.000Z",
   "follows": 0,
   "formConversionRate": 0,
   "frequency": "[number redacted]",
   "goal": "CPL",
   "impressions": "[number redacted]",
   "internalStatus": "Active",
   "isNativeImported": false,
   "issues": [],
   "keywordMatchType": "PHRASE",
   "keywordNames": [],
   "launchedExperimentStatus": "Active",
   "leads": 0,
   "locked": false,
   "matchCountType": "FIXED_SIZE",
   "mqls": 0,
   "nativeUrl": "[nativeUrl redacted]",
   "objective": "LINK_CLICKS",
   "offerType": "LG",
   "opens": 0,
   "optimizerFormula": "TRIGGERED_OPP",
   "optimizerPauseActionMetadata": {
    "reason": null,
    "supplementaryPauseMetadata": null,
    "createdAt": null,
    "lastActiveDaysStartDate": null,
    "lastActiveDaysEndDate": null,
    "experimentStartDate": null,
    "lastConvertedDate": null,
    "lastClickDate": null,
    "autoPauseConfigurationId": null,
    "autoPauseRuleName": null
   },
   "originalStatus": "ACTIVE",
   "pacing": "[number redacted]",
   "sends": 0,
   "spent": "[number redacted]",
   "startDate": "2026-09-03T00:00:00.000Z",
   "statusLabel": "Active",
   "tags": [],
   "targetingGroupId": "[number redacted]",
   "totalOpps": 0,
   "totalTriggered": 0,
   "videoCompletionRate": "[number redacted]",
   "videoCompletions": 14,
   "videoCostPerView": "[number redacted]",
   "videoFirstQuartileCompletions": 45,
   "videoMidpointCompletions": 19,
   "videoStarts": "[number redacted]",
   "videoThirdQuartileCompletions": 16,
   "videoViewRate": "[number redacted]",
   "videoViews": 45,
   "wizCampaignId": "[number redacted]"
  },
  {
   "experimentId": "[number redacted]",
   "experimentName": "[experimentName redacted]",
   "actionClicks": 0,
   "adIds": [
    "[number redacted]"
   ],
   "adImage": "[adImage redacted]",
   "adTypes": [
    "VIDEO"
   ],
   "audienceSize": "[number redacted]",
   "bid": {
    "strategy": "AUTO_BID",
    "amount": null,
    "adLocation": null,
    "impressionShare": null,
    "deviceBidModifiers": [],
    "metadataBidAgentParams": null
   },
   "biddingOptimizationGoal": "[biddingOptimizationGoal redacted]",
   "caGroupId": "[number redacted]",
   "caGroupName": "[caGroupName redacted]",
   "caIds": [
    "[number redacted]"
   ],
   "campaignGroup": "[campaignGroup redacted]",
   "campaignId": "[number redacted]",
   "campaignName": "[campaignName redacted]",
   "channelType": "INSTAGRAM",
   "clickThroughLeads": 0,
   "clicks": 9,
   "companyPageClicks": 0,
   "conversionRate": 0,
   "costPerCompanyPageClick": 0,
   "costPerFollow": 0,
   "costPerOpen": 0,
   "costPerSend": 0,
   "costType": "CPM",
   "cpOppInfluenced": 0,
   "cpOppTriggered": 0,
   "cpc": "[number reda
  … truncated

Other campaigns tools:

All 160 tools · machine-readable index