Skip to main content
Glama

WAI Quantum job service

Write the program for a standard algorithm, checked against its reference

build_algorithm
Read-onlyIdempotent

An OpenQASM 3 program for a standard algorithm, with how to read its result, what it gives, and the equivalence ladder's verdict on it against a reference matrix or truth table built from the definitions (check: exact on every basis state up to 8 qubits, the adder's up to 16; past that unchecked). qpe: the phase φ of p(2πφ) on counting qubits; amplitude_estimation: the amplitude a that A = ry(2·arcsin √a) gives the good state, by phase estimation of the Grover operator; adder: the ripple-carry adder of bits-bit integers in place (with a and b, prepared and measured); qsvt: quantum signal processing from phases, of a signal x or of a real symmetric 2 × 2 matrix through its block encoding (all phases zero give the Chebyshev polynomial). Sealed with the service's key. Run the program with run_quantum_circuit.

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": {
      "algorithm": "<algorithm>"
    },
    "name": "build_algorithm"
  }
}

Input Schema

NameRequiredDescriptionDefault
aNoadder: the first addend, prepared.
bNoadder: the second, which the sum replaces.
xNoqsvt: the signal.
bitsNoadder: the integers' width.
phaseNoqpe: the phase φ, in turns.
matrixNoqsvt: [[a, b], [b, c]], real and symmetric, its eigenvalues within [-1, 1].
phasesNoqsvt: φ₀ … φ_d, radians.
carry_inNoadder: a carry in.
countingNoqpe, amplitude_estimation: counting qubits (default 4).
algorithmYes
amplitudeNoamplitude_estimation: the good state's probability a.

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

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, closed-world, and idempotent safety; the description adds nontrivial behavior: the output is sealed with the service's key, equivalence checking is exact only up to 8 qubits (16 for the adder) and unchecked beyond that, and result interpretation differs by algorithm. It does not mention authentication, rate limits, or error behavior, but for this generation tool it adds substantial context beyond annotations.

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

Conciseness3/5

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

The content is dense and substantially free of filler, but it is delivered as a single run-on paragraph with a weak noun-phrase opening and semicolon-separated algorithm notes. It would be more scannable with a front-loaded action and structured per-algorithm bullets.

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 complex 11-parameter, four-algorithm generator with an output schema, the description covers algorithm outputs, result interpretation, verification limits, sealing, and the follow-on run step. Only minor gaps remain around defaults and error cases, which schema and output fields largely cover.

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?

With 91% schema coverage, the schema already defines each parameter; the description still adds algorithmic meaning: qpe gives phase φ of p(2πφ), amplitude_estimation uses A = ry(2·arcsin √a), adder is an in-place ripple-carry adder over bits-bit integers, and qsvt maps phases or x/matrix through block encoding. It omits some parameters such as carry_in and the counting default, but adds formulas and semantics not present in the schema.

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 title and description jointly identify generation of an OpenQASM 3 program for one of four named standard algorithms, including algorithm-specific outputs and verification. The description itself opens as a noun phrase rather than a direct verb, and it does not distinguish this from siblings such as write_circuit, so it is clear but not fully self-contained.

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?

It names run_quantum_circuit as the next step after generation and implies use for the four listed standard algorithms. It gives no explicit when-to-use or when-not-to-use comparison against write_circuit, convert_program, or other generation alternatives, leaving the selection largely to the name and algorithm enum.

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