Skip to main content
Glama

Attach asset to ad

attach_asset_to_ad

Attach an existing asset to an ad (scope=AD, adId required) or an ad group (scope=AD_GROUP, adGroupId required) with a role (MARKETING_IMAGE, SQUARE_MARKETING_IMAGE, LOGO, LANDSCAPE_LOGO, PORTRAIT_MARKETING_IMAGE, YOUTUBE_VIDEO, VIDEO). This is the scope that actually serves images/video on Display, Performance Max and Video campaigns, and it puts the image on a single-image card (a chat card) that has none of its own. campaignId is derived from the ad/ad group when omitted. Returns the full updated/created object. Scoped to the active Space — see set_active_space to switch, or pass space_id to override for this one call.

Input Schema

NameRequiredDescriptionDefault
bodyYesRequest body matching the AdAssetCreate schema. Fields below; see the OpenAPI spec for nested object shapes.
space_idNoOverride the active Space for this one call. Defaults to the active Space set via set_active_space (or GROWOMAT_SPACE_ID on the server). Pass to read/write a different Space without changing the session binding.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only cover readOnlyHint=false and destructiveHint=false; the description adds real behavioral context — it creates or updates an asset link, returns the full created/updated object, derives campaignId, and is bounded by the active Space. The aside about single-image cards is opaque, and it doesn't warn whether an existing asset on the same slot is replaced.

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 action and the two scope branches, then supporting detail; no filler sentences. The clause about single-image cards is the one piece that is hard to parse and could be trimmed.

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?

No output schema exists, and the description covers the return value ('full updated/created object'), the conditional parameter rules, and the Space scoping escape hatch. An agent has everything needed to call this correctly.

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

Parameters5/5

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

Schema coverage is 100%, but the description still adds information the schema cannot express: the conditional requirement of adId vs adGroupId keyed to scope, and the fact that campaignId is optional because it is derived. That is genuine semantic value beyond the structured fields.

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?

Specific verb (attach) plus resource (asset to ad/ad group), and it explicitly enumerates the two supported scopes with their required IDs. It also contrasts itself implicitly with the campaign-level sibling by stating this is the scope that actually serves images/video on Display, Performance Max and Video.

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?

Clear conditional guidance: scope=AD requires adId, scope=AD_GROUP requires adGroupId, and campaignId is derived when omitted. It also directs the agent to set_active_space or space_id for cross-Space writes. It never explicitly says when to prefer attach_asset_to_campaign instead, so it falls short of the 5 bar.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources