Skip to Content
Tool referenceGet creative performance

Get creative performance (adsap_get_creative_performance)

Platform: Meta · Read or write: Read · Plan: Early Access · Consumes a task: No · Preview supported: No

What it does

Ranks the ads in an account by creative performance and flags fatigue. Each ad gets a hook rate (3-second plays over impressions) and a hold rate (15-second over 3-second plays). It also gets ad relevance diagnostics and a fatigue label: healthy, watch or fatigued. The fatigue label comes from frequency, CPA decay and hook rate decline. You can set the window up to 90 days, include paused ads, and sort by spend, fatigue, hook rate, CPA or ROAS.

When to use it

  • Use it to rank the ads in an account by creative results, and to find ads that are wearing out.
  • date_range_days sets the window for the ranking metrics, from 7 to 90 days. The fatigue verdict uses its own windows, returned under windows. By default they are the last 7 complete days and the 14 days before.
  • An ad is fatigued only when frequency is high and at least two signals declined together. A single declining signal at a slightly lower frequency gives watch.
  • Catalog ads, retargeting ads, recently edited ads and low-volume ads are not judged. They stay healthy and carry a skip_reason.
  • Sorting always puts the highest value first. With sort_by set to cpa, the most expensive ads come first.

Worked example

You ask

“Which ads in act_1234567890 are showing creative fatigue?”

The assistant calls adsap_get_creative_performance

{ "ad_account_id": "act_1234567890", "date_range_days": 30, "sort_by": "fatigue_score", "limit": 10 }

Adsap returns

The field names are the ones Adsap returns. The values are examples.

{ "ad_account_id": "act_1234567890", "windows": { "current": { "from": "2026-09-09", "to": "2026-09-15" }, "reference": { "from": "2026-08-26", "to": "2026-09-08" } }, "ads": [ { "ad_id": "120210000000000", "ad_name": "Spring sale, video 1", "ad_set_name": "Prospecting US", "spend": 1480, "frequency": 3.4, "cpa": 67.27, "hook_rate": 26.8, "fatigue_status": "fatigued", "fatigue_signals": [ "hook rate down from 31.2% to 22.4%", "link CTR down from 1.4% to 0.9%" ], "fatigue_advice_key": "new_hook", "current_window_frequency": 3.6 } ], "summary": { "total_analyzed": 12, "watch_count": 2, "fatigued_count": 1, "fatigued_spend_pct": 18.5 } }

How to read it

fatigue_status is the verdict and fatigue_signals says why, in plain words. Here the hook rate and the link CTR both fell against the reference window while frequency reached 3.6. fatigue_advice_key is one of new_hook, new_body, full_refresh or review. new_hook means the first three seconds lost their pull and the rest of the video still holds. A fatigue_recommendation sentence comes with it.

hook_rate and hold_rate are percentages, and both are null for an ad with no video plays. Each ad also carries delivery numbers, video quartiles and Meta’s three ranking fields. summary counts the verdicts across every ad analysed, not only the ads returned.

Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

NameTypeRequiredDescription
ad_account_idstringYesMust include act_ prefix.
date_range_daysnumberNoAnalysis window in days. Default 30, max 90.
include_pausedbooleanNoInclude paused ads. Default false.
include_asset_breakdownbooleanNoFetch asset-level breakdown for dynamic creatives. Default false.
sort_byone of spend, fatigue_score, hook_rate, cpa, roasNoSort order. Default: spend.
limitnumberNoMax ads to return. Default 50, max 100.

Example prompts

  • “Which of my ads are showing creative fatigue?”
  • “Rank my ads by hook rate over the last 14 days.”
  • “Which creatives have the best ROAS this quarter?”
  • adsap_create_ad_from_ig_post: Turn an existing Instagram post, video, or reel into an ad inside an EXISTING ad set: Meta Ads Manager’s “Use existing post”.
  • adsap_get_ad_library_snapshot: SHOW what Ad Library ads ACTUALLY LOOK LIKE (creative, copy, page name), in a SELF-CONTAINED card.
  • adsap_get_ad_preview: Render a pixel-accurate visual preview of an existing Meta ad (real Meta render; video ads also get an animated clip in the interactive…
  • adsap_get_import_status: Check progress of a Meta historical-asset import started with adsap_import_account_creatives: status, phase (images then videos)…
  • adsap_get_preview_clip: Fetch the animated placement-preview clip (recorded video of the real Meta preview) for an ad+placement previously rendered with…
  • adsap_get_upload_status: Check status of an async video upload.
  • adsap_import_account_creatives: Import ALL historical creative assets (images + videos) that already exist in a Meta ad account into the Adsap Creative Library.
  • adsap_list_creative_assets: List uploaded Meta creative images and videos in the ad account asset library.
  • adsap_list_drive_files: Browse Google Drive for creative image/video files to upload to Meta.
  • adsap_list_dropbox_files: Browse Dropbox for creative image/video files to upload to Meta.
  • adsap_list_ig_media: List an Instagram account’s recent media/posts (live from Meta): the posts, reels, and stories that can be promoted.
  • adsap_replace_ad_creative: DESTRUCTIVE.
  • adsap_search_ad_library: Search Meta’s public Ad Library for ads (competitor research / ad transparency).
  • adsap_upload_creative: Upload image/video from Google Drive or Dropbox to a Meta ad account.

Guide

Read Creatives for the workflow around this tool, and the Tool reference for every tool.

The Meta Ads MCP server  page shows how to connect Meta Ads to Claude, ChatGPT or Perplexity.

Last updated on