Skip to main content
Glama

Draft a Reddit campaign

draft_reddit_campaign

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.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • 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."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safety profile (destructiveHint=false, openWorldHint=true); the description goes well beyond them by disclosing that nothing is mutated until confirm_and_apply, that a campaign is created PAUSED, that a plan_id/payload/warnings preview is returned, and that budgets are checked against max_daily_budget. That is exactly the behavioral context an agent needs before invoking a draft tool.

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 core identity (what it drafts, PAUSED, preview) before the budget model and follow-up tooling. Dense but every sentence carries real information; the trailing API docs URL is the only mild filler.

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?

With an output schema present the description need not explain return values, yet it still summarizes them, and it covers the draft/confirm lifecycle plus the CBO budget model for a 16-parameter tool whose schema is fully documented. Nothing needed to call it correctly is missing.

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 baseline is 3. The description still adds meaning beyond the schema by explaining the budget-location model (ad groups by default vs. campaign_budget_optimization) and the max_daily_budget validation rule, which is not spelled out in the property descriptions.

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 critical traits up front: it is created PAUSED and returns a PREVIEW. This clearly separates it from the read/update siblings and from confirm_and_apply, which does the actual write.

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?

Explains the workflow context well: budget defaults to ad groups, campaign_budget_optimization moves it to the campaign, budgets are validated against max_daily_budget, and ad groups are added via draft_reddit_ad_group. It names the follow-up tool (confirm_and_apply) but never states an explicit when-not-to-use or a direct alternative to choose between.

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.