Skip to main content
Glama

Inject Failure

simulation.inject_failure
Destructive

Requires simulationId and resourceId from simulation.create. Injects a bounded resource failure; returns updated state. Next tool is simulation.step, then simulation.recover_resource and simulation.metrics to confirm authoritative health. No API key required; demo limits apply. Read resource cwm://guides/public/simulation.inject_failure

Input Schema

NameRequiredDescriptionDefault
typeNoOnly cdn_cache_loss or az_outage, with an explicit CDN-capable network resourceId or resourceName; no random/node-pool selectors. Cache loss forwards misses; az_outage blocks the edge. Omit type and duration for legacy quick failures.
durationNoOnly with explicit type cdn_cache_loss or az_outage and CDN-capable network resourceId or resourceName. Integer 1–86400 simulation steps, not seconds; default 30. No random/node-pool selectors; omit for legacy quick failures.
nodePoolIdNo
resourceIdNo
nodePoolNameNo
resourceNameNo
simulationIdNoID returned by simulation.create.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / duration / description
      Added value: +"Only with explicit type cdn_cache_loss or az_outage and CDN-capable network resourceId or resourceName. Integer 1–86400 simulation steps, not seconds; default 30. No random/node-pool selectors; omit for legacy quick failures."
    • addedInput schema / properties / type / description
      Added value: +"Only cdn_cache_loss or az_outage, with an explicit CDN-capable network resourceId or resourceName; no random/node-pool selectors. Cache loss forwards misses; az_outage blocks the edge. Omit type and duration for legacy quick failures."
  2. Changed3 schema fields changed
    • addedInput schema / properties / duration
      Added value: +{
      +  "maximum": 86400,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / simulationId / description
      Added value: +"ID returned by simulation.create."
    • addedInput schema / properties / type
      Added value: +{
      +  "enum": [
      +    "cdn_cache_loss",
      +    "az_outage"
      +  ],
      +  "type": "string"
      +}
  3. Changed7 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / properties / nodePoolId / description
      Removed value: -"Optional GKE node pool ID; requires resourceId or resourceName."
    • removedInput schema / properties / nodePoolName / description
      Removed value: -"Optional exact GKE node pool name; duplicate names are ambiguous and require nodePoolId."
    • removedInput schema / properties / resourceId / description
      Removed value: -"Optional: ID of the resource to fail. Takes precedence over resourceName."
    • removedInput schema / properties / resourceName / description
      Removed value: -"Optional: name of the resource to fail (exact match preferred; unambiguous prefix accepted). Ambiguous names return a 400 with a candidate list."
    • removedInput schema / properties / simulationId / description
      Removed 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."
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": true,
      -  "properties": {
      -    "event": {
      -      "additionalProperties": {},
      -      "description": "Failure event that was logged",
      -      "type": "object"
      -    },
      -    "previousHealth": {
      -      "description": "The resource's health status immediately before the failure was applied",
      -      "type": "string"
      -    },
      -    "resolvedResourceId": {
      -      "description": "ID of the resource that was failed (targeted or randomly selected)",
      -      "type": "string"
      -    },
      -    "resolvedResourceName": {
      -      "description": "Name of the resource that was failed",
      -      "type": "string"
      -    },
      -    "resources": {
      -      "description": "Updated resource list after failure injection",
      -      "items": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "type": "array"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  4. Changed2 schema fields changed
    • addedInput schema / properties / nodePoolId
      Added value: +{
      +  "description": "Optional GKE node pool ID; requires resourceId or resourceName.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / nodePoolName
      Added value: +{
      +  "description": "Optional exact GKE node pool name; duplicate names are ambiguous and require nodePoolId.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  5. 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."
  6. 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."
  7. 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"
      -]
  8. First observed

TDQS

A3.9/5.0
Behavior4/5

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

The annotations mark this as destructive and non-idempotent. The description adds that the failure is bounded and that the return is an updated state. It also flags demo limits and notes that no API key is needed. It stops short of saying whether the failure can be undone outside recover_resource, but that is a minor gap given the annotations.

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 leads with the requirement, then the effect and the follow-up workflow. Every sentence adds something. The trailing resource pointer is short and contained.

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 a destructive 7-parameter tool with no output schema, the description supplies the workflow, the origin of the IDs, and the return value. It does not cover the nodePool selectors or how recovery works, so it is not fully complete, but it is adequate to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 43%, and the description compensates only partly: it names simulationId and resourceId and their source, but says nothing about the type/duration pairing or the nodePool* fields. It also says both IDs are required, while the schema marks nothing as required, so the description and schema are slightly out of step.

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

Purpose4/5

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

The description states a specific verb and resource: it injects a bounded resource failure into a simulation and returns the updated state. That clearly separates it from simulation.inject_traffic, though it never names that sibling as the alternative.

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?

It gives a precondition (simulationId and resourceId from simulation.create) and the follow-up sequence (simulation.step, then simulation.recover_resource and simulation.metrics). It does not state when to prefer inject_traffic over inject_failure, so exclusions are still implied rather than explicit.

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