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
Authorizationheaders.
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
- Sign in to SpendDaddy.
- Open Settings → Agent API secret keys.
- Create a key and give it a recognizable name, such as
Claude desktoporTeam analytics. - Copy the secret when it is shown. The full secret is shown only once.
- 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:
| Setting | Value |
|---|---|
| Server URL | https://api.spenddaddy.app/mcp |
| Authorization | Bearer <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:EXACTorBROAD.windows: one to three windows from7,30,90,180, or365days.
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
| Symptom | Check |
|---|---|
401 Unauthorized | Confirm the bearer key, endpoint, and that the key has not been rotated or revoked. |
| The client cannot connect | Confirm that it supports remote Streamable HTTP and custom authorization headers. |
list_apps returns no apps | The key may belong to another organization, or the organization may not have an app yet. |
| Organic rank is empty | Rank checks are available only for tracked keyword/country combinations and collected dates. |
For credential handling and rotation guidance, see Secrets and rotation.