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

AdLoop: Google Ads, Reddit Ads & GA4

Draft a Reddit campaign

draft_reddit_campaign

Drafts a paused Reddit campaign and returns a preview with plan ID, payload, and warnings, letting you review and confirm before any changes apply.

Instructions

Draft a new Reddit campaign (created PAUSED) — returns a PREVIEW.

By default the budget lives on the ad groups; campaign_budget_optimization holds it on the campaign. Budgets are checked against max_daily_budget. Ad groups are added with draft_reddit_ad_group. Returns a preview with a plan_id, the payload and warnings; nothing changes until confirm_and_apply applies it.

Reddit Ads API: https://ads-api.reddit.com/docs/v3/

Input Schema

NameRequiredDescriptionDefault
bid_typeNoCPC, CPM, CPV, CPV6 or CPV15 (CBO only).
end_timeNoEnd, same formats as start_time.
scheduleNoWeekly delivery windows ("time of day" in Ads Manager; CBO only), a list of blocks like {"days": "MON-FRI", "start_hour": 13, "end_hour": 23} (day names, hours 0-23, end_hour inclusive) or the native {"start_day": "FRI", "start_hour": 22, "end_day": "SAT", "end_hour": 3}. [] clears it (deliver at any time). Hours apply in each viewer's local time, not the account time zone. A campaign schedule replaces every ad group's.
bid_valueNoBid in account currency (CBO only).
objectiveYesCLICKS, CONVERSIONS, IMPRESSIONS, LEAD_GENERATION, APP_INSTALLS, CATALOG_SALES or VIDEO_VIEWABLE_IMPRESSIONS. Other values only produce a warning, since Reddit is rolling out new objective enums.
spend_capNoCampaign spend cap in account currency; 0 or empty means none.
start_timeNoStart, ISO 8601 (e.g. 2026-10-01T00:00:00Z); a bare YYYY-MM-DD means 00:00 UTC that day.
bid_strategyNoBIDLESS, MAXIMIZE_VOLUME or TARGET_CPX (CBO only).
daily_budgetNoDaily budget in account currency (positive; CBO only). Mutually exclusive with lifetime_budget.
ad_account_idNoReddit ad account id (from list_reddit_accounts). Empty uses reddit.ad_account_id from the config.
campaign_nameYesName of the new campaign.
lifetime_budgetNoLifetime budget in account currency (positive; CBO only); requires end_time and is compared to max_daily_budget by its per-day share.
optimization_goalNoPixel event to optimize for (PURCHASE, SIGN_UP, LEAD, PAGE_VISIT, ...); used with CBO only.
conversion_pixel_idNoPixel id from get_reddit_pixels; required with CBO, optional otherwise.
funding_instrument_idYesServable funding instrument id from list_reddit_funding_instruments.
campaign_budget_optimizationNotrue holds the budget on the campaign (then daily_budget or lifetime_budget, bid_strategy, bid_type and conversion_pixel_id are required). false (default) leaves budget and bids to the ad groups, and none of the budget or bid parameters may be passed.
view_through_conversion_typeNoThe conversion attribution window of a CBO campaign, inherited by its ad groups: SEVEN_DAY_CLICKS or SEVEN_DAY_CLICKS_ONE_DAY_VIEW. Empty: Reddit's default SEVEN_DAY_CLICKS_ONE_DAY_VIEW for CONVERSIONS and CATALOG_SALES. Cannot be changed after publishing. Without CBO, set it on each ad group instead.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.37.0
    • addedInput schema / properties / view_through_conversion_type
      Added value: +{
      +  "default": "",
      +  "description": "The conversion attribution window of a\nCBO campaign, inherited by its ad groups: SEVEN_DAY_CLICKS or\nSEVEN_DAY_CLICKS_ONE_DAY_VIEW. Empty: Reddit's default\nSEVEN_DAY_CLICKS_ONE_DAY_VIEW for CONVERSIONS and CATALOG_SALES.\nCannot be changed after publishing. Without CBO, set it on each ad\ngroup instead.",
      +  "type": "string"
      +}
  2. Changed16 schema fields changedv0.27.1
    • addedInput schema / properties / ad_account_id / description
      Added value: +"Reddit ad account id (from list_reddit_accounts).\nEmpty uses reddit.ad_account_id from the config."
    • addedInput schema / properties / bid_strategy / description
      Added value: +"BIDLESS, MAXIMIZE_VOLUME or TARGET_CPX (CBO only)."
    • addedInput schema / properties / bid_type / description
      Added value: +"CPC, CPM, CPV, CPV6 or CPV15 (CBO only)."
    • addedInput schema / properties / bid_value / description
      Added value: +"Bid in account currency (CBO only)."
    • addedInput schema / properties / campaign_budget_optimization / description
      Added value: +"true holds the budget on the campaign\n(then daily_budget or lifetime_budget, bid_strategy, bid_type and\nconversion_pixel_id are required). false (default) leaves budget\nand bids to the ad groups, and none of the budget or bid\nparameters may be passed."
    • addedInput schema / properties / campaign_name / description
      Added value: +"Name of the new campaign."
    • addedInput schema / properties / conversion_pixel_id / description
      Added value: +"Pixel id from get_reddit_pixels; required with\nCBO, optional otherwise."
    • addedInput schema / properties / daily_budget / description
      Added value: +"Daily budget in account currency (positive; CBO only).\nMutually exclusive with lifetime_budget."
    • addedInput schema / properties / end_time / description
      Added value: +"End, same formats as start_time."
    • addedInput schema / properties / funding_instrument_id / description
      Added value: +"Servable funding instrument id from\nlist_reddit_funding_instruments."
    • addedInput schema / properties / lifetime_budget / description
      Added value: +"Lifetime budget in account currency (positive; CBO\nonly); requires end_time and is compared to max_daily_budget by\nits per-day share."
    • addedInput schema / properties / objective / description
      Added value: +"CLICKS, CONVERSIONS, IMPRESSIONS, LEAD_GENERATION,\nAPP_INSTALLS, CATALOG_SALES or VIDEO_VIEWABLE_IMPRESSIONS. Other\nvalues only produce a warning, since Reddit is rolling out new\nobjective enums."
    • addedInput schema / properties / optimization_goal / description
      Added value: +"Pixel event to optimize for (PURCHASE, SIGN_UP,\nLEAD, PAGE_VISIT, ...); used with CBO only."
    • addedInput schema / properties / schedule / description
      Added value: +"Weekly delivery windows (\"time of day\" in Ads Manager; CBO\nonly), a list of blocks like {\"days\": \"MON-FRI\", \"start_hour\": 13,\n\"end_hour\": 23} (day names, hours 0-23, end_hour inclusive) or the\nnative {\"start_day\": \"FRI\", \"start_hour\": 22, \"end_day\": \"SAT\",\n\"end_hour\": 3}. [] clears it (deliver at any time). Hours apply in\neach viewer's local time, not the account time zone. A campaign\nschedule replaces every ad group's."
    • addedInput schema / properties / spend_cap / description
      Added value: +"Campaign spend cap in account currency; 0 or empty means\nnone."
    • addedInput schema / properties / start_time / description
      Added value: +"Start, ISO 8601 (e.g. 2026-10-01T00:00:00Z); a bare\nYYYY-MM-DD means 00:00 UTC that day."
  3. Addedv0.14.0

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the campaign is created PAUSED, that nothing mutates until confirm_and_apply, that budgets are validated against max_daily_budget, and where budget lives depending on campaign_budget_optimization. Those are exactly the behavioral facts the destructiveHint=false/readOnlyHint=false annotations cannot convey.

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?

Three short paragraphs, front-loaded with the purpose and the PAUSED/PREVIEW semantics, then budget placement, then lifecycle and API reference. No filler and nothing important buried.

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 17-parameter creation tool with an output schema, the description covers the non-obvious parts: preview/confirm lifecycle, budget home, validation constraint, and follow-on tool for ad groups. Return-value detail is delegated appropriately to the output schema.

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 100%, so baseline is 3, but the description adds a cross-parameter rule not obvious from per-field descriptions: budgets default to ad groups whereas campaign_budget_optimization moves them to the campaign, and lifetime budgets are compared by per-day share. That materially changes how an agent fills the budget 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?

States a specific verb and resource ('Draft a new Reddit campaign') plus two scoping facts an agent needs: the entity is created PAUSED and the call returns a PREVIEW, not a live campaign. It also distinguishes itself from the sibling draft_reddit_ad_group, which handles ad groups rather than the campaign shell.

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?

Spells out the intended workflow: draft here, add ad groups with draft_reddit_ad_group, then apply with confirm_and_apply. It also resolves the key design choice an agent faces (budget on ad groups by default vs on the campaign via campaign_budget_optimization). It stops short of explicit when-not-to-use conditions, but the Reddit-specific naming makes ambiguity with draft_campaign low.

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