Skip to main content
Glama

Generate Brief

confirm_brief
DestructiveIdempotent

Executes the reviewed photoshoot flow, including its declared image and video steps. Spends credits at the brief's quote. This client may show no approval prompt, so call it only when the user agreed in chat to run the brief: their message asking to generate or run it is that agreement, a request to change the brief is not one; otherwise give the quote and wait for their yes. expected_brief_revision, runs and expected_total_credits must match the latest brief; if they changed, nothing runs and the current brief is returned. The same idempotency_key never runs or charges twice.

Input Schema

NameRequiredDescriptionDefault
runsYesWhat this Generate runs: each Automation, its looks and its steps, as get_brief returns them.
board_idYesThe open Shoot Board's board_id, from Open Shoot Board or your context.
brief_idYes
idempotency_keyYesRetry key for one Generate: never runs or charges twice.
expected_total_creditsYesThe credits this Generate charges, as get_brief returns them.
expected_brief_revisionYesThe board's brief_revision shown with this brief.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "BriefRun": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "automation": {
      +        "maxLength": 300,
      +        "type": "string"
      +      },
      +      "looks": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "type": "array"
      +      },
      +      "steps": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 100,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "automation",
      +      "looks",
      +      "steps"
      +    ],
      +    "type": "object"
      +  }
      +}
    • removedInput schema / properties / expected_total_credits / default
      Removed value: -null
    • changedInput schema / properties / expected_total_credits / description
      Previous value: -"The quote's total_credits the user saw."New value: +"The credits this Generate charges, as get_brief returns them."
    • addedInput schema / properties / runs
      Added value: +{
      +  "description": "What this Generate runs: each Automation, its looks and its steps, as get_brief returns them.",
      +  "items": {
      +    "$ref": "#/$defs/BriefRun"
      +  },
      +  "maxItems": 50,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "brief_id",
      -  "expected_brief_revision",
      -  "idempotency_key",
      -  "board_id"
      -]New value: +[
      +  "brief_id",
      +  "expected_brief_revision",
      +  "idempotency_key",
      +  "expected_total_credits",
      +  "runs",
      +  "board_id"
      +]
  2. Changed3 schema fields changed
    • changedInput schema / properties / expected_brief_revision / description
      Previous value: -"brief.revision of the latest result for this brief; any other runs nothing."New value: +"The board's brief_revision shown with this brief."
    • changedInput schema / properties / expected_total_credits / description
      Previous value: -"quote.total_credits of the latest result for this brief; any other total runs nothing and returns the new quote."New value: +"The quote's total_credits the user saw."
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Retry key for one Generate, brief-{brief_id}-r{revision}: the same key never runs or charges twice."New value: +"Retry key for one Generate: never runs or charges twice."
  3. Changed3 schema fields changed
    • changedInput schema / properties / expected_brief_revision / description
      Previous value: -"The board's brief_revision shown with this brief."New value: +"brief.revision of the latest result for this brief; any other runs nothing."
    • changedInput schema / properties / expected_total_credits / description
      Previous value: -"The quote's total_credits the user saw."New value: +"quote.total_credits of the latest result for this brief; any other total runs nothing and returns the new quote."
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Retry key for one Generate: the same key never runs or charges twice."New value: +"Retry key for one Generate, brief-{brief_id}-r{revision}: the same key never runs or charges twice."
  4. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Retry key for one Generate tap: never runs or charges twice."New value: +"Retry key for one Generate: the same key never runs or charges twice."
  5. Changed11 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / description
      Removed value: -"Confirm and optionally execute an immutable canonical-command brief."
    • addedInput schema / properties / board_id
      Added value: +{
      +  "description": "The open Shoot Board's board_id, from Open Shoot Board or your context.",
      +  "type": "string"
      +}
    • removedInput schema / properties / brief_id / description
      Removed value: -"ID of the persisted brief to confirm"
    • removedInput schema / properties / brief_id / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / brief_id / minimum
      Added value: +1
    • removedInput schema / properties / execute
      Removed value: -{
      -  "default": true,
      -  "description": "Execute the brief immediately after confirming. Defaults true because MCP 'confirm the brief' means approve and run. Set false only when the user explicitly wants to save approval without starting generation.",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / expected_brief_revision
      Added value: +{
      +  "description": "The board's brief_revision shown with this brief.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / expected_total_credits
      Added value: +{
      +  "default": null,
      +  "description": "The quote's total_credits the user saw.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "description": "Retry key for one Generate tap: never runs or charges twice.",
      +  "maxLength": 64,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "brief_id"
      -]New value: +[
      +  "brief_id",
      +  "expected_brief_revision",
      +  "idempotency_key",
      +  "board_id"
      +]
  6. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructive, non-read-only and idempotent, but the description adds context the annotations cannot: that no approval prompt may be shown to the client, that stale expected_brief_revision or expected_total_credits causes a no-op with the current brief returned, and that the idempotency key prevents double charging. It does not say what a successful run yields or how to follow progress.

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 what it does and what it costs, then the gating rule, then the validation and idempotency guarantees. Dense but every clause carries operational meaning; the approval-prompt sentence is long but earns its length given the risk of unauthorized spend.

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 destructive, credit-spending call with six required parameters, the description covers the preconditions, the stale-data failure mode, and the retry guarantee. The remaining gap is the post-call path — no output schema exists, and it never says what comes back or that get_generation_status / mcp_brief_runs should be used to follow the run.

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 83%, so the baseline is 3; the description raises it by explaining the guard semantics of expected_brief_revision and expected_total_credits (mismatch means nothing runs) and by tying idempotency_key to the no-double-charge guarantee. brief_id and board_id meaning is left to the schema.

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 — executes the reviewed photoshoot flow with its declared image and video steps — and names the material consequence (spends credits at the quote). This clearly separates it from propose_brief, get_brief, update_brief and the read-only siblings.

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

Usage Guidelines5/5

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

Explicitly defines the precondition: call only when the user agreed in chat, with a concrete test for what counts as agreement (asking to generate/run) and what does not (a request to change the brief). It also names the fallback when the condition is unmet — give the quote and wait for a yes.

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