Skip to main content
Glama

WAI Quantum job service

The exact gradient of a Hamiltonian's expectation by a program's parameters

gradient_qasm
Read-onlyIdempotent

The expectation E = ⟨ψ|H|ψ⟩ of a Hamiltonian at a program's parameters, and its gradient by each parameter, exactly: by adjoint differentiation or the parameter-shift rule on the double-precision state vector (at most 20 qubits, no noise, measurements only at the end). The reader follows each parameter into the gates, so an argument may be any expression of the built-in functions. The answer states its method, that it is f64 and approximate, and a bound on the rounding of the value and of each component (precision.rounding_bound). Sealed with the service's key. Quote the gradient with its bound.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "qasm": "<qasm>",
      "params": "<params>",
      "hamiltonian": "<hamiltonian>"
    },
    "name": "gradient_qasm"
  }
}

Input Schema

NameRequiredDescriptionDefault
qasmYesThe program, OpenQASM 3: its parameters declared `input float theta;` (or `input angle theta;`) and used in gates' arguments, through arithmetic, the built-in functions and gate definitions (not under a modifier, in a variable, a condition or an index: refused with Q129).
paramsYesA value for each parameter, by name, as {"theta": 0.3}: bound exactly. Every parameter the program declares needs one (J050).
gradientNoadjoint (the default: one pass forward, one back) or parameter_shift (each gate a parameter moves run at shifted angles: two terms, four for a controlled rotation); both exact up to f64 rounding.
hamiltonianYesA Hamiltonian as Pauli terms summed: "Z0 Z1", "0.5 X2", "-1.5" (a constant), or {"pauli": "Y0 Y1", "coeff": -0.7}; qubit 0 is q[0].

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "description": "An answer of the variational and algorithm library as every host gives it (engine::variational and engine::algorithms: gradient_qasm, optimize_qasm, vqe_ground_state, qaoa_maxcut and build_algorithm on both servers, wai-quantum gradient, optimize, vqe, qaoa and build, POST /v1/gradient, /v1/optimize, /v1/vqe, /v1/qaoa and /v1/build, and the Studio): the request, and the result sealed in a job's form. A result names the engine that made it and this schema (engine and schema) and the call that made it. docs/variational.md explains each.",
      -    "properties": {
      -      "request": {
      -        "description": "The call's request, as given.",
      -        "type": "object"
      -      },
      -      "result": {
      -        "anyOf": [
      -          {
      -            "description": "A Hamiltonian's expectation at the request's params and its exact gradient by each parameter (engine::variational::gradient).",
      -            "properties": {
      -              "call": {
      -                "const": "gradient"
      -              },
      -              "engine": {
      -                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      -                "properties": {
      -                  "name": {
      -                    "const": "wai-quantum"
      -                  },
      -                  "version": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "version"
      -                ],
      -                "type": "object"
      -              },
      -              "evaluations": {
      -                "description": "Circuit evaluations (adjoint: the forward run and each gate derivative applied; parameter shift: each shifted run).",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "gates": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "gradient": {
      -                "additionalProperties": {
      -                  "type": "number"
      -                },
      -                "description": "∂E/∂p for each parameter p, by name.",
      -                "type": "object"
      -              },
      -              "how": {
      -                "type": "string"
      -              },
      -              "method": {
      -                "enum": [
      -                  "adjoint",
      -                  "parameter_shift"
      -                ]
      -              },
      -              "moved_gates": {
      -                "description": "Gates a parameter moves.",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "parameters": {
      -                "description": "The program's parameters, in the order it declares them.",
      -                "items": {
      -                  "properties": {
      -                    "name": {
      -                      "type": "string"
      -                    },
      -                    "type": {
      -                      "enum": [
      -                        "float",
      -                        "angle",
      -                        "float[64]"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "name",
      -                    "type"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "params": {
      -                "additionalProperties": {
      -                  "type": "number"
      -                },
      -                "description": "The point, by name.",
      -                "type": "object"
      -              },
      -              "precision": {
      -                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      -                "properties": {
      -                  "arithmetic": {
      -                    "const": "f64"
      -                  },
      -                  "exact": {
      -                    "const": false
      -                  },
      -                  "reading": {
      -                    "type": "string"
      -                  },
      -                  "rounding_bound": {
      -                    "properties": {
      -                      "gradient": {
      -                        "additionalProperties": {
      -                          "minimum": 0,
      -                          "type": "number"
      -                        },
      -                        "description": "Each component's bound, by parameter.",
      -                        "type": "object"
      -                      },
      -                      "value": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "value"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "arithmetic",
      -                  "exact",
      -                  "rounding_bound",
      -                  "reading"
      -                ],
      -                "type": "object"
      -              },
      -              "qubits": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "receipt": {
      -                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) signed serde_json's own text under the domain ending \\x01; they still verify.",
      -                "properties": {
      -                  "alg": {
      -                    "const": "ed25519"
      -                  },
      -                  "canon": {
      -                    "const": "rfc8785",
      -                    "description": "The canonical form the digest is taken over."
      -                  },
      -                  "digest": {
      -                    "description": "The digest signed, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "The signing key, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "signature": {
      -                    "description": "The signature, 64 bytes in hex.",
      -                    "maxLength": 128,
      -                    "minLength": 128,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "alg",
      -                  "canon",
      -                  "key",
      -                  "digest",
      -                  "signature"
      -                ],
      -                "title": "wai.quantum.receipt/2",
      -                "type": "object"
      -              },
      -              "schema": {
      -                "const": "wai.quantum.algorithms/1"
      -              },
      -              "terms": {
      -                "description": "The Hamiltonian's Pauli terms.",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "value": {
      -                "description": "⟨ψ|H|ψ⟩ at the params.",
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "call",
      -              "value",
      -              "gradient",
      -              "params",
      -              "method",
      -              "how",
      -              "evaluations",
      -              "qubits",
      -              "gates",
      -              "moved_gates",
      -              "parameters",
      -              "terms",
      -              "precision"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "description": "An optimisation of a Hamiltonian's expectation over the program's parameters, every step a link of a digest chain from the request (engine::variational::optimize).",
      -            "properties": {
      -              "best": {
      -                "properties": {
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "step": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "value": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "step",
      -                  "params",
      -                  "value"
      -                ],
      -                "type": "object"
      -              },
      -              "call": {
      -                "const": "optimize"
      -              },
      -              "chain": {
      -                "description": "The chain's last link.",
      -                "maxLength": 64,
      -                "minLength": 64,
      -                "type": "string"
      -              },
      -              "engine": {
      -                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      -                "properties": {
      -                  "name": {
      -                    "const": "wai-quantum"
      -                  },
      -                  "version": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "version"
      -                ],
      -                "type": "object"
      -              },
      -              "evaluations": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "final": {
      -                "properties": {
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "step": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "value": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "step",
      -                  "params",
      -                  "value"
      -                ],
      -                "type": "object"
      -              },
      -              "gates": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "note": {
      -                "type": "string"
      -              },
      -              "optimizer": {
      -                "properties": {
      -                  "A": {
      -                    "type": "number"
      -                  },
      -                  "alpha": {
      -                    "type": "number"
      -                  },
      -                  "beta1": {
      -                    "type": "number"
      -                  },
      -                  "beta2": {
      -                    "type": "number"
      -                  },
      -                  "c": {
      -                    "type": "number"
      -                  },
      -                  "epsilon": {
      -                    "type": "number"
      -                  },
      -                  "gamma": {
      -                    "type": "number"
      -                  },
      -                  "gradient": {
      -                    "enum": [
      -                      "adjoint",
      -                      "parameter_shift"
      -                    ]
      -                  },
      -                  "name": {
      -                    "enum": [
      -                      "gradient_descent",
      -                      "adam",
      -                      "spsa"
      -                    ]
      -                  },
      -                  "seed": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "step_size": {
      -                    "type": "number"
      -                  },
      -                  "steps": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "steps",
      -                  "step_size"
      -                ],
      -                "type": "object"
      -              },
      -              "parameters": {
      -                "description": "The program's parameters, in the order it declares them.",
      -                "items": {
      -                  "properties": {
      -                    "name": {
      -                      "type": "string"
      -                    },
      -                    "type": {
      -                      "enum": [
      -                        "float",
      -                        "angle",
      -                        "float[64]"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "name",
      -                    "type"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "precision": {
      -                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      -                "properties": {
      -                  "arithmetic": {
      -                    "const": "f64"
      -                  },
      -                  "exact": {
      -                    "const": false
      -                  },
      -                  "reading": {
      -                    "type": "string"
      -                  },
      -                  "rounding_bound": {
      -                    "properties": {
      -                      "gradient": {
      -                        "additionalProperties": {
      -                          "minimum": 0,
      -                          "type": "number"
      -                        },
      -                        "description": "Each component's bound, by parameter.",
      -                        "type": "object"
      -                      },
      -                      "value": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "value"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "arithmetic",
      -                  "exact",
      -                  "rounding_bound",
      -                  "reading"
      -                ],
      -                "type": "object"
      -              },
      -              "qubits": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "receipt": {
      -                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) signed serde_json's own text under the domain ending \\x01; they still verify.",
      -                "properties": {
      -                  "alg": {
      -                    "const": "ed25519"
      -                  },
      -                  "canon": {
      -                    "const": "rfc8785",
      -                    "description": "The canonical form the digest is taken over."
      -                  },
      -                  "digest": {
      -                    "description": "The digest signed, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "The signing key, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "signature": {
      -                    "description": "The signature, 64 bytes in hex.",
      -                    "maxLength": 128,
      -                    "minLength": 128,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "alg",
      -                  "canon",
      -                  "key",
      -                  "digest",
      -                  "signature"
      -                ],
      -                "title": "wai.quantum.receipt/2",
      -                "type": "object"
      -              },
      -              "schema": {
      -                "const": "wai.quantum.algorithms/1"
      -              },
      -              "start": {
      -                "description": "The chain's first link: BLAKE3 of the domain wai.quantum.trace/1 and the request's canonical text.",
      -                "maxLength": 64,
      -                "minLength": 64,
      -                "type": "string"
      -              },
      -              "steps": {
      -                "items": {
      -                  "properties": {
      -                    "digest": {
      -                      "description": "This step's link of the chain: BLAKE3 of the previous link and the step's canonical text without its digest.",
      -                      "maxLength": 64,
      -                      "minLength": 64,
      -                      "type": "string"
      -                    },
      -                    "estimate": {
      -                      "description": "SPSA: the gradient's estimate.",
      -                      "items": {
      -                        "type": "number"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "gains": {
      -                      "description": "SPSA: the step's gains a_k and c_k.",
      -                      "properties": {
      -                        "a": {
      -                          "type": "number"
      -                        },
      -                        "c": {
      -                          "type": "number"
      -                        }
      -                      },
      -                      "required": [
      -                        "a",
      -                        "c"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "gradient": {
      -                      "additionalProperties": {
      -                        "type": "number"
      -                      },
      -                      "description": "Gradient descent and Adam: the gradient at the step's params.",
      -                      "type": "object"
      -                    },
      -                    "params": {
      -                      "additionalProperties": {
      -                        "type": "number"
      -                      },
      -                      "type": "object"
      -                    },
      -                    "perturbation": {
      -                      "description": "SPSA: the step's perturbation, from the seeded stream.",
      -                      "items": {
      -                        "enum": [
      -                          1,
      -                          -1
      -                        ]
      -                      },
      -                      "type": "array"
      -                    },
      -                    "step": {
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "value": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "step",
      -                    "params",
      -                    "value",
      -                    "digest"
      -                  ],
      -                  "type": "object"
      -                },
      -                "minItems": 2,
      -                "type": "array"
      -              },
      -              "terms": {
      -                "minimum": 0,
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "call",
      -              "optimizer",
      -              "qubits",
      -              "gates",
      -              "parameters",
      -              "terms",
      -              "start",
      -              "steps",
      -              "chain",
      -              "best",
      -              "final",
      -              "evaluations",
      -              "precision"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "description": "The variational eigensolver: an optimisation, and the exact ground energy by diagonalisation beside the energy found (engine::variational::vqe).",
      -            "properties": {
      -              "ansatz": {
      -                "properties": {
      -                  "kind": {
      -                    "const": "hardware_efficient"
      -                  },
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "qasm": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "qasm",
      -                  "params",
      -                  "kind"
      -                ],
      -                "type": "object"
      -              },
      -              "best": {
      -                "properties": {
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "step": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "value": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "step",
      -                  "params",
      -                  "value"
      -                ],
      -                "type": "object"
      -              },
      -              "call": {
      -                "const": "vqe"
      -              },
      -              "chain": {
      -                "description": "The chain's last link.",
      -                "maxLength": 64,
      -                "minLength": 64,
      -                "type": "string"
      -              },
      -              "engine": {
      -                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      -                "properties": {
      -                  "name": {
      -                    "const": "wai-quantum"
      -                  },
      -                  "version": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "version"
      -                ],
      -                "type": "object"
      -              },
      -              "evaluations": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "final": {
      -                "properties": {
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "step": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "value": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "step",
      -                  "params",
      -                  "value"
      -                ],
      -                "type": "object"
      -              },
      -              "gates": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "note": {
      -                "type": "string"
      -              },
      -              "optimizer": {
      -                "properties": {
      -                  "A": {
      -                    "type": "number"
      -                  },
      -                  "alpha": {
      -                    "type": "number"
      -                  },
      -                  "beta1": {
      -                    "type": "number"
      -                  },
      -                  "beta2": {
      -                    "type": "number"
      -                  },
      -                  "c": {
      -                    "type": "number"
      -                  },
      -                  "epsilon": {
      -                    "type": "number"
      -                  },
      -                  "gamma": {
      -                    "type": "number"
      -                  },
      -                  "gradient": {
      -                    "enum": [
      -                      "adjoint",
      -                      "parameter_shift"
      -                    ]
      -                  },
      -                  "name": {
      -                    "enum": [
      -                      "gradient_descent",
      -                      "adam",
      -                      "spsa"
      -                    ]
      -                  },
      -                  "seed": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "step_size": {
      -                    "type": "number"
      -                  },
      -                  "steps": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "steps",
      -                  "step_size"
      -                ],
      -                "type": "object"
      -              },
      -              "parameters": {
      -                "description": "The program's parameters, in the order it declares them.",
      -                "items": {
      -                  "properties": {
      -                    "name": {
      -                      "type": "string"
      -                    },
      -                    "type": {
      -                      "enum": [
      -                        "float",
      -                        "angle",
      -                        "float[64]"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "name",
      -                    "type"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "precision": {
      -                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      -                "properties": {
      -                  "arithmetic": {
      -                    "const": "f64"
      -                  },
      -                  "exact": {
      -                    "const": false
      -                  },
      -                  "reading": {
      -                    "type": "string"
      -                  },
      -                  "rounding_bound": {
      -                    "properties": {
      -                      "gradient": {
      -                        "additionalProperties": {
      -                          "minimum": 0,
      -                          "type": "number"
      -                        },
      -                        "description": "Each component's bound, by parameter.",
      -                        "type": "object"
      -                      },
      -                      "value": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "value"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "arithmetic",
      -                  "exact",
      -                  "rounding_bound",
      -                  "reading"
      -                ],
      -                "type": "object"
      -              },
      -              "qubits": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "receipt": {
      -                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) signed serde_json's own text under the domain ending \\x01; they still verify.",
      -                "properties": {
      -                  "alg": {
      -                    "const": "ed25519"
      -                  },
      -                  "canon": {
      -                    "const": "rfc8785",
      -                    "description": "The canonical form the digest is taken over."
      -                  },
      -                  "digest": {
      -                    "description": "The digest signed, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "The signing key, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "signature": {
      -                    "description": "The signature, 64 bytes in hex.",
      -                    "maxLength": 128,
      -                    "minLength": 128,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "alg",
      -                  "canon",
      -                  "key",
      -                  "digest",
      -                  "signature"
      -                ],
      -                "title": "wai.quantum.receipt/2",
      -                "type": "object"
      -              },
      -              "reference": {
      -                "anyOf": [
      -                  {
      -                    "properties": {
      -                      "first_excited": {
      -                        "anyOf": [
      -                          {
      -                            "type": "number"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "gap": {
      -                        "description": "The best energy found above the ground energy.",
      -                        "type": "number"
      -                      },
      -                      "ground_energy": {
      -                        "type": "number"
      -                      },
      -                      "how": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "ground_energy",
      -                      "how",
      -                      "gap"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "properties": {
      -                      "unchecked": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "unchecked"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "schema": {
      -                "const": "wai.quantum.algorithms/1"
      -              },
      -              "start": {
      -                "description": "The chain's first link: BLAKE3 of the domain wai.quantum.trace/1 and the request's canonical text.",
      -                "maxLength": 64,
      -                "minLength": 64,
      -                "type": "string"
      -              },
      -              "steps": {
      -                "items": {
      -                  "properties": {
      -                    "digest": {
      -                      "description": "This step's link of the chain: BLAKE3 of the previous link and the step's canonical text without its digest.",
      -                      "maxLength": 64,
      -                      "minLength": 64,
      -                      "type": "string"
      -                    },
      -                    "estimate": {
      -                      "description": "SPSA: the gradient's estimate.",
      -                      "items": {
      -                        "type": "number"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "gains": {
      -                      "description": "SPSA: the step's gains a_k and c_k.",
      -                      "properties": {
      -                        "a": {
      -                          "type": "number"
      -                        },
      -                        "c": {
      -                          "type": "number"
      -                        }
      -                      },
      -                      "required": [
      -                        "a",
      -                        "c"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "gradient": {
      -                      "additionalProperties": {
      -                        "type": "number"
      -                      },
      -                      "description": "Gradient descent and Adam: the gradient at the step's params.",
      -                      "type": "object"
      -                    },
      -                    "params": {
      -                      "additionalProperties": {
      -                        "type": "number"
      -                      },
      -                      "type": "object"
      -                    },
      -                    "perturbation": {
      -                      "description": "SPSA: the step's perturbation, from the seeded stream.",
      -                      "items": {
      -                        "enum": [
      -                          1,
      -                          -1
      -                        ]
      -                      },
      -                      "type": "array"
      -                    },
      -                    "step": {
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "value": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "step",
      -                    "params",
      -                    "value",
      -                    "digest"
      -                  ],
      -                  "type": "object"
      -                },
      -                "minItems": 2,
      -                "type": "array"
      -              },
      -              "terms": {
      -                "minimum": 0,
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "call",
      -              "optimizer",
      -              "qubits",
      -              "gates",
      -              "parameters",
      -              "terms",
      -              "start",
      -              "steps",
      -              "chain",
      -              "best",
      -              "final",
      -              "evaluations",
      -              "precision",
      -              "reference"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "description": "Max-Cut by QAOA: the program and Hamiltonian built from the graph, optimised, and the cut set beside the maximum cut by brute force (engine::variational::qaoa).",
      -            "properties": {
      -              "best": {
      -                "properties": {
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "step": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "value": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "step",
      -                  "params",
      -                  "value"
      -                ],
      -                "type": "object"
      -              },
      -              "call": {
      -                "const": "qaoa"
      -              },
      -              "chain": {
      -                "description": "The chain's last link.",
      -                "maxLength": 64,
      -                "minLength": 64,
      -                "type": "string"
      -              },
      -              "engine": {
      -                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      -                "properties": {
      -                  "name": {
      -                    "const": "wai-quantum"
      -                  },
      -                  "version": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "version"
      -                ],
      -                "type": "object"
      -              },
      -              "evaluations": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "final": {
      -                "properties": {
      -                  "params": {
      -                    "additionalProperties": {
      -                      "type": "number"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "step": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "value": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "step",
      -                  "params",
      -                  "value"
      -                ],
      -                "type": "object"
      -              },
      -              "gates": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "graph": {
      -                "properties": {
      -                  "edges": {
      -                    "items": {
      -                      "maxItems": 3,
      -                      "minItems": 3,
      -                      "type": "array"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "nodes": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "nodes",
      -                  "edges"
      -                ],
      -                "type": "object"
      -              },
      -              "hamiltonian": {
      -                "type": "array"
      -              },
      -              "layers": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "maxcut": {
      -                "properties": {
      -                  "bits": {
      -                    "type": "string"
      -                  },
      -                  "expected_cut": {
      -                    "type": "number"
      -                  },
      -                  "how": {
      -                    "type": "string"
      -                  },
      -                  "max_cut": {
      -                    "type": "number"
      -                  },
      -                  "most_likely": {
      -                    "properties": {
      -                      "bits": {
      -                        "type": "string"
      -                      },
      -                      "cut": {
      -                        "type": "number"
      -                      },
      -                      "optimal": {
      -                        "type": "boolean"
      -                      },
      -                      "probability": {
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "bits",
      -                      "probability",
      -                      "cut",
      -                      "optimal"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "optimal": {
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "optimal_count": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "p_optimal": {
      -                    "type": "number"
      -                  },
      -                  "ratio": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "max_cut",
      -                  "optimal",
      -                  "optimal_count",
      -                  "how",
      -                  "expected_cut",
      -                  "ratio",
      -                  "most_likely",
      -                  "p_optimal",
      -                  "bits"
      -                ],
      -                "type": "object"
      -              },
      -              "note": {
      -                "type": "string"
      -              },
      -              "optimizer": {
      -                "properties": {
      -                  "A": {
      -                    "type": "number"
      -                  },
      -                  "alpha": {
      -                    "type": "number"
      -                  },
      -                  "beta1": {
      -                    "type": "number"
      -                  },
      -                  "beta2": {
      -                    "type": "number"
      -                  },
      -                  "c": {
      -                    "type": "number"
      -                  },
      -                  "epsilon": {
      -                    "type": "number"
      -                  },
      -                  "gamma": {
      -                    "type": "number"
      -                  },
      -                  "gradient": {
      -                    "enum": [
      -                      "adjoint",
      -                      "parameter_shift"
      -                    ]
      -                  },
      -                  "name": {
      -                    "enum": [
      -                      "gradient_descent",
      -                      "adam",
      -                      "spsa"
      -                    ]
      -                  },
      -                  "seed": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "step_size": {
      -                    "type": "number"
      -                  },
      -                  "steps": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "steps",
      -                  "step_size"
      -                ],
      -                "type": "object"
      -              },
      -              "parameters": {
      -                "description": "The program's parameters, in the order it declares them.",
      -                "items": {
      -                  "properties": {
      -                    "name": {
      -                      "type": "string"
      -                    },
      -                    "type": {
      -                      "enum": [
      -                        "float",
      -                        "angle",
      -                        "float[64]"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "name",
      -                    "type"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "precision": {
      -                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      -                "properties": {
      -                  "arithmetic": {
      -                    "const": "f64"
      -                  },
      -                  "exact": {
      -                    "const": false
      -                  },
      -                  "reading": {
      -                    "type": "string"
      -                  },
      -                  "rounding_bound": {
      -                    "properties": {
      -                      "gradient": {
      -                        "additionalProperties": {
      -                          "minimum": 0,
      -                          "type": "number"
      -                        },
      -                        "description": "Each component's bound, by parameter.",
      -                        "type": "object"
      -                      },
      -                      "value": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "value"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "arithmetic",
      -                  "exact",
      -                  "rounding_bound",
      -                  "reading"
      -                ],
      -                "type": "object"
      -              },
      -              "program": {
      -                "type": "string"
      -              },
      -              "qubits": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "receipt": {
      -                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) signed serde_json's own text under the domain ending \\x01; they still verify.",
      -                "properties": {
      -                  "alg": {
      -                    "const": "ed25519"
      -                  },
      -                  "canon": {
      -                    "const": "rfc8785",
      -                    "description": "The canonical form the digest is taken over."
      -                  },
      -                  "digest": {
      -                    "description": "The digest signed, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "The signing key, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "signature": {
      -                    "description": "The signature, 64 bytes in hex.",
      -                    "maxLength": 128,
      -                    "minLength": 128,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "alg",
      -                  "canon",
      -                  "key",
      -                  "digest",
      -                  "signature"
      -                ],
      -                "title": "wai.quantum.receipt/2",
      -                "type": "object"
      -              },
      -              "schema": {
      -                "const": "wai.quantum.algorithms/1"
      -              },
      -              "start": {
      -                "description": "The chain's first link: BLAKE3 of the domain wai.quantum.trace/1 and the request's canonical text.",
      -                "maxLength": 64,
      -                "minLength": 64,
      -                "type": "string"
      -              },
      -              "steps": {
      -                "items": {
      -                  "properties": {
      -                    "digest": {
      -                      "description": "This step's link of the chain: BLAKE3 of the previous link and the step's canonical text without its digest.",
      -                      "maxLength": 64,
      -                      "minLength": 64,
      -                      "type": "string"
      -                    },
      -                    "estimate": {
      -                      "description": "SPSA: the gradient's estimate.",
      -                      "items": {
      -                        "type": "number"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "gains": {
      -                      "description": "SPSA: the step's gains a_k and c_k.",
      -                      "properties": {
      -                        "a": {
      -                          "type": "number"
      -                        },
      -                        "c": {
      -                          "type": "number"
      -                        }
      -                      },
      -                      "required": [
      -                        "a",
      -                        "c"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "gradient": {
      -                      "additionalProperties": {
      -                        "type": "number"
      -                      },
      -                      "description": "Gradient descent and Adam: the gradient at the step's params.",
      -                      "type": "object"
      -                    },
      -                    "params": {
      -                      "additionalProperties": {
      -                        "type": "number"
      -                      },
      -                      "type": "object"
      -                    },
      -                    "perturbation": {
      -                      "description": "SPSA: the step's perturbation, from the seeded stream.",
      -                      "items": {
      -                        "enum": [
      -                          1,
      -                          -1
      -                        ]
      -                      },
      -                      "type": "array"
      -                    },
      -                    "step": {
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "value": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "step",
      -                    "params",
      -                    "value",
      -                    "digest"
      -                  ],
      -                  "type": "object"
      -                },
      -                "minItems": 2,
      -                "type": "array"
      -              },
      -              "terms": {
      -                "minimum": 0,
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "call",
      -              "optimizer",
      -              "qubits",
      -              "gates",
      -              "parameters",
      -              "terms",
      -              "start",
      -              "steps",
      -              "chain",
      -              "best",
      -              "final",
      -              "evaluations",
      -              "precision",
      -              "graph",
      -              "layers",
      -              "program",
      -              "hamiltonian",
      -              "maxcut"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "description": "A program an algorithm builder writes (engine::algorithms): its text, how to read it, what it gives, and the equivalence ladder's verdict against a reference built from the definitions.",
      -            "properties": {
      -              "algorithm": {
      -                "enum": [
      -                  "qpe",
      -                  "amplitude_estimation",
      -                  "adder",
      -                  "qsvt"
      -                ]
      -              },
      -              "call": {
      -                "const": "build"
      -              },
      -              "check": {
      -                "properties": {
      -                  "global_phase": {
      -                    "type": "number"
      -                  },
      -                  "how": {
      -                    "enum": [
      -                      "exact",
      -                      "random",
      -                      "none"
      -                    ]
      -                  },
      -                  "reference": {
      -                    "type": "string"
      -                  },
      -                  "verdict": {
      -                    "enum": [
      -                      "equivalent",
      -                      "different",
      -                      "unchecked"
      -                    ]
      -                  },
      -                  "why": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "verdict",
      -                  "how",
      -                  "why"
      -                ],
      -                "type": "object"
      -              },
      -              "engine": {
      -                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      -                "properties": {
      -                  "name": {
      -                    "const": "wai-quantum"
      -                  },
      -                  "version": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "version"
      -                ],
      -                "type": "object"
      -              },
      -              "expected": {
      -                "description": "What it gives: a distribution's likeliest outcomes, a sum, or a polynomial's value.",
      -                "type": "object"
      -              },
      -              "gates": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "qasm": {
      -                "type": "string"
      -              },
      -              "qubits": {
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "reads": {
      -                "description": "How to read the program's result.",
      -                "type": "object"
      -              },
      -              "receipt": {
      -                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) signed serde_json's own text under the domain ending \\x01; they still verify.",
      -                "properties": {
      -                  "alg": {
      -                    "const": "ed25519"
      -                  },
      -                  "canon": {
      -                    "const": "rfc8785",
      -                    "description": "The canonical form the digest is taken over."
      -                  },
      -                  "digest": {
      -                    "description": "The digest signed, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "The signing key, 32 bytes in hex.",
      -                    "maxLength": 64,
      -                    "minLength": 64,
      -                    "type": "string"
      -                  },
      -                  "signature": {
      -                    "description": "The signature, 64 bytes in hex.",
      -                    "maxLength": 128,
      -                    "minLength": 128,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "alg",
      -                  "canon",
      -                  "key",
      -                  "digest",
      -                  "signature"
      -                ],
      -                "title": "wai.quantum.receipt/2",
      -                "type": "object"
      -              },
      -              "schema": {
      -                "const": "wai.quantum.algorithms/1"
      -              }
      -            },
      -            "required": [
      -              "call",
      -              "algorithm",
      -              "qasm",
      -              "qubits",
      -              "gates",
      -              "reads",
      -              "expected",
      -              "check"
      -            ],
      -            "type": "object"
      -          }
      -        ],
      -        "description": "A gradient, an optimisation, a VQE, a QAOA run or a built program, with its receipt."
      -      }
      -    },
      -    "required": [
      -      "request",
      -      "result"
      -    ],
      -    "title": "wai.quantum.algorithms/1",
      -    "type": "object"
      -  },
      -  {
      -    "description": "A refusal as data: the message, every code in it (the last is the code), its outcome and meaning as the code's table gives them. A host that refuses for its own reasons gives the error alone.",
      -    "properties": {
      -      "code": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "codes": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "meaning": {
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "outcome": {
      -        "enum": [
      -          "refused",
      -          "retry",
      -          "failed",
      -          "lowered",
      -          "carried",
      -          "preserved",
      -          "warned",
      -          "dropped",
      -          "defaulted"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "An answer of the variational and algorithm library as every host gives it (engine::variational and engine::algorithms: gradient_qasm, optimize_qasm, vqe_ground_state, qaoa_maxcut and build_algorithm on both servers, wai-quantum gradient, optimize, vqe, qaoa and build, POST /v1/gradient, /v1/optimize, /v1/vqe, /v1/qaoa and /v1/build, and the Studio): the request, and the result sealed in a job's form. A result names the engine that made it and this schema (engine and schema) and the call that made it. docs/variational.md explains each.",
      +    "properties": {
      +      "request": {
      +        "description": "The call's request, as given.",
      +        "type": "object"
      +      },
      +      "result": {
      +        "anyOf": [
      +          {
      +            "description": "A Hamiltonian's expectation at the request's params and its exact gradient by each parameter (engine::variational::gradient).",
      +            "properties": {
      +              "call": {
      +                "const": "gradient"
      +              },
      +              "engine": {
      +                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      +                "properties": {
      +                  "name": {
      +                    "const": "wai-quantum"
      +                  },
      +                  "version": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "version"
      +                ],
      +                "type": "object"
      +              },
      +              "evaluations": {
      +                "description": "Circuit evaluations (adjoint: the forward run and each gate derivative applied; parameter shift: each shifted run).",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "gates": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "gradient": {
      +                "additionalProperties": {
      +                  "type": "number"
      +                },
      +                "description": "∂E/∂p for each parameter p, by name.",
      +                "type": "object"
      +              },
      +              "how": {
      +                "type": "string"
      +              },
      +              "method": {
      +                "enum": [
      +                  "adjoint",
      +                  "parameter_shift"
      +                ]
      +              },
      +              "moved_gates": {
      +                "description": "Gates a parameter moves.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "parameters": {
      +                "description": "The program's parameters, in the order it declares them.",
      +                "items": {
      +                  "properties": {
      +                    "name": {
      +                      "type": "string"
      +                    },
      +                    "type": {
      +                      "enum": [
      +                        "float",
      +                        "angle",
      +                        "float[64]"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "name",
      +                    "type"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "params": {
      +                "additionalProperties": {
      +                  "type": "number"
      +                },
      +                "description": "The point, by name.",
      +                "type": "object"
      +              },
      +              "precision": {
      +                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      +                "properties": {
      +                  "arithmetic": {
      +                    "const": "f64"
      +                  },
      +                  "exact": {
      +                    "const": false
      +                  },
      +                  "reading": {
      +                    "type": "string"
      +                  },
      +                  "rounding_bound": {
      +                    "properties": {
      +                      "gradient": {
      +                        "additionalProperties": {
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "description": "Each component's bound, by parameter.",
      +                        "type": "object"
      +                      },
      +                      "value": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "value"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "arithmetic",
      +                  "exact",
      +                  "rounding_bound",
      +                  "reading"
      +                ],
      +                "type": "object"
      +              },
      +              "qubits": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "receipt": {
      +                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) sealed their writer's compact text under the domain ending \\x01; they still verify. wai/extensions/quantum-providers.md section 8.2 states the seal in full, and section 8.4 what a verifier checks.",
      +                "properties": {
      +                  "alg": {
      +                    "const": "ed25519"
      +                  },
      +                  "canon": {
      +                    "const": "rfc8785",
      +                    "description": "The canonical form the digest is taken over."
      +                  },
      +                  "digest": {
      +                    "description": "The digest signed, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "The signing key, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "signature": {
      +                    "description": "The signature, 64 bytes in lower-case hex.",
      +                    "maxLength": 128,
      +                    "minLength": 128,
      +                    "pattern": "^[0-9a-f]{128}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "alg",
      +                  "canon",
      +                  "key",
      +                  "digest",
      +                  "signature"
      +                ],
      +                "title": "wai.quantum.receipt/2",
      +                "type": "object"
      +              },
      +              "schema": {
      +                "const": "wai.quantum.algorithms/1"
      +              },
      +              "terms": {
      +                "description": "The Hamiltonian's Pauli terms.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "value": {
      +                "description": "⟨ψ|H|ψ⟩ at the params.",
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "call",
      +              "value",
      +              "gradient",
      +              "params",
      +              "method",
      +              "how",
      +              "evaluations",
      +              "qubits",
      +              "gates",
      +              "moved_gates",
      +              "parameters",
      +              "terms",
      +              "precision"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "description": "An optimisation of a Hamiltonian's expectation over the program's parameters, every step a link of a digest chain from the request (engine::variational::optimize).",
      +            "properties": {
      +              "best": {
      +                "properties": {
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "step": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "value": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "step",
      +                  "params",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              "call": {
      +                "const": "optimize"
      +              },
      +              "chain": {
      +                "description": "The chain's last link.",
      +                "maxLength": 64,
      +                "minLength": 64,
      +                "type": "string"
      +              },
      +              "engine": {
      +                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      +                "properties": {
      +                  "name": {
      +                    "const": "wai-quantum"
      +                  },
      +                  "version": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "version"
      +                ],
      +                "type": "object"
      +              },
      +              "evaluations": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "final": {
      +                "properties": {
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "step": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "value": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "step",
      +                  "params",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              "gates": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "optimizer": {
      +                "properties": {
      +                  "A": {
      +                    "type": "number"
      +                  },
      +                  "alpha": {
      +                    "type": "number"
      +                  },
      +                  "beta1": {
      +                    "type": "number"
      +                  },
      +                  "beta2": {
      +                    "type": "number"
      +                  },
      +                  "c": {
      +                    "type": "number"
      +                  },
      +                  "epsilon": {
      +                    "type": "number"
      +                  },
      +                  "gamma": {
      +                    "type": "number"
      +                  },
      +                  "gradient": {
      +                    "enum": [
      +                      "adjoint",
      +                      "parameter_shift"
      +                    ]
      +                  },
      +                  "name": {
      +                    "enum": [
      +                      "gradient_descent",
      +                      "adam",
      +                      "spsa"
      +                    ]
      +                  },
      +                  "seed": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "step_size": {
      +                    "type": "number"
      +                  },
      +                  "steps": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "steps",
      +                  "step_size"
      +                ],
      +                "type": "object"
      +              },
      +              "parameters": {
      +                "description": "The program's parameters, in the order it declares them.",
      +                "items": {
      +                  "properties": {
      +                    "name": {
      +                      "type": "string"
      +                    },
      +                    "type": {
      +                      "enum": [
      +                        "float",
      +                        "angle",
      +                        "float[64]"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "name",
      +                    "type"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "precision": {
      +                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      +                "properties": {
      +                  "arithmetic": {
      +                    "const": "f64"
      +                  },
      +                  "exact": {
      +                    "const": false
      +                  },
      +                  "reading": {
      +                    "type": "string"
      +                  },
      +                  "rounding_bound": {
      +                    "properties": {
      +                      "gradient": {
      +                        "additionalProperties": {
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "description": "Each component's bound, by parameter.",
      +                        "type": "object"
      +                      },
      +                      "value": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "value"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "arithmetic",
      +                  "exact",
      +                  "rounding_bound",
      +                  "reading"
      +                ],
      +                "type": "object"
      +              },
      +              "qubits": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "receipt": {
      +                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) sealed their writer's compact text under the domain ending \\x01; they still verify. wai/extensions/quantum-providers.md section 8.2 states the seal in full, and section 8.4 what a verifier checks.",
      +                "properties": {
      +                  "alg": {
      +                    "const": "ed25519"
      +                  },
      +                  "canon": {
      +                    "const": "rfc8785",
      +                    "description": "The canonical form the digest is taken over."
      +                  },
      +                  "digest": {
      +                    "description": "The digest signed, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "The signing key, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "signature": {
      +                    "description": "The signature, 64 bytes in lower-case hex.",
      +                    "maxLength": 128,
      +                    "minLength": 128,
      +                    "pattern": "^[0-9a-f]{128}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "alg",
      +                  "canon",
      +                  "key",
      +                  "digest",
      +                  "signature"
      +                ],
      +                "title": "wai.quantum.receipt/2",
      +                "type": "object"
      +              },
      +              "schema": {
      +                "const": "wai.quantum.algorithms/1"
      +              },
      +              "start": {
      +                "description": "The chain's first link: BLAKE3 of the domain wai.quantum.trace/1 and the request's canonical text.",
      +                "maxLength": 64,
      +                "minLength": 64,
      +                "type": "string"
      +              },
      +              "steps": {
      +                "items": {
      +                  "properties": {
      +                    "digest": {
      +                      "description": "This step's link of the chain: BLAKE3 of the previous link and the step's canonical text without its digest.",
      +                      "maxLength": 64,
      +                      "minLength": 64,
      +                      "type": "string"
      +                    },
      +                    "estimate": {
      +                      "description": "SPSA: the gradient's estimate.",
      +                      "items": {
      +                        "type": "number"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "gains": {
      +                      "description": "SPSA: the step's gains a_k and c_k.",
      +                      "properties": {
      +                        "a": {
      +                          "type": "number"
      +                        },
      +                        "c": {
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "a",
      +                        "c"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "gradient": {
      +                      "additionalProperties": {
      +                        "type": "number"
      +                      },
      +                      "description": "Gradient descent and Adam: the gradient at the step's params.",
      +                      "type": "object"
      +                    },
      +                    "params": {
      +                      "additionalProperties": {
      +                        "type": "number"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "perturbation": {
      +                      "description": "SPSA: the step's perturbation, from the seeded stream.",
      +                      "items": {
      +                        "enum": [
      +                          1,
      +                          -1
      +                        ]
      +                      },
      +                      "type": "array"
      +                    },
      +                    "step": {
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "value": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "step",
      +                    "params",
      +                    "value",
      +                    "digest"
      +                  ],
      +                  "type": "object"
      +                },
      +                "minItems": 2,
      +                "type": "array"
      +              },
      +              "terms": {
      +                "minimum": 0,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "call",
      +              "optimizer",
      +              "qubits",
      +              "gates",
      +              "parameters",
      +              "terms",
      +              "start",
      +              "steps",
      +              "chain",
      +              "best",
      +              "final",
      +              "evaluations",
      +              "precision"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "description": "The variational eigensolver: an optimisation, and the exact ground energy by diagonalisation beside the energy found (engine::variational::vqe).",
      +            "properties": {
      +              "ansatz": {
      +                "properties": {
      +                  "kind": {
      +                    "const": "hardware_efficient"
      +                  },
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "qasm": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "qasm",
      +                  "params",
      +                  "kind"
      +                ],
      +                "type": "object"
      +              },
      +              "best": {
      +                "properties": {
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "step": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "value": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "step",
      +                  "params",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              "call": {
      +                "const": "vqe"
      +              },
      +              "chain": {
      +                "description": "The chain's last link.",
      +                "maxLength": 64,
      +                "minLength": 64,
      +                "type": "string"
      +              },
      +              "engine": {
      +                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      +                "properties": {
      +                  "name": {
      +                    "const": "wai-quantum"
      +                  },
      +                  "version": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "version"
      +                ],
      +                "type": "object"
      +              },
      +              "evaluations": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "final": {
      +                "properties": {
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "step": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "value": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "step",
      +                  "params",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              "gates": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "optimizer": {
      +                "properties": {
      +                  "A": {
      +                    "type": "number"
      +                  },
      +                  "alpha": {
      +                    "type": "number"
      +                  },
      +                  "beta1": {
      +                    "type": "number"
      +                  },
      +                  "beta2": {
      +                    "type": "number"
      +                  },
      +                  "c": {
      +                    "type": "number"
      +                  },
      +                  "epsilon": {
      +                    "type": "number"
      +                  },
      +                  "gamma": {
      +                    "type": "number"
      +                  },
      +                  "gradient": {
      +                    "enum": [
      +                      "adjoint",
      +                      "parameter_shift"
      +                    ]
      +                  },
      +                  "name": {
      +                    "enum": [
      +                      "gradient_descent",
      +                      "adam",
      +                      "spsa"
      +                    ]
      +                  },
      +                  "seed": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "step_size": {
      +                    "type": "number"
      +                  },
      +                  "steps": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "steps",
      +                  "step_size"
      +                ],
      +                "type": "object"
      +              },
      +              "parameters": {
      +                "description": "The program's parameters, in the order it declares them.",
      +                "items": {
      +                  "properties": {
      +                    "name": {
      +                      "type": "string"
      +                    },
      +                    "type": {
      +                      "enum": [
      +                        "float",
      +                        "angle",
      +                        "float[64]"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "name",
      +                    "type"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "precision": {
      +                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      +                "properties": {
      +                  "arithmetic": {
      +                    "const": "f64"
      +                  },
      +                  "exact": {
      +                    "const": false
      +                  },
      +                  "reading": {
      +                    "type": "string"
      +                  },
      +                  "rounding_bound": {
      +                    "properties": {
      +                      "gradient": {
      +                        "additionalProperties": {
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "description": "Each component's bound, by parameter.",
      +                        "type": "object"
      +                      },
      +                      "value": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "value"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "arithmetic",
      +                  "exact",
      +                  "rounding_bound",
      +                  "reading"
      +                ],
      +                "type": "object"
      +              },
      +              "qubits": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "receipt": {
      +                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) sealed their writer's compact text under the domain ending \\x01; they still verify. wai/extensions/quantum-providers.md section 8.2 states the seal in full, and section 8.4 what a verifier checks.",
      +                "properties": {
      +                  "alg": {
      +                    "const": "ed25519"
      +                  },
      +                  "canon": {
      +                    "const": "rfc8785",
      +                    "description": "The canonical form the digest is taken over."
      +                  },
      +                  "digest": {
      +                    "description": "The digest signed, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "The signing key, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "signature": {
      +                    "description": "The signature, 64 bytes in lower-case hex.",
      +                    "maxLength": 128,
      +                    "minLength": 128,
      +                    "pattern": "^[0-9a-f]{128}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "alg",
      +                  "canon",
      +                  "key",
      +                  "digest",
      +                  "signature"
      +                ],
      +                "title": "wai.quantum.receipt/2",
      +                "type": "object"
      +              },
      +              "reference": {
      +                "anyOf": [
      +                  {
      +                    "properties": {
      +                      "first_excited": {
      +                        "anyOf": [
      +                          {
      +                            "type": "number"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "gap": {
      +                        "description": "The best energy found above the ground energy.",
      +                        "type": "number"
      +                      },
      +                      "ground_energy": {
      +                        "type": "number"
      +                      },
      +                      "how": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "ground_energy",
      +                      "how",
      +                      "gap"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "properties": {
      +                      "unchecked": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "unchecked"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "schema": {
      +                "const": "wai.quantum.algorithms/1"
      +              },
      +              "start": {
      +                "description": "The chain's first link: BLAKE3 of the domain wai.quantum.trace/1 and the request's canonical text.",
      +                "maxLength": 64,
      +                "minLength": 64,
      +                "type": "string"
      +              },
      +              "steps": {
      +                "items": {
      +                  "properties": {
      +                    "digest": {
      +                      "description": "This step's link of the chain: BLAKE3 of the previous link and the step's canonical text without its digest.",
      +                      "maxLength": 64,
      +                      "minLength": 64,
      +                      "type": "string"
      +                    },
      +                    "estimate": {
      +                      "description": "SPSA: the gradient's estimate.",
      +                      "items": {
      +                        "type": "number"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "gains": {
      +                      "description": "SPSA: the step's gains a_k and c_k.",
      +                      "properties": {
      +                        "a": {
      +                          "type": "number"
      +                        },
      +                        "c": {
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "a",
      +                        "c"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "gradient": {
      +                      "additionalProperties": {
      +                        "type": "number"
      +                      },
      +                      "description": "Gradient descent and Adam: the gradient at the step's params.",
      +                      "type": "object"
      +                    },
      +                    "params": {
      +                      "additionalProperties": {
      +                        "type": "number"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "perturbation": {
      +                      "description": "SPSA: the step's perturbation, from the seeded stream.",
      +                      "items": {
      +                        "enum": [
      +                          1,
      +                          -1
      +                        ]
      +                      },
      +                      "type": "array"
      +                    },
      +                    "step": {
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "value": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "step",
      +                    "params",
      +                    "value",
      +                    "digest"
      +                  ],
      +                  "type": "object"
      +                },
      +                "minItems": 2,
      +                "type": "array"
      +              },
      +              "terms": {
      +                "minimum": 0,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "call",
      +              "optimizer",
      +              "qubits",
      +              "gates",
      +              "parameters",
      +              "terms",
      +              "start",
      +              "steps",
      +              "chain",
      +              "best",
      +              "final",
      +              "evaluations",
      +              "precision",
      +              "reference"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "description": "Max-Cut by QAOA: the program and Hamiltonian built from the graph, optimised, and the cut set beside the maximum cut by brute force (engine::variational::qaoa).",
      +            "properties": {
      +              "best": {
      +                "properties": {
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "step": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "value": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "step",
      +                  "params",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              "call": {
      +                "const": "qaoa"
      +              },
      +              "chain": {
      +                "description": "The chain's last link.",
      +                "maxLength": 64,
      +                "minLength": 64,
      +                "type": "string"
      +              },
      +              "engine": {
      +                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      +                "properties": {
      +                  "name": {
      +                    "const": "wai-quantum"
      +                  },
      +                  "version": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "version"
      +                ],
      +                "type": "object"
      +              },
      +              "evaluations": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "final": {
      +                "properties": {
      +                  "params": {
      +                    "additionalProperties": {
      +                      "type": "number"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "step": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "value": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "step",
      +                  "params",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              "gates": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "graph": {
      +                "properties": {
      +                  "edges": {
      +                    "items": {
      +                      "maxItems": 3,
      +                      "minItems": 3,
      +                      "type": "array"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "nodes": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "nodes",
      +                  "edges"
      +                ],
      +                "type": "object"
      +              },
      +              "hamiltonian": {
      +                "type": "array"
      +              },
      +              "layers": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "maxcut": {
      +                "properties": {
      +                  "bits": {
      +                    "type": "string"
      +                  },
      +                  "expected_cut": {
      +                    "type": "number"
      +                  },
      +                  "how": {
      +                    "type": "string"
      +                  },
      +                  "max_cut": {
      +                    "type": "number"
      +                  },
      +                  "most_likely": {
      +                    "properties": {
      +                      "bits": {
      +                        "type": "string"
      +                      },
      +                      "cut": {
      +                        "type": "number"
      +                      },
      +                      "optimal": {
      +                        "type": "boolean"
      +                      },
      +                      "probability": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "bits",
      +                      "probability",
      +                      "cut",
      +                      "optimal"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "optimal": {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "optimal_count": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "p_optimal": {
      +                    "type": "number"
      +                  },
      +                  "ratio": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "max_cut",
      +                  "optimal",
      +                  "optimal_count",
      +                  "how",
      +                  "expected_cut",
      +                  "ratio",
      +                  "most_likely",
      +                  "p_optimal",
      +                  "bits"
      +                ],
      +                "type": "object"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "optimizer": {
      +                "properties": {
      +                  "A": {
      +                    "type": "number"
      +                  },
      +                  "alpha": {
      +                    "type": "number"
      +                  },
      +                  "beta1": {
      +                    "type": "number"
      +                  },
      +                  "beta2": {
      +                    "type": "number"
      +                  },
      +                  "c": {
      +                    "type": "number"
      +                  },
      +                  "epsilon": {
      +                    "type": "number"
      +                  },
      +                  "gamma": {
      +                    "type": "number"
      +                  },
      +                  "gradient": {
      +                    "enum": [
      +                      "adjoint",
      +                      "parameter_shift"
      +                    ]
      +                  },
      +                  "name": {
      +                    "enum": [
      +                      "gradient_descent",
      +                      "adam",
      +                      "spsa"
      +                    ]
      +                  },
      +                  "seed": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "step_size": {
      +                    "type": "number"
      +                  },
      +                  "steps": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "steps",
      +                  "step_size"
      +                ],
      +                "type": "object"
      +              },
      +              "parameters": {
      +                "description": "The program's parameters, in the order it declares them.",
      +                "items": {
      +                  "properties": {
      +                    "name": {
      +                      "type": "string"
      +                    },
      +                    "type": {
      +                      "enum": [
      +                        "float",
      +                        "angle",
      +                        "float[64]"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "name",
      +                    "type"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "precision": {
      +                "description": "What the arithmetic is: IEEE-754 double precision, approximate, and an a priori bound on each reported number's rounding (first order in 2^-53, doubled), from the value the same circuit has in exact arithmetic.",
      +                "properties": {
      +                  "arithmetic": {
      +                    "const": "f64"
      +                  },
      +                  "exact": {
      +                    "const": false
      +                  },
      +                  "reading": {
      +                    "type": "string"
      +                  },
      +                  "rounding_bound": {
      +                    "properties": {
      +                      "gradient": {
      +                        "additionalProperties": {
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "description": "Each component's bound, by parameter.",
      +                        "type": "object"
      +                      },
      +                      "value": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "value"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "arithmetic",
      +                  "exact",
      +                  "rounding_bound",
      +                  "reading"
      +                ],
      +                "type": "object"
      +              },
      +              "program": {
      +                "type": "string"
      +              },
      +              "qubits": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "receipt": {
      +                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) sealed their writer's compact text under the domain ending \\x01; they still verify. wai/extensions/quantum-providers.md section 8.2 states the seal in full, and section 8.4 what a verifier checks.",
      +                "properties": {
      +                  "alg": {
      +                    "const": "ed25519"
      +                  },
      +                  "canon": {
      +                    "const": "rfc8785",
      +                    "description": "The canonical form the digest is taken over."
      +                  },
      +                  "digest": {
      +                    "description": "The digest signed, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "The signing key, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "signature": {
      +                    "description": "The signature, 64 bytes in lower-case hex.",
      +                    "maxLength": 128,
      +                    "minLength": 128,
      +                    "pattern": "^[0-9a-f]{128}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "alg",
      +                  "canon",
      +                  "key",
      +                  "digest",
      +                  "signature"
      +                ],
      +                "title": "wai.quantum.receipt/2",
      +                "type": "object"
      +              },
      +              "schema": {
      +                "const": "wai.quantum.algorithms/1"
      +              },
      +              "start": {
      +                "description": "The chain's first link: BLAKE3 of the domain wai.quantum.trace/1 and the request's canonical text.",
      +                "maxLength": 64,
      +                "minLength": 64,
      +                "type": "string"
      +              },
      +              "steps": {
      +                "items": {
      +                  "properties": {
      +                    "digest": {
      +                      "description": "This step's link of the chain: BLAKE3 of the previous link and the step's canonical text without its digest.",
      +                      "maxLength": 64,
      +                      "minLength": 64,
      +                      "type": "string"
      +                    },
      +                    "estimate": {
      +                      "description": "SPSA: the gradient's estimate.",
      +                      "items": {
      +                        "type": "number"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "gains": {
      +                      "description": "SPSA: the step's gains a_k and c_k.",
      +                      "properties": {
      +                        "a": {
      +                          "type": "number"
      +                        },
      +                        "c": {
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "a",
      +                        "c"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "gradient": {
      +                      "additionalProperties": {
      +                        "type": "number"
      +                      },
      +                      "description": "Gradient descent and Adam: the gradient at the step's params.",
      +                      "type": "object"
      +                    },
      +                    "params": {
      +                      "additionalProperties": {
      +                        "type": "number"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "perturbation": {
      +                      "description": "SPSA: the step's perturbation, from the seeded stream.",
      +                      "items": {
      +                        "enum": [
      +                          1,
      +                          -1
      +                        ]
      +                      },
      +                      "type": "array"
      +                    },
      +                    "step": {
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "value": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "step",
      +                    "params",
      +                    "value",
      +                    "digest"
      +                  ],
      +                  "type": "object"
      +                },
      +                "minItems": 2,
      +                "type": "array"
      +              },
      +              "terms": {
      +                "minimum": 0,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "call",
      +              "optimizer",
      +              "qubits",
      +              "gates",
      +              "parameters",
      +              "terms",
      +              "start",
      +              "steps",
      +              "chain",
      +              "best",
      +              "final",
      +              "evaluations",
      +              "precision",
      +              "graph",
      +              "layers",
      +              "program",
      +              "hamiltonian",
      +              "maxcut"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "description": "A program an algorithm builder writes (engine::algorithms): its text, how to read it, what it gives, and the equivalence ladder's verdict against a reference built from the definitions.",
      +            "properties": {
      +              "algorithm": {
      +                "enum": [
      +                  "qpe",
      +                  "amplitude_estimation",
      +                  "adder",
      +                  "qsvt"
      +                ]
      +              },
      +              "call": {
      +                "const": "build"
      +              },
      +              "check": {
      +                "properties": {
      +                  "global_phase": {
      +                    "type": "number"
      +                  },
      +                  "how": {
      +                    "enum": [
      +                      "exact",
      +                      "random",
      +                      "none"
      +                    ]
      +                  },
      +                  "reference": {
      +                    "type": "string"
      +                  },
      +                  "verdict": {
      +                    "enum": [
      +                      "equivalent",
      +                      "different",
      +                      "unchecked"
      +                    ]
      +                  },
      +                  "why": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "verdict",
      +                  "how",
      +                  "why"
      +                ],
      +                "type": "object"
      +              },
      +              "engine": {
      +                "description": "The engine that made the result: the wai-quantum crate's name and version.",
      +                "properties": {
      +                  "name": {
      +                    "const": "wai-quantum"
      +                  },
      +                  "version": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "version"
      +                ],
      +                "type": "object"
      +              },
      +              "expected": {
      +                "description": "What it gives: a distribution's likeliest outcomes, a sum, or a polynomial's value.",
      +                "type": "object"
      +              },
      +              "gates": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "qasm": {
      +                "type": "string"
      +              },
      +              "qubits": {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "reads": {
      +                "description": "How to read the program's result.",
      +                "type": "object"
      +              },
      +              "receipt": {
      +                "description": "A result's receipt: an Ed25519 signature, by the key it names, over digest = BLAKE3(\"wai:quantum-service-receipt\\x02\" ‖ len ‖ request ‖ len ‖ result), each of request and result in its RFC 8785 canonical text (the result without its receipt member), each length 8 bytes big-endian. Whatever members the request and the result hold are sealed, the result's engine and schema among them. The first receipts (no canon member, $defs/first) sealed their writer's compact text under the domain ending \\x01; they still verify. wai/extensions/quantum-providers.md section 8.2 states the seal in full, and section 8.4 what a verifier checks.",
      +                "properties": {
      +                  "alg": {
      +                    "const": "ed25519"
      +                  },
      +                  "canon": {
      +                    "const": "rfc8785",
      +                    "description": "The canonical form the digest is taken over."
      +                  },
      +                  "digest": {
      +                    "description": "The digest signed, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "The signing key, 32 bytes in lower-case hex.",
      +                    "maxLength": 64,
      +                    "minLength": 64,
      +                    "pattern": "^[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "signature": {
      +                    "description": "The signature, 64 bytes in lower-case hex.",
      +                    "maxLength": 128,
      +                    "minLength": 128,
      +                    "pattern": "^[0-9a-f]{128}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "alg",
      +                  "canon",
      +                  "key",
      +                  "digest",
      +                  "signature"
      +                ],
      +                "title": "wai.quantum.receipt/2",
      +                "type": "object"
      +              },
      +              "schema": {
      +                "const": "wai.quantum.algorithms/1"
      +              }
      +            },
      +            "required": [
      +              "call",
      +              "algorithm",
      +              "qasm",
      +              "qubits",
      +              "gates",
      +              "reads",
      +              "expected",
      +              "check"
      +            ],
      +            "type": "object"
      +          }
      +        ],
      +        "description": "A gradient, an optimisation, a VQE, a QAOA run or a built program, with its receipt."
      +      }
      +    },
      +    "required": [
      +      "request",
      +      "result"
      +    ],
      +    "title": "wai.quantum.algorithms/1",
      +    "type": "object"
      +  },
      +  {
      +    "description": "A refusal as data: the message, every code in it (the last is the code), its outcome and meaning as the code's table gives them. A host that refuses for its own reasons gives the error alone.",
      +    "properties": {
      +      "code": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "codes": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "meaning": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "outcome": {
      +        "enum": [
      +          "refused",
      +          "retry",
      +          "failed",
      +          "lowered",
      +          "carried",
      +          "preserved",
      +          "warned",
      +          "dropped",
      +          "defaulted"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Added

TDQS

A4/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/closed-world annotations, it discloses that results are f64 and approximate, that a rounding bound is reported for the value and each gradient component, that the response states its method, and that the answer is sealed with the service's key. It also names concrete failure modes (Q129 for unsupported parameter placement, J050 for a missing parameter value), which the annotations cannot convey.

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 purpose and constraints are front-loaded in the first sentence, and the remaining sentences add distinct facts (expressiveness, response contents, receipt). A few clauses are stylistically ornate — 'The reader follows each parameter into the gates,' 'Sealed with the service's key' — where plainer phrasing would read faster, but nothing is truly redundant.

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 four-parameter numerical tool with an output schema, the definition covers the computational regime, parameter expressiveness, method selection, accuracy claims, and error codes — enough to call it correctly. The only shortfall is that guidance on choosing adjoint versus parameter-shift is left largely to the schema rather than the prose.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description still adds meaning by stating that any parameter argument may be an arbitrary expression of built-in functions and that values are bound exactly. It also foregrounds the adjoint-vs-parameter-shift cost distinction at the description level rather than leaving it buried in the enum documentation.

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 names a specific computed quantity (the expectation E = ⟨ψ|H|ψ⟩ and its exact per-parameter gradient) plus the two methods (adjoint, parameter-shift) and the execution regime (double-precision state vector, ≤20 qubits, no noise, terminal measurements). It is far more specific than the title alone and is clearly distinguishable from execution tools like run_quantum_circuit or vqe_ground_state. It stops short of naming any sibling as the alternative path.

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

Usage Guidelines3/5

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

Usage boundaries are implied through hard constraints — at most 20 qubits, no noise, measurements only at the end, and parameters must appear directly in gate arguments or the call is refused with Q129. These effectively encode when-not conditions. However, there is no explicit statement of when to choose this over an approximate or sampling-based alternative, so the agent must infer applicability.

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