Website budget by month
budget_aggregatesModelled monthly ad budget of one to three websites over a window of whole months (from_month/to_month YYYY-MM; default: the last six months available). MODEL ESTIMATES in USD (value_kind=modeled_estimate), never observed spend; quote them as estimates. Per site and month (oldest first): p10/p50/p90 band, method_a, method_b, budget_a (sum of the non-skipped countries' budgets), computed_at, ads_new, ads_active, creatives_active, visits; p50_change_pct (vs the previous complete calendar month, 0.1), p50_acceleration_pp (change minus the previous change), ads_new_change_pct, visits_change_pct — null for the first month, the partial current month (partial=true, never used in a change) or a missing/zero base. countries: the top_countries (default 15, max 30) by the latest complete month's budget_a, each with its months (budget_a, budget_share, ads_share, geo_share, geo_source, skipped), budget_share_change_pp and budget_a_change_pct between the last two complete months. creatives per month: creatives counted, allocated_share, top1/top3/top10 shares of the site budget, hhi (sum of squared shares) and the top_creatives (default 10, max 20) with creative_key, share, budget_base, p50, ads, countries. seasonal_multiplier (> 0, <= 10) adds p50_change_adjusted_pct per month and budget_a_change_adjusted_pct per country = round(100 x ((1 + change/100) / multiplier - 1), 1), and echoes seasonal_multiplier. Shares also come as percents: budget_share_pct, top1/top3/top10_share_pct, hhi_pct, share_pct. trend: trailing consecutive declines of p50 and ads_new, last_change_pct, last_acceleration_pp. With 2-3 sites, ranking orders them by last_acceleration_pp, unknown last. A site without a reliable estimate answers status=no_estimate with empty lists (not an error). QUOTA: 1 MCP credit per call. PRICING: on paid plans ×1 after 500 MCP credits/month; one-time consent via accept_pricing_terms; before calling, get the maximum debit from estimate_cost (free) and tell the user.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"domains": "<domains>"
},
"name": "budget_aggregates"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | 1-3 website domains (e.g. halara.com), as get_shop takes them | |
| to_month | No | last month YYYY-MM; default: the newest month with an estimate | |
| from_month | No | first month YYYY-MM; default: six months ending at to_month | |
| top_countries | No | countries by the latest complete month's budget, 1-30 (default 15) | |
| top_creatives | No | creatives per month in the top, 1-20 (default 10) | |
| seasonal_multiplier | No | seasonal multiplier the question names (e.g. 1.2), > 0 and <= 10; adds p50_change_adjusted_pct and budget_a_change_adjusted_pct = 100 x ((1 + change/100) / multiplier - 1) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| error | No | Present only when isError is true: machine-readable failure. The human explanation stays in content. | |
| params | No | Request parameter echo: applied = parameters that shaped this result; normalized = parameters rewritten before applying (alias, type coercion, resolved id); ignored = parameters that were accepted but NOT applied, with the reason. | |
| addon_hints | No | Add-on modules that have additional data for objects of this result (no prices, no paid values). subscription_status=active: the account has the module — use its normal path. Do not push a purchase the user did not ask about. |