Skip to main content
Glama

Update Entity

adsap_update_entity

Edit an existing Meta campaign, ad set, or ad: change name, status (PAUSED/ACTIVE), budget, schedule, ad-set targeting, or ad-set spend limits (daily/lifetime min spend and cap, absolute cents or min/max_spend_percentage of the campaign daily budget on Advantage-campaign-budget campaigns; 0 removes a limit). Put ONLY the fields you want to change in updates. Use dry_run: true to preview the diff (current vs new) without applying anything. Budgets are in cents and apply to campaign (CBO) or ad set (ABO) only; targeting and spend limits apply to ad sets only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNo
updatesYesOnly the fields you want to change. At least one is required.
entity_idYes
entity_typeYes
ad_account_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / updates / properties / targeting / description
      Previous value: -"AD SET ONLY. Full Meta targeting spec, passed through to Meta as-is. Use adsap_search_interests / adsap_search_behaviors / adsap_search_geo_locations to obtain valid IDs first. Meta validates SAC locks, Advantage+ audience rules, and ID validity server-side; rejections are surfaced verbatim."New value: +"AD SET ONLY. Full Meta targeting spec, passed through to Meta as-is. Use adsap_search_detailed_targeting / adsap_search_interests / adsap_search_behaviors / adsap_search_geo_locations to obtain valid IDs first (detailed targeting groups go in flexible_spec: OR inside a group, AND between groups). Meta validates SAC locks, Advantage+ audience rules, and ID validity server-side; rejections are surfaced verbatim."
  2. Changed6 schema fields changed
    • addedInput schema / properties / updates / properties / daily_min_spend_target
      Added value: +{
      +  "description": "AD SET ONLY. Minimum daily spend in cents (minor units); 0 removes the limit. Requires the campaign to have a daily budget (Advantage campaign budget).",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / updates / properties / daily_spend_cap
      Added value: +{
      +  "description": "AD SET ONLY. Daily spend cap in cents; 0 removes the limit. Requires a campaign daily budget.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / updates / properties / lifetime_min_spend_target
      Added value: +{
      +  "description": "AD SET ONLY. Lifetime minimum spend in cents; 0 removes it. Requires a campaign lifetime budget.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / updates / properties / lifetime_spend_cap
      Added value: +{
      +  "description": "AD SET ONLY. Lifetime spend cap in cents; 0 removes it. Requires a campaign lifetime budget.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / updates / properties / max_spend_percentage
      Added value: +{
      +  "description": "AD SET ONLY. Daily spend cap as a % of the campaign daily budget. Same mechanics as min_spend_percentage. 0 removes it.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / updates / properties / min_spend_percentage
      Added value: +{
      +  "description": "AD SET ONLY. Minimum daily spend as a % of the CAMPAIGN daily budget (Advantage campaign budget campaigns), like Ads Manager's percentage option — the server computes and sends the absolute amount alongside, and the % keeps it proportional. 0 removes it.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the dry-run preview semantics, budget units (cents), that budgets apply to campaign (CBO) or ad set (ABO) only, and that 0 removes a spend limit. It omits permissions/access requirements and whether edits are reversible, which keeps it below 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.

Conciseness4/5

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

Front-loads the core purpose and the differential-narrowing scope sentence before the detailed spend-limit mechanics. It is dense but every clause carries operational meaning; the parenthetical on spend limits is long but not redundant.

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 5-parameter mutation tool with no annotations and no output schema, the description covers applicability rules, units, preview behavior, and partial-update expectations well. It does not describe the shape of the dry-run diff response, which is the main remaining gap.

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 description coverage is only 20% at the top level, so the description must compensate and largely does: it explains `updates` is a partial patch, clarifies cents vs. percentage spend limits, and states that targeting/spend limits apply to ad sets only. It does not cover entity_id/entity_type/ad_account_id semantics, but the enum and naming make those self-evident.

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?

Opens with a specific verb+resource ("Edit an existing Meta campaign, ad set, or ad") and immediately enumerates the mutable surface (name, status, budget, schedule, targeting, spend limits). This clearly separates it from the create_*/get_* siblings that dominate the tool list.

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?

Gives concrete invocation guidance: "Put ONLY the fields you want to change in `updates`" and "Use dry_run: true to preview the diff... without applying anything." However it never routes the agent away from the close sibling adsap_set_entity_status, which also toggles PAUSED/ACTIVE, so the when-to-use boundary is left to inference.

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