Skip to main content
Glama

Generate precise composite

precise_composite

Composite an object image onto a background using a placement mask, with blend control and up to three variations; returns Adobe output URLs or an async job when wait=false.

Instructions

Generate precise composite. Consumes Firefly Services credits. Returns Adobe output URLs. Set wait=false to return an async job.

Input Schema

NameRequiredDescriptionDefault
nNoCompatibility alias for numVariations. Do not supply both.
waitNoWait for completion, default true. Set false to return the job immediately.
blendNoControls blend between harmonized and original object appearance (0.0 = fully harmonized, 1.0 = original preserved).
seedsNoRandom seeds for each variation. Count must match numVariations if both are provided. Defaults: 1 variation → [333], 2 → [333, 222], 3 → [333, 222, 111].
objectYesObject image to be placed on the background.
outputNoOutput format specification.
confirmNoSet true only when the user asked for exactly this action.
downloadNoDownload completed media to FIREFLY_OUTPUT_DIR, default false. Requires wait=true.
backgroundYesBackground image and fill area mask specifying object placement.
numVariationsNoNumber of output variations to generate.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "source": {
      +    "description": "The image source. Exactly one of `url` or `uploadId` must be provided in the request.",
      +    "properties": {
      +      "uploadId": {
      +        "description": "If this object represents a file in our S3 temp storage system, the ID for that file.",
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Pre-signed URL of the image from a supported domain. [See Allowed storage domains](https://developer.adobe.com/firefly-services/docs/firefly-api/getting-started/usage-notes/) for the current list.",
      +        "format": "uri",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / background / properties / fillAreaMask / properties / source / $ref
      Added value: +"#/$defs/source"
    • removedInput schema / properties / background / properties / fillAreaMask / properties / source / description
      Removed value: -"The image source. Exactly one of `url` or `uploadId` must be provided in the request."
    • removedInput schema / properties / background / properties / fillAreaMask / properties / source / properties
      Removed value: -{
      -  "uploadId": {
      -    "description": "If this object represents a file in our S3 temp storage system, the ID for that file.",
      -    "format": "uuid",
      -    "type": "string"
      -  },
      -  "url": {
      -    "description": "Pre-signed URL of the image from a supported domain. [See Allowed storage domains](https://developer.adobe.com/firefly-services/docs/firefly-api/getting-started/usage-notes/) for the current list.",
      -    "format": "uri",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / background / properties / fillAreaMask / properties / source / type
      Removed value: -"object"
    • addedInput schema / properties / background / properties / image / properties / source / $ref
      Added value: +"#/$defs/source"
    • removedInput schema / properties / background / properties / image / properties / source / description
      Removed value: -"The image source. Exactly one of `url` or `uploadId` must be provided in the request."
    • removedInput schema / properties / background / properties / image / properties / source / properties
      Removed value: -{
      -  "uploadId": {
      -    "description": "If this object represents a file in our S3 temp storage system, the ID for that file.",
      -    "format": "uuid",
      -    "type": "string"
      -  },
      -  "url": {
      -    "description": "Pre-signed URL of the image from a supported domain. [See Allowed storage domains](https://developer.adobe.com/firefly-services/docs/firefly-api/getting-started/usage-notes/) for the current list.",
      -    "format": "uri",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / background / properties / image / properties / source / type
      Removed value: -"object"
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true to spend Firefly Services credits for the operation the user requested."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / object / properties / image / properties / source / $ref
      Added value: +"#/$defs/source"
    • removedInput schema / properties / object / properties / image / properties / source / description
      Removed value: -"The image source. Exactly one of `url` or `uploadId` must be provided in the request."
    • removedInput schema / properties / object / properties / image / properties / source / properties
      Removed value: -{
      -  "uploadId": {
      -    "description": "If this object represents a file in our S3 temp storage system, the ID for that file.",
      -    "format": "uuid",
      -    "type": "string"
      -  },
      -  "url": {
      -    "description": "Pre-signed URL of the image from a supported domain. [See Allowed storage domains](https://developer.adobe.com/firefly-services/docs/firefly-api/getting-started/usage-notes/) for the current list.",
      -    "format": "uri",
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / object / properties / image / properties / source / type
      Removed value: -"object"
  2. First observedv2.0.0

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), and the description adds genuinely new context beyond them: it consumes Firefly Services credits (a cost implication), returns Adobe output URLs, and can run asynchronously. This is useful operational detail an agent would not get from the structured fields alone, though it omits the non-idempotency/cost-per-variation qualification.

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?

Three short sentences with no filler, and the async-mode hint is placed last where it is easy to scan. It is appropriately sized for the tool, though the first sentence spends a slot restating the title without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 parameters, nested objects, and no output schema, the tool is complex, and the description partially compensates by stating that Adobe output URLs are returned and that an async job is possible. However, it says nothing about the confirmation requirement implied by the 'confirm' parameter, the credit cost per variation, or how to retrieve async results, leaving notable gaps for a high-complexity generation tool.

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 the schema already documents all ten parameters in detail, including defaults, ranges, seed counts, and the url-vs-uploadId choice. The description's only parameter-related contribution ('Set wait=false to return an async job') repeats what the schema's wait description already says, so it does not meaningfully add value. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the title verbatim ('Generate precise composite'), which is close to tautology, though the supporting sentences do reveal that it produces image output URLs. Critically, it never distinguishes this tool from its near-identical siblings generate_object_composite or adaptive_composite, which an agent could easily confuse with it.

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

Usage Guidelines2/5

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

The only usage guidance is 'Set wait=false to return an async job,' which is a parameter hint rather than when-to-use guidance. There is no statement about when this tool is preferable to generate_object_composite or adaptive_composite, nor any prerequisite or exclusion conditions.

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