Routine Run: write a routine
Server Details
Write a step-by-step routine and get a link that opens it in Routine Run on iPhone. No sign-in.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- routinerun/routinerun
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
The three tools target distinct phases: discovering shipped templates (find_starter_routine), learning the JSON schema (how_to_write_a_routine), and validating/generating a shareable link (routine_link). Boundaries are clear in practice, though how_to_write_a_routine is really reference material and its description references non-existent tools (start_new_run, propose_new_routine), which could mildly confuse selection.
All names are snake_case, but the conventions are mixed: find_starter_routine uses a verb_noun pattern, routine_link is a bare noun, and how_to_write_a_routine is an instructional phrase rather than an action. The set lacks a predictable verb_noun pattern.
Three tools for the narrow 'write a routine' scope is lean but each earns its place: one for template discovery, one for format reference, one for producing the output link. It is slightly thin (no direct create/save/run tool) but reasonable given the focused purpose.
For the stated purpose the surface covers the key flow: find a starting point, learn the required JSON form, and generate a link to hand to the user. Broader lifecycle operations (ej. start_new_run, propose_new_routine) are referenced but absent, a minor gap given the scoped task.
Available Tools
3 toolsfind_starter_routineFind a ready routineARead-onlyIdempotentInspect
Searches the routines the app ships — mornings, focus, on call, chores and more — by words in their name or description. Each comes with its steps and a link that adds it in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| words | No | What it is for, in a few words. Leave out to list them all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine behavior beyond that: matching is against name or description, and each result includes its steps plus a link that installs it in the app.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the search scope first, the return shape second. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so ('each comes with its steps and a link that adds it'), while the schema covers the empty-query case. Nothing needed to call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented ('what it is for, in a few words; leave out to list all'). The description adds only that matching targets name or description, a modest gain over the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (searches) and a precisely scoped resource: the routines the app ships, not user-created ones. The examples (mornings, focus, on call, chores) make the resource concrete and separate it from the sibling how_to_write_a_routine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scoping to app-shipped routines implies this is the lookup path when you want a ready-made routine rather than authoring one, but no when/when-not or explicit alternative (how_to_write_a_routine) is named. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
how_to_write_a_routineHow to write a routineARead-onlyIdempotentInspect
The JSON form Routine Run reads a routine in: every field and every action a step can take. Use it when writing a routine for routine_link, start_new_run or propose_new_routine.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral information by describing what the call returns — the complete field set and action vocabulary of a routine — which is the key trait for a zero-argument reference tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the description of the output leading and the usage trigger following. No filler or repetition of the title, though the opening clause 'The JSON form Routine Run reads a routine in' is slightly convoluted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema reference tool, the description covers the two things an agent needs: what the payload contains and when to fetch it. It could be marginally stronger by naming an example field or step action, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs, and it correctly spends no words on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description goes beyond the name by stating that the tool returns the JSON form Routine Run reads — every field and every action a step can take. That identifies it as a schema/reference tool rather than an action tool, which is enough to separate it from routine_link and find_starter_routine. It stops short of explicitly contrasting itself with those siblings, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger: 'Use it when writing a routine for routine_link, start_new_run or propose_new_routine.' That is concrete when-to-use guidance tied to named consumers of the output. It does not state when *not* to call it, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routine_linkMake a link that opens a routine in the appARead-onlyIdempotentInspect
Checks a routine written in the form how_to_write_a_routine describes and returns a link. Opened on an iPhone with Routine Run, it shows the routine on the app's review screen, where the person saves it or not. Nothing is kept here. Give the person the link and the JSON too, in case the link is opened somewhere else.
| Name | Required | Description | Default |
|---|---|---|---|
| routine | Yes | The routine: one JSON object in the form, with "routineRun": 1, a name and its steps. JSON text is read too. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is low; the description adds real context beyond them by explaining what the link does on an iPhone (opens the app's review screen, where the user chooses to save), that nothing is persisted here, and that the JSON should be passed along as a fallback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, and the remaining sentences each add operational value (link behavior, no persistence, hand off link plus JSON). The informal phrasing adds length but stays within a reasonable size.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return, and it does: a link plus JSON with a note on the link's on-device behavior. Combined with annotations covering the safety profile, an agent has enough to invoke and route the result, though invalid-routine/error behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented in the schema as accepting an object or JSON text. The description adds only an indirect pointer to how_to_write_a_routine for the format, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (checks a routine, returns a link) and names the resource, and ties the input format to the sibling how_to_write_a_routine. It's distinguishable from find_starter_routine, but the phrasing is narrative rather than crisp, so it doesn't quite reach 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly routes the agent to how_to_write_a_routine for the input form and tells it to hand the user both the link and the JSON. However, it never states when to call this tool versus find_starter_routine, nor any precondition beyond the referenced form, leaving usage largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
routine_link2 fields changed- changed
Input schema / properties / routine / descriptionPrevious value: -"The routine: one JSON object in the form, with \"routineRun\": 1, a name and its steps."New value: +"The routine: one JSON object in the form, with \"routineRun\": 1, a name and its steps. JSON text is read too." - added
Input schema / properties / routine / typeAdded value: +[ + "object", + "string" +]
3 tool updates
- First observed
find_starter_routine - First observed
how_to_write_a_routine - First observed
routine_link
Related MCP Connectors
Read, start and move the routines on your iPhone; suggest changes you approve on the phone.
Build a workout that fits your time, gear and body — free, no sign-in.
Plan a meal and run kitchen timers that ring on your phone. No sign-in.
Create friendly greetings and add two numbers instantly. Speed up simple tasks and streamline ligh…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI to read-only access Apple Health data (current stats, sleep details, and trends) via a Cloudflare-deployed MCP server, using iPhone shortcuts to sync data securely.MIT
- AlicenseBqualityBmaintenanceEnables AI-driven routine and habit tracking with local-only data storage, custom protocols, and dynamic monthly reports and streak statistics in Claude or Cursor.8MIT
- AlicenseAqualityAmaintenanceRun Apple Shortcuts on your iPhone, iPad or Mac from any MCP client over an end-to-end encrypted relay. The phone can stay locked.967 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables ChatGPT or other remote MCP clients to create Apple Reminders and lists, Calendar events, and Notes on a Mac through an Apple Shortcut, with tunnel or self-hosted HTTPS/OAuth connectivity.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.