experiment_performance_stats
Experiment-level performance statistics from Metadata.io Experiments API.
Read analytics
Returns data. Calling it changes nothing, so it is safe in an unattended loop.
What it does
Experiment-level performance statistics from Metadata.io Experiments API.
USE FOR:
- Experiment-level metrics (spent, leads, impressions, clicks, cpl, ctr, mql)
- Campaign comparisons (A vs B, time periods)
- Triggered/influenced opportunities analysis
- Pipeline opportunity analysis from campaigns
- Campaign ingredients (audience size, channel, audience/ad/offer used)
- ROI analysis, trend analysis, top performers
- Creative usage by experiments
- Filtering by experiment/campaign names
- Filtering by launch status via launchedExperimentStatuses (FAILED / DISCONNECTED experiments are excluded by default — see that parameter)
NOT FOR:
- Experiment pacing status ("which experiments are underpacing")
- Ad-level triggered opportunities
- Ingredient-level analysis (use performance_metrics)
RETURNED DATA: spent, clicks, impressions, leads, mqls, cpl, cpc, cpm, ctr | opens, sends, actionClicks, costPerOpen, costPerSend (CONVO/MESSAGE ads) | adTypes (list of ad types in this experiment) | triggeredAmount, oppsAmount, cpMql, mqlRate, conversionRate | experimentName, campaignName, audienceName, offerName, adName | audienceTypes, audienceSize, channel, goal | imageLibraryName | startDate, endDate, pacing, quarterIndex
CONVO/MESSAGE AD CAVEAT: when adTypes contains CONVO or MESSAGE, success is measured by opens, sends, and actionClicks (and costPerOpen / costPerSend), NOT clicks/ctr/cpc. An experiment with $100K+ spend and 0 clicks where adTypes includes CONVO can be a top performer — assess on the right metric. To rank conversational performance explicitly, use sort='actionClicks,desc' or sort='opens,desc' instead of the lead-gen defaults.
LINK FORMAT: /hub/advertise/experiments?name={wizExperimentName}
RULES:
- 'cpl2Score,desc' for Lead Gen/unspecified, 'cpc2Score,desc' for Brand Awareness
- 'triggeredAmount,desc' for ROI/pipeline, 'oppsAmount,desc' for influenced pipeline
- size=1 for 'top' singular, size=requested for 'top X', size=50 for plural, size=15 default
- failed/non-launched experiments are excluded by default; pass launchedExperimentStatuses=['Failed'] ONLY when the user explicitly asks about failuresArguments
| Argument | Type | Notes | |
|---|---|---|---|
metrics |
array | List of metrics for secondary ordering when question involves multiple metrics (e.g., ['cpl', 'ctr', 'leads']). Only include when analyzing more than one metric simultaneously. Do NOT include for single metric questions. | |
minSpend |
number | Minimum spend threshold. REQUIRED for all campaigns except Brand Awareness. Use for Lead Generation and when campaign type is unspecified. | |
minLeads |
integer | Minimum leads threshold. REQUIRED for Lead Generation campaigns. Do NOT use for Brand Awareness campaigns. | |
minCpl |
integer | Minimum cost per lead threshold (whole dollars). REQUIRED for Lead Generation campaigns. Do NOT use for Brand Awareness campaigns. | |
minAudienceSize |
integer | Minimum audience size to filter experiments | |
minClicks |
integer | Minimum clicks threshold. REQUIRED for Brand Awareness campaigns only. Do NOT use for Lead Generation campaigns. | |
minCpc |
integer | Minimum cost per click threshold (whole dollars). Do NOT use for Lead Generation or unspecified campaign types. | |
size |
integer | Number of results to return. RULES: size=1 for 'top' singular questions, size=requested number for 'top X' questions, size=50 for plural questions (e.g. 'campaigns'), size=30+ for multiple metrics analysis, size=15 as default when not specified. Raise it freely for full-dataset analytics — there is | |
sort |
string | Sorting parameter. CRITICAL RULES: 'cpl2Score,desc' for Lead Generation or unspecified campaigns, 'cpc2Score,desc' for Brand Awareness, 'triggeredAmount,desc' for ROI/pipeline questions, 'oppsAmount,desc' for influenced pipeline, 'conversionRate,desc' for conversion rate, 'internalStatus,desc' for a | |
goals |
string | Campaign goal type. RULES: 'CPL' for Lead Generation campaigns, 'CTR' for Brand Awareness campaigns. Do NOT include for unspecified campaign types. When multiple metrics involved, use only the first metric's corresponding goal. one of: CPL, CTR |
|
name |
object | Experiment name filter, matched as ONE substring per request. Use 'name' field (NOT experimentName) for specific experiment questions. Can be a single string or an array of strings for multiple experiments; an array is queried one name per request and the results are merged. Do NOT add additional pa | |
campaignName |
object | Campaign name filter. Use when question is about specific campaign(s). Can be single string or array ['campaign1', 'campaign2'] for multiple campaigns. Do NOT include additional parameters when filtering by specific campaign name. | |
audienceName |
string | Filter by target audience name (e.g., 'WTS EMEA Jan25_EMEAPitchbook') | |
offerName |
string | Filter by specific offer name (e.g., 'AMER_ZO_EN_HBR Reimagining Work'). Use this field when question mentions specific offers. | |
adName |
string | Filter by specific ad name (e.g., 'Sifted_WorkShift_Ad5_Beige'). Use 'adName' field when question asks about specific ad names. | |
audienceTypes |
string | Comma-separated list of audience types (e.g., 'Spotlight Retargeting Contacts (Dynamic),Technographic (Aberdeen)') | |
imageLibraryName |
string | Filter by creative/image name (e.g., 'JP - Square-Ad15.png'). Use 'imageLibraryName' field when question asks about specific creative names. | |
offerTypes |
array | Offer types filter. RULES: ['LP'] for lead gen forms/landing pages questions, ['LP', 'LG'] as default when offer types mentioned. LP=Landing Pages, LG=Lead Gen forms. Should NOT be empty when included. | |
channels |
array | Marketing channels to include | |
visibilities |
array | Visibility status filter | |
launchedExperimentStatuses |
array | Filter experiments by launch status. DEFAULT when omitted: successfully-launched experiments only (Active, WithoutSpend, Paused, Completed) — Failed and Disconnected are EXCLUDED, because a failed/non-launched experiment has 0 leads and is a non-starter, not a 'bottom performer'. Pass values explici | |
timeFrame |
string | Timeframe aggregation. CRITICAL RULES: Use ONLY for WEEK or QUARTER questions. NEVER use 'YEAR' - use startDate/endDate instead. If timeFrame is included, DO NOT add startDate or endDate parameters under any circumstances. one of: WEEK, QUARTER |
|
startDate |
string | Start date in ISO 8601 format (e.g., '2024-10-18T00:00:00.000Z'). CRITICAL: Do NOT include if timeFrame parameter is used. Use last year of data if period cannot be inferred from question. For specific campaigns/experiments without timeframe, omit this parameter. | |
endDate |
string | End date in ISO 8601 format. Must end on last hour of date (e.g., '2024-11-21T23:59:59.999Z'). CRITICAL: Do NOT include if timeFrame parameter is used. For specific campaigns/experiments without timeframe, omit this parameter. |
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":"experiment_performance_stats","arguments":{}}}'
Response
Real, from the production server, in 1262 ms. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.
recorded response
"[value redacted]"
Related
Other analytics tools: