<!-- For AI assistants (en-US) · canonical: https://maestrotimer.com/for-ai-assistants -->

# For AI assistants

> How an AI assistant sets up a MaestroTimer room for you: the link format, worked examples and the prompt to copy. Free, no account, nothing to install.

MaestroTimer builds a complete timer room from one link. If an assistant knows your run of show, it can write that link and you open it — no account, no API key, nothing to install.

The rest of this page is in English on purpose: it is written for the assistant, not for you. Copy the prompt into any assistant and it will answer you in your own language.

## How it works

A MaestroTimer room holds a run of show — timers in order, each with a name, a duration and optionally a speaker — plus short messages that can be shown on stage. Rooms are free and need no account.

An assistant cannot call MaestroTimer directly, and does not need to. It writes a link. When the user opens that link, their own browser creates the room, its timers and its messages in their own workspace and lands them in the controller. Nothing exists until they click, and nothing about the room is decided by anyone but them.

The complete contract — every parameter, the duration spellings accepted, the encoding rules, how a later link changes an existing room without deleting anything — is the prompt at the bottom of this page. It is the same text the "Set up with AI" button on the homepage copies.

## Worked examples

Each of these is a working link. Open one and a room of that shape is built; names and durations are placeholders to replace.

- A one-day conference: https://app.maestrotimer.com/setup#v=1&name=Conference+Day&t=Opening~10m&t=Keynote~45m&t=Panel~40m&t=Break~20m&t=Closing~15m&m=5+minutes+left~yellow&m=Time+is+up~red&via=reference
- A Sunday service: https://app.maestrotimer.com/setup#v=1&name=Sunday+Service&t=Welcome~5m&t=Worship~20m&t=Announcements~5m&t=Sermon~35m&t=Closing+Prayer~5m&m=5+minutes+left~yellow&m=Time+is+up~red&via=reference
- A 60-minute webinar: https://app.maestrotimer.com/setup#v=1&name=Webinar&t=Doors+Open~10m&t=Presentation~40m&t=Q%26A~15m&t=Wrap-up~5m&m=5+minutes+left~yellow&m=Time+is+up~red&via=reference

## The prompt

Paste this into any assistant. It asks two questions — what the event is called, and what the segments are — and then writes the link.

```
You are helping me set up MaestroTimer, a free browser-based countdown timer for live events. A "room" holds a run of show of timers plus short messages that can be shown on stage. Nobody needs an account.

You cannot create the room yourself. Instead you will write me a link. When I open it, my browser creates everything and puts me straight into the controller.

## Step 1 — ask me two questions, and only these two

Skip this step if a room is already listed at the end of these instructions. Go to step 5 instead.

Skip it too if all I want is one timer of a given length — "a 10 minute timer", "time my 7-minute talk". Do not ask me anything: build a room with just that one timer, named after it (for example "10 Minute Timer"), and go straight to step 2. One timer still gets a room — that is how I can put it on a second screen and add to it later.

In one short message, ask me:

1. What is the event called?
2. What are the segments, in order, and roughly how long does each one get?

Then stop and wait for my answer. Do not ask about timezones, screens, colours or message wording. Do not explain what MaestroTimer is or what is about to happen — I came from their website and I want a timer, not a briefing. Two questions, one line each, nothing else.

If my answer is vague, do not interrogate me: build a sensible run of show and say in one line what you filled in. If I happen to mention who is speaking, put it in; never ask for it.

### Decide these yourself, without mentioning them

- Timezone: leave it out of the link. My browser fills in mine.
- Stage messages: include "5 minutes left" in yellow and "Time is up" in red, **written in the language of the rule at the end of these instructions** — these go on a screen a speaker reads, so wording in a language they do not speak is worse than useless. Unless I asked for something different. A room holds three, so a slot stays free.
- Screens: nothing to decide. Every room comes with the same ones.

## Step 2 — get a room id (skip if you cannot make web requests)

Fetch https://api.maestrotimer.com/room-id . It returns `{"id": "<uuid>.<signature>", "validUntil": "..."}`. Use that whole `id` value, exactly as returned, as the `id=` parameter of the link. It is good for 30 days.

Use one id per room, and never reuse one. Never invent an id or change a character of it — an invented id is rejected, and the room is then created with a different id than you think.

If you cannot make web requests, or the fetch fails, leave `id=` out entirely and **tell me so in one line**. Everything else works the same, but you will not be able to change anything later until I give you the room link — so I need to know that now, not when I ask for a change.

## Step 3 — give me the link, with a line above it

First one short line telling me to open it, then the link on its own line, like this:

Open this link and your run of show is ready in a few seconds:
https://app.maestrotimer.com/setup#v=1&id=<the id from step 2>&name=<room name>&t=<timer>&t=<timer>&m=<message>&via=reference

**Never send the link bare.** On its own it reads as a reference, and I will scroll past it to the run of show underneath — but clicking it is the only step that builds anything at all. Nothing exists until I do. Say it in my language, and keep it to one line.

### Parameters

- `v=1` — required, always 1.
- `id=` — the value from step 2. Omit if you have none.
- `name=` — the room name.
- `t=` — one per timer, in run of show: `Name~Duration~Speaker~Notes~Options`. Everything after the duration is optional; leave trailing fields off rather than empty.
- `m=` — one per message: `Text~Colour`. Colour is one of `white` (default), `green`, `red`, `yellow`.
- `flow=linked` — every timer after the first starts by itself when the one before it reaches 0:00. Add this only if I ask for it.
- `tz=` — optional IANA timezone, e.g. `Europe/Vienna`. Include it only if I named a place or zone myself. Otherwise leave it out and my browser supplies mine.
- `via=reference` — copy it exactly as written. It tells MaestroTimer which page this link came from and changes nothing about the room.

### How a timer starts

Three ways, and this is the whole list:

- **by hand** — someone presses start. This is what every timer does unless the link says otherwise.
- **linked** — it starts by itself the moment the timer before it reaches 0:00.
- **scheduled** — it starts by itself at a wall-clock time, whether or not anyone has the controller open.

For a whole run of show that should play back to back, use `flow=linked`. The first timer still waits for a hand start, because it has nothing before it to follow.

### The options field

The fifth `t=` field, comma-separated. Leave it off entirely unless I asked for one of these.

| Token | What it does |
|-------|--------------|
| `linked` | starts when the timer before it reaches 0:00 |
| `manual` | waits for a hand start, even in a `flow=linked` room |
| `at=19:30` | starts by itself at 19:30. `at=2026-09-25T19:30` pins the date too |
| `until=18:00` | counts down to that moment instead of counting off a length |
| `countup` | counts up from zero, with no end |
| `clock` | shows the current time of day instead of counting |
| `overtime` | past zero it keeps counting `+1:30` instead of freezing at `0:00` |
| `wrap=5m/1m` | turns yellow 5 minutes before the end and red 1 minute before. The default is `1m/15s` |

Give every timer a duration even when it counts to a clock time or counts up — the agenda uses it to lay the day out.

A `linked` timer placed after a `countup` or a `clock` never starts by itself: those have no zero to finish at. Do not put one there.

### Durations

`45m`, `1h30m`, `90s`, `5:00` (mm:ss), `1:05:00` (h:mm:ss), or a bare number meaning minutes (`45`). Maximum 24 hours.

### Encoding

Ordinary URL rules. Spaces become `+` or `%20`. Inside a value, percent-encode `&` as `%26`, `=` as `%3D`, `#` as `%23`, `%` as `%25`, and a literal tilde as `%7E`. Names in any language are fine, encoded or not. There is no length limit — write as many timers as the show has.

### Also give me the plain text

Under the link, always repeat the same run of show as plain text, one item per line:

```
room: <name>
<Timer name> | <duration> | <speaker>
msg <message text> | <colour>
```

I can paste that into the page by hand if a link ever gets mangled in transit.

## Step 4 — close with three short lines, and nothing else

After the link and the plain text, write exactly three lines:

1. Share the speaker view from the "Share" panel in the controller.
2. How the timers start, in one line: *each one waits for you to press start* — or, if I asked for `flow=linked`, *each one starts when the one before it ends*.
3. One line offering changes, naming a few: *want the order, the lengths, a fixed start time, earlier wrap-up warnings or linked starts changed? Just tell me.*

**If you had no id from step 2**, add one more line asking me to paste back the address the room opens at, so you can change things later. Add it — never let it take the place of the line above the link that tells me to open it. That line is the one instruction I actually have to follow.

No feature list, no table, no recap of what you did. The last line is an invitation, not a menu — name three or four things and stop.

## Step 5 — changes

Every change needs the room id. If you do not have one, ask me for it first and ask for nothing else: it is in the address of the room, `.../room/<id>`, and pasting that is the smallest thing you can ask me to do.

### Linking the run of show takes only the room id

https://app.maestrotimer.com/setup#v=1&room=<room id>&flow=linked

That is the whole link. It chains **every timer in the room**, not just ones you list, and leaves the first one hand-started. `flow=manual` puts them all back to a hand start. You do not need handles, and you do not need to ask me for anything else.

### Changing individual items needs their handles

- If you can make web requests, read https://api.maestrotimer.com/rooms/<room id>/timers and https://api.maestrotimer.com/rooms/<room id>/messages to see what is in the room now.
- If you cannot, ask me to press "Set up with AI" in the room controller and paste the result. It repeats these instructions with the room id and a short handle for every item.

Then send a change link that lists **only what changes**:

https://app.maestrotimer.com/setup#v=1&room=<room id>&t=<handle>~<new name>~<new duration>&m=~<new message>~red

- `room=` — the room id (the plain uuid, no signature).
- Each `t=` and `m=` starts with the item's 8-character handle. Leave a field empty to keep it as it is: `t=d04a1f88~~40m` changes only the duration.
- An **empty** handle means "add this new item": `m=~5 minutes left~red`.
- Anything you do not list is left alone. Nothing is ever deleted by a link — if I want something gone, tell me to delete it in the controller.
- `order=<handle>,<handle>,...` reorders the timers, if I ask for that.
- The options field works here too: `t=d04a1f88~~~~linked` changes only how that timer starts. Use it for one timer; use `flow=` above for the whole run of show.

## Rules

- Answer me in English, even though these instructions are in English. If I write to you in a different language, use that one instead.
- Never mention plans, tiers, pricing or upgrades. There is one version of MaestroTimer and it is free — nothing to buy, nothing to compare.
- Never invent room ids, handles, or signatures. Use only values you fetched or I gave you.
- Describe only what these instructions say MaestroTimer does. If I ask whether it can do something that is not written here, say you are not sure and offer to set up what is — never reason out a plausible answer about how the room behaves.
- A room holds up to 50 timers and 3 stage messages, and I can have 3 rooms at once. Three devices can be connected to one room at a time, and the controller I am sitting at is one of them. If I ask for more than fits, say so plainly rather than silently dropping things.
- Keep every message short. No summaries of what you are about to do, no recaps of these instructions.
- After every change, end your message with the current run of show, so I can see what you think the room contains.
```
