Skip to main content
Glama

Get Simulation Metrics

simulation.metrics
Read-onlyIdempotent

Read the latest metrics and resource states for a temporary anonymous demo simulation: latency, CPU, throughput, error rate, cost per hour, and per-resource health. Use it to inspect current state and metrics history without advancing time; do not use it to move the simulation forward — that is simulation.step. Responses are compact by default: principal current metrics plus explicit modeled goodputRps (a post-step point rate sourced from throughput, with provenance), goodputWindow (recorded only from persisted simulation-clock bounds, otherwise unavailable with provenance; never derive it from retrieval time or currentStep), errorBreakdown when available, per-resource status (id, name, status, cpuPercent, routedRps, availabilityState, isRoutable, and recoveryBlockedReason when provided), seeded EKS Spot checkpoint history and migrationEvaluationComplete/provenance when present, and the last 10 metrics-history entries. Pass responseMode: 'full' to get the complete simulation state, normalizedConfig, and full metrics history instead. During recovery, each resource may include recoveryProgress.state (parked, cooling_down, or healthy) with parkWindow and cooldown counters; poll simulation.step until healthy, then use simulation.metrics to inspect the resulting state and metrics. GPU / inference workflow: when the simulation includes a kubernetes resource with characteristics.inferenceMode: true, the response also includes top-level gpuUtilization (%), tokensPerSecond, costPerMillionTokens (USD/M tokens), idleGpuCostPerHour (USD/hr of standby GPU spend), and idleGpuFraction (0-1 idle HA overhead share) from the latest step, and each history entry carries the same inference fields. Pass the simulationId returned by simulation.create when your connector opens a fresh MCP session; preserve Mcp-Session-Id to use the omitted-ID current-simulation default. A fresh session has no current-simulation pointer. At least one simulation.step is needed for meaningful metrics. Read-only and free to repeat. The likely next tool is simulation.step or simulation.inject_traffic.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
responseModeNoResponse detail level. 'compact' (default) returns principal current metrics, errorBreakdown when available, per-resource status (id, name, status, cpuPercent, routedRps, availabilityState, isRoutable, recoveryBlockedReason, and failureLifecycle/routingState when provided), and only the last 10 metrics-history entries — keeps polling cheap for agent loops. 'full' returns the complete simulation object (all resource characteristics and connections) plus the entire metrics history.compact
simulationIdNoSimulation ID returned by simulation.create. Preserve Mcp-Session-Id to omit this field and use the session's current simulation; if your connector starts a fresh MCP session for each call (for example Grok Bot or Cursor), pass this explicit ID after every fresh initialization. A fresh session has no current-simulation pointer and returns NO_ACTIVE_SIMULATION when the ID is omitted. Anonymous capabilities are short-lived (30 minutes by default), unguessable, and revoked when the demo expires or is deleted; proxy IP changes do not invalidate them. Do not treat the ID as a durable share link.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
metricsNoMetrics history — bounded to the last 10 entries in compact mode, full history in full mode
trafficNoCurrent traffic level in RPS
metricIdNoStorage-assigned ID of the latest persisted metric
errorRateNoLatest error rate (%)
resourcesNoPer-resource status summary (compact mode)
goodputRpsNoModeled successful requests per second; a post-step point rate sourced from metrics.throughput
latencyP50NoLatest 50th-percentile latency in ms
latencyP95NoLatest 95th-percentile latency in ms
offeredRpsNoLatest aggregate offered requests per second
simulationNoComplete simulation state (full mode only; absent in compact mode and when status is not_found/access_denied)
throughputNoLatest effective requests per second
costPerHourNoLatest estimated cost in USD/hr
currentStepNoCurrent simulation time step
simulationIdNoID of the queried simulation
goodputWindowNoInterval goodput aggregate when every point has persisted simulation-clock bounds; otherwise status=unavailable. Never derive this from retrieval time or currentStep.
errorBreakdownNoValidated additive error contributors from the latest metrics entry, in percentage-point units
gpuUtilizationNoLatest GPU utilization (%) — present only on GPU inference simulations
modeledShedRpsNoLatest aggregate modeled shed requests per second
idleGpuFractionNoLatest share (0-1) of the GPU bill that is idle/standby capacity — present only on GPU inference simulations
tokensPerSecondNoLatest inference throughput in tokens/second — present only on GPU inference simulations
goodputSemanticsNoGoodput is a point rate, not an interval total
goodputProvenanceNoProvenance for the modeled goodput field
idleGpuCostPerHourNoLatest USD/hr of GPU spend funding idle/standby capacity (HA overhead) — present only on GPU inference simulations
costPerMillionTokensNoLatest self-hosted inference cost in USD per million tokens (null when no tokens are being processed) — present only on GPU inference simulations
eksSpotInterruptionsNoLatest seeded EKS interruption telemetry, including additive migrationEvaluation/provenance when recorded.
metricsHistoryLengthNoTotal number of metrics-history entries (compact mode returns only the last 10)
resilienceDiagnosticsNoBounded resilience diagnostics from the latest step (compact mode). Absent when the resilience model did not run.
retryAmplificationFactorNoLatest retry amplification factor (attemptedRps / originalRps). Values > 1.0 = amplification risk. null = model ran but no traffic. Absent = resilience model disabled.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • removedOutput schema / properties / eksSpotEvidenceHistory
      Removed value: -{
      -  "description": "All persisted seeded-EKS interruption checkpoints in metric order; unlike the general metrics array, this history is not truncated to the compact tail",
      -  "items": {
      -    "additionalProperties": {},
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluationComplete
      Removed value: -{
      -  "description": "Explicit completion signal for the frozen migration evaluation; phase remains the raw lifecycle phase and may be terminated.",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / metrics / items / properties / goodputProvenance
      Removed value: -{
      -  "$ref": "#/properties/goodputProvenance"
      -}
    • removedOutput schema / properties / metrics / items / properties / goodputRps
      Removed value: -{
      -  "description": "Modeled successful requests per second for this step",
      -  "type": "number"
      -}
    • removedOutput schema / properties / metrics / items / properties / goodputSemantics
      Removed value: -{
      -  "const": "post_step_point_rate",
      -  "type": "string"
      -}
  2. Changed3 schema fields changed
    • addedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / intervalAttribution / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "provenance": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "recorded",
      +                "type": "string"
      +              },
      +              "source": {
      +                "maxLength": 256,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "source"
      +            ],
      +            "type": "object"
      +          },
      +          "status": {
      +            "const": "recorded",
      +            "type": "string"
      +          },
      +          "window": {
      +            "$ref": "#/properties/goodputWindow/anyOf/1/properties/window"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "window",
      +          "provenance"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "provenance": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "kind": {
      +                "const": "unavailable",
      +                "type": "string"
      +              },
      +              "reason": {
      +                "maxLength": 256,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "reason"
      +            ],
      +            "type": "object"
      +          },
      +          "status": {
      +            "const": "unavailable",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "provenance"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / intervalAttribution / type
      Removed value: -"null"
    • addedOutput schema / properties / goodputWindow
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "provenance": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "kind": {
      +              "const": "unavailable",
      +              "type": "string"
      +            },
      +            "reason": {
      +              "maxLength": 256,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "reason"
      +          ],
      +          "type": "object"
      +        },
      +        "status": {
      +          "const": "unavailable",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "provenance"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "aggregate": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "coveredDurationSeconds": {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "goodputRequestTotal": {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "goodputRps": {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "provenance": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "kind": {
      +                      "const": "recorded",
      +                      "type": "string"
      +                    },
      +                    "source": {
      +                      "maxLength": 256,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "kind",
      +                    "source"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "kind": {
      +                      "const": "derived",
      +                      "type": "string"
      +                    },
      +                    "sourceFields": {
      +                      "items": {
      +                        "maxLength": 256,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "maxItems": 256,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    }
      +                  },
      +                  "required": [
      +                    "kind",
      +                    "sourceFields"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "kind": {
      +                      "const": "unavailable",
      +                      "type": "string"
      +                    },
      +                    "reason": {
      +                      "maxLength": 256,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "kind",
      +                    "reason"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "sampleIds": {
      +              "items": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "window": {
      +              "$ref": "#/properties/goodputWindow/anyOf/1/properties/window"
      +            }
      +          },
      +          "required": [
      +            "window",
      +            "coveredDurationSeconds",
      +            "goodputRps",
      +            "goodputRequestTotal",
      +            "sampleIds",
      +            "provenance"
      +          ],
      +          "type": "object"
      +        },
      +        "provenance": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "kind": {
      +              "const": "recorded",
      +              "type": "string"
      +            },
      +            "source": {
      +              "maxLength": 256,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "source"
      +          ],
      +          "type": "object"
      +        },
      +        "status": {
      +          "const": "recorded",
      +          "type": "string"
      +        },
      +        "window": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "inclusion": {
      +              "const": "[start,end)",
      +              "type": "string"
      +            },
      +            "windowEndSeconds": {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "windowStartSeconds": {
      +              "minimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "windowStartSeconds",
      +            "windowEndSeconds",
      +            "inclusion"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "window",
      +        "aggregate",
      +        "provenance"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "Interval goodput aggregate when every point has persisted simulation-clock bounds; otherwise status=unavailable. Never derive this from retrieval time or currentStep."
      +}
  3. Changed31 schema fields changed
    • addedOutput schema / properties / eksSpotEvidenceHistory
      Added value: +{
      +  "description": "All persisted seeded-EKS interruption checkpoints in metric order; unlike the general metrics array, this history is not truncated to the compact tail",
      +  "items": {
      +    "additionalProperties": {},
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / fieldProvenance / properties / engineInputStepIndex / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / fieldProvenance / properties / intervalAttribution / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / fieldProvenance / properties / pointRateSemantics / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / fieldProvenance / properties / simulationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / fieldProvenance / properties / tickDurationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / trafficFieldProvenance / properties / errorRatePercent / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / trafficFieldProvenance / properties / latencyP50Ms / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / trafficFieldProvenance / properties / offeredRps / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / checkpointEvidence / properties / trafficFieldProvenance / properties / throughputRps / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / affectedWorkloadCount / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / allAffectedWorkloadsReadyAtSimulationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / deadlineAtSimulationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / deadlineMet / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / deadlineSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / evaluatedAtSimulationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / interruptionNoticeAtSimulationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / limitingReasons / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / migrationDurationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / migrationStartedAtSimulationSeconds / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / missedDeadlineWorkloadCount / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • changedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / readyWorkloadCountAtDeadline / $ref
      Previous value: -"#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"New value: +"#/properties/goodputProvenance"
    • addedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / status / $ref
      Added value: +"#/properties/goodputProvenance"
    • removedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluation / properties / fieldProvenance / properties / status / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "recorded",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "derived",
      -        "type": "string"
      -      },
      -      "sourceFields": {
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "sourceFields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "unavailable",
      -        "type": "string"
      -      },
      -      "reason": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "reason"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedOutput schema / properties / eksSpotInterruptions / items / properties / migrationEvaluationComplete
      Added value: +{
      +  "description": "Explicit completion signal for the frozen migration evaluation; phase remains the raw lifecycle phase and may be terminated.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / goodputProvenance
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "const": "recorded",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "const": "derived",
      +          "type": "string"
      +        },
      +        "sourceFields": {
      +          "items": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "minItems": 1,
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "sourceFields"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "const": "unavailable",
      +          "type": "string"
      +        },
      +        "reason": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "reason"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "Provenance for the modeled goodput field"
      +}
    • addedOutput schema / properties / goodputRps
      Added value: +{
      +  "description": "Modeled successful requests per second; a post-step point rate sourced from metrics.throughput",
      +  "type": "number"
      +}
    • addedOutput schema / properties / goodputSemantics
      Added value: +{
      +  "const": "post_step_point_rate",
      +  "description": "Goodput is a point rate, not an interval total",
      +  "type": "string"
      +}
    • addedOutput schema / properties / metrics / items / properties / goodputProvenance
      Added value: +{
      +  "$ref": "#/properties/goodputProvenance"
      +}
    • addedOutput schema / properties / metrics / items / properties / goodputRps
      Added value: +{
      +  "description": "Modeled successful requests per second for this step",
      +  "type": "number"
      +}
    • addedOutput schema / properties / metrics / items / properties / goodputSemantics
      Added value: +{
      +  "const": "post_step_point_rate",
      +  "type": "string"
      +}
  4. Changed6 schema fields changed
    • addedOutput schema / properties / eksSpotInterruptions
      Added value: +{
      +  "description": "Latest seeded EKS interruption telemetry, including additive migrationEvaluation/provenance when recorded.",
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "checkpointEvidence": {
      +        "additionalProperties": false,
      +        "description": "Persisted seeded-EKS checkpoint captured with its interruption JSONB record. engineInputStepIndex is an engine input-step index, simulationSeconds is derived from that index and the recorded tick, and traffic provenance points to outer metric fields rather than duplicating float values.",
      +        "properties": {
      +          "engineInputStepIndex": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "fieldProvenance": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "engineInputStepIndex": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "intervalAttribution": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "pointRateSemantics": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "simulationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "tickDurationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              }
      +            },
      +            "required": [
      +              "engineInputStepIndex",
      +              "simulationSeconds",
      +              "tickDurationSeconds",
      +              "pointRateSemantics",
      +              "intervalAttribution"
      +            ],
      +            "type": "object"
      +          },
      +          "intervalAttribution": {
      +            "type": "null"
      +          },
      +          "pointRateSemantics": {
      +            "const": "post_step_point_rate",
      +            "type": "string"
      +          },
      +          "simulationSeconds": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "tickDurationSeconds": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          },
      +          "trafficFieldProvenance": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "errorRatePercent": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "latencyP50Ms": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "offeredRps": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "throughputRps": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              }
      +            },
      +            "required": [
      +              "throughputRps",
      +              "offeredRps",
      +              "errorRatePercent",
      +              "latencyP50Ms"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "engineInputStepIndex",
      +          "simulationSeconds",
      +          "tickDurationSeconds",
      +          "pointRateSemantics",
      +          "intervalAttribution",
      +          "fieldProvenance",
      +          "trafficFieldProvenance"
      +        ],
      +        "type": "object"
      +      },
      +      "migrationEvaluation": {
      +        "additionalProperties": false,
      +        "description": "Authoritative additive seeded EKS interruption evaluation. Field values carry recorded/derived/unavailable provenance; deadline verdict/counts/reasons are frozen once status is completed and do not describe later service health.",
      +        "properties": {
      +          "affectedWorkloadCount": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "allAffectedWorkloadsReadyAtSimulationSeconds": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "deadlineAtSimulationSeconds": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "deadlineMet": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "deadlineSeconds": {
      +            "const": 120,
      +            "type": "number"
      +          },
      +          "evaluatedAtSimulationSeconds": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "fieldProvenance": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "affectedWorkloadCount": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "allAffectedWorkloadsReadyAtSimulationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "deadlineAtSimulationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "deadlineMet": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "deadlineSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "evaluatedAtSimulationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "interruptionNoticeAtSimulationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "limitingReasons": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "migrationDurationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "migrationStartedAtSimulationSeconds": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "missedDeadlineWorkloadCount": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "readyWorkloadCountAtDeadline": {
      +                "$ref": "#/properties/eksSpotInterruptions/items/properties/migrationEvaluation/properties/fieldProvenance/properties/status"
      +              },
      +              "status": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "kind": {
      +                        "const": "recorded",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "kind": {
      +                        "const": "derived",
      +                        "type": "string"
      +                      },
      +                      "sourceFields": {
      +                        "items": {
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "minItems": 1,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "sourceFields"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "kind": {
      +                        "const": "unavailable",
      +                        "type": "string"
      +                      },
      +                      "reason": {
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "reason"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "status",
      +              "interruptionNoticeAtSimulationSeconds",
      +              "deadlineAtSimulationSeconds",
      +              "migrationStartedAtSimulationSeconds",
      +              "allAffectedWorkloadsReadyAtSimulationSeconds",
      +              "migrationDurationSeconds",
      +              "deadlineSeconds",
      +              "deadlineMet",
      +              "affectedWorkloadCount",
      +              "readyWorkloadCountAtDeadline",
      +              "missedDeadlineWorkloadCount",
      +              "evaluatedAtSimulationSeconds",
      +              "limitingReasons"
      +            ],
      +            "type": "object"
      +          },
      +          "interruptionNoticeAtSimulationSeconds": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "limitingReasons": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "code": {
      +                  "enum": [
      +                    "no_reschedule",
      +                    "scheduling_capacity_exhausted",
      +                    "image_pull_incomplete",
      +                    "startup_incomplete",
      +                    "unclassified_runtime_work_remaining"
      +                  ],
      +                  "type": "string"
      +                },
      +                "interruptionHandling": {
      +                  "enum": [
      +                    "reschedule",
      +                    "drain-only",
      +                    "fail-fast"
      +                  ],
      +                  "type": "string"
      +                },
      +                "pendingWorkloadCount": {
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "provenance": {
      +                  "const": "recorded",
      +                  "type": "string"
      +                },
      +                "pullingWorkloadCount": {
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "residualPullSeconds": {
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "residualStartupSeconds": {
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "schedulingCapacity": {
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "startingWorkloadCount": {
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "workloadCount": {
      +                  "minimum": 0,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "code",
      +                "workloadCount",
      +                "pendingWorkloadCount",
      +                "pullingWorkloadCount",
      +                "startingWorkloadCount",
      +                "residualPullSeconds",
      +                "residualStartupSeconds",
      +                "schedulingCapacity",
      +                "interruptionHandling",
      +                "provenance"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 5,
      +            "type": "array"
      +          },
      +          "migrationDurationSeconds": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "migrationStartedAtSimulationSeconds": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missedDeadlineWorkloadCount": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "readyWorkloadCountAtDeadline": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "status": {
      +            "enum": [
      +              "not_started",
      +              "in_progress",
      +              "completed"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "interruptionNoticeAtSimulationSeconds",
      +          "deadlineAtSimulationSeconds",
      +          "migrationStartedAtSimulationSeconds",
      +          "allAffectedWorkloadsReadyAtSimulationSeconds",
      +          "migrationDurationSeconds",
      +          "deadlineSeconds",
      +          "deadlineMet",
      +          "affectedWorkloadCount",
      +          "readyWorkloadCountAtDeadline",
      +          "missedDeadlineWorkloadCount",
      +          "evaluatedAtSimulationSeconds",
      +          "limitingReasons",
      +          "fieldProvenance"
      +        ],
      +        "type": "object"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "resourceId": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / metricId
      Added value: +{
      +  "description": "Storage-assigned ID of the latest persisted metric",
      +  "type": "string"
      +}
    • addedOutput schema / properties / metrics / items / properties / eksSpotInterruptions
      Added value: +{
      +  "items": {
      +    "$ref": "#/properties/eksSpotInterruptions/items"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / metrics / items / properties / metricId
      Added value: +{
      +  "description": "Storage-assigned persisted metric ID, when this history entry was stored",
      +  "type": "string"
      +}
    • addedOutput schema / properties / modeledShedRps
      Added value: +{
      +  "description": "Latest aggregate modeled shed requests per second",
      +  "type": "number"
      +}
    • addedOutput schema / properties / offeredRps
      Added value: +{
      +  "description": "Latest aggregate offered requests per second",
      +  "type": "number"
      +}
  5. Changed1 schema field changed
    • changedOutput schema / properties / resources / items / properties / recoveryProgress / description
      Previous value: -"Read-only recovery progress; poll simulation.get or simulation.step until state is healthy"New value: +"Read-only recovery progress; poll simulation.step until state is healthy, then use simulation.metrics to inspect the result"
  6. Changed3 schema fields changed
    • changedInput schema / properties / responseMode / description
      Previous value: -"Response detail level. 'compact' (default) returns principal current metrics, errorBreakdown when available, per-resource status (id, name, status, cpuPercent, routedRps, availabilityState, isRoutable, and recoveryBlockedReason when provided), and only the last 10 metrics-history entries — keeps polling cheap for agent loops. 'full' returns the complete simulation object (all resource characteristics and connections) plus the entire metrics history."New value: +"Response detail level. 'compact' (default) returns principal current metrics, errorBreakdown when available, per-resource status (id, name, status, cpuPercent, routedRps, availabilityState, isRoutable, recoveryBlockedReason, and failureLifecycle/routingState when provided), and only the last 10 metrics-history entries — keeps polling cheap for agent loops. 'full' returns the complete simulation object (all resource characteristics and connections) plus the entire metrics history."
    • addedOutput schema / properties / resources / items / properties / failureLifecycle
      Added value: +{
      +  "description": "Read-only failure lifecycle marker when the backend identifies a quick injection or typed instance failure",
      +  "enum": [
      +    "quick_injection_parked",
      +    "quick_injection_rejoined",
      +    "instance_down",
      +    "instance_kill"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / resources / items / properties / routingState
      Added value: +{
      +  "description": "Read-only current routing state for a resource with failure lifecycle telemetry",
      +  "enum": [
      +    "unavailable",
      +    "serving"
      +  ],
      +  "type": "string"
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / simulationId / description
      Previous value: -"Simulation ID returned by simulation.create. Preserve Mcp-Session-Id to omit this field and use the session's current simulation; if your connector starts a fresh MCP session for each call (for example Grok Bot or Cursor), pass this explicit ID. A fresh session has no current-simulation pointer and returns NO_ACTIVE_SIMULATION when the ID is omitted. Anonymous capabilities are short-lived, bound to the creating anonymous client, and revoked when the demo expires or is deleted; do not treat the ID as a durable share link."New value: +"Simulation ID returned by simulation.create. Preserve Mcp-Session-Id to omit this field and use the session's current simulation; if your connector starts a fresh MCP session for each call (for example Grok Bot or Cursor), pass this explicit ID after every fresh initialization. A fresh session has no current-simulation pointer and returns NO_ACTIVE_SIMULATION when the ID is omitted. Anonymous capabilities are short-lived (30 minutes by default), unguessable, and revoked when the demo expires or is deleted; proxy IP changes do not invalidate them. Do not treat the ID as a durable share link."
  8. Changed1 schema field changed
    • changedInput schema / properties / simulationId / description
      Previous value: -"Simulation ID returned by simulation.create. Optional in demo sessions — omit to target this session's current simulation (set by simulation.create and updated by the most recent successful explicit use). If the session has no current simulation you get a NO_ACTIVE_SIMULATION result."New value: +"Simulation ID returned by simulation.create. Preserve Mcp-Session-Id to omit this field and use the session's current simulation; if your connector starts a fresh MCP session for each call (for example Grok Bot or Cursor), pass this explicit ID. A fresh session has no current-simulation pointer and returns NO_ACTIVE_SIMULATION when the ID is omitted. Anonymous capabilities are short-lived, bound to the creating anonymous client, and revoked when the demo expires or is deleted; do not treat the ID as a durable share link."
  9. Changed2 schema fields changed
    • addedOutput schema / properties / latencyP50
      Added value: +{
      +  "description": "Latest 50th-percentile latency in ms",
      +  "type": "number"
      +}
    • addedOutput schema / properties / resources / items / properties / recoveryProgress
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Read-only recovery progress; poll simulation.get or simulation.step until state is healthy",
      +  "properties": {
      +    "cooldown": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "completedSteps": {
      +          "type": "number"
      +        },
      +        "remainingSteps": {
      +          "type": "number"
      +        },
      +        "requiredSteps": {
      +          "type": "number"
      +        },
      +        "target": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "warning",
      +                "healthy"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "target",
      +        "completedSteps",
      +        "requiredSteps",
      +        "remainingSteps"
      +      ],
      +      "type": "object"
      +    },
      +    "parkWindow": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "completedSteps": {
      +          "type": "number"
      +        },
      +        "remainingSteps": {
      +          "type": "number"
      +        },
      +        "totalSteps": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "totalSteps",
      +        "completedSteps",
      +        "remainingSteps"
      +      ],
      +      "type": "object"
      +    },
      +    "state": {
      +      "enum": [
      +        "parked",
      +        "cooling_down",
      +        "healthy"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "parkWindow",
      +    "cooldown"
      +  ],
      +  "type": "object"
      +}
  10. Changed6 schema fields changed
    • changedInput schema / properties / responseMode / description
      Previous value: -"Response detail level. 'compact' (default) returns principal current metrics, per-resource status (id, name, status, cpuPercent, routedRps), and only the last 10 metrics-history entries — keeps polling cheap for agent loops. 'full' returns the complete simulation object (all resource characteristics and connections) plus the entire metrics history."New value: +"Response detail level. 'compact' (default) returns principal current metrics, errorBreakdown when available, per-resource status (id, name, status, cpuPercent, routedRps, availabilityState, isRoutable, and recoveryBlockedReason when provided), and only the last 10 metrics-history entries — keeps polling cheap for agent loops. 'full' returns the complete simulation object (all resource characteristics and connections) plus the entire metrics history."
    • addedOutput schema / properties / errorBreakdown
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Validated additive error contributors from the latest metrics entry, in percentage-point units",
      +  "properties": {
      +    "capacityOverload": {
      +      "type": "number"
      +    },
      +    "computeFailure": {
      +      "type": "number"
      +    },
      +    "cpuOverload": {
      +      "type": "number"
      +    },
      +    "dbFailure": {
      +      "type": "number"
      +    },
      +    "ociStorage": {
      +      "type": "number"
      +    },
      +    "poolSaturation": {
      +      "type": "number"
      +    },
      +    "queueAbsorption": {
      +      "type": "number"
      +    },
      +    "runtimeMemory": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "poolSaturation",
      +    "dbFailure",
      +    "computeFailure",
      +    "capacityOverload",
      +    "cpuOverload",
      +    "ociStorage",
      +    "queueAbsorption"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / metrics / items / properties / errorBreakdown
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Validated additive error contributors for this history entry",
      +  "properties": {
      +    "capacityOverload": {
      +      "type": "number"
      +    },
      +    "computeFailure": {
      +      "type": "number"
      +    },
      +    "cpuOverload": {
      +      "type": "number"
      +    },
      +    "dbFailure": {
      +      "type": "number"
      +    },
      +    "ociStorage": {
      +      "type": "number"
      +    },
      +    "poolSaturation": {
      +      "type": "number"
      +    },
      +    "queueAbsorption": {
      +      "type": "number"
      +    },
      +    "runtimeMemory": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "poolSaturation",
      +    "dbFailure",
      +    "computeFailure",
      +    "capacityOverload",
      +    "cpuOverload",
      +    "ociStorage",
      +    "queueAbsorption"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / resources / items / properties / availabilityState
      Added value: +{
      +  "description": "Availability derived from routed traffic: available = serving normally, degraded = critical/warning but still serving, unavailable = no traffic and not routable",
      +  "enum": [
      +    "available",
      +    "degraded",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / resources / items / properties / isRoutable
      Added value: +{
      +  "description": "Whether this compute/Kubernetes resource can receive traffic in this step; false distinguishes a failed/parked node from a critical node still serving",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / resources / items / properties / recoveryBlockedReason
      Added value: +{
      +  "description": "Engine recovery guard currently preventing cooldown progress, when present (for example failure_park_window or idle_cpu_floor)",
      +  "type": "string"
      +}
  11. Changed3 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / context
      Removed value: -{
      -  "description": "One-sentence goal for this session — e.g. 'train RL agent on AWS', 'compare GCP vs Azure costs', or 'run chaos test on database tier'.",
      -  "type": "string"
      -}
    • removedInput schema / required
      Removed value: -[
      -  "context"
      -]
  12. Changed3 schema fields changed
    • addedOutput schema / properties / metrics / items / properties / retryAmplificationFactor
      Added value: +{
      +  "description": "Per-step retry amplification factor — present only on resilience-enabled simulations",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / resilienceDiagnostics
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Bounded resilience diagnostics from the latest step (compact mode). Absent when the resilience model did not run.",
      +  "properties": {
      +    "bounded": {
      +      "description": "True when a generated-traffic, traversal-work, or cascade-depth bound truncated model work",
      +      "type": "boolean"
      +    },
      +    "incidentOutcome": {
      +      "description": "Latest incident outcome: stable | degraded | cascading | protected | recovered",
      +      "type": "string"
      +    },
      +    "pathCount": {
      +      "description": "Number of dependency paths evaluated in the latest step",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / retryAmplificationFactor
      Added value: +{
      +  "description": "Latest retry amplification factor (attemptedRps / originalRps). Values > 1.0 = amplification risk. null = model ran but no traffic. Absent = resilience model disabled.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  13. Changed8 schema fields changed
    • addedOutput schema / properties / costPerMillionTokens
      Added value: +{
      +  "description": "Latest self-hosted inference cost in USD per million tokens (null when no tokens are being processed) — present only on GPU inference simulations",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / gpuUtilization
      Added value: +{
      +  "description": "Latest GPU utilization (%) — present only on GPU inference simulations",
      +  "type": "number"
      +}
    • addedOutput schema / properties / idleGpuCostPerHour
      Added value: +{
      +  "description": "Latest USD/hr of GPU spend funding idle/standby capacity (HA overhead) — present only on GPU inference simulations",
      +  "type": "number"
      +}
    • addedOutput schema / properties / idleGpuFraction
      Added value: +{
      +  "description": "Latest share (0-1) of the GPU bill that is idle/standby capacity — present only on GPU inference simulations",
      +  "type": "number"
      +}
    • addedOutput schema / properties / metrics / items / properties / costPerMillionTokens
      Added value: +{
      +  "description": "Self-hosted inference cost in USD per million tokens for this step — present only on GPU inference simulations",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / metrics / items / properties / gpuUtilization
      Added value: +{
      +  "description": "GPU utilization (%) for this step — present only on GPU inference simulations",
      +  "type": "number"
      +}
    • addedOutput schema / properties / metrics / items / properties / tokensPerSecond
      Added value: +{
      +  "description": "Inference throughput in tokens/second for this step — present only on GPU inference simulations",
      +  "type": "number"
      +}
    • addedOutput schema / properties / tokensPerSecond
      Added value: +{
      +  "description": "Latest inference throughput in tokens/second — present only on GPU inference simulations",
      +  "type": "number"
      +}
  14. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds substantial behavioral context beyond them: compact vs. full response defaults, the last-10-history truncation, the fresh-session NO_ACTIVE_SIMULATION error, anonymous-session expiry, and provenance caveats for goodputWindow. It also clarifies that at least one simulation.step is needed for meaningful metrics.

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 long and detailed, but it is organized into coherent sections: core purpose, response contents, recovery behavior, GPU workflow, and session handling. Every section carries actionable information, though some content overlaps with the schema's parameter descriptions, keeping it from being maximally concise.

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?

Given the tool's moderate complexity, an output schema, and strong annotations, the description is complete enough for an agent to call the tool correctly. It covers return-value specifics, default and full modes, error conditions, session semantics, recovery states, GPU inference fields, and the relationship to sibling tools.

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, but the description adds extra meaning for both parameters. It explains the practical effect of responseMode on polling cost and agent loops, and it enriches simulationId with session-preservation guidance, fresh-session behavior, and object-lifetime caveats that are not in the schema.

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 specific verb and resource: 'Read the latest metrics and resource states for a temporary anonymous demo simulation,' and enumerates exactly what metrics are available. It also explicitly distinguishes itself from simulation.step by stating it should not be used to move the simulation forward, making the purpose unmistakable.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use and when-not-to-use guidance: use it to inspect current state without advancing time, do not use it to advance the simulation, and use simulation.step instead for that. It also provides workflow direction such as 'poll simulation.step until healthy, then use simulation.metrics' and names simulation.inject_traffic as a likely next step.

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.

Resources