Skip to main content
Glama

Revise an existing saved Studio creative by executing a requested change from plain-language instructions. Use this directly when the user supplies a creativeId and asks to change copy, imagery, layout, colours, typography, CTA, branding, or any other editable creative element: do not respond with a copy-paste instruction or ask the user to make the edit in Studio. The revision saves to Studio by default and returns fresh preview links plus QA/certification context; set dryRun only when the user explicitly asks for an unsaved preview.

revise_creative
Idempotent

Revise an existing saved Studio creative by executing a requested change from plain-language instructions. Use this directly when the user supplies a creativeId and asks to change copy, imagery, layout, colours, typography, CTA, branding, or any other editable creative element: do not respond with a copy-paste instruction or ask the user to make the edit in Studio. The revision saves to Studio by default and returns fresh preview links plus QA/certification context; set dryRun only when the user explicitly asks for an unsaved preview.. Classification: creates billable AI usage. Execution: durable. Task support: optional. Mutation modes: validate_only, preview_only, execute. Partial failure policy: completed_items_not_rolled_back. The returned JSON is internal application state for LeanrIQ and ChatGPT orchestration. Use assistantSummary first when responding to the user. Never display raw JSON, data, or meta unless the user explicitly asks for raw JSON. Mention IDs only when useful for follow-up or debugging. Prefer concise, human language, highlight the most useful insight, and suggest the next best LeanrIQ action. If idempotencyKey is omitted on a mutation, the MCP layer derives a deterministic retry key from the tool and business arguments so an accidental identical replay cannot create duplicate work. For a mutation when more than one seat is authorised, seatId or seatName must be supplied on that exact tool call; a remembered or previously selected seat is not sufficient for a write.

Input Schema

NameRequiredDescriptionDefault
dryRunNo
promptNo
seatIdNo
seatNameNo
accountIdNo
approvalIdNo
creativeIdYes
persistenceNo
instructionsNo
saveToStudioNo
sourceLocaleNo
targetMarketNo
contentLocaleNo
marketContextNo
targetMarketsNo
contentLocalesNo
idempotencyKeyYes
expectedVersionNo
defaultContentLocaleNo
marketLanguageProfileNo
resolvedContentLocaleNo
languageVariantGroupIdNo
requestedOutputLocalesNo
supportedContentLocalesNo

Output Schema

NameRequiredDescriptionDefault
dataYes
metaYes
errorNo
statusYes
assistantSummaryYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • addedInput schema / properties / contentLocale
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / contentLocales
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / defaultContentLocale
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / languageVariantGroupId
      Added value: +{
      +  "maxLength": 160,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / marketContext
      Added value: +{
      +  "properties": {
      +    "currency": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "targetMarket": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "targetMarkets": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "timeZone": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / marketLanguageProfile
      Added value: +{
      +  "additionalProperties": {},
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / requestedOutputLocales
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / resolvedContentLocale
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / sourceLocale
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / supportedContentLocales
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / targetMarket
      Added value: +{
      +  "maxLength": 160,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / targetMarkets
      Added value: +{
      +  "items": {
      +    "maxLength": 160,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "type": "array"
      +}
  2. First observed

TDQS

A4/5.0
Behavior5/5

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

Annotations only declare a non-read-only, idempotent, non-destructive, closed-world mutation. The description goes well beyond that: billable AI usage, durable execution, mutation modes (validate_only/preview_only/execute), a partial-failure policy of completed_items_not_rolled_back, automatic deterministic idempotency-key derivation on omission, and the hard rule that a write requires seatId/seatName on the exact call rather than a remembered seat. That is substantive operational disclosure an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The purpose and usage rules are correctly front-loaded, but the text then appends a large block of generic response-formatting directives (assistantSummary, never display raw JSON, prefer human language) that reads as system-prompt boilerplate rather than tool-specific documentation. The title text is also duplicated verbatim into the description, including a stray double period, adding dead weight.

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 24-parameter billing mutation with a published output schema, the description covers the operationally decisive facts: that it bills, that execution is durable and not rolled back on partial failure, that it saves by default and returns preview links plus QA context, and that writes need an explicit seat. The main omission is version-conflict expectations around expectedVersion.

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 0% across 24 parameters, so the description must carry the load. It does explain the semantics of dryRun, the save-by-default behaviour, idempotencyKey derivation, and the seatId/seatName write requirement, but it leaves the highest-traffic inputs undocumented: prompt vs instructions, persistence vs saveToStudio, expectedVersion concurrency semantics, and the whole locale/market group.

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?

The opening sentence gives a precise verb+resource+scope ('Revise an existing saved Studio creative by executing a requested change') and enumerates what is editable (copy, imagery, layout, colours, typography, CTA, branding). It is unmistakably a revision-in-place tool rather than a build/clone tool, though it never names the adjacent siblings (create_creative_version, clone_creative, restore_creative_version) that an agent might otherwise reach for.

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?

It gives an explicit trigger ('use this directly when the user supplies a creativeId and asks to change...'), an explicit anti-pattern ('do not respond with a copy-paste instruction or ask the user to make the edit in Studio'), and a narrow condition for dryRun ('only when the user explicitly asks for an unsaved preview'). The only gap is that alternative tools are not named or contrasted.

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