Skip to content
FLORA DocsGo to app

Discover and run

Paste a brief, find the right Technique, generate a grid of options.

The most common FLORA MCP workflow: paste a brief into your agent, it finds the right Technique from your team’s library, runs it, and shows the results inline.

Surface: Any MCP-compatible chat client (Claude, Cursor, VS Code, Hermes Agent, OpenClaw, …)
Time: Under a minute
Charges: One run’s run_cost (USD)

I have the Q3 campaign brief below. Find the right FLORA Technique for thumbnail generation and run it with the brief’s key directives.

Brief:

  • Audience: 25-40, design-conscious
  • Hook: “Smart living, simple”
  • Brand do: warm minimalism, soft shadows
  • Brand don’t: clip-art, gradients

Give me a 3×3 grid.

  1. Find the right Technique

    The agent calls client.techniques.list({ query: "thumbnail" }) to filter your Technique library. It surfaces three Technique cards inline — name, thumbnail, creator, description.

  2. Read its input schema

    Once you pick one (or the agent auto-picks the best match), it calls client.techniques.retrieve(techniqueId) to read the input schema: theme, audience, hook copy, brand do’s and don’ts.

  3. Submit the run

    The agent maps your brief onto the Technique’s inputs and calls client.techniques.runs.create(techniqueId, { inputs: [...] }) requesting a 3×3 grid.

  4. Poll until complete

    The agent calls client.techniques.runs.retrieve(runId, { techniqueId }) repeatedly until the run completes. The 3×3 grid renders progressively in the chat — each tile labeled with the brief line that drove it.

A 3×3 grid of thumbnails appears inline in the chat. No tab switching. The original brief stays in scroll, so the next message you type can reference specific outputs.

This is the start of the loop. Common follow-ups:

  • Iterate: “Love #4 and #7. Make 5 more variations of those.” → see Iterate on favorites.
  • Branch: “Now take the winners and run them through the Social Motion Technique.” → see Stills to motion.
  • Batch: “I need this for 12 markets — pull the localization sheet from Drive.” → see Batch with a coding agent.
  • The clearer your brief, the better the Technique match. Including audience and brand do’s/don’ts in plain English gives the agent enough signal to map onto Technique inputs correctly.
  • If the agent picks the wrong Technique, say: “Show me the alternatives.” It will call client.techniques.list again with a broader filter.
  • You can name a Technique explicitly: “Use the Thumbnail v3 Technique.” This skips the discovery step.

The agent may first call search_docs to confirm method signatures, then runs everything in a single execute call:

async function run(client) {
// 1. Find thumbnail techniques
const techniques = [];
for await (const t of client.techniques.list({ query: "thumbnail" })) techniques.push(t);
// → surfaces 3 candidates; agent picks best match
// 2. Read the input schema
const technique = await client.techniques.retrieve("tech_thumbnail_v3");
// → inputs: theme, audience, hook, brand_directives
// 3. Submit a run (3×3 = 9 outputs)
const run = await client.techniques.runs.create("tech_thumbnail_v3", {
inputs: [
{ id: "theme", type: "text", value: "warm minimalism, soft shadows" },
{ id: "audience", type: "text", value: "25-40, design-conscious" },
{ id: "hook", type: "text", value: "Smart living, simple" },
{ id: "brand_directives", type: "text", value: "no clip-art, no gradients" },
{ id: "count", type: "text", value: "9" },
],
});
// → { run_id, status }
// 4. Poll until complete
let result;
do {
result = await client.techniques.runs.retrieve(run.run_id, { techniqueId: "tech_thumbnail_v3" });
} while (result.status === "pending" || result.status === "running");
// → status: "completed", outputs: [{ output_id, type: "imageUrl", url }] × 9
return result.outputs;
}

See the tools reference for available execute and search_docs parameters.