Reference
describe_look
The complete styling catalog: five palette presets, three layout templates, every field and default.
What it does
- Read-only
- Idempotent
- Account required
Decide what the strip should look like before rendering it. This is the authoritative, complete styling reference at runtime — and deliberately the only complete copy. It returns five named starting-point presets that each bundle a background, device body, caption colour and typeface that agree with each other; the three layout templates and how many headline lines each reserves; a short intake script for asking the user their vibe and their headlines; and every styling field with its default.
You can ask: “Show me the styling options before the first Tidebook render.”
This page describes the call. It deliberately does not retype the field inventory: the response is the catalog, it is generated from the same projection the render schemas are, and a copy here would be a second contract that goes stale.
It takes no arguments
Call it with an empty arguments object. There is nothing to configure, and nothing you pass changes what comes back.
Result
intakeanyoptionalpresetsarrayrequiredeach item
any
The published schema does not constrain this element, on purpose — a malformed entry comes back as a sentence instead of a stacked union error. What the server re-validates against is below.
layoutsarrayrequiredeach item
any
The published schema does not constrain this element, on purpose — a malformed entry comes back as a sentence instead of a stacked union error. What the server re-validates against is below.
styleanyoptionallookanyoptionalpanelPresetsarrayrequiredeach item
any
The published schema does not constrain this element, on purpose — a malformed entry comes back as a sentence instead of a stacked union error. What the server re-validates against is below.
clipanyoptionalnotesarrayrequiredeach item
string
Example
That request maps to this call:
{
"name": "describe_look",
"arguments": {}
}The preset list, the layout templates, the intake questions, the full field catalog with defaults, and the composition notes — including the caption-band rule that decides whether a set of panels reads as designed.
Access and cost
- Open to everyone. It reads nothing about the account, so it works signed out, on both doors.
- Free. It spends no cloud credits and uses up no preview.
When it refuses
- You are about to guess a colour scheme out of raw fields.
- Call this instead. Presets and layouts are independent axes and you usually want one of each — a preset never pins placement, a layout never pins colour.
- The user already said what they want.
- Skip it. Also skip it when the project has a saved look, or when you are iterating on a strip you already rendered.
Where this fits
What the agent is told
The title and description the server publishes on tools/list — this is the copy a model chooses between, reproduced verbatim.
Design presets & style catalog
Decide what the strip should LOOK like before rendering it. Returns five named starting-point presets (each bundling a background, device body, caption colour and typeface that agree with each other), a short two-question intake script for asking the user their vibe and their headlines, and the full styling field catalog + defaults (device/camera, background, captions, App Store panel sizes). CALL THIS BEFORE the first render of a new strip whenever the user has not said how it should look — guessing a colour scheme out of 30 raw fields is how strips end up looking improvised. It is also the one complete copy of that material: the connect-time server instructions are truncated by most clients, so anything you need about PALETTE (presets: noir, daylight, pop, clay, studio — each bundling background + device body + caption colour + typeface so they agree) or COMPOSITION (layouts: standard, bleed, top-bleed — how many headline lines are reserved and where the device sits under them) is here and nowhere else in full. The two are independent axes and you usually want one of each: a preset never pins placement, a layout never pins colour. SKIP this call when the user already said what they want, when the project has a saved look (read_look / useSavedLook), or when you are iterating on a strip you already rendered.