Skip to main content
Glama

Trillboards DOOH Advertising

create_media_buy

[AdCP Media Buy] Create a media buy (campaign) from an AdCP buy specification.

Creates a campaign that targets DOOH screens based on the provided specification. Returns a media_buy_id for tracking and a creative_deadline for asset submission.

WHEN TO USE:

  • Executing a programmatic DOOH buy via an AI agent

  • Creating campaigns from DSP trading desk agents

  • Automated media buying workflows

RETURNS:

  • media_buy_id: Unique identifier for this media buy

  • campaign_id: Internal campaign identifier

  • creative_deadline: Deadline for creative asset submission

  • targeting_summary: What was targeted

  • budget_summary: Budget allocation details

EXAMPLE: User: "Buy retail screens in NYC at $5 CPM for next week" create_media_buy({ name: "NYC Retail Week 12", buy_spec: { venue_types: ["retail"], geo: { city: "New York", state: "NY" }, budget: { daily_usd: 500, bid_cpm: 5.0 }, schedule: { start_date: "2026-03-16", end_date: "2026-03-22" } }, creative: { url: "https://cdn.example.com/creative.mp4", type: "video", duration_seconds: 15 }, buyer_ref: "agency-order-12345" })

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoMedia buy name
brandNoBrand reference
contextNo
buy_specNoBuy specification (legacy)
creativeNo
end_timeNoISO 8601 end time
packagesNoAdCP product packages to buy
buyer_refNoExternal reference ID from the buyer/agency
start_timeNoISO 8601 start time
total_budgetNo
idempotency_keyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / additionalProperties
      Previous value: -falseNew value: +true
  2. Changed3 schema fields changed
    • removedInput schema / properties / adcp_major_version
      Removed value: -{
      -  "description": "Legacy major-precision AdCP version pin, an integer (e.g. 3), carried since 3.0. Prefer adcp_version. A major this agent does not speak is answered with a VERSION_UNSUPPORTED task failure; get_adcp_capabilities.adcp.major_versions lists the supported set.",
      -  "type": "integer"
      -}
    • removedInput schema / properties / adcp_version
      Removed value: -{
      -  "description": "Release-precision AdCP version this request is pinned to, \"MAJOR.RELEASE\" (e.g. \"3.1\"). A release this agent does not speak is answered with a VERSION_UNSUPPORTED task failure listing the ones it does. Read get_adcp_capabilities.adcp.supported_versions to pin correctly.",
      -  "type": "string"
      -}
    • removedInput schema / properties / context / description
      Removed value: -"Opaque caller-supplied correlation object. Echoed back byte-for-byte, unparsed, on both successful and failed responses; the agent never reads its contents."
  3. Changed3 schema fields changed
    • addedInput schema / properties / adcp_major_version
      Added value: +{
      +  "description": "Legacy major-precision AdCP version pin, an integer (e.g. 3), carried since 3.0. Prefer adcp_version. A major this agent does not speak is answered with a VERSION_UNSUPPORTED task failure; get_adcp_capabilities.adcp.major_versions lists the supported set.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / adcp_version
      Added value: +{
      +  "description": "Release-precision AdCP version this request is pinned to, \"MAJOR.RELEASE\" (e.g. \"3.1\"). A release this agent does not speak is answered with a VERSION_UNSUPPORTED task failure listing the ones it does. Read get_adcp_capabilities.adcp.supported_versions to pin correctly.",
      +  "type": "string"
      +}
    • addedInput schema / properties / context / description
      Added value: +"Opaque caller-supplied correlation object. Echoed back byte-for-byte, unparsed, on both successful and failed responses; the agent never reads its contents."
  4. Changed1 schema field changed
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "maxLength": 200,
      +  "type": "string"
      +}
  5. Changed7 schema fields changed
    • addedInput schema / properties / brand / description
      Added value: +"Brand reference"
    • addedInput schema / properties / buy_spec / description
      Added value: +"Buy specification (legacy)"
    • addedInput schema / properties / buyer_ref / description
      Added value: +"External reference ID from the buyer/agency"
    • addedInput schema / properties / end_time / description
      Added value: +"ISO 8601 end time"
    • addedInput schema / properties / name / description
      Added value: +"Media buy name"
    • addedInput schema / properties / packages / description
      Added value: +"AdCP product packages to buy"
    • addedInput schema / properties / start_time / description
      Added value: +"ISO 8601 start time"
  6. Changed6 schema fields changed
    • addedInput schema / properties / packages / items / properties / bid_price
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • removedInput schema / properties / packages / items / properties / budget / additionalProperties
      Removed value: -true
    • addedInput schema / properties / packages / items / properties / budget / anyOf
      Added value: +[
      +  {
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "amount": {
      +        "type": "number"
      +      },
      +      "currency": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / packages / items / properties / budget / properties
      Removed value: -{
      -  "amount": {
      -    "type": "number"
      -  },
      -  "currency": {
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / packages / items / properties / budget / type
      Removed value: -"object"
    • addedInput schema / properties / packages / items / properties / impressions
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
  7. Changed3 schema fields changed
    • addedInput schema / properties / context
      Added value: +{
      +  "additionalProperties": {},
      +  "type": "object"
      +}
    • addedInput schema / properties / total_budget
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "amount": {
      +      "type": "number"
      +    },
      +    "currency": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "name"
      -]
  8. First observed

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose that the tool creates a campaign and returns media_buy_id, campaign_id, creative_deadline, targeting_summary, and budget_summary. However, it omits important behavioral details such as whether this commits spend, executes the buy immediately, is asynchronous, or has idempotency implications.

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 well-structured with a summary, WHEN TO USE, RETURNS, and a concrete example. It is somewhat long but each section adds value and the most important information is front-loaded.

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

Completeness3/5

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

For a complex 11-parameter nested tool with no output schema and no annotations, the description gives a helpful example and return summary, but still leaves gaps around required versus optional fields, package-based vs legacy buy_spec usage, and execution/confirmation behavior.

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 description coverage is 64%, so the schema documents many parameters. The example adds meaningful structure for buy_spec, creative, geo, budget, schedule, and buyer_ref, but the description does not clarify packages, total_budget, start_time/end_time, idempotency_key, or how the legacy buy_spec relates to the newer package-based fields.

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 clearly identifies a specific verb and resource: create a media buy (campaign) from an AdCP buy specification, targeting DOOH screens. It is specific about what the tool does, though it does not explicitly distinguish itself from the sibling create_campaign beyond the AdCP/DOOH context.

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 WHEN TO USE section gives clear contexts: AI-agent-driven programmatic DOOH buys, DSP trading desk agents, and automated media buying workflows. It does not explicitly state when not to use it or compare against alternatives like create_campaign or update_media_buy, but the provided guidance is concrete and useful.

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