# Prompts and text

> Turn a rough idea into a tested prompt, write a scene-by-scene video script, and let an LLM judge pick the best of several results with Nodaro MCP tools.

Source: https://nodaro.ai/docs/mcp/tools/prompts-and-text

The **prompt and text tools** help an assistant write better input for Nodaro's generation tools and choose between results. `enhance_prompt`, `analyze_prompt` and `generate_prompt` turn a rough idea into a prompt written for a specific node, `generate_script` writes a video script scene by scene, and `reduce` merges or judges a list of candidates.

## `enhance_prompt`

Rewrites a rough idea into one optimized prompt for a target node type, with no questions in between. Use it for a quick improvement.

**Permission:** `workflows:execute`. **Credits:** one LLM run, priced by the model's tier.

| Parameter | Type | Notes |
| --- | --- | --- |
| `nodeType` | string | **Required.** The node the prompt is for, such as `generate-image`, `image-to-video` or `generate-music`. |
| `prompt` | string | The rough idea, up to 5,000 characters. Leave it out to start from nothing. |
| `provider`, `style`, `aspectRatio`, `duration` | string or number | The planned model and settings, so the prompt fits them. |
| `llmModel` | string | The LLM that writes the prompt, one of the ids the tool lists, such as `gemini-3.6-flash` or `claude-sonnet-4.6`. Leave it out for the default. |
| `reasoning_effort` | string | `none`, `low`, `medium`, `high`, `xhigh` or `max`. `xhigh` and `max` bill one tier higher. |
| `advanced_mode` | boolean | Gemini models only. Runs the request directly on the model maker's service, so `temperature` and `max_tokens` apply. Bills one tier higher. Another model returns `400 advanced_mode_unsupported`. |
| `temperature`, `max_tokens` | number | Only with `advanced_mode`. `temperature` from 0 to 2, `max_tokens` up to 32,768. |

**Returns:** `jobId`, the `prompt`, and a `recommendedModel` when the tool has one.

## `analyze_prompt`

Turns a rough idea into questions with options, for a target node type. Use it with `generate_prompt` when you want to steer the prompt: answer the questions, then build the prompt from the answers.

**Permission:** `workflows:execute`. **Credits:** one LLM run, priced by the model's tier.

| Parameter | Type | Notes |
| --- | --- | --- |
| `nodeType` | string | **Required.** The node the prompt is for, such as `generate-image`. |
| `prompt` | string | The rough idea, up to 5,000 characters. Leave it out to start from nothing. |
| Model and settings | | `provider`, `style`, `aspectRatio`, `duration`, `llmModel`, `reasoning_effort`, `advanced_mode`, `temperature` and `max_tokens`, as for `enhance_prompt`. |

**Returns:** `jobId` and `questions`. Each question has a `category`, a `label`, `options`, the `selected` option, whether a custom answer is allowed (`allowCustom`), and whether several answers are allowed (`multi`).

## `generate_prompt`

Builds one optimized prompt from the answers to the questions of `analyze_prompt`.

**Permission:** `workflows:execute`. **Credits:** one LLM run, priced by the model's tier.

| Parameter | Type | Notes |
| --- | --- | --- |
| `nodeType` | string | **Required.** The same node type as in `analyze_prompt`. |
| `selections` | array | **Required.** One `{ category, value, isCustom }` per answered question. |
| `originalPrompt` | string | The first idea, up to 5,000 characters, to weave into the result. |
| Model and settings | | `provider`, `style`, `aspectRatio`, `duration`, `llmModel`, `reasoning_effort`, `advanced_mode`, `temperature` and `max_tokens`, as for `enhance_prompt`. |

**Returns:** `jobId`, the `prompt`, and a `recommendedModel` when the tool has one.

The same prompt wizard is available in the editor and through the [REST API](https://nodaro.ai/docs/developers/api/prompt-wizard).

## `generate_script`

Writes a structured video script from a description: scene-by-scene copy that can drive a series of image or video generations. It works like the [Generate Script](https://nodaro.ai/docs/nodes/video/generate-script) node.

**Permission:** `workflows:execute`. **Credits:** from 10 to 30 credits, depending on the model.

| Parameter | Type | Notes |
| --- | --- | --- |
| `prompt` | string | **Required.** What the video is about: topic, style, audience. Up to 10,000 characters. |
| `model` | string | `gemini` (default), `claude` or `gpt`. |
| `scene_count` | integer | The number of scenes, from 1 to 20. By default the model decides. |
| `target_duration` | integer | The length of the video in seconds, from 5 to 600. |
| `tone` | string | The tone, such as `dramatic` or `lighthearted`, up to 200 characters. |

**Returns:** a job id. The script is in the job's output. In clients with MCP Apps, the job card shows it with a **Copy** button.

## `reduce`

Merges a list of candidates into one result, or has an LLM judge pick the best one. It is the engine of the [Choose Best](https://nodaro.ai/docs/nodes/automate/choose-best) node.

**Permission:** `workflows:execute`. **Credits:** free for the logic strategies. `pick-best-llm` costs 3, 10 or 25 credits, for an economy, standard or premium judge model.

| Parameter | Type | Notes |
| --- | --- | --- |
| `strategyId` | string | **Required.** `pick-best-llm`, `concat`, `first-non-empty`, `count`, `vote` or `merge-json`. |
| `inputs` | array | **Required.** Up to 1,000 strings: text fragments or URLs. |
| `strategyConfig` | object | The settings of the strategy, below. |

| Strategy | What it does | `strategyConfig` |
| --- | --- | --- |
| `pick-best-llm` | An LLM judge picks the best candidate against your criteria | `criteria` (text), `inputKind` (`text` or `image-url`), and an optional `llmModel` for the judge |
| `concat` | Joins every input | `separator` |
| `first-non-empty` | Returns the first input that is not empty | none |
| `count` | Counts the inputs | none |
| `vote` | Returns the input that appears most often; a tie goes to the first | `caseSensitive` |
| `merge-json` | Merges JSON objects | `strategy`: `deep` or `shallow` |

**Returns:** `jobId`, the `output` as a string, and `meta.summary`, which says what happened. `pick-best-llm` also returns `meta.selectedIndex` and `meta.reasoning`, the judge's explanation.

When the candidates are pictures, set `inputKind` to `image-url`. With `text`, the judge compares the links as text, which looks like a real choice but is not one.

## Frequently asked questions

### What is the difference between enhance_prompt and analyze_prompt?

enhance_prompt rewrites a rough idea into one optimized prompt in a single call. analyze_prompt returns questions with options first, and generate_prompt builds the prompt from your answers, so you can steer the result.

### Do the prompt tools cost credits?

Yes, a small amount. Each call is one LLM run, priced by the tier of the model you choose. Advanced mode and the highest reasoning efforts bill one tier higher.

### How can an assistant choose the best of several images?

Call reduce with the strategy pick-best-llm, the image URLs as inputs, inputKind set to image-url, and your criteria. The judge returns the winner, its index and its reasoning.
