Skip to main content
Glama

Analyze schedule timing

analyze_schedule
Read-onlyIdempotent

Resolve a Rhylthyme program onto the clock and report what the live runner will do: every step's start/end (seconds from start and, if you pass finishAt or startAt, ISO wall-clock times), total makespan, the critical path, bindingConstraints (what gates each critical-path edge — an in-flight cap, a saturated task, an offset, or a plain dependency), resource conflicts tagged kind: "maxConcurrent" (more steps claim a task than its maxConcurrent allows) or kind: "inFlight" (more instances of a replicated step are between it and its barrier than replicates.maxInFlight allows), inFlight windows per replicated step, peak concurrency vs. declared actors, and per-track slack (instances get their own sub-track rows, tagged with parentTrackId / instanceOf). Use it to answer 'when do I start the potatoes so everything is ready at 6pm?' (pass finishAt), to find why a schedule is longer than expected (critical path and binding constraints — e.g. the cooling rack, not the oven), or to check equipment contention before visualizing. Pure computation; also returns validation findings so you can fix problems in the same turn.

Analysing against real history. Pass history (run records from load_run, or from rhylthyme runs on disk) and every step with enough measurements gains predicted: {seconds, low, high, basis, n} beside its planned duration, plus top-level predictedMakespan and predictedCriticalPath. basis is "identical" (runs of the same program version, environment and variance factors — their median), "model" (a per-step regression on the factors that correlate) or "none" (no usable measurement). Simpler still: give program_id (a UUID from list_my_programs) plus token and the tool loads the caller's own recorded runs of that program for you. useDurations: "predicted" then recomputes the makespan, itinerary, critical path and conflicts from the predicted durations instead of the authored ones; the default stays "planned" so a program is analysed on what it says.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tokenNoYour Rhylthyme access token from the login tool. Only needed with `program_id`, to load your recorded runs; analysis itself needs no login.
historyNoRecorded runs of this program (`runs` schema 0.1.0-alpha documents, as load_run returns them in `run`). Supplying them adds `predicted` per step and `predictedMakespan` / `predictedCriticalPath` to the result. Only runs that measure the executor count — completed, wall clock, speed 1 — and within them only steps a person ended, unpaused.
programYesRhylthyme program JSON (any shape — validation errors come back in the result, not as a schema rejection).
startAtNoISO 8601 datetime the program STARTS at. Ignored when finishAt is given.
finishAtNoISO 8601 datetime the whole program should END at (e.g. '2026-11-26T18:00:00-05:00'). Start times are computed backwards from it.
program_idNoLibrary program UUID: with `token` and no `history`, the caller's own recorded runs of this program are loaded and used as the history.
useDurationsNoWhich duration set the makespan, wall-clock itinerary, critical path, conflicts and slack are computed from. "planned" (default) analyses the program as authored; "predicted" analyses it as history says it will actually run. Needs `history` (or `program_id` + `token`) to differ.planned
predictionContextNoHow to condition the prediction. Everything is optional; with none of it the lookup uses the program's own hash and the factors each run recorded.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
stepsYes
tracksYes
inFlightNo
makespanYes
actorPeakYes
programIdYes
wallClockYes
validationNo
criticalPathYes
durationsUsedNo"planned" or "predicted": which duration set the makespan, itinerary, critical path and conflicts above were computed from.
makespanSecondsYes
plannedMakespanNo
predictedMakespanNo
resourceConflictsYes
bindingConstraintsNo
predictedCriticalPathNo
plannedMakespanSecondsNo
predictedMakespanSecondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint true, and the description reinforces this with 'Pure computation.' It adds substantial behavioral context: validation errors are returned in the result rather than as schema rejections, history loading adds predicted durations and changes analysis mode (planned vs. predicted), and the prediction model's basis (identical/model/none) is disclosed. No contradiction with annotations; the description enriches understanding of side-effect-free behavior and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized: the core purpose and output summary come first, followed by a clearly delimited 'Analysing against real history' section for the advanced history-based prediction. While longer than typical, every sentence carries informational weight—no filler. The structure supports scanning, though it could be slightly tighter, hence a 4 rather than a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, nested objects, and an output schema, the description covers the essential behavior: what is computed, what history does, how prediction works, and that validation findings are included. The output schema handles return structure, so the description does not need to spell it out. All relevant scenarios—timing questions, critical path diagnosis, contention checks—are addressed, and the prediction context is fully described. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter has a schema description. The tool description goes beyond that by clarifying the interplay between parameters: how history and program_id+token load runs, how finishAt vs. startAt are prioritized, how useDurations depends on history, and the semantics of predictionContext fields like userTags and verdicts. This adds meaningful context, though it does not individually elaborate on every parameter, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise, action-oriented statement: 'Resolve a Rhylthyme program onto the clock and report what the live runner will do,' enumerating specific outputs (step timings, makespan, critical path, binding constraints, conflicts, slack). It further distinguishes itself from siblings like visualize_schedule by explicitly framing itself as the analysis step before visualization, and from validate_program by noting it returns validation findings as part of its computation. This makes the tool's purpose unmistakable and clearly differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases: answering schedule timing questions, diagnosing why a schedule is longer than expected, checking equipment contention before visualizing. It also references sibling tools (load_run, list_my_programs) for history and clarifies when to use history vs. program_id. However, it does not explicitly contrast with validate_program or preview_timeline, so an agent might not know when to prefer this over those, leaving a slight gap in exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.