performance_metrics
Granular performance metrics for ads, audiences, creatives, offers, target groups, keywords.
Read analytics
Returns data. Calling it changes nothing, so it is safe in an unattended loop.
What it does
Granular performance metrics for ads, audiences, creatives, offers, target groups, keywords. IMPORTANT: Always specify endpoint parameter. Always use ISO 8601 for dates. USE FOR: Best performing ads/audiences/creatives/offers/target groups, ingredient comparisons, ad type analysis (IMAGE, VIDEO, CAROUSEL), lead gen forms vs landing pages, pipeline by ingredient, creative previews, keyword performance. NOT FOR: Account-level stats, experiment-level analysis without ingredient focus. ENDPOINT LOGIC: - 'target group' → customAudience/group - 'audience' → customAudience - 'offer'/'lead gen'/'landing page' → offer - 'creative' → creative - 'keyword' → keywords - 'ad'/'ads' or default → ads AD TYPES: IMAGE, VIDEO, CAROUSEL, DOCUMENT, CONVO, SPOTLIGHT, SEARCH, MESSAGE - The `adFormat` field on each response row identifies the ad type. METRICS: spend, impressions, clicks, leads, mqls | opens, sends, actionClicks, costPerOpen, costPerSend (CONVO/MESSAGE ads) | cpl, cpc, cpm, ctr, conversionRate, formConversionRate, mqlRate | totalOpps, totalTriggered, oppsAmount, triggeredAmount | cpMql, cpOppInfluenced, cpOppTriggered | channel, goal, adFormat, audienceSize, statusLabel | previewUrl CONVO/MESSAGE AD CAVEAT: when adFormat is CONVO or MESSAGE (LinkedIn message ads), success is measured by opens, sends, and actionClicks (and costPerOpen / costPerSend), NOT clicks/ctr/cpc. Do not rank these ads by CTR or dismiss them when clicks=0. Use sort='actionClicks,desc' or sort='opens,desc' for conversational performance ranking. RULES: Field 'id' corresponds to endpoint queried. Exclude $0 CPL experiments from calculations.
Arguments
| Argument | Type | Notes | |
|---|---|---|---|
launchedExperimentStatuses |
array | Filter Performance Metrics by experiment launch statuses only. | |
page |
integer | Page number to retrieve (0-based indexing) | |
size |
integer | Number of results per page. Default 100; raise it freely (up to 10000) for comprehensive full-dataset analysis. | |
sort |
string | Sorting criteria (e.g., 'spent,desc', 'cpl,asc', 'experimentId,spent,desc') | |
ids |
array | Set of IDs to filter by | |
experimentIds |
array | Set of experiment IDs to filter by | |
startDate |
string | startDate in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ), e.g., `startDate=2025-06-12T14:30:00.123Z`). | |
endDate |
string | endDate in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ), e.g., `startDate=2025-06-12T14:30:00.123Z`). | |
oppsStartDate |
string | Start date for opportunities data in ISO 8601 format | |
oppsEndDate |
string | End date for opportunities data in ISO 8601 format | |
adName |
string | Filter by specific ad name | |
keyword |
string | Filter by specific keyword | |
campaignName |
string | Filter by specific campaign name | |
creativeName |
string | Filter by specific creative name | |
customAudienceName |
string | Filter by specific custom audience name | |
offerName |
string | Filter by specific offer name | |
experimentName |
string | Filter by specific experiment name | |
budgetGroupName |
string | Filter by specific budget group name | |
channels |
array | Filter by marketing channels | |
goals |
array | Filter by campaign goals | |
audienceTypes |
array | Filter by audience types | |
offerTypes |
array | Filter by offer types. LG=Lead Gen forms, LP=Landing Pages | |
visibilities |
array | Filter by visibility status | |
adFormats |
array | Filter by ad format types. Applied to ads endpoint automatically. | |
minSpend |
number | Minimum spend threshold | |
maxSpend |
number | Maximum spend threshold | |
minLeads |
integer | Minimum number of leads threshold | |
maxLeads |
integer | Maximum number of leads threshold | |
minCpl |
number | Minimum cost per lead threshold | |
maxCpl |
number | Maximum cost per lead threshold | |
minAudienceSize |
integer | Minimum audience size threshold | |
maxAudienceSize |
integer | Maximum audience size threshold | |
usedInActiveExperiments |
boolean | Filter for ingredients used in active experiments only | |
tags |
array | Set of tag IDs to filter by | |
accountTagIds |
array | Set of account tag IDs to filter by | |
showWithSpend |
boolean | Show only experiments/ingredients with spend data | |
experimentList |
string | Experiment list filter | |
customFieldIds |
string | Custom field IDs to include | |
skipCustomFields |
boolean | Skip custom fields in response | |
endpoint |
string | Specific endpoint to query. If not specified, will be auto-determined from query context. Use 'customAudience/group' for target groups. one of: ads, customAudience, customAudience/group, offer, creative, keywords |
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":"performance_metrics","arguments":{}}}'
Response
Real, from the production server, in 1561 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: