Skip to main content
Glama
google-ads-mcp

google-ads-mcp

Official
by googleads

Assets Create Asset

assets_create_asset

Creates Google Ads assets such as text, image, video, sitelink, callout, or structured snippet under a customer account, with validation before committing changes.

Instructions

Creates a new Google Ads asset under the specified customer account.

Required & Optional parameters per asset_type:

  • TEXT: Requires text_asset_text.

  • IMAGE: Requires either image_asset_path (absolute local path, local stdio mode only) OR image_asset_data (base64 encoded string). If image_asset_data is provided, image_asset_mime_type is also required (e.g. 'IMAGE_PNG', 'IMAGE_JPEG', 'IMAGE_GIF').

  • YOUTUBE_VIDEO: Requires youtube_video_id.

  • SITELINK: Requires sitelink_link_text and root-level final_urls. Accepts optional sitelink_description1 and sitelink_description2.

  • CALLOUT: Requires callout_text.

  • STRUCTURED_SNIPPET: Requires structured_snippet_header and structured_snippet_values.

Root-level URL and tracking configurations (optional except where noted):

  • name: Optional display name for the asset.

  • final_urls: Required for SITELINK. A list of URLs.

  • final_mobile_urls: List of mobile-specific destination URLs.

  • tracking_url_template: Template for constructing a tracking URL.

  • final_url_suffix: Suffix appended to the final URL.

  • url_custom_parameters: Custom parameters represented as a list of dicts (with 'key' and 'value').

For any other asset type, provide extra_params as a dict representing the sub-asset message fields.

Propose & Confirm Workflow (validate_only and checksum):

  1. Call create_asset with validate_only=True (the default). After validation passes, the tool returns structured change_items and a checksum without committing changes.

  2. Present the change_items to the user and wait for explicit user approval.

  3. Only after user confirmation, call create_asset with validate_only=False along with the exact same parameters and the checksum returned by the previous validate_only=True call.

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": {
      "customer_id": "<customer_id>",
      "asset_type": "<asset_type>"
    },
    "name": "assets_create_asset"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional name of the asset.
checksumNoChecksum of the validated operation returned by a prior `validate_only=True` call. Required when `validate_only=False`.
asset_typeYesType of the asset (e.g., 'TEXT', 'IMAGE', 'YOUTUBE_VIDEO', 'SITELINK', 'CALLOUT', 'STRUCTURED_SNIPPET').
final_urlsNoOptional list of final URLs (required for SITELINK).
customer_idYesGoogle Ads Customer ID (digits or hyphenated, e.g. '1234567890').
callout_textNoOptional callout text (required for CALLOUT type).
extra_paramsNoOptional dict representing nested parameters for less common asset types.
validate_onlyNoIf True (default), validates the request and returns proposed `change_items` and a `checksum` without creating the asset. If False, requires `checksum` from a prior `validate_only=True` call to commit the asset creation.
text_asset_textNoOptional text content (required for TEXT type).
final_url_suffixNoOptional final URL suffix.
image_asset_dataNoOptional base64 encoded image data (supported for IMAGE type).
image_asset_pathNoOptional absolute file path to a local image (supported for IMAGE type in local stdio mode).
youtube_video_idNoOptional YouTube 11-character video ID (required for YOUTUBE_VIDEO type).
final_mobile_urlsNoOptional list of final mobile URLs.
login_customer_idNoOptional manager customer ID to use as the login-customer-id header.
sitelink_link_textNoOptional link text (required for SITELINK type).
image_asset_mime_typeNoOptional MIME type (e.g., 'IMAGE_PNG', 'IMAGE_JPEG', 'IMAGE_GIF'; required if image_asset_data is used).
sitelink_description1NoOptional sitelink line 1 description.
sitelink_description2NoOptional sitelink line 2 description.
tracking_url_templateNoOptional tracking URL template.
url_custom_parametersNoOptional custom parameters for tracking (list of {'key': ..., 'value': ...} dicts).
structured_snippet_headerNoOptional structured snippet header category (required for STRUCTURED_SNIPPET type).
structured_snippet_valuesNoOptional structured snippet list of values (required for STRUCTURED_SNIPPET type).

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.0.6

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the critical `validate_only` workflow: validation returns structured `change_items` and a `checksum`, and committing requires a subsequent call with the checksum. This adds important mutation-safety context that is not conveyed by `readOnlyHint=false` and `destructiveHint=false` alone.

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?

The description is long but well structured, with front-loaded purpose and grouped sections for asset-type requirements, URL/tracking fields, and the validation workflow. Some repetition with schema descriptions could be trimmed, and the references to `create_asset` do not exactly match the tool name.

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 23-parameter creation tool with an output schema, this description is complete enough to call correctly: it covers conditional parameter requirements, URL/tracking options, fallback handling via `extra_params`, and the required validation/checksum workflow. No essential invocation context 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 description coverage is 100%, so the baseline would be 3, but the description adds meaningful conditional semantics: per-asset-type requirements, the IMAGE either/or between path and base64 data, MIME type dependency, and `extra_params` for other asset types. The mappings are strong, though much of the individual parameter meaning is already present in the schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Creates a new Google Ads asset under the specified customer account.' It clearly describes the scope and supported asset types, but it does not explicitly distinguish this tool from the sibling `assets_upload_video_asset`.

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?

The description gives detailed when-to-use guidance by explaining which parameters each `asset_type` requires and by documenting the propose/confirm workflow. It does not, however, name alternatives or state when not to use this tool versus sibling operations such as video-specific uploads.

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