Skip to main content
Glama

Ad offer

ad_offer
Read-only

Whether a picture you made, or the owner's own finished media, can run as an ad, and the proposal: where it runs (the place the owner named, else where this project's buyers are, on a connected ad account) and how (a new ad, or posting it and boosting that post), who sees it (in the countries the owner named for this ad, else those under Where ads may run), which days, and the spend a day and in all in the ad account's currency. attachments run the owner's own finished picture, video or pictures exactly as they are, only when the owner asks to run that file itself as the ad (run this, use this as the ad), or the owner's own AI, the assistant they connected to Marsell, asks for it: one is one ad; two or more need as, one_ad (an ad with its tall 9:16 version for Stories and Reels) or carousel (2 to 10 pictures, in order). When they ask you to make an ad from or with a photo of theirs, they want a new ad picture: make it with that photo as its reference, then offer the picture you made. film_id runs a film Marsell made. It only reads and checks them; ad_card keeps them on the owner's yes. Files the ads can't run come back with why, in words to say. Show the offer and make the card only on the owner's yes to it, even when they asked for the ad. Pass countries only when the owner names them for this ad. asked false: unasked.allowed says whether you may offer it at all, and every reason not. canRun false: why no ad card can be made, in words to say. A best place that isn't connected comes with why and where to connect it, beside the connected place used instead. Never say a figure it does not give.

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": {
      "asked": "<asked>"
    },
    "name": "ad_offer"
  }
}

Input Schema

NameRequiredDescriptionDefault
asNowith two or more attachments: one_ad (one ad with its tall 9:16 version for Stories and Reels) or carousel (2 to 10 pictures, in the order given); one attachment is one ad
askedYestrue when the owner asked for an ad or to run it as one; false for an offer nobody asked for
placeNothe place the owner named for the ad, when they named one
titleNowith attachments: what they are, in a few words, when the owner said
set_idNothe picture's set, as canvas_run's answer gives it; left out, the picture this chat last made
captionNowith attachments: what they sell and to whom, in the owner's words, when they said; the ad's words are written from it
ends_onNothe day it ends: the day of the moment it is for (the drop, the event, the appeal's last day); omitted, the usual length
film_idNoa film Marsell made, whose plan the owner approved, to run as a video ad; in place of set_id
item_idNothe picture in the set; omitted, its first made picture
per_dayNothe amount a day the owner named, in their ad account's currency (20 for $20); omitted, Marsell's usual amount
projectNoThe project's id or exact name. Optional when the account has one project.
countriesNoonly when the owner names the countries for this ad: each by its two-letter ISO code (DE, GB, US), used for this ad alone instead of Where ads may run. A group they name (the EU, the Nordics) is its countries; one Meta ad reaches up to 25, so with more, ask which. A city or an area inside a country is not a country: leave it out, and say who the ad reaches as the offer gives it. Leave it out otherwise, and Where ads may run is used
starts_onNothe day it starts (YYYY-MM-DD, the project's own time zone); omitted, today
attachmentsNothe owner's own finished picture, video or pictures to run as they are, by their attachment ids (input.attached or attachment_read, sent here, on Telegram or Slack, or through an upload link), only when they ask to run the file itself; in place of set_id

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / as
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "one_ad",
      +        "carousel"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "with two or more attachments: one_ad (one ad with its tall 9:16 version for Stories and Reels) or carousel (2 to 10 pictures, in the order given); one attachment is one ad"
      +}
    • addedInput schema / properties / attachments
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "maxLength": 80,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "the owner's own finished picture, video or pictures to run as they are, by their attachment ids (input.attached or attachment_read, sent here, on Telegram or Slack, or through an upload link), only when they ask to run the file itself; in place of set_id"
      +}
    • addedInput schema / properties / caption
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "with attachments: what they sell and to whom, in the owner's words, when they said; the ad's words are written from it"
      +}
    • addedInput schema / properties / countries
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "maxLength": 40,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "only when the owner names the countries for this ad: each by its two-letter ISO code (DE, GB, US), used for this ad alone instead of Where ads may run. A group they name (the EU, the Nordics) is its countries; one Meta ad reaches up to 25, so with more, ask which. A city or an area inside a country is not a country: leave it out, and say who the ad reaches as the offer gives it. Leave it out otherwise, and Where ads may run is used"
      +}
    • addedInput schema / properties / film_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 80,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "a film Marsell made, whose plan the owner approved, to run as a video ad; in place of set_id"
      +}
    • addedInput schema / properties / title
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "with attachments: what they are, in a few words, when the owner said"
      +}
  2. Added

TDQS

A4/5.0
Behavior5/5

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

Beyond readOnlyHint, it explains that this tool only reads and checks media, while ad_card is the step that acts on the owner's approval. It also discloses failure behavior ('Files the ads can't run come back with why'), the meaning of asked=false and canRun=false, and a no-invented-figures rule, which is substantial behavioral context.

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

Conciseness2/5

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

The description front-loads the purpose, but it is a dense run-on with multiple clauses and parentheticals, making it hard to parse quickly. Much of the content is relevant for a 14-parameter tool, but there is repetition around countries and the owner's yes, and the structure could be much clearer.

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 14-parameter tool with no output schema, the description covers the core decision, proposal dimensions, approval gate, attachment/country rules, and error semantics. It lacks a clean enumeration of returned proposal fields and exact output keys, but it gives enough to know what the tool returns and when it can run.

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 already 100%, so the schema carries most parameter definitions; the description still adds useful meaning for key parameters, especially attachments (only the owner's finished media when explicitly requested), as (one_ad vs carousel), countries (only when named for this ad), and film_id. It does not add much beyond schema for title, caption, dates, per_day, or project, but the key routing parameters are clarified.

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 opening identifies a specific decision and resource: whether a picture or the owner's media can run as an ad, plus the proposal details such as place, format, audience, dates, and spend. It also distinguishes this read/check step from ad_card, which keeps the ad on the owner's yes, so an agent can route between them.

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?

It gives concrete conditions: attachments only when the owner asks to run that file itself, countries only when the owner names them for this ad, and ad_card only after the owner's yes. It names ad_card as the action alternative, but does not fully map the boundary with other ad-related siblings such as ad_answer.

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.