Skip to content

Rhylthyme

by rhylthyme.com · remote · no sign-in to list tools · v1.3.0 · published by com.rhylthyme

Real-time multi-track schedules for cooking, lab protocols, events and workouts. Validate and share.

Deletes · 3Changes · 10

19 tools: 3 can delete or cancel things, 10 change things and 6 only read.

Scanned Oct 21, 2026

8 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http rhylthyme https://mcp.rhylthyme.com/mcp

Findings

Matches of fixed checks, with the text they matched.

8 warn
  • The server marks "analyze_schedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "analyze_schedule" says "analyze": a word for reading.

    What this check looks for
  • The server marks "import_from_source" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "import_from_source" says "import": a word for a change.

    What this check looks for
  • The server marks "import_text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "import_text" says "import": a word for a change.

    What this check looks for
  • The server marks "create_environment" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_environment" says "create": a word for a change.

    What this check looks for
  • The server marks "load_program" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.

    What this check looks for
  • The server marks "load_run" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "load_run" says "run": a word for a change.

    What this check looks for
Show 2 more findings
  • The server marks "load_public_recipe" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.

    What this check looks for
  • The server marks "preview_timeline" destructive (destructiveHint: true), and its name says "preview", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "preview_timeline" says "preview": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

19 tools

Deletes or cancels 3Claude Code: deny
  • preview_timelineReturn a static Gantt image of a program with a caption, for 'show me a preview' or 'a picture of the timeline'.1 finding

    Why it is in this group

    • The name "preview_timeline" says "preview": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "preview_timeline" destructive (destructiveHint: true), and its name says "preview", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "preview_timeline" says "preview": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Return a static Gantt image of a program with a caption, for 'show me a preview' or 'a picture of the timeline'. The image is served from a public share link. Planned versus actual: with `run` (a run record) it draws the actual bars over the plan.

    Annotations the server declares

    • title: Preview timeline image
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • save_programSave a program to the user's account ('save this for later'); the same programId updates it.No findings

    Why it is in this group

    • The name "save_program" says "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Save a program to the user's account ('save this for later'); the same programId updates it. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: Save to my account
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • visualize_schedulePublish a program as a live, shareable timeline (a public share link) and return its URL, with an ASCII Gantt and an itinerary.No findings

    Why it is in this group

    • The name "visualize_schedule" says "schedule": a word for a change.
    • The description's first verb is "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Publish a program as a live, shareable timeline (a public share link) and return its URL, with an ASCII Gantt and an itinerary. For a schedule the user wants to follow or share ('plan this so it all finishes at 6', 'when do I start each thing'). Validates first and refuses an invalid program with fix hints.

    Annotations the server declares

    • title: Publish a live timeline
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Changes things 10Claude Code: ask
  • analyze_schedulePut a program on the clock: each step's start and end, total length, the critical path and what gates it, resource conflicts, slack per track.1 finding

    Why it is in this group

    • The name "analyze_schedule" says "analyze": a word for reading.
    • The description's first verb is "put": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "analyze_schedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "analyze_schedule" says "analyze": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Put a program on the clock: each step's start and end, total length, the critical path and what gates it, resource conflicts, slack per track. Pass finishAt to answer 'when do I start X so everything is ready at 6pm?'. Pure computation. With `history` (run records) or `program_id` it also predicts durations from recorded runs.

    Annotations the server declares

    • title: Analyze schedule timing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • calibrate_programPropose durations for a saved program from its recorded runs: median as the default, P10 to P90 as the range, at least as wide as the author's, with the evidence per step and the e…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Propose durations for a saved program from its recorded runs: median as the default, P10 to P90 as the range, at least as wide as the author's, with the evidence per step and the effect on total length. Saves nothing; with `accept` it returns the calibrated program. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: Propose durations from recorded runs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • create_environmentDescribe a workspace's equipment limits (one oven, two centrifuges, one stage) as resourceConstraints to copy into a program, so steps that share equipment are scheduled around eac…1 finding

    Why it is in this group

    • The name "create_environment" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_environment" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_environment" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Describe a workspace's equipment limits (one oven, two centrifuges, one stage) as resourceConstraints to copy into a program, so steps that share equipment are scheduled around each other.

    Annotations the server declares

    • title: Define equipment limits
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • import_from_sourceImport a recipe or protocol from a URL or service into a program.1 finding

    Why it is in this group

    • The name "import_from_source" says "import": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "import_from_source" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "import_from_source" says "import": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Import a recipe or protocol from a URL or service into a program. source: spoonacular, themealdb (recipes); protocolsio, opentrons, benchling (lab); cooklang (.cook URL). action: search (no account needed), import (query = URL or id), random. import, random and benchling need the user's Rhylthyme account. `enrich: true` splits an import into parallel tracks. Returns the program.

    Annotations the server declares

    • title: Import from an external source
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • import_textTurn pasted text (a recipe, protocol, run sheet or training plan) into a validated multi-track program on the server, in four model turns, with a table of the source span each step…1 finding

    Why it is in this group

    • The name "import_text" says "import": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "import_text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "import_text" says "import": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Turn pasted text (a recipe, protocol, run sheet or training plan) into a validated multi-track program on the server, in four model turns, with a table of the source span each step came from. Capped per day. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: Import pasted text
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • load_programOpen one of the user's saved programs by id: summary plus live-timeline URL.1 finding

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "load_program" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open one of the user's saved programs by id: summary plus live-timeline URL. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: Open a saved program
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • load_public_recipeOpen a public catalog entry by id: summary plus live-timeline URL.1 finding

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "load_public_recipe" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open a public catalog entry by id: summary plus live-timeline URL.

    Annotations the server declares

    • title: Open a public program
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • load_runOpen one recorded run: planned against actual timing per step, what ended each step, pauses.1 finding

    Why it is in this group

    • The name "load_run" says "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "load_run" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "load_run" says "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open one recorded run: planned against actual timing per step, what ended each step, pauses. Shows where a plan drifts. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: Open a recorded run
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • loginFor apps that cannot connect the Rhylthyme account directly: returns a sign-in URL, then accepts the pasted token.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    For apps that cannot connect the Rhylthyme account directly: returns a sign-in URL, then accepts the pasted token. Only the user's own saved programs, runs and imports need it; everything public works without. Tokens last about an hour.

    Annotations the server declares

    • title: Connect Rhylthyme account
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • review_programA model reads an imported program against its source and reports what looks wrong: a default duration on "simmer for an hour", a step the importer dropped, steps chained that could…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    A model reads an imported program against its source and reports what looks wrong: a default duration on "simmer for an hour", a step the importer dropped, steps chained that could overlap, a total that disagrees with the source. Changes nothing; returns findings to show the user. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: Review an imported program
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 6Claude Code: allow
  • get_renderer_sourceReturn the open-source timeline renderer's JavaScript (Apache-2.0, about 90 KB, no dependencies) for an HTML page or artifact that cannot load external scripts; it defines Rhylthym…No findings

    Why it is in this group

    • The name "get_renderer_source" says "get": a word for reading.
    Description, as the server wrote it
    Return the open-source timeline renderer's JavaScript (Apache-2.0, about 90 KB, no dependencies) for an HTML page or artifact that cannot load external scripts; it defines Rhylthyme.renderTimeline(container, program).

    Annotations the server declares

    • title: Get timeline renderer source
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_my_programsList the user's saved programs.No findings

    Why it is in this group

    • The name "list_my_programs" says "list": a word for reading.
    Description, as the server wrote it
    List the user's saved programs. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: List my saved programs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_public_runsList anonymous runs other people contributed for one exact program version: actual against planned length, and their conditions.No findings

    Why it is in this group

    • The name "list_public_runs" says "list": a word for reading.
    Description, as the server wrote it
    List anonymous runs other people contributed for one exact program version: actual against planned length, and their conditions. For 'how long does this really take?'. No account needed. Takes `program` or `program_hash`.

    Annotations the server declares

    • title: List contributed runs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_runsList recorded runs of a saved program: when, how it ended, actual against planned length.No findings

    Why it is in this group

    • The name "list_runs" says "list": a word for reading.
    Description, as the server wrote it
    List recorded runs of a saved program: when, how it ended, actual against planned length. For 'how long did this take last time?'. Needs the user's Rhylthyme account.

    Annotations the server declares

    • title: List recorded runs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_public_recipesSearch the public catalog of recipes, lab protocols, event templates and workouts by name or keyword.No findings

    Why it is in this group

    • The name "search_public_recipes" says "search": a word for reading.
    Description, as the server wrote it
    Search the public catalog of recipes, lab protocols, event templates and workouts by name or keyword. Returns ids, names, descriptions and URLs; no account needed.

    Annotations the server declares

    • title: Search the public catalog
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • validate_programCheck a program before publishing or saving it: ids, dangling or cyclic triggers, steps overlapping in a track, tasks with no resourceConstraint, durations, replicates/instances mi…No findings

    Why it is in this group

    • The name "validate_program" says "validate": a word for reading.
    Description, as the server wrote it
    Check a program before publishing or saving it: ids, dangling or cyclic triggers, steps overlapping in a track, tasks with no resourceConstraint, durations, replicates/instances misuse. Every finding has a code, a message and a suggested fix. Pure computation.

    Annotations the server declares

    • title: Validate a program
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http rhylthyme https://mcp.rhylthyme.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__rhylthyme__validate_program",
      "mcp__rhylthyme__list_my_programs",
      "mcp__rhylthyme__list_runs",
      "mcp__rhylthyme__list_public_runs",
      "mcp__rhylthyme__search_public_recipes",
      "mcp__rhylthyme__get_renderer_source"
    ],
    "ask": [
      "mcp__rhylthyme__analyze_schedule",
      "mcp__rhylthyme__import_from_source",
      "mcp__rhylthyme__import_text",
      "mcp__rhylthyme__create_environment",
      "mcp__rhylthyme__login",
      "mcp__rhylthyme__load_program",
      "mcp__rhylthyme__review_program",
      "mcp__rhylthyme__load_run",
      "mcp__rhylthyme__calibrate_program",
      "mcp__rhylthyme__load_public_recipe"
    ],
    "deny": [
      "mcp__rhylthyme__visualize_schedule",
      "mcp__rhylthyme__save_program",
      "mcp__rhylthyme__preview_timeline"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as rhylthyme. Review it before you use it.