Skip to main content

Use SpendDaddy with MCP

SpendDaddy exposes read-only acquisition analytics through the Model Context Protocol. Connect a compatible AI client to query your organization's apps, Apple Ads performance, App Store context, subscription outcomes, and tracked organic App Store search ranks.

The MCP endpoint is:

https://api.spenddaddy.app/mcp

The server uses Streamable HTTP and organization-scoped bearer keys. It does not apply Apple Ads changes or expose mutation tools.

Before you start

You need:

  • A SpendDaddy organization with at least one app.
  • An organization-owner account, so you can create an MCP key.
  • An MCP client that supports remote Streamable HTTP servers and custom Authorization headers.

An MCP key is different from the first-party attribution API key. Use the MCP key only for connecting an AI client to SpendDaddy.

Create an MCP key

  1. Sign in to SpendDaddy.
  2. Open Settings → Agent API secret keys.
  3. Create a key and give it a recognizable name, such as Claude desktop or Team analytics.
  4. Copy the secret when it is shown. The full secret is shown only once.
  5. Store it in your client's secret manager or environment, not in source control.

Keys are organization-scoped. A client sees only the apps and analytics that belong to the organization that created the key.

Configure your client

Select Streamable HTTP, HTTP, or Remote MCP server in your client, depending on its terminology. Use the endpoint and header below:

SettingValue
Server URLhttps://api.spenddaddy.app/mcp
AuthorizationBearer <your_mcp_key>

Generic JSON configuration

The exact property names differ between MCP clients. This shows the values to provide when a client accepts an mcpServers JSON configuration:

{
"mcpServers": {
"spenddaddy": {
"type": "http",
"url": "https://api.spenddaddy.app/mcp",
"headers": {
"Authorization": "Bearer ${SPENDDADDY_MCP_KEY}"
}
}
}
}

${SPENDDADDY_MCP_KEY} is an illustrative environment-variable reference. Use your client's supported secret substitution, or enter the key in its secure configuration UI. Do not replace it with a real key in a checked-in configuration file.

Environment variables

For clients or wrappers that separate connection settings from secrets:

export SPENDDADDY_MCP_URL="https://api.spenddaddy.app/mcp"
export SPENDDADDY_MCP_KEY="<your_mcp_key>"

Configure the client to send:

Authorization: Bearer ${SPENDDADDY_MCP_KEY}

Verify the connection

You can verify authentication with a raw MCP initialization request. This is also useful when diagnosing a client configuration:

curl "$SPENDDADDY_MCP_URL" \
--request POST \
--header "Authorization: Bearer $SPENDDADDY_MCP_KEY" \
--header "Accept: application/json, text/event-stream" \
--header "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2026-07-28",
"capabilities": {},
"clientInfo": {"name": "curl", "version": "1.0"}
}
}'

A valid key returns a successful MCP initialization response. A missing, invalid, or revoked key returns 401 Unauthorized.

Available tools

list_apps

No arguments. Returns the apps visible to the authenticated organization, including SpendDaddy ID, App Store ID, bundle ID, primary locale, and currency. Use the SpendDaddy id as app_id in the other tools.

evaluate_keywords

Matches candidate keyword strings to country- and match-type-aware Apple Ads placements and returns joined acquisition economics.

Required arguments:

{
"app_id": 42,
"keyword_texts": ["solar watch", "sunrise alarm"],
"country": "US"
}

Optional arguments:

  • match_type: EXACT or BROAD.
  • windows: one to three windows from 7, 30, 90, 180, or 365 days.

The response includes placements, external Apple Ads IDs, spend, impressions, taps, installs, trials, paid conversions, D30 revenue, CAC, D30 ROAS, bid and impression-share context, and tracked organic rank history. Organic rank is reported under market_context.organic_rank at app/search-term/country grain:

{
"market_context": {
"organic_rank": [
{
"date": "2026-08-07",
"country_or_region": "US",
"search_term": "solar watch",
"rank": 7,
"result_limit": 200,
"checked_at": "2026-08-07T08:00:00+00:00"
}
]
}
}

A null rank means the app was not found within the tracked result limit. It does not mean the app has an exact rank beyond that limit.

compare_acquisition

Compares acquisition rows over one to three time windows.

{
"app_id": 42,
"level": "keyword",
"country": "US",
"windows": [30, 90],
"limit": 25
}

level can be campaign, ad_group, keyword, or search_term. Search-term rows contain delivery metrics only; SpendDaddy does not estimate search-term revenue or organic attribution.

get_funnel

Returns install-cohort funnels at app, campaign, ad-group, or keyword scope.

{
"app_id": 42,
"days": 180,
"granularity": "weekly",
"revenue_window": "d30"
}

granularity can be daily, weekly, or monthly. revenue_window can be d7, d30, d60, d90, or observed. Use entity_type and entity_id to scope the funnel to one campaign, ad group, or keyword.

Data and security notes

  • MCP is read-only. It has no tool for changing bids, budgets, keywords, or campaign status.
  • Static bearer keys are the current authentication method; OAuth onboarding is not enabled.
  • Money and ratios are returned as decimal strings with an explicit currency where applicable.
  • App Store metrics remain at app/country grain and are not copied onto keyword rows.
  • Search-term revenue and keyword-level organic attribution are unavailable and are never inferred.
  • Rotate or revoke a key from Settings → Agent API secret keys if it may have been exposed. Rotation invalidates the previous key immediately.

Troubleshooting

SymptomCheck
401 UnauthorizedConfirm the bearer key, endpoint, and that the key has not been rotated or revoked.
The client cannot connectConfirm that it supports remote Streamable HTTP and custom authorization headers.
list_apps returns no appsThe key may belong to another organization, or the organization may not have an app yet.
Organic rank is emptyRank checks are available only for tracked keyword/country combinations and collected dates.

For credential handling and rotation guidance, see Secrets and rotation.