Skip to main content
Glama

Generate adaptive composite

adaptive_composite

Composite an object image onto a background using a fill-area mask, with adjustable harmonization and shadow. Returns Adobe output URLs for download.

Instructions

Generate adaptive 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.
seedsNoArray of seed image IDs. These reference images help ensure consistent image generation across multiple API calls. If specified alongside numVariations, the number of seeds must equal numVariations. Defaults: 1 variation → [333], 2 → [333, 222], 3 → [333, 222, 111].
objectYesObject image and optional mask.
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.
harmonizationNoControls how much the object's colors and lighting are adjusted to match the background scene.
numVariationsNoNumber of output variations to generate.
shadowIntensityNoControls shadow intensity in the composited result. Lower values reduce shadow.
preserveBackgroundNoWhen true, preserves original background details within the masked area during compositing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 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"
    • addedInput schema / properties / object / properties / mask / properties / source / $ref
      Added value: +"#/$defs/source"
    • removedInput schema / properties / object / properties / mask / 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 / mask / 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 / mask / 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 readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds genuinely new context beyond those: it consumes Firefly Services credits (cost), returns Adobe output URLs, and toggles sync/async via wait. It does not explain the cost magnitude or confirm-gating, but it is well above the annotation-only baseline.

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, front-loaded and waste-free apart from the opening sentence that merely repeats the tool title. Each remaining sentence carries distinct information (cost, return shape, async option).

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?

For a 12-parameter tool with deep nested objects and no output schema, the description usefully compensates on the return side ('returns Adobe output URLs'). However, it omits essential call-shaping context: that confirm must be true for this action, that download requires wait=true, and any hint about the required background/object/mask pairing.

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?

With schema description coverage at 100%, the schema already documents all 12 parameters (wait, confirm, download, harmonization, shadowIntensity, etc.). The description only echoes the wait parameter and adds nothing about the required background/object structure or the n/numVariations alias rule. Baseline 3 is correct when the schema carries the full load.

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 restates the title ("Generate adaptive composite") and then adds three concrete behaviors: credit consumption, Adobe output URLs, and the wait=false async path. It does not distinguish this tool from close siblings like generate_object_composite or precise_composite, which is the main gap, so it lands at minimum-viable clarity rather than a 4.

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?

No when-to-use guidance is given relative to the several compositing siblings (generate_object_composite, precise_composite, generative_fill). The only routing hint is 'Set wait=false to return an async job,' which is a mode switch, not tool selection. The confirm parameter's instruction to set true 'only when the user asked for exactly this action' lives in the schema, not the description.

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