Marketing-Analysen mit Claude Code über einen app-scoped Key
Mit einem app-scoped Management-Key mit Leserecht lassen sich Kampagnen eines einzelnen Apps prüfen, ohne Schreibrechte zu vergeben. Der Key lässt sich per whoami prüfen, danach folgen Kampagnenberichte und Entscheidungen.

Veröffentlicht am 2. November • Ursprünglich veröffentlicht auf attrikit.io • KI-unterstützt
Dieser Artikel wurde mit KI-Unterstützung verfasst und anhand der aufgeführten Quellen geprüft.
Claude Code Marketing-Analytik bedeutet, Claude Code aufzufordern, Kampagnendaten über verbundene Tools zu lesen und zu erklären, was eine Budgetentscheidung stützt. Bei AttriKit besteht die Verbindung aus dem Model Context Protocol Server, wobei der Zugriff durch einen Management-Key begrenzt wird. Beginnen Sie mit einem App-spezifischen Key mit Leseberechtigung und fragen Sie dann, welche Kampagnen Aufmerksamkeit benötigen und warum.
Das Model Context Protocol, kurz MCP, ist ein Open-Source-Standard zur Verbindung von KI-Anwendungen mit externen Systemen. Anthropics MCP-Dokumentation beschreibt, wie Claude Code über MCP-Server eine Verbindung zu Tools, Datenbanken und APIs herstellt.
AttriKit stellt über seinen MCP-Server 39 Management-Tools bereit. Dazu gehören Kampagnenberichte, Attributionssummen, Ausgaben, aktuelle Ereignisse und Kampagnenentscheidungen. Der Server stellt außerdem Schreib-Tools bereit, sodass die Wahl des Keys Teil der Workflow-Einrichtung ist.
Erstellen Sie den ersten Management-Key im AttriKit-Dashboard unter Settings, API keys & MCP. Wählen Sie die App aus, die Sie prüfen möchten, und geben Sie dem Key Leseberechtigung. Lassen Sie die Schreibberechtigung für diese Berichtssitzung deaktiviert.
Folgen Sie dem MCP-Einrichtungsleitfaden für die Client-Konfiguration. AttriKits Claude-Code-Konfiguration gehört in die.mcp.json des Projekts. Sie startet @attrkit/mcp über npx und übergibt ATTRKIT_API_KEY aus der Umgebung. Der macOS-Login-Befehl bietet einen weiteren Weg: Er prüft den Key und speichert ihn in der Keychain.
Halten Sie das Geheimnis aus dem Gespräch und aus der Konfigurationsdatei heraus. Anthropic dokumentiert die Umgebungsvariablen-Erweiterung in.mcp.json, sodass die Konfiguration auf eine Variable verweisen kann, ohne deren Wert zu enthalten.
Führen Sie claude mcp list aus, um die Client-Verbindung zu prüfen. Bitten Sie den Agenten dann, whoami aufzurufen. AttriKit gibt den authentifizierten Workspace, die App-Beschränkung sowie die Lese- und Schreib-Berechtigungen zurück. Prüfen Sie diese, bevor Sie Kampagnendaten anfordern.
Eine verbundene Verbindung ist kein Beweis für einen gültigen Key. AttriKits Troubleshooting-Leitfaden empfiehlt ausdrücklich whoami, wenn der Client sich verbindet, aber Tool-Aufrufe bei der Authentifizierung fehlschlagen.
App-Bereich und Leseberechtigung beantworten unterschiedliche Fragen. Der App-Bereich bestimmt, auf welche App der Key zugreifen kann. Die Leseberechtigung bestimmt, ob die Sitzung Daten prüfen kann, ohne sie zu verändern.
Die Fähigkeitenmatrix der Management API gilt auch für MCP. Ein App-Key bleibt selbst mit Schreibberechtigung auf seine App beschränkt.
Das wird wichtig, wenn eine Berichtsaufgabe auf fehlende Daten stößt. Wenn der Agent eine Workspace-Integration nicht prüfen kann, ersetzen Sie den Key nicht einfach durch einen Workspace-Key, um die Antwort zu vervollständigen. Lassen Sie ihn die nicht verfügbare Prüfung benennen. Prüfen Sie diese Konfiguration separat.
Ein App-spezifischer Key mit Schreibberechtigung kann dennoch Ressourcen seiner App verändern. Zu den dokumentierten Fähigkeiten gehören das Aktualisieren oder Archivieren dieser App, das Rotieren des veröffentlichbaren Keys und die Verwaltung der diesem Key zugeordneten Keys. Der App-Bereich allein macht eine Sitzung nicht schreibgeschützt.
Für einen Solo-Entwickler, der ein Produkt prüft, beginnen Sie mit der engeren Kombination: eine App und Leseberechtigung. Erweitern Sie den Zugriff nur für eine separate Aufgabe, die einen bestimmten Schreibvorgang erfordert.
"Welche Kampagne sollte ich streichen?" lässt den Berichtszeitraum und die Entscheidungsgrundlage offen. Geben Sie dem Agenten beides, bevor er beginnt.
Prüfen Sie nur die App, die dieser Key erlaubt. Rufen Sie zuerst whoami auf und nennen Sie die App-Beschränkung und die Berechtigungen, ohne den Key anzuzeigen. Bitten Sie mich, einen Berichtszeitraum zu wählen, und verwenden Sie dann denselben Zeitraum für Kampagnenberichte, die Attributions-Zusammenfassung und die Kampagnenentscheidungen. Blättern Sie durch die Kampagnenberichte über jeden next_cursor. Halten Sie in get_campaign_decision die aktuellen Calls in suggestions getrennt von der aufgezeichneten Historie in data und nennen Sie jede Kampagne, die keinen aktuellen Call hat. Geben Sie jeden Decision-Call exakt wie zurückgegeben wieder. Erklären Sie die stützenden Ausgaben, den Umsatz, die Evidence-Labels und die fehlenden Daten. Rufen Sie keine Schreib-Tools auf.
Die Zeitraum-Anweisung verhindert eine bestimmte Abweichung. AttriKits Tool-Definitionen dokumentieren unterschiedliche Standardwerte für list_campaigns und get_campaign_decision. Ein explizit geteilter Zeitraum vermeidet es, einen Bericht mit einer Entscheidung zu vergleichen, die einen anderen Zeitraum abdeckt.
Verwenden Sie list_campaigns für den Kampagnenbericht und get_campaign_decision für den Scale-, Cut- oder Hold-Call der Engine. Das Decision-Tool weist den Agenten an, diesen Call wörtlich wiederzugeben. Wenn es not_enough_data zurückgibt, sollte die Antwort das besagen.
Bitten Sie den Agenten, die zurückgegebene Entscheidung von seiner eigenen Erklärung zu unterscheiden. Eine nützliche Antwort sagt, welches Tool den Call geliefert hat, welchen Zeitraum er abgedeckt hat und welche fehlenden Eingaben die Interpretation einschränken.
Akzeptieren Sie keine vollständig wirkende Rangliste aus einer unvollständigen Liste. Die Berichte unterstützen Paginierung. Ein Agent sollte next_cursor folgen, bis keine Seiten mehr übrig sind, bevor er behauptet, jede Kampagne geprüft zu haben.
Das Decision-Tool paginiert anders. Sein next_cursor blättert durch die aufgezeichnete Entscheidungshistorie in data, während die aktuellen Calls in suggestions ankommen, die auf das Limit der Anfrage begrenzt sind und nicht paginieren. Dem Cursor zu folgen bringt daher keine weiteren aktuellen Calls. Bitten Sie den Agenten stattdessen, jede Kampagne ohne aktuellen Call zu benennen, statt eine anzunehmen.
AttriKits Produkttext unterscheidet verifizierte, abgeglichene, geschätzte sowie organische oder unbekannte Ergebnisse. Bewahren Sie diese Labels in der Antwort. Ein Satz, der sie alle durch "attributierte Installs" ersetzt, entfernt Informationen, die Sie für die Entscheidung benötigen.
Die Attributions-Zusammenfassung gibt Summen nach Evidence-Klassen, Umsatz, Marketing Efficiency Ratio und Datenfrische zurück. Bitten Sie den Agenten, die zurückgegebenen Kategorien getrennt anzuzeigen und jedes Feld zu erklären, das er aus der Antwort nicht interpretieren kann.
Geschätzte Kampagnensummen sollten Schätzungen bleiben. AttriKits Berichtsdokumentation unterscheidet außerdem modellierte Restwerte auf Kampagnenebene von Ergebnissen, die einzelnen Anzeigen zugeordnet sind. Wenn ein Restwert keine Anzeigen-Zuordnung hat, sollte der Agent ihn auf Kampagnenebene belassen.
Organisch oder unbekannt sollte ebenfalls getrennt bleiben. AttriKits Dokumentation sagt, dass der organische Restwert niemals einer Kampagne neu zugeordnet wird. Bitten Sie den Agenten nicht, ihn auf Kampagnen zu verteilen, damit der Bericht vollständig wirkt.
Formulieren Sie die Empfehlung um, ohne die Evidence-Kategorien zusammenzuführen. Nennen Sie jeden geschätzten Betrag und jeden Kampagnen-Restwert, der keiner Anzeige zugeordnet ist. Lassen Sie unbekannte Werte unbekannt. Zeigen Sie, welche zurückgegebenen Felder jede Schlussfolgerung stützen.
Zeiträume brauchen dieselbe Sorgfalt. Das Kampagnen-Tool stellt aggregation_basis bereit und weist den Agenten an, es zu lesen, bevor er einen unteren Endpunkt beschreibt. Eine Summe von Komponenten-Endpunkten ist ein Szenario, keine garantierte Untergrenze.
Sie müssen diese Felder nicht aus dem Gedächtnis interpretieren. Bitten Sie den Agenten, die zurückgegebene Basis neben seiner Erklärung anzugeben. Lehnen Sie Formulierungen ab, die ein Szenario in eine Zusicherung über das schlechtestmögliche Kampagnenergebnis verwandeln.
Eine Kampagnenprüfung sollte die Datenvollständigkeit einschließen, nicht nur eine Rangliste.
AttriKits get_spend-Tool gibt importierte Ausgaben, Kostenmodelle, Vollständigkeit und Ausgaben-Frische zurück. Fordern Sie diese Prüfungen an, bevor Sie eine Empfehlung auf Basis des Returns nach Kosten akzeptieren.
Ausgaben lesen und Ausgaben aktualisieren sind unterschiedliche Vorgänge. get_spend liest die gespeicherten Daten. pull_network_spend ruft Daten ab und importiert sie, und seine Tool-Definition kennzeichnet es als Schreibvorgang. Eine Berichtssitzung sollte veraltete Ausgaben melden, statt sie stillschweigend zu aktualisieren.
Umsatz braucht ebenfalls eine explizite Grundlage. Bitten Sie den Agenten, den Zeitraum, Währungsinformationen und fehlende Umsatzfelder im Bericht zu benennen. AttriKit dokumentiert, dass Umsätze in Kampagnen- und Anzeigenberichten null sein können, wenn sie mehrere Währungen umfassen. Null ist nicht null.
Wenn die Frage lautet, ob Abonnement-Umsätze den korrekten Installs zugeordnet wurden, verwenden Sie den RevenueCat-Attributions-Leitfaden als separate diagnostische Referenz. Machen Sie aus einer ungelösten Umsatzfrage keine selbstbewusste Kampagnen-Streichung.
AttriKits MCP-Tools umfassen auch Mutationen neben Berichten. Beispiele sind das Importieren von Ausgaben, das Ändern des Status einer Kampagnenverknüpfung und das Aufzeichnen einer Kampagnenentscheidung. Die Management API verlangt für Mutationen Schreib-Berechtigung.
Die Tool-Definitionen kennzeichnen Lese-Tools mit readOnlyHint: true und Schreib-Tools mit readOnlyHint: false. Diese Labels beschreiben die Tools. Verwenden Sie die Berechtigungen des Keys, um diese Berichtssitzung einzuschränken.
Nehmen Sie nicht an, dass jeder Schreibvorgang einen Bestätigungsbildschirm oder eine Vorschau hat. Das record_campaign_decision-Schema hat kein Bestätigungs- oder Dry-Run-Argument. Es nimmt die App, die Kampagne, den Decision-Call, den Berichtszeitraum und einen optionalen Idempotenz-Key entgegen und übermittelt dann den Schreibvorgang.
Halten Sie für KI-Agenten-Kampagnenanalytik die erste Sitzung auf die Antwort fokussiert. Wenn Sie später eine Entscheidung aufzeichnen möchten, autorisieren Sie das als separate Aktion mit einem geeigneten Key.
record_campaign_decision friert den aktuellen Kampagnen-Zeitraum, die Ausgaben, Kosten, die Umsatzgrundlage und die Modellversion der geprüften Periode serverseitig ein. Die Beschreibung sagt, dass Aufrufer diese Receipt-Provenienz nicht selbst verfassen können. Zeichnen Sie nur einen zurückgegebenen Scale-, Cut- oder Hold-Call auf, mit demselben Zeitraum, den Sie geprüft haben. Ein not_enough_data-Call wird berichtet, nicht aufgezeichnet: Das Tool akzeptiert nur scale, cut und hold.
Die Festhaltung einer Entscheidung ist kein Nachweis dafür, dass sich ein Werbebudget geändert hat. Ebenso ändert update_link_status den Status eines AttriKit-Tracking-Links; dieses Ergebnis sollte nicht als das Pausieren einer Werbekampagne beschrieben werden.
Wenn ein Schreibvorgang abläuft, befolge die dokumentierte Retry-Regel von AttriKit: Verwende für dieselbe Anfrage denselben Idempotency-Key erneut. Nach einem Timeout kann das Ergebnis ungewiss sein. Eine neue Anfrage zu starten klärt nicht, was mit der ersten passiert ist.
Der output einer Claude MCP Attribution Review sollte kurz genug sein, um gegen seine Eingaben geprüft zu werden. Frage nach App, Reporting-Zeitraum, zurückgegebenem Kampagnen-Call, belegenden Zahlen, Evidenz-Kategorien und offenen, ungelösten Prüfungen.
Eine Kampagne kann ein Kandidat für eine Kürzung sein. Sie kann aber auch eine Ausgabenkorrektur, eine Umsatzuntersuchung oder mehr Daten erfordern. Die Antwort sollte diese Unterscheidung bewahren.
Schließe mit einer konkreten nächsten Aktion für jede Kampagne ab. Eine rein lesende Analyse endet mit einer Empfehlung und ihrer Evidenz. Jede Festhaltung oder operative Änderung erhält eine eigene Freigabe und ein eigenes Ergebnis.
Originale veröffentlicht auf dem AttriKit-Blog. AttriKit ist Web-to-App-Attribution für iOS und Android, entwickelt von Clashware Sàrl in Lausanne.
Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.
Original (Englisch) anzeigen
Posted on Nov 2 • Originally published at attrikit.io • AI-assisted
This article was drafted with AI assistance and checked against the sources listed.
Claude Code marketing analytics means asking Claude Code to read campaign data through connected tools and explain what supports a budget decision. For AttriKit, the connection is its Model Context Protocol server, with access bounded by a management key. Start with an app-scoped key that has read permission, then ask which campaigns need attention and why.
Model Context Protocol, or MCP, is an open-source standard for connecting AI applications to external systems. Anthropic's MCP documentation describes how Claude Code connects to tools, databases, and APIs through MCP servers.
AttriKit exposes 39 management tools through its MCP server. These include campaign reports, attribution totals, spend, recent events, and campaign decisions. The server also exposes write tools, so choosing the key is part of setting up the workflow.
Create the first management key in the AttriKit dashboard under Settings, API keys & MCP. Select the app you want to review and give the key read permission. Keep write permission off for this reporting session.
Follow the MCP setup guide for the client configuration. AttriKit's Claude Code configuration goes in the project's.mcp.json. It starts @attrkit/mcp through npx and forwards ATTRKIT_API_KEY from the environment. The macOS login command provides another route: it checks the key and stores it in the Keychain.
Keep the secret out of the conversation and configuration file. Anthropic documents environment variable expansion in.mcp.json, so the configuration can reference a variable without containing its value.
Run claude mcp list to inspect the client connection. Then ask the agent to call whoami. AttriKit returns the authenticated workspace, app restriction, and read/write scopes. Check those before requesting campaign data.
A connected process is not proof of a valid key. AttriKit's troubleshooting guide specifically recommends whoami when the client connects but tool calls fail authentication.
App scope and read permission answer different questions. App scope determines which app the key can reach. Read permission determines whether the session can inspect data without changing it.
The Management API capability matrix applies to MCP too. An app key stays clamped to its app even when it has write permission.
This matters when a reporting task encounters missing data. If the agent cannot inspect a workspace integration, do not replace the key with a workspace key just to complete the answer. Have it name the unavailable check. Review that configuration separately.
An app-scoped key with write permission can still change resources belonging to its app. The documented capabilities include updating or archiving that app, rotating its publishable key, and managing keys clamped to it. App scope alone does not make a session read-only.
For a solo developer reviewing one product, start with the narrower combination: one app and read permission. Expand access only for a separate task that needs a specific write.
"Which campaign should I cut?" leaves the reporting period and decision basis unspecified. Give the agent both before it starts.
Review only the app allowed by this key. Call whoami first and report the app restriction and permissions without showing the key. Ask me to choose a reporting period, then use that same period for campaign reports, the attribution rollup, and campaign decisions. Page the campaign reports through every next_cursor. In get_campaign_decision, keep the current calls in suggestions apart from the recorded history in data, and name any campaign that has no current call. Report each decision call exactly as returned. Explain the supporting spend, revenue, evidence labels, and missing data. Do not call write tools.
The period instruction prevents a specific mismatch. AttriKit's tool definitions document different defaults for list_campaigns and get_campaign_decision. An explicit shared period avoids comparing one report with a decision covering another window.
Use list_campaigns for the campaign report and get_campaign_decision for the engine's scale, cut, or hold call. The decision tool instructs the agent to report that call verbatim. When it returns not_enough_data, the answer should say that.
Ask the agent to distinguish the returned decision from its own explanation. A useful answer says which tool supplied the call, which period it covered, and which missing inputs limit the interpretation.
Do not accept a complete-looking ranking from an incomplete list. The reports support pagination. An agent should follow next_cursor until there are no more pages before claiming it reviewed every campaign.
The decision tool pages differently. Its next_cursor pages the recorded decision history in data, while the current calls arrive in suggestions, which are capped at the request's limit and do not page. Following the cursor therefore does not bring in more current calls. Ask the agent to name any campaign that has no current call instead of assuming one.
AttriKit's product copy distinguishes verified, matched, estimated, and organic or unknown results. Preserve those labels in the answer. A sentence that replaces them all with "attributed installs" removes information you need for the decision.
The attribution rollup returns evidence-class totals, revenue, marketing efficiency ratio, and data freshness. Ask the agent to show the returned categories separately and explain any field it cannot interpret from the response.
Estimated campaign totals should remain estimates. AttriKit's reporting documentation also distinguishes campaign-level modeled remainders from results allocated to individual ads. If a remainder has no ad allocation, the agent should leave it at campaign level.
Organic or unknown should stay separate too. AttriKit's documentation says the organic residual is never reassigned to a campaign. Do not ask the agent to distribute it across campaigns to make the report look complete.
Restate the recommendation without merging evidence categories. Identify any estimated amount and any campaign-level remainder that is not allocated to an ad. Leave unknown values unknown. Show which returned fields support each conclusion.
Ranges need the same care. The campaign tool exposes aggregation_basis and tells the agent to read it before describing a lower endpoint. A sum of component endpoints is a scenario, not a guaranteed floor.
You do not need to interpret those fields from memory. Ask the agent to include the returned basis beside its explanation. Reject wording that turns a scenario into a promise about the campaign's worst possible result.
A campaign review should include data completeness, not just a ranking.
AttriKit's get_spend tool returns imported spend, cost models, completeness, and spend freshness. Ask for those checks before accepting a recommendation based on return after costs.
Reading spend and refreshing spend are different operations. get_spend reads the stored data. pull_network_spend fetches and imports data, and its tool definition marks it as a write. A reporting session should report stale spend rather than silently refreshing it.
Revenue needs an explicit basis too. Ask the agent to identify the period, currency information, and missing revenue fields in the report. AttriKit documents that campaign and ad report revenue can be null when it spans multiple currencies. Null is not zero.
If the question is whether subscription revenue has joined the correct installs, use the RevenueCat attribution guide as the separate diagnostic reference. Do not turn an unresolved revenue question into a confident campaign cut.
AttriKit's MCP tools include mutations as well as reports. Examples include importing spend, changing a campaign link's status, and recording a campaign decision. The Management API requires write scope for mutations.
The tool definitions label read tools with readOnlyHint: true and write tools with readOnlyHint: false. Those labels describe the tools. Use the key's permissions to restrict this reporting session.
Do not assume every write has a confirmation screen or preview. The record_campaign_decision schema has no confirmation or dry-run argument. It takes the app, campaign, decision call, reporting period, and an optional idempotency key, then submits the write.
For AI agent campaign analytics, keep the first session focused on the answer. If you later want a decision recorded, authorize that as a separate action with an appropriate key.
record_campaign_decision freezes the reviewed period's current campaign range, spend, costs, revenue basis, and model version server-side. Its description says callers cannot author that receipt provenance. Record only a returned scale, cut or hold call, with the same period you reviewed. A not_enough_data call is reported, not recorded: the tool accepts only scale, cut and hold.
Recording a decision is not evidence that an advertising budget changed. Likewise, update_link_status changes an AttriKit tracking link's status; do not describe that result as pausing an advertising campaign.
If a write times out, follow AttriKit's documented retry rule: reuse the same idempotency key for the same request. A timeout can leave the result uncertain. Starting a new request does not resolve what happened to the first one.
The output of a Claude MCP attribution review should be short enough to check against its inputs. Ask for the app, reporting period, returned campaign call, supporting figures, evidence categories, and unresolved checks.
A campaign may be a candidate to cut. It may also need a spend correction, a revenue investigation, or more data. The answer should preserve that distinction.
Finish with a concrete next action for each campaign. Read-only analysis ends with a recommendation and its evidence. Any recording or operational change gets its own authorization and result.
Originally published on the AttriKit blog. AttriKit is web-to-app attribution for iOS and Android, built by Clashware Sàrl in Lausanne.