Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ATTRKIT_API_KEYYesYour AttriKit API key. Required unless the key is supplied via the macOS Keychain item `attrkit-mcp`, created with `npx -y @attrkit/mcp login`.
ATTRKIT_API_URLNoOptional AttriKit API base URL. Defaults to https://attrikit.io. Must use HTTPS, except HTTP is allowed only for loopback hosts. Credentials, query strings, and fragments are not allowed.https://attrikit.io

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
whoamiA

Return the authenticated workspace, plan, app restriction and read/write scopes.

get_usage_capA

Return the workspace's monthly qualified-install cap, alert email, current billing period and usage. Requires a workspace-scoped read key.

set_usage_capA

Set a monthly qualified-install cap of at least 10,000 and its alert email. Pass null for both values to clear the cap. Requires a workspace-scoped write key.

list_appsA

List the iOS and Android apps in your AttriKit workspace (id, name, platform, bundle id, store id, status).

create_appA

Create an iOS or Android app without the web UI. Returns the publishable key and a one-time app-scoped management key.

get_appB

Return one app's configuration.

update_appC

Update app metadata, store destination, timezone or coverage mode.

archive_appB

Archive an app and remove it from active customer operations.

get_publishable_keyB

Reveal the recoverable SDK publishable key for an app.

rotate_publishable_keyA

Issue a new SDK publishable key and return the old-key grace deadline.

list_api_keysA

List masked workspace and app management keys. Secret plaintext is never returned.

create_api_keyA

Create a read-only or read/write workspace or app key. The secret is returned once.

revoke_api_keyB

Immediately revoke a management key by id.

list_linksB

List tracking links, optionally for one app. Each link's tracking_url is the campaign link to use in the ad (null if unavailable); url is the store destination.

list_campaignsA

List ad campaigns with their honest profit surface. call preserves the original v1 fail-closed automation behavior for multi-component rows; recommended_call is the additive SCALE/CUT/HOLD recommendation the current engine made. It is backed by envelope_lower/envelope_central/envelope_upper. Read aggregation_basis before quoting the low end: single_component_quantiles means it is a calibrated 5th percentile; marginal_endpoint_sum_no_joint_coverage means it is the sum of each component period's own low end, which is pessimistic against independence but is NOT a floor or a guarantee, so describe it as a scenario. The quantile-named profit_p05/profit_p50/profit_p95 are null unless one component supplied calibrated ones. Also includes spend, retention, and payback.

list_adsC

Return ad and ad-set performance, evidence tiers, ROAS, CPA, CPC and modeled remainders.

list_recent_eventsB

Return the same recent attribution events and installs visible on the Live dashboard.

list_event_deliveriesA

Return one row per delivery of an event to a network connection, newest first: its state (held, queued, sending, retrying, sent, suppressed or failed), the reason with a one-line explanation (for example consent_suppressed, attributed_only_suppressed or destination_event_too_old), attempts, the last HTTP status, and for a held row when it is expected to be released. Use it to answer why an event did not reach Meta, TikTok or Google. Read scope is enough.

get_campaign_decisionA

Return AttriKit's profit DECISIONS for your campaigns: the scale/cut/hold call and confidence, computed by the attribution engine. Report the call VERBATIM — do not recompute or override it; when it says not_enough_data, say so. This is the tool to drive budget automation.

record_campaign_decisionA

Record a scale/cut/hold decision for the reporting period the caller reviewed. AttriKit freezes that period's current campaign range, spend, costs, revenue basis, and model version server-side; callers cannot author receipt provenance.

get_attribution_rollupA

Return the account-level attribution overview: installs accounted-for by evidence class (verified / matched / modeled / organic), MER, revenue and data freshness.

create_campaign_linkA

Create a web-to-app tracking link for an ad campaign. Requires a write-scoped API key. Returns the link: tracking_url is the campaign link to use in the ad (for meta the ad's Website URL, for tiktok the ad's destination, for google the tracking template with the App Store URL kept as the final URL); url is only the App Store destination you passed, never the link to put in an ad. tracking_url is null when the server has no link origin configured or the network is unrecognized; then create the link in AttriKit, Links.

update_link_statusA

Change a tracking link between active and disabled, and/or attach the ad network's own campaign id to a link created without one (then pull_network_spend can match its spend). Send status, network_campaign_id, or both. A campaign that already has a different network id is refused with 409 network_campaign_conflict.

get_spendA

Return imported ad spend, cost models, completeness and spend freshness. Without from, to or cursor every row comes back at once; with any of them the rows are paged, ordered by network, campaign, ad set, ad and day, and next_cursor is null on the last page.

import_spendC

Import campaign or creative-level spend rows.

set_cost_modelC

Version commission, payment fees and variable COGS used in profit decisions.

pull_network_spendA

Fetch and import creative-level spend from a configured Meta, Google or TikTok connection. AttriKit already pulls every enabled connection every 6 hours, covering today and the 3 days before; call this for an immediate pull or a longer window. Report rows are kept only for campaigns whose network id AttriKit knows (create_campaign_link.network_campaign_id); if none match, the call fails and imports nothing. A network reports rows only for ads that have delivered, so the first useful pull is after the ads start spending.

list_integrationsA

List redacted ad-network connections and their readiness.

create_integrationA

Store encrypted network credentials and choose, for each of the eight event families (install, session, trial, subscription, purchase, refund, paywall, business), which source's copy AttriKit forwards to the network. AttriKit always does the sending; the owner only picks the copy. attrkit = the events your app reports through the AttriKit SDK (the RevenueCat copy of that family is dropped). revenuecat = the events AttriKit received from your RevenueCat webhook (the SDK copy is dropped); RevenueCat itself sends nothing to the network. customer = events your own servers post to AttriKit. If your app reports subscriptions only through RevenueCat, set trial, subscription, purchase and refund to revenuecat, or none of them reach the network. For Meta and TikTok, delivery_scope and renewal_event are optional; left out, the integration sends every install's events and renewals as Purchase.

update_integrationA

Rotate credentials or enable/disable an integration. set_delivery_options changes delivery_scope, renewal_event or both on a Meta or TikTok integration, in any status, without touching its credential or status; give at least one of the two.

delete_integrationA

Delete a disabled integration. Enabled integrations must be disabled first.

get_revenuecatB

Return redacted RevenueCat status and the AttriKit webhook URL.

configure_revenuecatA

Store the RevenueCat provider app id and encrypted authorization secret for an app, and optionally the webhook signing secret (omitted, the stored one is kept).

list_webhooksB

List redacted outbound webhook subscriptions.

create_webhookB

Create an SSRF-checked webhook subscription. Returns the signing secret once.

delete_webhookC

Delete a webhook subscription.

export_eventsA

Export one app's events and installs for an inclusive date range. By default (version 1) the answer is the seven-column CSV, event rows capped at the 100,000 most recent INSIDE the range; narrow the range until it is safely below that cap when a complete snapshot is required. Pass version 2 for the wide record export (campaign, ad, evidence and revenue columns), oldest first, as csv or ndjson and paged: each page holds up to limit records (10,000 by default), and when another page follows the result carries next_cursor, which you send back as cursor with the same app_id, from and to. No next_cursor means the last page.

send_server_eventA

Report an event for one of your users from your own backend, by the customer_user_id your app passed to AttriKit.setUserID; no device installation id is needed. The event is attached to the install that id resolves to and reaches the destinations whose sender for its family is Your servers. Requires a write-scoped API key. Answers status accepted, duplicate (this event_id was already stored) or suppressed (consent.measurement is not granted, so nothing was collected), with the install_epoch_id it resolved to. 404 customer_user_not_found means no install identified with this id.

lookup_customer_attributionA

Look up the attribution of one of your users by the customer_user_id your app passed to AttriKit.setUserID: the campaign, ad set, ad, network, match confidence and attribution_status (attributed, device_matched, organic, pending or consent_required) of the user's newest install. 404 customer_user_not_found means no install identified with this id. Read scope is enough.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 39 tools

Disambiguation4/5

Most tools are clearly separated by resource and action (apps, API keys, integrations, links, spend, events, webhooks), and the descriptions add useful distinguishing detail. A few analytics tools overlap: list_campaigns exposes recommendation/profit fields also surfaced by get_campaign_decision, and list_ads/get_spend both touch performance and spend, so agents may need to read descriptions carefully.

Naming Consistency4/5

Names are overwhelmingly lowercase snake_case with a verb_noun pattern (list_apps, create_integration, update_link_status), making the set predictable. Exceptions like whoami and minor verb choices such as archive versus delete or get versus lookup are still readable and semantically reasonable.

Tool Count2/5

39 tools is well above the 3-15 well-scoped range and makes this a heavy MCP surface. Although the platform is broad, the tool count likely needs splitting or consolidation into more focused servers.

Completeness4/5

Coverage spans app lifecycle, API keys, integrations, links, campaigns/decisions, spend, events, webhooks, RevenueCat, and usage caps, so core workflows are mostly complete. Minor gaps remain: no app delete (archive only), no link delete, no webhook update, and no single-resource getters for some resources.

Maintenance

ActivityMaintained
ResponsivenessNo issues