Skip to main content
Glama
AdLoop: Google Ads, Reddit Ads & GA4

AdLoop: Google Ads, Reddit Ads & GA4

Draft image assets

draft_image_assets

Preview image assets from local files, public URLs, or uploads before linking them to Google Ads campaigns or account logos; validates PNG/JPEG/GIF size and returns a plan_id for confirmation.

Instructions

Draft image assets from local files, public image URLs or uploads — returns a PREVIEW.

At least one image in total is required across image_paths, image_urls and upload_ids. Images must be PNG, JPEG or GIF and at most 5120 KB (Google's limit). URL images are downloaded now and checked; applying re-downloads them and refuses if the image changed since the preview. Returns a preview with a plan_id and a per-image summary; nothing changes until confirm_and_apply applies it.

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

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "draft_image_assets"
  }
}

Input Schema

NameRequiredDescriptionDefault
scopeNoEmpty follows campaign_id. "account" links the images account-wide, which Google allows for BUSINESS_LOGO only and which is never inferred from an empty campaign_id. An account takes one business logo: while one is linked, the draft is refused and names the link to remove first.
image_urlsNoPublic http(s) URLs of PNG/JPEG/GIF images. Links to private, local or internal addresses are refused.
upload_idsNoIds of images the user uploaded (up_..., from upload_images or list_uploads). The way to use an image that has no public URL.
campaign_idNoNumeric ID of the campaign to attach the images to. Leave empty with scope="account".
customer_idNoGoogle Ads customer ID (digits, dashes optional). Defaults to the configured account.
field_typesNoOne per image, in the order upload_ids, image_paths, image_urls: AD_IMAGE (campaign links; the default) or BUSINESS_LOGO (campaign or account links). Required with scope="account".
image_pathsNoLocal PNG/JPEG/GIF file paths on the machine running AdLoop. Not available on a hosted server, where image_urls applies instead.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.38.1
    • addedInput schema / properties / campaign_id / default
      Added value: +""
    • changedInput schema / properties / campaign_id / description
      Previous value: -"Numeric ID of the campaign to attach the images to."New value: +"Numeric ID of the campaign to attach the images to. Leave\nempty with scope=\"account\"."
    • addedInput schema / properties / field_types
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "One per image, in the order upload_ids, image_paths,\nimage_urls: AD_IMAGE (campaign links; the default) or BUSINESS_LOGO\n(campaign or account links). Required with scope=\"account\"."
      +}
    • addedInput schema / properties / scope
      Added value: +{
      +  "default": "",
      +  "description": "Empty follows campaign_id. \"account\" links the images\naccount-wide, which Google allows for BUSINESS_LOGO only and which\nis never inferred from an empty campaign_id. An account takes one\nbusiness logo: while one is linked, the draft is refused and\nnames the link to remove first.",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "campaign_id"
      -]
  2. Changed7 schema fields changedv0.27.1
    • addedInput schema / properties / campaign_id / description
      Added value: +"Numeric ID of the campaign to attach the images to."
    • addedInput schema / properties / customer_id / description
      Added value: +"Google Ads customer ID (digits, dashes optional). Defaults to\nthe configured account."
    • addedInput schema / properties / image_paths / default
      Added value: +[]
    • addedInput schema / properties / image_paths / description
      Added value: +"Local PNG/JPEG/GIF file paths on the machine running\nAdLoop. Not available on a hosted server, where image_urls\napplies instead."
    • addedInput schema / properties / image_urls
      Added value: +{
      +  "default": [],
      +  "description": "Public http(s) URLs of PNG/JPEG/GIF images. Links to\nprivate, local or internal addresses are refused.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / upload_ids
      Added value: +{
      +  "default": [],
      +  "description": "Ids of images the user uploaded (up_..., from\nupload_images or list_uploads). The way to use an image that has\nno public URL.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "campaign_id",
      -  "image_paths"
      -]New value: +[
      +  "campaign_id"
      +]
  3. Addedv0.13.2
  4. Removedv0.13.0
  5. First observedv0.9.0

TDQS

A4.6/5.0
Behavior4/5

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

Beyond the annotations (which only say non-read-only, non-destructive, open-world), the description discloses that this is a preview-only operation with no side effects until apply, the format and 5120 KB size validation, and the notable behavior that URL images are downloaded and re-checked at apply time with refusal if changed. The remaining gap is what happens to already-drafted assets on repeated drafting, which is not stated.

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-loaded with the outcome (a preview) and the source options, then the constraints. Mostly tight, though the trailing Google Ads API documentation link adds little for an agent and the parenthetical about Google's limit is slightly redundant with the schema.

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 seven-parameter, preview-then-apply tool with an output schema, the description covers the required inputs, validation limits, preview-then-confirm workflow, and the plan_id/per-image summary shape. An agent has everything needed to call it and to know what comes next.

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 is 3, but the description adds a genuine constraint the schema does not encode: at least one image must be supplied across the three source arrays, even though zero parameters are formally required. It also reinforces the accepted formats and size ceiling at the parameter-selection level rather than only per-field.

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 and resource ("Draft image assets") and immediately enumerates the three accepted sources (local files, public URLs, uploads). The all-caps "returns a PREVIEW" separates it from confirm_and_apply and from the draft_* siblings that mutate other entity types.

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?

Explicitly routes the agent: nothing is applied until confirm_and_apply, upload_ids is named as the way to use an image with no public URL (pointing at upload_images/list_uploads), and image_paths is flagged as unavailable on a hosted server where image_urls applies instead. These are concrete when-to-use and when-not-to-use conditions, not implied ones.

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