Skip to main content
Glama

Undo a copy revision

undo_copy_revision
Idempotent

Restores the copy that was current before a kept revision of a finished image ad, as a new history entry, and returns the new version. Takes the version_id of a kept revision from the get_creative_workspace history. Nothing is generated and no credits are spent.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "generation_job_id": "<generation_job_id>",
      "version_id": "<version_id>",
      "idempotency_key": "<idempotency_key>"
    },
    "name": "undo_copy_revision"
  }
}

Input Schema

NameRequiredDescriptionDefault
version_idYesversion_id of a kept revision in the get_creative_workspace history.
idempotency_keyYesCaller-chosen unique value for this change (1 to 128 letters, digits, hyphens or underscores), not a value from a preview. A repeat with the same value returns the original result.
generation_job_idYesFinished-image reference of a single ad: _references.generation_job_id on a list_generation_jobs row. Not the job_id that get_ad_status takes.

Output Schema

NameRequiredDescriptionDefault
statusNoCurrent progress or delivery state.
version_idNoversion id value in this response.
cost_creditsNoCredits quoted or charged by this operation.
refund_creditsNorefund credits value in this response.
original_cost_creditsNooriginal cost credits value in this response.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / generation_job_id / description
      Previous value: -"Generated image reference from list_generation_jobs or get_campaign_outputs."New value: +"Finished-image reference of a single ad: _references.generation_job_id on a list_generation_jobs row. Not the job_id that get_ad_status takes."
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Confirmation key from the cost preview; valid for 15 minutes."New value: +"Caller-chosen unique value for this change (1 to 128 letters, digits, hyphens or underscores), not a value from a preview. A repeat with the same value returns the original result."
    • changedInput schema / properties / version_id / description
      Previous value: -"Version reference from the creative or campaign output workspace."New value: +"version_id of a kept revision in the get_creative_workspace history."
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=true), the description discloses that the restore is appended as a new history entry rather than overwriting, and that nothing is generated and no credits are spent. That cost and history-append behavior is the kind of context annotations cannot express. It does not describe failure modes (e.g., a version that is not 'kept').

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 front-loaded sentences with no filler: the action and its effect first, the required input source second, the cost guarantee last. Nothing is redundant enough to cut, and the most decision-relevant fact (no credits) lands before the agent stops reading.

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 an idempotency key, an output schema covering the return value, and full schema coverage, the description supplies what the structured fields cannot: history semantics and credit cost. The remaining gap is the absence of any explicit contrast with apply_copy_revision or discard_copy_revision for an agent choosing among the three copy-revision tools.

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% and all three parameters are already documented, including the idempotency_key semantics and the generation_job_id distinction from job_id. The description's only parameter statement ('takes the version_id of a kept revision from the get_creative_workspace history') repeats the schema text, so the baseline 3 applies.

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 ('restores the copy that was current before a kept revision') on a narrowed object ('finished image ad'), which is distinguishable from apply_copy_revision and discard_copy_revision without reading either schema. The second sentence names the source of the required identifier, so an agent knows exactly what input it needs.

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 description makes the triggering scenario concrete (undo a kept revision, using a version_id pulled from get_creative_workspace history) and adds the cost caveat that makes this preferable to a regeneration path. It stops short of explicitly excluding or contrasting apply_copy_revision / discard_copy_revision, so the alternative-selection guidance is inferential rather than stated.

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.