Skip to main content
Glama

google_ads_budget_create

Creates a Google Ads campaign budget with a daily or custom-period lifetime amount, returning the budget ID needed to attach it to new campaigns.

Instructions

Creates a new campaign budget that can be attached to one or more campaigns. Returns the new budget's id and resource_name. Mutating — not automatically reversible; record before-state with mureo_state_action_log_append if you may need to roll back. Typical flow: budget.create → campaigns.create with the returned budget_id. To edit an existing budget's amount use google_ads_budget_update instead of creating a second budget. Budget type is fixed at creation: the period (DAILY / CUSTOM_PERIOD) is immutable in the Google Ads API. For a campaign-lifetime total budget pass period='CUSTOM_PERIOD' with total_amount or total_amount_micros; otherwise supply the daily amount.

Input Schema

NameRequiredDescriptionDefault
nameYesBudget name (max 255 chars). Must be unique within the account.
amountNoDaily budget in the account's currency (JPY / USD / etc.). Not micros — e.g. pass 5000 for ¥5,000 / day.
periodNoBudget period. Default DAILY. CUSTOM_PERIOD makes this a campaign-lifetime total budget (requires total_amount or total_amount_micros, and the attached campaign must have start/end dates). Immutable after creation.
reasonNoWhy this change is being made: one or two sentences naming the evidence and the expected effect. Stored in the journal and on the action_log entry this call produces, for the operator and the next session.
approvalNoExternal approval this change carries out (recorded and shown, never verified)
expectedNoExpected effects [{metric, direction, target?, horizon_days?, primary?}], exactly one primary:true when several; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold.
customer_idNoGoogle Ads customer ID as a 10-digit string without dashes (e.g. '1234567890'). Optional — falls back to GOOGLE_ADS_CUSTOMER_ID / GOOGLE_ADS_LOGIN_CUSTOMER_ID from the configured credentials when omitted.
decision_idNoA proposed decision this change carries out.
total_amountNoTotal (lifetime) amount in the account's currency. Only valid with period='CUSTOM_PERIOD'. Mutually exclusive with total_amount_micros.
total_amount_microsNoTotal (lifetime) amount in micros. Only valid with period='CUSTOM_PERIOD'. Mutually exclusive with total_amount.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.33.0
    • changedInput schema / properties / expected / description
      Previous value: -"Expected effects [{metric, direction, target?, horizon_days?}]; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold."New value: +"Expected effects [{metric, direction, target?, horizon_days?, primary?}], exactly one primary:true when several; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold."
  2. Changed1 schema field changedv0.28.0
    • addedInput schema / properties / approval
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "External approval this change carries out (recorded and shown, never verified)",
      +  "properties": {
      +    "approved_at": {
      +      "maxLength": 64,
      +      "type": "string"
      +    },
      +    "approved_by": {
      +      "maxLength": 80,
      +      "type": "string"
      +    },
      +    "reference": {
      +      "maxLength": 128,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "reference",
      +    "approved_by",
      +    "approved_at"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv0.26.0
    • addedInput schema / properties / decision_id
      Added value: +{
      +  "description": "A proposed decision this change carries out.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / expected
      Added value: +{
      +  "description": "Expected effects [{metric, direction, target?, horizon_days?}]; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold.",
      +  "maxItems": 12,
      +  "type": "array"
      +}
  4. Changed1 schema field changedv0.20.0
    • addedInput schema / properties / reason
      Added value: +{
      +  "description": "Why this change is being made: one or two sentences naming the evidence and the expected effect. Stored in the journal and on the action_log entry this call produces, for the operator and the next session.",
      +  "maxLength": 500,
      +  "type": "string"
      +}
  5. Changed1 schema field changedv0.10.37
    • addedInput schema / additionalProperties
      Added value: +false
  6. Changed5 schema fields changedv0.10.19
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "amount"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "total_amount"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "total_amount_micros"
      +    ]
      +  }
      +]
    • addedInput schema / properties / period
      Added value: +{
      +  "description": "Budget period. Default DAILY. CUSTOM_PERIOD makes this a campaign-lifetime total budget (requires total_amount or total_amount_micros, and the attached campaign must have start/end dates). Immutable after creation.",
      +  "enum": [
      +    "DAILY",
      +    "CUSTOM_PERIOD"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / total_amount
      Added value: +{
      +  "description": "Total (lifetime) amount in the account's currency. Only valid with period='CUSTOM_PERIOD'. Mutually exclusive with total_amount_micros.",
      +  "minimum": 1,
      +  "type": "number"
      +}
    • addedInput schema / properties / total_amount_micros
      Added value: +{
      +  "description": "Total (lifetime) amount in micros. Only valid with period='CUSTOM_PERIOD'. Mutually exclusive with total_amount.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "name",
      -  "amount"
      -]New value: +[
      +  "name"
      +]
  7. Addedv0.10.11
  8. Removedv0.10.9
  9. Addedv0.9.12
  10. Removedv0.9.6
  11. Addedv0.9.2
  12. Removedv0.9.1
  13. Addedv1.0.5

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it states the operation is mutating, not automatically reversible, and recommends recording before-state via mureo_state_action_log_append before rollback-sensitive use. It also discloses that period is immutable after creation and what the call returns.

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

Conciseness5/5

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

The definition is front-loaded with the core action and return value, then adds the mutation warning, typical flow, alternative tool, and period constraints. Every sentence adds operational value without unnecessary padding.

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 10-parameter mutation with no annotations or output schema, the description covers the critical gaps: reversibility, rollback logging, returned fields, create-then-attach sequencing, sibling avoidance, and immutable period behavior. The schema already provides full per-field documentation, so no essential guidance 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 meaningful semantics beyond the schema: period immutability and the conditional relationship between CUSTOM_PERIOD, total_amount, total_amount_micros, and daily amount. It does not explain every parameter, but the schema already documents the remaining fields in detail.

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?

The description uses a specific verb and resource: creates a new campaign budget that can attach to campaigns. It also distinguishes this action from google_ads_budget_update and states the returned identifiers, so an agent can immediately tell what the tool does versus sibling budget tools.

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

Usage Guidelines5/5

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

It explicitly routes editing existing budgets to google_ads_budget_update instead of creating a duplicate. It also gives the typical create-then-attach flow and explains when to use CUSTOM_PERIOD with total_amount or total_amount_micros, leaving little ambiguity about tool choice.

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