Skip to main content
Glama

Quantum Expectations

Compare Hardware Scenarios

compare_hardware_scenarios
Read-onlyIdempotent

Run the same circuit against multiple current SOTA hardware entries in one call so an agent can rank platforms without N sequential compute_expectation calls. Defaults to every entry in list_current_quantum_computers when hardwareIds is omitted.

Input Schema

NameRequiredDescriptionDefault
compDepthYes
numQubitsYes
hardwareIdsNoSubset of QUANTUM_COMPUTERS ids to compare. Omit to compare every entry.
useErrorCorrectionNo
distanceSurfaceCodeNoSurface code distance: odd integer in [3, 31]. Required when useErrorCorrection=true and the surface code is selected; ignored when a qLDPC code is selected.
errorCorrectionCodeNoEither "surface" (default when useErrorCorrection=true) or a qLDPC code id. "surface-code" is accepted as an alias for "surface".

Output Schema

NameRequiredDescriptionDefault
resultsYes
scenarioYes
unresolvedHardwareIdsYesRequested hardwareIds that match no current-hardware entry.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "results": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "hardware": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "connectivity": {
      +                "enum": [
      +                  "all-to-all",
      +                  "reconfigurable",
      +                  "2d-lattice"
      +                ],
      +                "type": "string"
      +              },
      +              "errorRate": {
      +                "type": "number"
      +              },
      +              "errorRateDisplay": {
      +                "type": "string"
      +              },
      +              "hardwareType": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "physicalQubits": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "hardwareType",
      +              "physicalQubits",
      +              "errorRate",
      +              "errorRateDisplay",
      +              "connectivity"
      +            ],
      +            "type": "object"
      +          },
      +          "qubitErrorRateUsed": {
      +            "type": "number"
      +          },
      +          "result": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "effectiveErrorRate": {
      +                "description": "Probability that at least one gate fails over the (routed) circuit.",
      +                "type": "number"
      +              },
      +              "logicalErrorRatePerCycle": {
      +                "description": "Per-syndrome-cycle logical error rate as the calibration source reports it; null without error correction.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "logicalErrorRatePerGate": {
      +                "description": "Per-logical-qubit, per-logical-operation error rate; null without error correction.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "minimumClockRuntimeSeconds": {
      +                "description": "Lower bound on wall-clock runtime; present only when hardwareId was supplied.",
      +                "type": "number"
      +              },
      +              "physicalQubitsPerLogicalQubit": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "routedDepth": {
      +                "description": "compDepth after routing: the depth the effective-error formula consumed.",
      +                "type": "number"
      +              },
      +              "routingOverheadFactor": {
      +                "description": "Multiplier the connectivity class applied to compDepth (1 for all-to-all and reconfigurable).",
      +                "type": "number"
      +              },
      +              "successProbability": {
      +                "description": "1 - effectiveErrorRate.",
      +                "type": "number"
      +              },
      +              "totalPhysicalQubits": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "effectiveErrorRate",
      +              "successProbability",
      +              "routingOverheadFactor",
      +              "routedDepth",
      +              "logicalErrorRatePerGate",
      +              "logicalErrorRatePerCycle",
      +              "physicalQubitsPerLogicalQubit",
      +              "totalPhysicalQubits"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "hardware",
      +          "qubitErrorRateUsed",
      +          "result"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "scenario": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "compDepth": {
      +          "type": "number"
      +        },
      +        "distanceSurfaceCode": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "errorCorrectionCode": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "numQubits": {
      +          "type": "number"
      +        },
      +        "useErrorCorrection": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "numQubits",
      +        "compDepth",
      +        "useErrorCorrection",
      +        "distanceSurfaceCode",
      +        "errorCorrectionCode"
      +      ],
      +      "type": "object"
      +    },
      +    "unresolvedHardwareIds": {
      +      "description": "Requested hardwareIds that match no current-hardware entry.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "scenario",
      +    "results",
      +    "unresolvedHardwareIds"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / errorCorrectionCode / enum
      Previous value: -[
      -  "surface",
      -  "bb-144-12-12",
      -  "surface-code"
      -]New value: +[
      +  "surface",
      +  "bb-144-12-12",
      +  "bb-288-12-18",
      +  "surface-code"
      +]
  3. Changed4 schema fields changed
    • changedInput schema / properties / distanceSurfaceCode / description
      Previous value: -"Required when useErrorCorrection=true and errorCorrectionCode=\"surface\" (odd integer)."New value: +"Surface code distance: odd integer in [3, 31]. Required when useErrorCorrection=true and the surface code is selected; ignored when a qLDPC code is selected."
    • removedInput schema / properties / distanceSurfaceCode / maximum
      Removed value: -31
    • removedInput schema / properties / distanceSurfaceCode / minimum
      Removed value: -3
    • changedInput schema / properties / distanceSurfaceCode / type
      Previous value: -"integer"New value: +"number"
  4. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  5. Changed2 schema fields changed
    • changedInput schema / properties / errorCorrectionCode / description
      Previous value: -"Either \"surface\" (default when useErrorCorrection=true) or a qLDPC code id."New value: +"Either \"surface\" (default when useErrorCorrection=true) or a qLDPC code id. \"surface-code\" is accepted as an alias for \"surface\"."
    • changedInput schema / properties / errorCorrectionCode / enum
      Previous value: -[
      -  "surface",
      -  "bb-144-12-12"
      -]New value: +[
      +  "surface",
      +  "bb-144-12-12",
      +  "surface-code"
      +]
  6. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered. The description adds genuine context beyond that: batch semantics and the implicit fan-out to every entry in list_current_quantum_computers when hardwareIds is absent. It does not mention cost/latency of comparing many entries or how error-correction flags affect the run, which keeps it below a 5.

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

Conciseness5/5

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

Two sentences, front-loaded with the batch-vs-sequential rationale, zero filler. Every clause carries information an agent needs to choose and configure the call.

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?

An output schema exists, so return values need no explanation, and the schema covers the error-correction parameters. For a 6-parameter batch comparison tool with annotations present, the description is nearly complete; only the two bare numeric parameters and any cost implications for large hardware sets are unaddressed.

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 50%, and the schema itself already documents hardwareIds, distanceSurfaceCode, and errorCorrectionCode in detail. The description only re-states the hardwareIds default, adding little; numQubits and compDepth remain undocumented in both places. Baseline 3 is appropriate given the schema does the heavy lifting.

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 gives a specific verb and resource ('run the same circuit against multiple current SOTA hardware entries') and states the scope distinction from the sibling it replaces ('without N sequential compute_expectation calls'). An agent can immediately tell this apart from compute_expectation.

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?

It explicitly names the alternative (compute_expectation) and the condition that selects this tool (ranking multiple platforms in one call), plus the default behavior when hardwareIds is omitted. Both the when-to-use and the fallback path are spelled out.

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