# MCP server

Every tool the Superclock MCP server offers: what it is for, what it takes, whether it reads, writes or asks first, and what undoes it.

<!-- generated from ops-registry.json by scripts/gen-tools-page.mjs; never edited by hand -->

The tools at `https://mcp.superclock.app/mcp`, for ChatGPT, Claude, Muse and any MCP client. [Agents](/agents) says how to connect.

- Read: reads, never changes anything. Write: changes alarms or timers; every change shows in Changes with the agent's name, and undo_change takes it back. Sensitive write: asks the person first, every time.
- Sign-in: OAuth 2.1 with S256 PKCE; the person picks See and change (alarms.read, alarms.write) or See only (alarms.read). A write on a See only connection answers "This needs the alarms.write permission".
- Answers: a sentence to say back, and the same facts as data (structuredContent) where a tool lists things. An error is an answer with isError and a sentence that says why and what to do, never a stack trace.
- Limits: no per-call limit today. Alarms ring only on an iPhone signed in to the same account; get_account says whether one is.

## Reads

### what_superclock_can_do

Use this when you are not sure whether Superclock can do what the person asks, or before you are claimed. Any credential may call it.

- takes: nothing
- answers: what this server can and cannot do, and how an agent that is not claimed yet gets claimed
- label: Read

### get_account

Use this first in a conversation, and when an alarm seems not to arrive. Alarms ring only on a signed-in iPhone; when none is, tell the person how to sign in.

- takes: nothing
- answers: the Superclock account this connection acts for, and whether an iPhone is signed in to it and when it last synced
- label: Read

### list_alarms

Use this when the person asks about their alarms, or you need an alarm's id for another tool. Not for timers: use list_timers.

- takes: nothing
- answers: every alarm as the iPhone last sent them, each with its id, its time and days, and whether it is paused or moves earlier only
- label: Read

### list_timers

Use this when the person asks about their timers, or before stop_timer. Not for alarms: use list_alarms.

- takes: nothing
- answers: the timers running on the iPhone now, and the ones an agent or the web started that are not over yet, each with its id
- label: Read

### get_alarm

Use this when you need one alarm's full rule before changing it. Not for finding an alarm: use list_alarms.

- takes: id
- answers: one alarm or timer by its id, with its rule and version
- label: Read

### list_changes

Use this when the person asks what changed or who changed it, to check that a change reached their iPhone, or before undo_change.

- takes: limit (optional)
- answers: the latest changes: when, what, who made it (the person, you, another agent) and whether their iPhone has it yet, each with an id undo_change takes
- label: Read

## Writes

### add_alarm

Use this when the person asks for an alarm: a time with a date or weekdays, or their own words in sentence. One alarm per thing they asked for. Say back what you set, the day in words.

- takes: label, time (optional), date (optional), days (optional), sentence (optional), againEveryMinutes (optional), times (optional)
- label: Write
- undo: remove_alarm

### move_alarm

Use this when the person wants an alarm at another time, date or days. Medication alarms only move earlier. Not for its name: use rename_alarm.

- takes: id, time (optional), date (optional), days (optional), sentence (optional)
- label: Write
- undo: move_alarm

### rename_alarm

Use this when the person wants an alarm called something else. Its time and days stay as they are.

- takes: id, label
- label: Write
- undo: rename_alarm

### pause_alarm

Use this when the person wants an alarm off for now, or until a date (it rings again after that day). Not for turning one back on: use resume_alarm.

- takes: id, until (optional)
- label: Write
- undo: resume_alarm

### resume_alarm

Use this when the person wants a paused alarm to ring again at its next time.

- takes: id
- label: Write
- undo: pause_alarm

### remove_alarm

Use this when the person asks to remove an alarm. It takes two calls: the first says what would go and gives a confirm code; ask them, and only after they say yes call again with that confirm. A medication alarm is never removed by an agent.

- takes: id, confirm (optional)
- label: Sensitive write (asks first)
- undo: undo_change

### undo_change

Use this when the person wants a change taken back, by its id from list_changes: an added alarm goes, a moved or paused one goes back, a removed one returns.

- takes: id
- label: Write
- undo: undo_change

### start_timer

Use this when the person asks for a timer on their phone. It starts when the iPhone receives it, usually within seconds.

- takes: label, minutes
- label: Write
- undo: stop_timer

### stop_timer

Use this when the person asks to stop a timer an agent or the web started, by its id from list_timers. One started on the iPhone itself is stopped there; say so.

- takes: id
- label: Write
- undo: none: start_timer starts it again from the beginning

### send_feedback

Use this when the person asks to send feedback about Superclock, or when a Superclock tool could not do what they asked. Write a sentence or two about Superclock: what failed or what was missing, and the tool it was about. Never include the conversation, names, contact details or anything else personal.

- takes: kind, text, tool (optional)
- label: Write
- undo: none: a note to the people who make Superclock

## Shapes

- time: 24-hour HH:MM in the person's own time
- date: YYYY-MM-DD
- weekday: mon, tue, wed, thu, fri, sat or sun
- sentence: the person's own words, when you cannot turn them into a time and a day; the iPhone parses them
- kind: problem, idea or question

Source: https://superclock.app/mcp