Skip to main content
Glama
kLOsk

AdLoop: Google Ads, Reddit Ads & GA4

Budget forecast

estimate_budget
Read-only

Forecast clicks, cost, conversions, and CPA for keywords before campaign launch, so you can plan budgets and set CPC caps without publishing ads.

Instructions

Forecast clicks, cost, and conversions for a set of keywords.

Uses Google Ads Keyword Planner to estimate campaign performance without creating anything. Essential for budget planning before launching campaigns. Per-keyword max_cpc values are collapsed to a campaign-level manual CPC cap (the highest one) — the Ads API forecast takes no per-keyword bids. Returns estimated clicks, cost, avg CPC, conversions and avg CPA for the forecast period, daily estimates, and insights.

Google Ads API: https://developers.google.com/google-ads/api/docs/start

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keywordsYesList of {"text": "keyword", "match_type": "EXACT|PHRASE|BROAD", "max_cpc": 1.50}. match_type defaults to BROAD; max_cpc is optional (defaults to 1.00 in account currency, not micros). At least one keyword is required.
customer_idNoGoogle Ads customer ID (digits, dashes allowed). Defaults to the configured account.
language_idNoLanguage constant ID (1000=English, 1001=German, 1002=French, 1003=Spanish). Defaults to 1000.1000
daily_budgetNoDaily budget in account currency. If provided, insights will show what % of traffic the budget captures. 0 = no budget comparison.
forecast_daysNoForecast horizon in days, starting tomorrow (default 30).
geo_target_idNoGeo target constant ID (2276=Germany, 2840=USA, 2826=UK, 2250=France). Defaults to 2276.2276

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.27.1
    • addedInput schema / properties / customer_id / description
      Added value: +"Google Ads customer ID (digits, dashes allowed). Defaults\nto the configured account."
    • addedInput schema / properties / daily_budget / description
      Added value: +"Daily budget in account currency. If provided, insights\nwill show what % of traffic the budget captures. 0 = no budget\ncomparison."
    • addedInput schema / properties / forecast_days / description
      Added value: +"Forecast horizon in days, starting tomorrow (default 30)."
    • addedInput schema / properties / geo_target_id / description
      Added value: +"Geo target constant ID (2276=Germany, 2840=USA, 2826=UK,\n2250=France). Defaults to 2276."
    • addedInput schema / properties / keywords / description
      Added value: +"List of {\"text\": \"keyword\", \"match_type\": \"EXACT|PHRASE|BROAD\",\n\"max_cpc\": 1.50}. match_type defaults to BROAD; max_cpc is optional\n(defaults to 1.00 in account currency, not micros). At least one\nkeyword is required."
    • addedInput schema / properties / language_id / description
      Added value: +"Language constant ID (1000=English, 1001=German,\n1002=French, 1003=Spanish). Defaults to 1000."
  2. Addedv0.13.2
  3. Removedv0.13.0
  4. First observedv0.9.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: it discloses the Keyword Planner data source, the read-only non-creating behavior, and a non-obvious semantic quirk (per-keyword max_cpc values are collapsed to the highest value as a campaign-level manual CPC cap because the forecast API takes no per-keyword bids). It also names what is returned, which is genuinely useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then covers mechanism, constraints, and returns in cleanly separated sentences. The trailing Google Ads API documentation link is filler, but the rest of the text earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, open-world forecast tool with annotations covering the safety profile and an output schema covering return shape, the description supplies everything else an agent needs: data source, bid-collapsing caveat, and output granularity. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining how the max_cpc input is actually consumed (collapsed to the highest per-keyword value). It does not, however, clarify the interaction of daily_budget or forecast_days beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (forecast) and resources (clicks, cost, conversions) scoped to keywords, and explicitly disclaims side effects ('without creating anything'), which cleanly separates it from the many draft_* siblings. An agent can identify the tool's job without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context — 'essential for budget planning before launching campaigns' — which tells the agent when this tool fits. It does not, however, name an alternative (e.g. using actual performance tools like get_keyword_performance once campaigns exist), so the when-not case is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools