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
| Funktion | Beschreibung |
|---|---|
| Daten lesen | Events, Sessions, Conversions und Ads über GET-Endpunkte abrufen |
Wann API vs. JavaScript-Pixel nutzen
| Use Case | Empfohlene Methode |
|---|---|
| Website-Tracking | JavaScript-Pixel (clientseitig) |
| Daten-Export / BI-Integration | API |
| Eigene Dashboards | API |
| Echtzeit-Webanalyse | JavaScript-Pixel |
Base URL
Alle API-Anfragen sollten an folgende URL gerichtet werden:
https://api.adverfly.comAuthentifizierung
Die API verwendet API-Keys zur Authentifizierung. API-Anmeldedaten kannst du in deinen Workspace-Einstellungen erzeugen.
| Parameter | Type | Required | Description |
|---|---|---|---|
x-api-key | string | Required | Dein Workspace-API-Key |
client-secret | string | Required | Dein Workspace-Client-Secret |
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.
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
limit | integer | Anzahl zurückgegebener Datensätze |
offset | integer | Anzahl übersprungener Datensätze |
has_more | boolean | Ob weitere Datensätze verfügbar sind |
next_offset | integer oder null | Offset-Wert für die nächste Seite (null, wenn has_more false ist) |
start_date | string | Beginn des abgefragten Datumsbereichs |
end_date | string | Ende 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
| Limit | Wert |
|---|---|
| Tageslimit | 4.320 Anfragen pro Tag |
| Rate Limit | 10 Anfragen pro Sekunde |
| Burst-Limit | 20 Anfragen |
| Max. Datensätze pro Anfrage | 500 (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.
/v3/eventsQuery-Parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Optional | Startdatum im Format YYYY-MM-DD (Standard: vor 7 Tagen). Alias: from |
end_date | string | Optional | Enddatum im Format YYYY-MM-DD (Standard: heute). Alias: to |
name | string | Optional | Filter nach Event-Name. Wildcards mit * (z. B. survey_* für alle Survey-Events). Alias: event_name |
session_id | integer | Optional | Filter nach Session-ID |
visitor_id | integer | Optional | Filter nach Visitor-ID |
source | string | Optional | Filter nach Ad-Source. Komma-getrennt für mehrere (z. B. meta,google). Alias: sources |
limit | integer | Optional | Anzahl zurückgegebener Datensätze (Standard: 100, Max: 500). Alias: page_size |
offset | integer | Optional | Anzahl übersprungener Datensätze für Pagination. Alias: page |
Beispiele für den Name-Filter
| Wert | Trifft |
|---|---|
pageview | Exakter Match — nur pageview-Events |
survey_* | Alle Events, die mit survey_ beginnen (z. B. survey_opened, survey_completed) |
*_completed | Alle Events, die mit _completed enden |
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"
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
store_id | integer | Workspace-ID |
dt | string | Event-Zeitstempel |
name | string | Event-Name (z. B. pageview, add_to_cart, survey_opened) |
session_id | integer | Session-Identifier |
visitor_id | integer | Visitor-Identifier |
visitor_timezone | string | Zeitzone des Besuchers |
adv_source | string | Ad-Plattform-Source (z. B. meta, google) |
adv_campaign_id | string | Kampagnen-ID der Ad-Plattform |
adv_adgroup_id | string | Ad-Group-ID der Ad-Plattform |
adv_ad_id | string | Ad-ID der Ad-Plattform |
adv_asset_group_id | string | Asset-Group-ID (Google Performance Max) |
utm_source | string | UTM-Source-Parameter |
utm_medium | string | UTM-Medium-Parameter |
utm_campaign | string | UTM-Campaign-Parameter |
utm_content | string | UTM-Content-Parameter |
utm_term | string | UTM-Term-Parameter |
device_type | string | Gerätetyp (desktop, mobile, tablet) |
country_code | string | ISO-Ländercode (z. B. DE, US) |
hostname | string | Website-Hostname |
pathname | string | Seitenpfad |
referrer | string | Verweisende URL |
entry_meta_keys | array | Click-ID-Parameter-Namen (z. B. fbclid, gclid) |
entry_meta_values | array | Click-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.
/v3/sessionsQuery-Parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Optional | Startdatum im Format YYYY-MM-DD (Standard: vor 7 Tagen). Alias: from |
end_date | string | Optional | Enddatum im Format YYYY-MM-DD (Standard: heute). Alias: to |
session_id | integer | Optional | Filter nach Session-ID |
visitor_id | integer | Optional | Filter nach Visitor-ID |
source | string | Optional | Filter nach Ad-Source. Komma-getrennt für mehrere. Alias: sources |
limit | integer | Optional | Anzahl zurückgegebener Datensätze (Standard: 100, Max: 500). Alias: page_size |
offset | integer | Optional | Anzahl übersprungener Datensätze für Pagination. Alias: page |
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"
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
store_id | integer | Workspace-ID |
visitor_id | integer | Visitor-Identifier |
session_id | integer | Session-Identifier |
session_start_dt | string | Session-Start-Zeitstempel |
session_end_dt | string | Session-Ende-Zeitstempel |
session_duration_seconds | integer | Session-Dauer in Sekunden |
is_bounce | integer | Ob die Session ein Bounce war (1 = ja, 0 = nein) |
session_entry_page | string | Landing-Pfad |
session_exit_page | string | Exit-Pfad |
events | integer | Gesamtzahl der Events in der Session |
pageviews | integer | Anzahl Pageviews |
add_to_carts | integer | Anzahl Add-to-Cart-Events |
initiated_checkouts | integer | Anzahl gestarteter Checkouts |
view_contents | integer | Anzahl Content-Views |
contacts | integer | Anzahl Kontakt-Events |
newsletter_signups | integer | Anzahl Newsletter-Anmeldungen |
completed_registrations | integer | Anzahl abgeschlossener Registrierungen |
app_installs | integer | Anzahl App-Installs |
add_payment_infos | integer | Anzahl eingegebener Zahlungsdaten |
adv_source | string | Ad-Plattform-Source |
adv_campaign_id | string | Kampagnen-ID der Ad-Plattform |
adv_adgroup_id | string | Ad-Group-ID der Ad-Plattform |
adv_ad_id | string | Ad-ID der Ad-Plattform |
adv_asset_group_id | string | Asset-Group-ID (Google Performance Max) |
utm_source | string | UTM-Source-Parameter |
utm_campaign | string | UTM-Campaign-Parameter |
utm_medium | string | UTM-Medium-Parameter |
utm_content | string | UTM-Content-Parameter |
utm_term | string | UTM-Term-Parameter |
device_type | string | Gerätetyp (desktop, mobile, tablet) |
country_code | string | ISO-Ländercode |
referrer | string | Verweisende URL |
pathname | string | Seitenpfad |
hostname | string | Website-Hostname |
entry_meta_keys | array | Click-ID-Parameter-Namen |
entry_meta_values | array | Click-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.
/v3/conversionsQuery-Parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Optional | Startdatum im Format YYYY-MM-DD (Standard: vor 7 Tagen). Alias: from |
end_date | string | Optional | Enddatum im Format YYYY-MM-DD (Standard: heute). Alias: to |
name | string | Optional | Filter nach Conversion-Name. Wildcards mit * (z. B. purchase_*) |
transaction_id | string | Optional | Filter nach Transaktions-/Bestell-ID |
customer_id | string | Optional | Filter nach Customer-ID |
is_new_customer | string | Optional | Filter nach Neu-/Bestandskunde (akzeptiert 0, 1, true, false) |
limit | integer | Optional | Anzahl zurückgegebener Datensätze (Standard: 100, Max: 500). Alias: page_size |
offset | integer | Optional | Anzahl übersprungener Datensätze für Pagination. Alias: page |
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"
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
store_id | integer | Workspace-ID |
dt | string | Conversion-Zeitstempel |
name | string | Conversion-Typ (z. B. purchase, lead) |
session_id | integer | Session-Identifier |
customer_id | string | Customer-Identifier (z. B. E-Mail) |
visitor_id | integer | Visitor-Identifier |
transaction_id | string | Bestell-/Transaktions-ID |
transaction_gross_revenue | integer | Umsatz in Cent (z. B. 12999 = 129,99) |
transaction_currency | string | Währungscode (EUR, USD etc.) |
transaction_country_code | string | ISO-Ländercode |
transaction_city | string | Stadt des Kunden |
hostname | string | Website-Hostname |
Hinweise
- Umsatz wird in der kleinsten Währungs-Einheit (Cent) zurückgegeben. Teile durch 100 für den Hauptwert.
- Verwende
transaction_idodercustomer_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.).
/v3/adsQuery-Parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Optional | Startdatum im Format YYYY-MM-DD. Standard: vor 7 Tagen. |
end_date | string | Optional | Enddatum im Format YYYY-MM-DD. Standard: heute. |
source | string | Optional | Filter nach Ad-Plattform. Komma-getrennt für mehrere (z. B. meta,google) |
adaccount_id | string | Optional | Filter nach Ad-Account-ID |
campaign_id | string | Optional | Filter nach Kampagnen-ID |
adgroup_id | string | Optional | Filter nach Ad-Group-ID |
ad_id | string | Optional | Filter nach Ad-ID |
limit | integer | Optional | Anzahl zurückgegebener Datensätze (Standard: 100) |
offset | integer | Optional | Anzahl übersprungener Datensätze für Pagination |
Unterstützte Sources
| Wert | Plattform |
|---|---|
meta | Meta (inkl. facebook, instagram, messenger, audience_network, threads) |
facebook | Facebook (Subset von Meta) |
instagram | Instagram (Subset von Meta) |
google | Google Ads |
tiktok | TikTok Ads |
pinterest | Pinterest Ads |
snapchat | Snapchat Ads |
outbrain | Outbrain |
taboola | Taboola |
organic | Organischer Traffic |
audience_network | Meta Audience Network (Subset von Meta) |
messenger | Meta Messenger (Subset von Meta) |
threads | Meta Threads (Subset von Meta) |
whatsapp | |
email | E-Mail-Channels |
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"
{
"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
| Feld | Typ | Beschreibung |
|---|---|---|
store_id | integer | Deine Workspace-ID |
dt | string | Datum der Ad-Daten (YYYY-MM-DD) |
adaccount_id | string | Ad-Account-Identifier |
source | string | Ad-Plattform (meta, google, tiktok etc.) |
campaign_id | string | Kampagnen-Identifier |
campaign_name | string | Kampagnen-Name |
adgroup_id | string | Ad-Group-Identifier |
adgroup_name | string | Ad-Group-Name |
ad_id | string | Ad-Identifier |
ad_name | string | Ad-Name |
spend | integer | Spend in der kleinsten Währungs-Einheit (Cent) |
impressions | integer | Anzahl Impressions |
clicks | integer | Anzahl Clicks |
reach | integer | Anzahl 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>oderadmin:adminfü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 Code | Status | Description |
|---|---|---|
| 200 | OK | Anfrage erfolgreich |
| 400 | Bad Request | Fehlende Pflicht-Header oder ungültige Parameter |
| 401 | Unauthorized | Ungültiger API-Key oder Client-Secret |
| 403 | Forbidden | Gültige Anmeldedaten, aber unzureichende Berechtigungen für die angefragte Source |
| 404 | Not Found | Angefragter Endpunkt existiert nicht |
| 405 | Method Not Allowed | HTTP-Methode wird nicht unterstützt |
| 429 | Too Many Requests | Rate-Limit überschritten (auf API-Gateway-Ebene) |
| 500 | Internal Server Error | Unerwarteter Server-Fehler |
Fehler-Response-Format
Bei einem Fehler liefert die API ein JSON-Objekt mit einem message-Feld:
{
"message": "Invalid API key"
}
Häufige Fehlermeldungen
| Code | Description |
|---|---|
Missing x-api-key header | Der x-api-key-Header fehlte in der Anfrage (HTTP 400) |
Missing client-secret header | Der client-secret-Header fehlte in der Anfrage (HTTP 400) |
Invalid API key | Der angegebene API-Key existiert nicht oder wurde widerrufen (HTTP 401) |
Invalid client secret | Das Client-Secret passt nicht zum API-Key (HTTP 401) |
You do not have access to pixel data | Dein API-Key hat keine Pixel-Read-Berechtigungen (HTTP 403) |
You do not have access to ads data | Dein API-Key hat keine Ads-Read-Berechtigungen (HTTP 403) |
You do not have access to the requested sources | Dein API-Key hat keine Berechtigung für eine oder mehrere angefragte Source-Plattformen (HTTP 403) |
Invalid start_date or end_date parameter | Datum muss im Format YYYY-MM-DD sein (HTTP 400) |
start_date must be before end_date | Startdatum liegt nach dem Enddatum (HTTP 400) |
limit must be a positive integer | Der limit-Parameter muss eine positive Zahl sein (HTTP 400) |
offset must be a non-negative integer | Der offset-Parameter darf nicht negativ sein (HTTP 400) |
session_id must be numeric | Der session_id-Filter muss numerisch sein (HTTP 400) |
visitor_id must be numeric | Der visitor_id-Filter muss numerisch sein (HTTP 400) |
is_new_customer must be one of 0,1,true,false | Ungültiger Wert für is_new_customer-Filter (HTTP 400) |
Method not allowed | Die 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.
/mcpWas 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-Einstellungen → API-Keys erzeugen.
Methoden
JSON-RPC 2.0. Drei Methoden:
| Methode | Auth | Beschreibung |
|---|---|---|
initialize | Nein | Server-Handshake — gibt Protokoll-Version + Server-Info zurück |
tools/list | Ja | Alle Tools mit Beschreibung und (offenem) Input-Schema |
tools/call | Ja | Tool 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" }
}
| Code | Bedeutung |
|---|---|
-32700 | Parse-Error — Body ist kein valides JSON |
-32600 | Invalid Request — method fehlt |
-32601 | Unbekannte Methode oder unbekannter Tool-Name |
-32602 | Ungültige Params für das Tool |
-32001 | Auth-Fehler (fehlender/ungültiger API-Key) |
-32603 | Interner Server-Fehler |
HTTP-Status ist 200 für alle JSON-RPC-Responses (auch Errors) — Fehler-Detail steht im error-Feld.