---
title: Iterate on favorites | FLORA API
description: Use prior outputs as inputs to explore variations of the ones you like.
---

After generating a grid, the most natural next move is *“more like #4 and #7.”* FLORA MCP makes this trivial: the outputs of one `execute` call become the inputs of the next, all in the same chat.

This is FLORA’s differentiator. Most generative MCPs are single-shot — they generate, then forget. FLORA Techniques accept image references as inputs, so context carries forward across calls.

**Prerequisite:** You’ve already run a Technique and have outputs in the conversation. Start with [Discover and run](/mcp/recipes/discover-and-run/index.md) if not.

## What you type

> Love #4 and #7. Can you make 5 more variations of those? Same visual direction, but explore composition and copy.

## What the agent does

1. Resolve your references

   The agent knows #4 and #7 are specific outputs from the previous run. It pulls their URLs from the chat context.

2. Submit the run with image references

   The agent calls `client.techniques.runs.create(techniqueId, { inputs: [...] })` again, this time passing #4 and #7 as `imageUrl` inputs (or whichever input name your Technique uses for visual anchors), plus a directive to “explore composition and copy” and a count of 5.

3. Render new grid inline

   A new grid appears, anchored to the visual direction of #4 and #7 but exploring the requested variation axis.

## What you see

> Locking in the visual direction from #4 and #7, exploring composition and copy.
>
> \[5 new thumbnails render progressively]

The original 3×3 grid is still in scroll. You can compare side by side without leaving the chat.

## Variations to try

- *“Make 10 more like #2, but pushing harder on the brand “warm minimalism” direction.”*
- *“Use #1 as the layout reference and #5 as the color reference. Generate 6 combinations.”*
- *“Try #4 again but with the headline from the brief instead of placeholder copy.”*

The more specific the directive, the better. The Technique decides which input slots accept image references vs text — the agent figures it out from `client.techniques.retrieve(techniqueId)` schema.

## Under the hood

From the previous run the agent already knows:

- `#4` → `https://ik.imagekit.io/flora/run_abc.../output_3.png`
- `#7` → `https://ik.imagekit.io/flora/run_abc.../output_6.png`

It submits a new `execute` call referencing those URLs directly:

```
async function run(client) {
  const run = await client.techniques.runs.create("tech_thumbnail_v3", {
    inputs: [
      { id: "brief",            type: "text",     value: "...original brief..." },
      { id: "image_reference_1", type: "imageUrl", value: "https://ik.imagekit.io/flora/run_abc.../output_3.png" },
      { id: "image_reference_2", type: "imageUrl", value: "https://ik.imagekit.io/flora/run_abc.../output_6.png" },
      { id: "directive",        type: "text",     value: "explore composition and copy" },
      { id: "count",            type: "text",     value: "5" },
    ],
  });


  let result;
  do {
    result = await client.techniques.runs.retrieve(run.run_id, { techniqueId: "tech_thumbnail_v3" });
  } while (result.status === "pending" || result.status === "running");


  return result.outputs; // 5 new imageUrls
}
```

## Tips

- Output URLs are long-lived but not permanent. Re-running a same chat days later may fail if URLs expire — re-generate the favorites or [upload them as assets](/mcp/tools/index.md) first.
- If results drift too far from your favorites, increase the weight the agent assigns to references: *“Hold the visual direction of #4 even tighter — same lighting, same composition style.”*
- This pattern composes with Techniques that don’t natively accept references: the agent can describe the favorites in text and pass that description as the prompt.
