# Rhylthyme

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

- name: com.rhylthyme/rhylthyme
- version: 1.3.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 90/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.rhylthyme%2Frhylthyme
- tools: https://api.protogrid.dev/v1/servers/com.rhylthyme%2Frhylthyme/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "rhylthyme": {
      "type": "http",
      "url": "https://mcp.rhylthyme.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-100% ~updated-33d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 90/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 19 of 19 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 4,158 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 36 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 19, about 4,158 tokens to load them all
- tool set hash: 0808e958ea0bb369b6051937fc81d3b4
- tools last changed: 2026-10-18T20:13:43.064Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.rhylthyme/rhylthyme.svg)](https://protogrid.dev/servers/com.rhylthyme/rhylthyme)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-18 `import_from_source` changed (description, inputSchema)
  - before: Import a recipe, protocol or run of show into a program. source: spoonacular, themealdb (recipes); protocolsio, opentrons, benchling (lab); cooklang (.cook URL); ontime (run of show). 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.
  - after: 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.
- 2026-10-14 `import_from_source` changed (description, inputSchema)
  - before: 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.
  - after: Import a recipe, protocol or run of show into a program. source: spoonacular, themealdb (recipes); protocolsio, opentrons, benchling (lab); cooklang (.cook URL); ontime (run of show). 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.
- 2026-09-28 `get_renderer_source` changed (description)
  - before: Return the open-source timeline renderer's JavaScript (Apache-2.0, about 90 KB, no dependencies) to paste into a <script> in an HTML artifact whose sandbox blocks external scripts; then call Rhylthyme.renderTimeline(container, program).
  - after: 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).
- 2026-09-28 `preview_timeline` changed (description)
  - before: Return a static Gantt image of a program, for 'show me a preview' or 'a picture of the timeline'. Returns the image and a caption; the image is hosted through a public share link, as visualize_schedule creates. visualize_schedule gives the live URL. Planned versus actual: pass `run` (from load_run) to draw the real bars over the plan.
  - after: 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.
- 2026-09-28 `load_public_recipe` changed (description)
  - before: Open a public catalog entry by id: summary plus live-timeline URL (no visualize_schedule call needed).
  - after: Open a public catalog entry by id: summary plus live-timeline URL.
- 2026-09-28 `search_public_recipes` changed (description)
  - before: Search the public catalog of recipes, lab protocols, event templates and workouts by name or keyword. Returns ids, names, descriptions and URLs; no login. Pass an id to load_public_recipe.
  - after: 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.
- 2026-09-28 `list_public_runs` changed (description)
  - before: 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 login needed. Pass `program` or `program_hash`.
  - after: 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`.
- 2026-09-28 `calibrate_program` changed (description)
  - before: Propose durations for a saved program from its recorded runs: median as the default, P10 to P90 as the range, never narrower than the author's, with the evidence per step and the effect on total length. Saves nothing: pass `accept` to get the calibrated program, then save_program. Needs the user's Rhylthyme account.
  - after: 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.
- 2026-09-28 `import_text` changed (description)
  - before: 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. Use when the user pastes the steps and no URL importer fits. Needs the user's Rhylthyme account. Capped per day; you can instead author the program yourself and call validate_program.
  - after: 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.
- 2026-09-28 `import_from_source` changed (description)
  - before: 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 login), import (query = URL or id), random. import, random and benchling need the account. `enrich: true` splits an import into parallel tracks. Returns the program.
  - after: 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.

Full history: https://api.protogrid.dev/v1/servers/com.rhylthyme%2Frhylthyme/changes

## Remotes

- https://mcp.rhylthyme.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (19)

- `analyze_schedule`: 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.
- `calibrate_program`: 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.
- `create_environment`: 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.
- `get_renderer_source`: 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).
- `import_from_source`: 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.
- `import_text`: 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.
- `list_my_programs`: List the user's saved programs. Needs the user's Rhylthyme account.
- `list_public_runs`: 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`.
- `list_runs`: 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.
- `load_program`: Open one of the user's saved programs by id: summary plus live-timeline URL. Needs the user's Rhylthyme account.
- `load_public_recipe`: Open a public catalog entry by id: summary plus live-timeline URL.
- `load_run`: 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.
- `login`: 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.
- `preview_timeline`: 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.
- `review_program`: 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.
- `save_program`: Save a program to the user's account ('save this for later'); the same programId updates it. Needs the user's Rhylthyme account.
- `search_public_recipes`: 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.
- `validate_program`: 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.
- `visualize_schedule`: 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.
