Skip to main content
Glama

Record a campaign decision

record_campaign_decision

Records a scale, cut, or hold decision for a reviewed campaign period and freezes the campaign's range, spend, costs, revenue basis, and model version server-side for an auditable receipt.

Instructions

Record a scale/cut/hold decision for the reporting period the caller reviewed. AttriKit freezes that period's current campaign range, spend, costs, revenue basis, and model version server-side; callers cannot author receipt provenance.

Input Schema

NameRequiredDescriptionDefault
callYesThe decision being frozen. Report get_campaign_decision's own call verbatim rather than forming your own.
app_idYesThe AttriKit app id.
periodNoThe reporting window you reviewed; the receipt freezes that window. Pass the same period you read. Omitted, this tool and get_campaign_decision use all, while list_campaigns defaults to 30d.
campaign_idYesThe AttriKit campaign uuid, as returned by list_campaigns or get_campaign_decision. Not the ad network's own campaign id.
idempotency_keyNoStable retry key for this exact mutation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent open-world mutation, so the bar is lower. The description adds real value beyond that: it discloses that AttriKit freezes the period's range, spend, costs, revenue basis, and model version server-side and that callers cannot author provenance, which tells the agent the payload is trusted snapshot data. It does not say whether a repeat call creates a second receipt or what comes back.

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?

Two sentences with no filler; the action is front-loaded and the provenance caveat follows immediately. Every clause carries information.

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 mutation with annotations present and no output schema, the description covers what is recorded and that provenance is server-controlled. It leaves the response undefined (no receipt id, no indication of what a repeat call yields), which an agent would still need to discover by calling.

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 100%, so every parameter is already documented, including the enum meanings for `call` and `period` and the uuid constraint. The description adds only a loose gloss on `period` ("the reporting period the caller reviewed") and nothing on app_id, campaign_id, or idempotency_key. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb and resource: records a scale/cut/hold decision for the reviewed reporting period. The second clause clarifies this is a server-frozen snapshot rather than free-form input. It never names the read counterpart get_campaign_decision, so sibling differentiation depends on the schema text rather than the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"For the reporting period the caller reviewed" implies this is a write that follows a review, but the description never says to call get_campaign_decision first, nor does it state when not to call or how retries should be handled. Usage is inferable but not spelled out; the useful routing guidance lives in the schema's `call` and `period` descriptions instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.