Skip to main content
Glama

meta_ads_creatives_upload_image

Fetch an image from a public HTTPS URL and upload it to your Meta Ads account, returning an image_hash for use in ad creatives.

Instructions

Uploads an image to the Meta Ads account by fetching it from a public HTTPS URL. Returns the image_hash that can be referenced in meta_ads_creatives_create / create_dynamic / create_carousel. Mutating — the image is persisted in the account library. For uploads from local files (not URLs) use meta_ads_images_upload_file instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
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.
image_urlYesPublic HTTPS URL of the image. Meta fetches it once at upload time — subsequent changes to the source URL do not affect the stored asset.
account_idNoMeta Ads account ID in the format 'act_XXXXXXXXXX' (e.g. 'act_1234567890'). Optional — falls back to META_ADS_ACCOUNT_ID from the configured credentials. The leading 'act_' prefix is required.

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
      +}
  2. Changed1 schema field changedv0.10.37
    • addedInput schema / additionalProperties
      Added value: +false
  3. Addedv0.9.12
  4. Removedv0.9.6
  5. Addedv0.9.2
  6. Removedv0.9.1
  7. Addedv1.0.5

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full burden, and it delivers on the critical points: it explicitly flags the operation as 'Mutating' with persistence ('the image is persisted in the account library') and discloses the subtle one-time fetch semantics ('Meta fetches it once at upload time — subsequent changes to the source URL do not affect the stored asset'). Minor gaps remain: no disclosure of image format/size constraints, fetch-failure behavior, or rate limits, which prevents a 5.

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?

Four sentences with zero filler. The primary action and mechanism are front-loaded, the mutation warning is prominent, and sibling routing is placed last; every sentence earns its place with no redundancy.

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

Completeness4/5

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

For a tool with no annotations and no output schema, the description covers the essentials: mutation/persistence, the returned image_hash, workflow position, and the public-HTTPS-URL constraint. Minor omissions such as image size/format limits and fetch-failure behavior keep it just short of complete.

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

Parameters3/5

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

Schema coverage is 100% with well-written parameter descriptions (one-time fetch semantics for image_url, 'act_' format and credential fallback for account_id, purpose and storage for reason), so the rubric baseline is 3. The description reinforces the URL-only constraint and explains the image_hash return value's downstream use, but adds no parameter-level meaning beyond what the schema already provides.

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, resource, and mechanism: 'Uploads an image to the Meta Ads account by fetching it from a public HTTPS URL.' It further clarifies its role by naming the downstream consumers (meta_ads_creatives_create / create_dynamic / create_carousel) and naming the sibling it is not (meta_ads_images_upload_file for local files). An agent can distinguish this from the image-consuming creative tools and the local-file uploader without opening schemas.

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?

Provides explicit routing: 'For uploads from local files (not URLs) use meta_ads_images_upload_file instead' states the when-not condition and names the alternative. The 'when' is clear from the first sentence (public HTTPS URL source), and the return-value sentence establishes the workflow position as a prerequisite step before creative creation.

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