API-Dokumentation

Einführung

Erste Schritte mit der Adverfly-API

Mit der Adverfly-API kannst du programmatisch auf Daten aus deinem Workspace zugreifen. Du kannst Events, Sessions, Conversions und Ads für Analytics abrufen.

API-Funktionen

FunktionBeschreibung
Daten lesenEvents, Sessions, Conversions und Ads über GET-Endpunkte abrufen

Wann API vs. JavaScript-Pixel nutzen

Use CaseEmpfohlene Methode
Website-TrackingJavaScript-Pixel (clientseitig)
Daten-Export / BI-IntegrationAPI
Eigene DashboardsAPI
Echtzeit-WebanalyseJavaScript-Pixel

Base URL

Alle API-Anfragen sollten an folgende URL gerichtet werden:

BASEhttps://api.adverfly.com

Authentifizierung

Die API verwendet API-Keys zur Authentifizierung. API-Anmeldedaten kannst du in deinen Workspace-Einstellungen erzeugen.

ParameterTypeRequiredDescription
x-api-keystringRequiredDein Workspace-API-Key
client-secretstringRequiredDein Workspace-Client-Secret
Request
curl -X GET "https://api.adverfly.com/v3/events" \
  -H "x-api-key: dein-api-key" \
  -H "client-secret: dein-client-secret"

Antwortformat

Alle Antworten werden im JSON-Format zurückgegeben — mit einem pagination-Objekt zur Navigation durch die Ergebnisse.

Response200 OK
{
  "data": [...],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "has_more": true,
    "next_offset": 100,
    "start_date": "2024-01-01 00:00:00",
    "end_date": "2024-01-31 23:59:59"
  }
}

Pagination

FeldTypBeschreibung
limitintegerAnzahl zurückgegebener Datensätze
offsetintegerAnzahl übersprungener Datensätze
has_morebooleanOb weitere Datensätze verfügbar sind
next_offsetinteger oder nullOffset-Wert für die nächste Seite (null, wenn has_more false ist)
start_datestringBeginn des abgefragten Datumsbereichs
end_datestringEnde des abgefragten Datumsbereichs

Verwende next_offset als offset-Parameter für deine nächste Anfrage, um durch Ergebnisse zu paginieren. Wenn has_more false ist, hast du die letzte Seite erreicht.

Rate Limits

LimitWert
Tageslimit4.320 Anfragen pro Tag
Rate Limit10 Anfragen pro Sekunde
Burst-Limit20 Anfragen
Max. Datensätze pro Anfrage500 (limit-Parameter)

Datumsparameter

Alle Endpunkte akzeptieren start_date und end_date im Format YYYY-MM-DD. Wenn nicht angegeben, fällt die API auf die letzten 7 Tage zurück. Alias from und to werden ebenfalls akzeptiert.

Events

Event-Daten aus deinem Workspace abrufen

Rufe Event-Daten aus deinem Workspace-Pixel-Tracking ab. Events umfassen Pageviews, Klicks und vom Pixel erfasste Custom-Events.

GET/v3/events

Query-Parameter

ParameterTypeRequiredDescription
start_datestringOptionalStartdatum im Format YYYY-MM-DD (Standard: vor 7 Tagen). Alias: from
end_datestringOptionalEnddatum im Format YYYY-MM-DD (Standard: heute). Alias: to
namestringOptionalFilter nach Event-Name. Wildcards mit * (z. B. survey_* für alle Survey-Events). Alias: event_name
session_idintegerOptionalFilter nach Session-ID
visitor_idintegerOptionalFilter nach Visitor-ID
sourcestringOptionalFilter nach Ad-Source. Komma-getrennt für mehrere (z. B. meta,google). Alias: sources
limitintegerOptionalAnzahl zurückgegebener Datensätze (Standard: 100, Max: 500). Alias: page_size
offsetintegerOptionalAnzahl übersprungener Datensätze für Pagination. Alias: page

Beispiele für den Name-Filter

WertTrifft
pageviewExakter Match — nur pageview-Events
survey_*Alle Events, die mit survey_ beginnen (z. B. survey_opened, survey_completed)
*_completedAlle Events, die mit _completed enden
Request
curl -X GET "https://api.adverfly.com/v3/events?start_date=2024-01-01&end_date=2024-01-31&name=survey_*&limit=100" \
  -H "x-api-key: dein-api-key" \
  -H "client-secret: dein-client-secret"
Response200 OK
{
  "data": [
    {
      "store_id": 12345,
      "dt": "2024-01-15 10:30:00",
      "name": "pageview",
      "session_id": 789012345,
      "visitor_id": 456789012,
      "visitor_timezone": "Europe/Berlin",
      "adv_source": "meta",
      "adv_campaign_id": "120210123456789",
      "adv_adgroup_id": "120210987654321",
      "adv_ad_id": "120210111222333",
      "adv_asset_group_id": "6502489623",
      "utm_source": "facebook",
      "utm_medium": "cpc",
      "utm_campaign": "winter_sale",
      "utm_content": "video_ad_1",
      "utm_term": "",
      "device_type": "desktop",
      "country_code": "DE",
      "hostname": "example.com",
      "pathname": "/products",
      "referrer": "https://google.com",
      "entry_meta_keys": ["fbclid", "gclid"],
      "entry_meta_values": ["abc123", ""]
    }
  ],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "has_more": true,
    "next_offset": 100,
    "start_date": "2024-01-01 00:00:00",
    "end_date": "2024-01-31 23:59:59"
  }
}

Response-Felder

FeldTypBeschreibung
store_idintegerWorkspace-ID
dtstringEvent-Zeitstempel
namestringEvent-Name (z. B. pageview, add_to_cart, survey_opened)
session_idintegerSession-Identifier
visitor_idintegerVisitor-Identifier
visitor_timezonestringZeitzone des Besuchers
adv_sourcestringAd-Plattform-Source (z. B. meta, google)
adv_campaign_idstringKampagnen-ID der Ad-Plattform
adv_adgroup_idstringAd-Group-ID der Ad-Plattform
adv_ad_idstringAd-ID der Ad-Plattform
adv_asset_group_idstringAsset-Group-ID (Google Performance Max)
utm_sourcestringUTM-Source-Parameter
utm_mediumstringUTM-Medium-Parameter
utm_campaignstringUTM-Campaign-Parameter
utm_contentstringUTM-Content-Parameter
utm_termstringUTM-Term-Parameter
device_typestringGerätetyp (desktop, mobile, tablet)
country_codestringISO-Ländercode (z. B. DE, US)
hostnamestringWebsite-Hostname
pathnamestringSeitenpfad
referrerstringVerweisende URL
entry_meta_keysarrayClick-ID-Parameter-Namen (z. B. fbclid, gclid)
entry_meta_valuesarrayClick-ID-Werte (paralleles Array zu entry_meta_keys)

Sessions

Auf Session-Daten und Nutzeraktivität zugreifen

Greife auf Session-Daten und Nutzeraktivität zu. Eine Session repräsentiert den Besuch eines Nutzers auf deiner Website und bündelt mehrere Events.

GET/v3/sessions

Query-Parameter

ParameterTypeRequiredDescription
start_datestringOptionalStartdatum im Format YYYY-MM-DD (Standard: vor 7 Tagen). Alias: from
end_datestringOptionalEnddatum im Format YYYY-MM-DD (Standard: heute). Alias: to
session_idintegerOptionalFilter nach Session-ID
visitor_idintegerOptionalFilter nach Visitor-ID
sourcestringOptionalFilter nach Ad-Source. Komma-getrennt für mehrere. Alias: sources
limitintegerOptionalAnzahl zurückgegebener Datensätze (Standard: 100, Max: 500). Alias: page_size
offsetintegerOptionalAnzahl übersprungener Datensätze für Pagination. Alias: page
Request
curl -X GET "https://api.adverfly.com/v3/sessions?start_date=2024-01-01&end_date=2024-01-31&limit=100" \
  -H "x-api-key: dein-api-key" \
  -H "client-secret: dein-client-secret"
Response200 OK
{
  "data": [
    {
      "store_id": 12345,
      "visitor_id": 456789012,
      "session_id": 789012345,
      "session_start_dt": "2024-01-15 10:25:00",
      "session_end_dt": "2024-01-15 10:45:00",
      "session_duration_seconds": 1200,
      "is_bounce": 0,
      "session_entry_page": "/",
      "session_exit_page": "/checkout/success",
      "events": 12,
      "pageviews": 8,
      "add_to_carts": 1,
      "initiated_checkouts": 1,
      "view_contents": 3,
      "contacts": 0,
      "newsletter_signups": 0,
      "completed_registrations": 0,
      "app_installs": 0,
      "add_payment_infos": 1,
      "adv_source": "meta",
      "adv_campaign_id": "120210123456789",
      "adv_adgroup_id": "120210987654321",
      "adv_ad_id": "120210111222333",
      "adv_asset_group_id": "6502489623",
      "utm_source": "facebook",
      "utm_campaign": "winter_sale",
      "utm_medium": "cpc",
      "utm_content": "video_ad_1",
      "utm_term": "",
      "device_type": "desktop",
      "country_code": "DE",
      "referrer": "https://google.com",
      "pathname": "/products",
      "hostname": "example.com",
      "entry_meta_keys": ["fbclid"],
      "entry_meta_values": ["abc123"]
    }
  ],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "has_more": true,
    "next_offset": 100,
    "start_date": "2024-01-01 00:00:00",
    "end_date": "2024-01-31 23:59:59"
  }
}

Response-Felder

FeldTypBeschreibung
store_idintegerWorkspace-ID
visitor_idintegerVisitor-Identifier
session_idintegerSession-Identifier
session_start_dtstringSession-Start-Zeitstempel
session_end_dtstringSession-Ende-Zeitstempel
session_duration_secondsintegerSession-Dauer in Sekunden
is_bounceintegerOb die Session ein Bounce war (1 = ja, 0 = nein)
session_entry_pagestringLanding-Pfad
session_exit_pagestringExit-Pfad
eventsintegerGesamtzahl der Events in der Session
pageviewsintegerAnzahl Pageviews
add_to_cartsintegerAnzahl Add-to-Cart-Events
initiated_checkoutsintegerAnzahl gestarteter Checkouts
view_contentsintegerAnzahl Content-Views
contactsintegerAnzahl Kontakt-Events
newsletter_signupsintegerAnzahl Newsletter-Anmeldungen
completed_registrationsintegerAnzahl abgeschlossener Registrierungen
app_installsintegerAnzahl App-Installs
add_payment_infosintegerAnzahl eingegebener Zahlungsdaten
adv_sourcestringAd-Plattform-Source
adv_campaign_idstringKampagnen-ID der Ad-Plattform
adv_adgroup_idstringAd-Group-ID der Ad-Plattform
adv_ad_idstringAd-ID der Ad-Plattform
adv_asset_group_idstringAsset-Group-ID (Google Performance Max)
utm_sourcestringUTM-Source-Parameter
utm_campaignstringUTM-Campaign-Parameter
utm_mediumstringUTM-Medium-Parameter
utm_contentstringUTM-Content-Parameter
utm_termstringUTM-Term-Parameter
device_typestringGerätetyp (desktop, mobile, tablet)
country_codestringISO-Ländercode
referrerstringVerweisende URL
pathnamestringSeitenpfad
hostnamestringWebsite-Hostname
entry_meta_keysarrayClick-ID-Parameter-Namen
entry_meta_valuesarrayClick-ID-Werte

Conversions

Conversion-Event-Daten abrufen

Hole Conversion-Event-Daten deines Workspaces. Conversions werden erfasst, wenn Nutzer gewünschte Aktionen abschließen — Käufe, Anmeldungen, Form-Submits.

GET/v3/conversions

Query-Parameter

ParameterTypeRequiredDescription
start_datestringOptionalStartdatum im Format YYYY-MM-DD (Standard: vor 7 Tagen). Alias: from
end_datestringOptionalEnddatum im Format YYYY-MM-DD (Standard: heute). Alias: to
namestringOptionalFilter nach Conversion-Name. Wildcards mit * (z. B. purchase_*)
transaction_idstringOptionalFilter nach Transaktions-/Bestell-ID
customer_idstringOptionalFilter nach Customer-ID
is_new_customerstringOptionalFilter nach Neu-/Bestandskunde (akzeptiert 0, 1, true, false)
limitintegerOptionalAnzahl zurückgegebener Datensätze (Standard: 100, Max: 500). Alias: page_size
offsetintegerOptionalAnzahl übersprungener Datensätze für Pagination. Alias: page
Request
curl -X GET "https://api.adverfly.com/v3/conversions?start_date=2024-01-01&end_date=2024-01-31&limit=100" \
  -H "x-api-key: dein-api-key" \
  -H "client-secret: dein-client-secret"
Response200 OK
{
  "data": [
    {
      "store_id": 12345,
      "dt": "2024-01-15 10:42:00",
      "name": "purchase",
      "session_id": 789012345,
      "customer_id": "customer@email.com",
      "visitor_id": 456789012,
      "transaction_id": "ORD-2024-001",
      "transaction_gross_revenue": 12999,
      "transaction_currency": "EUR",
      "transaction_country_code": "DE",
      "transaction_city": "Berlin",
      "hostname": "example.com"
    }
  ],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "has_more": true,
    "next_offset": 100,
    "start_date": "2024-01-01 00:00:00",
    "end_date": "2024-01-31 23:59:59"
  }
}

Response-Felder

FeldTypBeschreibung
store_idintegerWorkspace-ID
dtstringConversion-Zeitstempel
namestringConversion-Typ (z. B. purchase, lead)
session_idintegerSession-Identifier
customer_idstringCustomer-Identifier (z. B. E-Mail)
visitor_idintegerVisitor-Identifier
transaction_idstringBestell-/Transaktions-ID
transaction_gross_revenueintegerUmsatz in Cent (z. B. 12999 = 129,99)
transaction_currencystringWährungscode (EUR, USD etc.)
transaction_country_codestringISO-Ländercode
transaction_citystringStadt des Kunden
hostnamestringWebsite-Hostname

Hinweise

  • Umsatz wird in der kleinsten Währungs-Einheit (Cent) zurückgegeben. Teile durch 100 für den Hauptwert.
  • Verwende transaction_id oder customer_id, um spezifische Bestellungen oder Kunden zu finden.

Ads

Werbeperformance-Daten abrufen

Hole Werbeperformance-Daten deines Workspaces. Liefert Spend, Impressions, Clicks und Reach von verbundenen Werbeplattformen (Meta, Google, TikTok etc.).

GET/v3/ads

Query-Parameter

ParameterTypeRequiredDescription
start_datestringOptionalStartdatum im Format YYYY-MM-DD. Standard: vor 7 Tagen.
end_datestringOptionalEnddatum im Format YYYY-MM-DD. Standard: heute.
sourcestringOptionalFilter nach Ad-Plattform. Komma-getrennt für mehrere (z. B. meta,google)
adaccount_idstringOptionalFilter nach Ad-Account-ID
campaign_idstringOptionalFilter nach Kampagnen-ID
adgroup_idstringOptionalFilter nach Ad-Group-ID
ad_idstringOptionalFilter nach Ad-ID
limitintegerOptionalAnzahl zurückgegebener Datensätze (Standard: 100)
offsetintegerOptionalAnzahl übersprungener Datensätze für Pagination

Unterstützte Sources

WertPlattform
metaMeta (inkl. facebook, instagram, messenger, audience_network, threads)
facebookFacebook (Subset von Meta)
instagramInstagram (Subset von Meta)
googleGoogle Ads
tiktokTikTok Ads
pinterestPinterest Ads
snapchatSnapchat Ads
outbrainOutbrain
taboolaTaboola
organicOrganischer Traffic
audience_networkMeta Audience Network (Subset von Meta)
messengerMeta Messenger (Subset von Meta)
threadsMeta Threads (Subset von Meta)
whatsappWhatsApp
emailE-Mail-Channels
Request
curl -X GET "https://api.adverfly.com/v3/ads?start_date=2024-01-01&end_date=2024-01-31&source=meta,google&limit=100" \
  -H "x-api-key: dein-api-key" \
  -H "client-secret: dein-client-secret"
Response200 OK
{
  "data": [
    {
      "store_id": 12345,
      "dt": "2024-01-15",
      "adaccount_id": "act_123456789",
      "source": "meta",
      "campaign_id": "120210123456789",
      "campaign_name": "Winter Sale 2024",
      "adgroup_id": "120210987654321",
      "adgroup_name": "Lookalike - Purchases",
      "ad_id": "120210111222333",
      "ad_name": "Video - Snow Jacket",
      "spend": 4500,
      "impressions": 12340,
      "clicks": 287,
      "reach": 9800
    }
  ],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "has_more": true,
    "next_offset": 100,
    "start_date": "2024-01-01 00:00:00",
    "end_date": "2024-01-31 23:59:59",
    "sources": ["meta", "google"]
  }
}

Response-Felder

FeldTypBeschreibung
store_idintegerDeine Workspace-ID
dtstringDatum der Ad-Daten (YYYY-MM-DD)
adaccount_idstringAd-Account-Identifier
sourcestringAd-Plattform (meta, google, tiktok etc.)
campaign_idstringKampagnen-Identifier
campaign_namestringKampagnen-Name
adgroup_idstringAd-Group-Identifier
adgroup_namestringAd-Group-Name
ad_idstringAd-Identifier
ad_namestringAd-Name
spendintegerSpend in der kleinsten Währungs-Einheit (Cent)
impressionsintegerAnzahl Impressions
clicksintegerAnzahl Clicks
reachintegerAnzahl einzigartiger erreichter Nutzer (0, falls nicht von der Plattform gemeldet)

Totals

Der Ads-Endpunkt liefert zusätzlich ein totals-Objekt auf Top-Level mit aggregierten Werten:

{
  "totals": {
    "total_ads": 500,
    "total_spend": 123456,
    "total_impressions": 9876543,
    "total_clicks": 54321,
    "total_reach": 7654321
  },
  "data": [...],
  "pagination": { ... }
}

Hinweise

  • Spend wird in der kleinsten Währungs-Einheit (z. B. Cent) zurückgegeben. Teile durch 100 für den Hauptwert.
  • Reach kann 0 sein, wenn die Plattform es nicht meldet (z. B. Google Ads).
  • Daten sind pro Ad pro Tag dedupliziert. Werden die gleichen Ad-Daten mehrfach importiert, wird nur die neueste Version zurückgegeben.
  • Erfordert die Berechtigung read:<source> oder admin:admin für deinen API-Key.

Fehler

API-Fehlercodes und Behandlung

Die Adverfly-API verwendet Standard-HTTP-Statuscodes, um Erfolg oder Fehlschlag von Anfragen anzuzeigen.

HTTP-Statuscodes

Status CodeStatusDescription
200OKAnfrage erfolgreich
400Bad RequestFehlende Pflicht-Header oder ungültige Parameter
401UnauthorizedUngültiger API-Key oder Client-Secret
403ForbiddenGültige Anmeldedaten, aber unzureichende Berechtigungen für die angefragte Source
404Not FoundAngefragter Endpunkt existiert nicht
405Method Not AllowedHTTP-Methode wird nicht unterstützt
429Too Many RequestsRate-Limit überschritten (auf API-Gateway-Ebene)
500Internal Server ErrorUnerwarteter Server-Fehler

Fehler-Response-Format

Bei einem Fehler liefert die API ein JSON-Objekt mit einem message-Feld:

Response401 Unauthorized
{
  "message": "Invalid API key"
}

Häufige Fehlermeldungen

CodeDescription
Missing x-api-key headerDer x-api-key-Header fehlte in der Anfrage (HTTP 400)
Missing client-secret headerDer client-secret-Header fehlte in der Anfrage (HTTP 400)
Invalid API keyDer angegebene API-Key existiert nicht oder wurde widerrufen (HTTP 401)
Invalid client secretDas Client-Secret passt nicht zum API-Key (HTTP 401)
You do not have access to pixel dataDein API-Key hat keine Pixel-Read-Berechtigungen (HTTP 403)
You do not have access to ads dataDein API-Key hat keine Ads-Read-Berechtigungen (HTTP 403)
You do not have access to the requested sourcesDein API-Key hat keine Berechtigung für eine oder mehrere angefragte Source-Plattformen (HTTP 403)
Invalid start_date or end_date parameterDatum muss im Format YYYY-MM-DD sein (HTTP 400)
start_date must be before end_dateStartdatum liegt nach dem Enddatum (HTTP 400)
limit must be a positive integerDer limit-Parameter muss eine positive Zahl sein (HTTP 400)
offset must be a non-negative integerDer offset-Parameter darf nicht negativ sein (HTTP 400)
session_id must be numericDer session_id-Filter muss numerisch sein (HTTP 400)
visitor_id must be numericDer visitor_id-Filter muss numerisch sein (HTTP 400)
is_new_customer must be one of 0,1,true,falseUngültiger Wert für is_new_customer-Filter (HTTP 400)
Method not allowedDie verwendete HTTP-Methode wird nicht unterstützt — verwende GET (HTTP 405)

Berechtigungen

API-Keys nutzen ein Source-basiertes Berechtigungs-System. Jeder Key kann Berechtigungen wie read:meta, read:google etc. haben. admin:admin gibt Vollzugriff auf alle Sources.

Wenn du Ads von einer Source anfragst, für die dein Key keine Berechtigung hat, erhältst du einen 403 Forbidden-Response.

MCP-Server

Workspace aus Claude Desktop, Cursor oder jedem MCP-kompatiblen Client abfragen

Adverfly stellt seine Analytics-Tools als Model-Context-Protocol-Server bereit. Jeder MCP-kompatible Client (Claude Desktop, Cursor, Custom-Agents) kann deine Workspace-Daten mit denselben Tools abfragen, die auch der in-product Cortex-Agent nutzt — Analytics, MMM-Ergebnisse, Empfehlungen, Attribution, Creative-Performance und mehr.

POST/mcp

Was es kann

  • Read-Only-Zugriff auf jedes Cortex-Analytics-Tool, via JSON-RPC 2.0
  • Workspace-scoped — der API-Key bestimmt den Workspace
  • Gleiches Permission-Modell wie die Data-API (Quellen-Zugriff per Key-Permissions)

Write-Tools (Notiz speichern, Bild generieren, Export senden) sind via MCP nicht verfügbar.

Authentifizierung

API-Key + Client-Secret in einem einzigen Bearer-Header:

Authorization: Bearer <api_key>:<client_secret>

Die beiden Werte werden mit Doppelpunkt getrennt. Alternativ funktionieren die Standard-Header x-api-key + client-secret, falls dein MCP-Client das bevorzugt.

Credentials in Workspace-EinstellungenAPI-Keys erzeugen.

Methoden

JSON-RPC 2.0. Drei Methoden:

MethodeAuthBeschreibung
initializeNeinServer-Handshake — gibt Protokoll-Version + Server-Info zurück
tools/listJaAlle Tools mit Beschreibung und (offenem) Input-Schema
tools/callJaTool ausführen. Params: { name, arguments }

Anbindung an Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json bearbeiten:

{
  "mcpServers": {
    "adverfly": {
      "url": "https://api.adverfly.com/mcp",
      "headers": {
        "Authorization": "Bearer <api_key>:<client_secret>"
      }
    }
  }
}

Claude Desktop neu starten. Die Adverfly-Tools tauchen im Tool-Menü auf, Claude kann sie im Chat callen.

Anbindung an Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "adverfly": {
      "url": "https://api.adverfly.com/mcp",
      "headers": {
        "Authorization": "Bearer <api_key>:<client_secret>"
      }
    }
  }
}

Schnelltest aus dem Terminal

Tools auflisten:

curl -X POST https://api.adverfly.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <api_key>:<client_secret>' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Tool callen — z. B. Analytics-Query für die letzten 7 Tage:

curl -X POST https://api.adverfly.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <api_key>:<client_secret>' \
  -d '{
    "jsonrpc":"2.0",
    "id":2,
    "method":"tools/call",
    "params":{
      "name":"analytics.query",
      "arguments":{
        "metrics":["spend","revenue","roas"],
        "filters":{"date_from":"2026-05-10","date_to":"2026-05-17"}
      }
    }
  }'

Verfügbare Tools

Die MCP-Oberfläche startet bewusst klein. tools/list callen für die aktuelle Liste.

v1 — ein Tool:

  • analytics.query — flexible Query für jede Metrik (Spend, Revenue, ROAS, Sessions, Conversions, etc.) × Breakdown (Channel, Campaign, Creative, Country, …) × Zeitraum × Source-Filter.

Dieses eine Tool deckt die meisten „zeig mir X"-Fragen ab. Mehr kommen, sobald Kunden danach fragen — Write- und Side-Effect-Tools bleiben voraussichtlich in der in-product MCP-App mit Approval-Gate.

Fehler-Responses

JSON-RPC-Fehler-Envelope:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": { "code": -32001, "message": "Invalid API key" }
}
CodeBedeutung
-32700Parse-Error — Body ist kein valides JSON
-32600Invalid Request — method fehlt
-32601Unbekannte Methode oder unbekannter Tool-Name
-32602Ungültige Params für das Tool
-32001Auth-Fehler (fehlender/ungültiger API-Key)
-32603Interner Server-Fehler

HTTP-Status ist 200 für alle JSON-RPC-Responses (auch Errors) — Fehler-Detail steht im error-Feld.