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, endDateArguments
| Argument | Type | Notes | |
|---|---|---|---|
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
Related
Other campaigns tools: