Skip to main content
Glama

Analyze schedule timing

analyze_schedule
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tokenNoAccess token from the login tool. Omit when the account is connected.
historyNoRecorded runs of this program (from load_run); adds predicted durations.
programYesProgram JSON; shape under validate_program.
startAtNoISO 8601 start datetime. Ignored with finishAt.
finishAtNoISO 8601 datetime everything must END at, e.g. '2026-11-26T18:00:00-05:00'. Start times are worked backwards from it.
program_idNoSaved program UUID: loads the user's own recorded runs as the history.
useDurationsNoplanned (default): analyse the program as authored. predicted: as the history says it will run.planned
predictionContextNoOptional: environmentId, userTags (variance factors), userId, programVersion, minIdentical, minModel, corrThreshold, verdicts. See rhylthyme://guide/tools.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
stepsYes
tracksYes
inFlightNo
makespanYes
actorPeakYes
programIdYes
wallClockYes
validationNo
criticalPathYes
durationsUsedNo
makespanSecondsYes
plannedMakespanNo
predictedMakespanNo
resourceConflictsYes
bindingConstraintsNo
predictedCriticalPathNo
plannedMakespanSecondsNo
predictedMakespanSecondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed2 schema fields changed
    • changedInput schema / properties / history / description
      Previous value: -"Recorded runs of this program (the `run` objects from load_run). Adds predicted durations."New value: +"Recorded runs of this program (from load_run); adds predicted durations."
    • changedInput schema / properties / predictionContext / description
      Previous value: -"Optional conditioning for the prediction: environmentId, userTags (variance factors, e.g. {turkeyKg: 7}), userId, programVersion, minIdentical, minModel, corrThreshold, verdicts. See rhylthyme://guide/tools."New value: +"Optional: environmentId, userTags (variance factors), userId, programVersion, minIdentical, minModel, corrThreshold, verdicts. See rhylthyme://guide/tools."
  3. Changed21 schema fields changed
    • changedInput schema / properties / finishAt / description
      Previous value: -"ISO 8601 datetime the whole program should END at (e.g. '2026-11-26T18:00:00-05:00'). Start times are computed backwards from it."New value: +"ISO 8601 datetime everything must END at, e.g. '2026-11-26T18:00:00-05:00'. Start times are worked backwards from it."
    • changedInput schema / properties / history / description
      Previous value: -"Recorded 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."New value: +"Recorded runs of this program (the `run` objects from load_run). Adds predicted durations."
    • changedInput schema / properties / predictionContext / description
      Previous value: -"How 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."New value: +"Optional conditioning for the prediction: environmentId, userTags (variance factors, e.g. {turkeyKg: 7}), userId, programVersion, minIdentical, minModel, corrThreshold, verdicts. See rhylthyme://guide/tools."
    • removedInput schema / properties / predictionContext / properties / corrThreshold
      Removed value: -{
      -  "description": "Minimum |Pearson r| for a factor to enter the model (default 0.3).",
      -  "type": "number"
      -}
    • removedInput schema / properties / predictionContext / properties / environmentId
      Removed value: -{
      -  "description": "Predict for this environment; runs recorded elsewhere are not \"identical\".",
      -  "type": "string"
      -}
    • removedInput schema / properties / predictionContext / properties / minIdentical
      Removed value: -{
      -  "description": "Identical-context runs needed before their median is used (default 3).",
      -  "maximum": 9007199254740991,
      -  "minimum": -9007199254740991,
      -  "type": "integer"
      -}
    • removedInput schema / properties / predictionContext / properties / minModel
      Removed value: -{
      -  "description": "Measurements needed before a regression is fitted rather than a median (default 8).",
      -  "maximum": 9007199254740991,
      -  "minimum": -9007199254740991,
      -  "type": "integer"
      -}
    • removedInput schema / properties / predictionContext / properties / programVersion
      Removed value: -{
      -  "description": "`sha256:<hex>` of the exact program JSON being planned; defaults to the hash of `program`.",
      -  "type": "string"
      -}
    • removedInput schema / properties / predictionContext / properties / userId
      Removed value: -{
      -  "description": "Prefer this person's own runs for the identical-context lookup before falling back to everyone's.",
      -  "type": "string"
      -}
    • removedInput schema / properties / predictionContext / properties / userTags
      Removed value: -{
      -  "additionalProperties": {},
      -  "description": "The variance factors of the run being planned, e.g. {\"turkeyKg\": 7, \"oven\": \"gas\"} — the values the model is evaluated at.",
      -  "properties": {},
      -  "type": "object"
      -}
    • removedInput schema / properties / predictionContext / properties / verdicts
      Removed value: -{
      -  "additionalProperties": {},
      -  "description": "Inferentiality verdicts per step (`rhylthyme runs report`); a step marked executor-controlled gets no prediction.",
      -  "properties": {},
      -  "type": "object"
      -}
    • changedInput schema / properties / program / description
      Previous value: -"Rhylthyme program JSON (any shape — validation errors come back in the result, not as a schema rejection)."New value: +"Program JSON; shape under validate_program."
    • changedInput schema / properties / program_id / description
      Previous value: -"Library program UUID: with `token` and no `history`, the caller's own recorded runs of this program are loaded and used as the history."New value: +"Saved program UUID: loads the user's own recorded runs as the history."
    • changedInput schema / properties / startAt / description
      Previous value: -"ISO 8601 datetime the program STARTS at. Ignored when finishAt is given."New value: +"ISO 8601 start datetime. Ignored with finishAt."
    • changedInput schema / properties / token / description
      Previous value: -"Your Rhylthyme access token from the login tool. Only needed with `program_id`, to load your recorded runs; analysis itself needs no login."New value: +"Access token from the login tool. Omit when the account is connected."
    • changedInput schema / properties / useDurations / description
      Previous value: -"Which 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."New value: +"planned (default): analyse the program as authored. predicted: as the history says it will run."
    • removedOutput schema / properties / bindingConstraints / items / properties / from
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / bindingConstraints / items / properties / kind
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / bindingConstraints / items / properties / to
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / bindingConstraints / items / required
      Removed value: -[
      -  "from",
      -  "to",
      -  "kind"
      -]
    • removedOutput schema / properties / durationsUsed / description
      Removed value: -"\"planned\" or \"predicted\": which duration set the makespan, itinerary, critical path and conflicts above were computed from."
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld=false. The description reinforces this with 'Pure computation' and adds genuine behavioral context that annotations don't convey: that history or program_id activates recorded-run duration prediction. It does not detail auth requirements or rate limits, so it does not reach 5.

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?

Four front-loaded sentences: outputs first, then the finishAt use case, then the computation/safety framing, then the optional prediction mode. Every sentence carries information, though the opening list is dense and could be trimmed slightly.

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

Completeness4/5

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

For an 8-parameter tool with nested objects, an output schema (so return values need not be described) and full safety annotations, the description covers outputs, the key scheduling direction parameter, and the prediction path. The predictionContext field is deferred to an external guide, which is a minor gap but acceptable given its complexity.

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 description coverage is 100%, so the baseline is 3, and the schema already documents finishAt, startAt, history, and program_id in detail. The description lifts above baseline by tying finishAt to a concrete user intent and explaining that history/program_id switches on prediction, adding semantic meaning beyond the field docs.

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?

Specific verb+resource ('analyze schedule timing') with the exact outputs enumerated: each step's start/end, total length, critical path and its gates, resource conflicts, slack per track. The phrase 'Pure computation' distinguishes it from visualization siblings like visualize_schedule and preview_timeline without needing to open a schema.

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?

Gives clear context: pass finishAt for backwards scheduling ('when do I start X so everything is ready at 6pm?') and supply history/program_id to enable duration prediction. However, it never names an alternative sibling or states when NOT to use this tool, so it stops short of full routing 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.