Skip to main content
Glama

Honeyfield Marketing MCP

Meta Ads: Ad performance

meta_ad_performance
Read-only

Meta-Ad-Performance einzelner Anzeigen der letzten N Tage, nach Spend. Je Zeile campaign_id/campaign, adset_id/adset und ad_id/ad — die IDs sind der Schlüssel für meta_update_ad_status und ad_id-Vergleiche. Zeitraum: heute minus N Tage bis heute EINSCHLIESSLICH (N+1 Kalendertage; heute unvollständig). Für Vergleiche mit Google-Ads-Zahlen (schließen heute aus) daily=True nutzen und den heutigen Tag herausrechnen. since / until: fester Zeitraum 'YYYY-MM-DD', beide zusammen und einschließlich (error=date_range_incomplete/date_range_invalid); Vorrang vor date_preset und days. date_preset: relativer Zeitraum nach Metas Kalender (today, yesterday, this_month, last_month, this_quarter, last_quarter, this_year, last_year, last_3d/7d/14d/28d/30d/90d, last_week_mon_sun, last_week_sun_sat, this_week_mon_today, this_week_sun_today, maximum, data_maximum; error=invalid_date_preset sonst); Vorrang vor days. Jede Zeile trägt date_start/date_stop (tatsächlich summierte Spanne; bei daily date). Zahlen folgen der Attributionseinstellung der Adsets (unified attribution, wie im Ads Manager). Kontosummen: meta_campaign_performance totals_only=True statt Zeilen zu addieren. Bei leeren Insights trotz vorhandener Kampagnen kommt stattdessen ein Dict mit result=[], time_range bzw. date_preset und info-Erklärung zurück. breakdown: Aufschlüsselung statt Summenzeile — 'publisher_platform' (Facebook vs. Instagram vs. Audience Network), 'platform_position', 'device_platform', 'age', 'gender', 'country', 'region'. daily: True liefert eine Zeitreihe je Tag. Ein kürzeres Zeitfenster ersetzt das NICHT — es summiert nur weniger Tage zu einer Zeile. ad_id / adset_id / campaign_id: schränkt ein; die feinere Angabe gewinnt (ad_id vor adset_id vor campaign_id). ad_id ist der direkte Weg, um zwei einzelne Anzeigen zu vergleichen. Ohne Angabe kommen ALLE Anzeigen des Kontos — kontoweite Zahlen dürfen nicht als Kampagnenzahlen gelesen werden. Eine uebergebene Kampagnen-/Adset-/Ad-ID muss zum Werbekonto des Workspace gehoeren — IDs eines anderen Kontos (auch wenn die Meta-Verbindung es sieht) → {'error': 'foreign_object'}. workspace: Slug des Kunden-Workspace (optional bei nur einem Workspace). Enthält link_clicks, landing_page_views, landing_page_rate_pct, reach, frequency, cpm, cpc, cost_per_link_click. Dazu je Anzeige quality_ranking, engagement_rate_ranking und conversion_rate_ranking. UNKNOWN heißt: zu wenig Volumen für eine Einstufung, nicht 'schlecht'. conversions zählt AUSSCHLIESSLICH Käufe und Leads. Eigene Custom Conversions stehen getrennt in custom_conversions, und actions führt alle Ereignistypen mit Zahlen auf — conversions=0 heißt deshalb nicht "konvertiert nicht", sondern ist an actions gegenzuprüfen. Obergrenze rund 2.000 Zeilen. Wird sie erreicht, kommt statt der Liste ein Objekt mit result und warning zurück; die Sortierung gilt dann nur für den Ausschnitt.

Input Schema

NameRequiredDescriptionDefault
daysNo
ad_idNo
dailyNo
sinceNo
untilNo
adset_idNo
breakdownNo
workspaceNo
campaign_idNo
date_presetNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnlyHint/openWorldHint; the description goes far beyond them with error codes (date_range_incomplete, date_range_invalid, invalid_date_preset, foreign_object), the ~2,000-row cap and the warning object returned instead of a list, and the empty-insights dict with result=[] and an info explanation. It also discloses attribution settings, the UNKNOWN ranking meaning, and the conversions vs actions vs custom_conversions caveat.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, sort order and ID-key framing are front-loaded, and nearly every line carries operative information. The block is dense and long with irregular indentation, and a few points (e.g. ad_id as the direct way to compare ads) are restated, costing some readability without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter analytics tool with a 0%-covered schema, the description covers time-window semantics, filtering, breakdowns, ownership constraints and the shape of degraded responses. An output schema exists, yet the metric list and ranking caveats are still explained, which is more than enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden and does so for all ten parameters: since/until format and inclusive pairing, the complete date_preset value list, the allowed breakdown values, daily semantics, and the ad_id > adset_id > campaign_id precedence with the note that omitting them returns all account ads. This is exactly the compensation the 0% coverage requires.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line names a specific verb, resource and scope: per-ad Meta performance for the last N days, sorted by spend. It distinguishes itself from account-level aggregation by pointing to meta_campaign_performance totals_only=True, and it flags the IDs as the key for meta_update_ad_status. It never explicitly contrasts itself with meta_adset_performance, so the ad-vs-adset boundary is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing is given for the main alternatives: campaign totals go to meta_campaign_performance, comparing two individual ads goes through ad_id, and daily=True plus removing today is prescribed when comparing against Google Ads numbers. Precedence rules (since/until > date_preset > days) and the warning that account-wide figures must not be read as campaign figures remove nearly all inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources