WAI Quantum job service
REMOTE · WAI.TRANSACTION.SCIENCE
A free quantum job service: OpenQASM 3 run, checked and signed, with no account or key.
Available components
Last scanned (2 hours ago)
Scores higher than 45% of remote servers
Reachable. Last reached 5 Nov 2026.
Category AI and Machine Learning
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security51
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 3 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability68
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 13683 tokens (~350/item across 39 items; 30 tools + 9 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 92% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 30 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_quantum_job” rewrote its description, which is the text the model reads security
- Tool “run_on_target” rewrote its description, which is the text the model reads security
- Tool “run_quantum_circuit” rewrote its description, which is the text the model reads security
- Tool “run_quantum_set” rewrote its description, which is the text the model reads security
- Server version: 0.2.1 → 0.2.2 functional
- “run_on_target” added an optional parameter “idempotency_key” cosmetic
- “run_quantum_circuit” added an optional parameter “idempotency_key” cosmetic
- “run_quantum_set” added an optional parameter “idempotency_key” cosmetic
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 0
- Schema quality: 294 → 339 ▼ functional
- Server version: 0.2.0 → 0.2.1 functional
- New tool “build_algorithm” functional
- New tool “convert_program” functional
- New tool “gradient_qasm” functional
- New tool “list_components” functional
- New tool “optimize_qasm” functional
- New tool “pulse_check” functional
- New tool “pulse_schedule” functional
- New tool “qaoa_maxcut” functional
- New tool “vqe_ground_state” functional
- “dry_run_quantum_job” added an optional parameter “fabric” cosmetic
- “dry_run_quantum_job” added an optional parameter “params” cosmetic
- “dry_run_quantum_job” added an optional parameter “pulse” cosmetic
- “dry_run_quantum_job” added an optional parameter “source” cosmetic
- “run_on_target” added an optional parameter “fabric” cosmetic
- “run_on_target” added an optional parameter “params” cosmetic
- “run_on_target” added an optional parameter “pulse” cosmetic
- “run_on_target” added an optional parameter “source” cosmetic
- “run_quantum_circuit” added an optional parameter “fabric” cosmetic
- “run_quantum_circuit” added an optional parameter “params” cosmetic
- “run_quantum_circuit” added an optional parameter “pulse” cosmetic
- “run_quantum_circuit” added an optional parameter “source” cosmetic
- “run_quantum_set” added an optional parameter “fabric” cosmetic
- “run_quantum_set” added an optional parameter “params” cosmetic
- “run_quantum_set” added an optional parameter “pulse” cosmetic
- “dry_run_quantum_job” reworded the description of “method” cosmetic
- “run_quantum_circuit” reworded the description of “method” cosmetic
- “run_quantum_set” reworded the description of “method” cosmetic
- “run_on_target” made “qasm” optional cosmetic
- “run_quantum_circuit” made “qasm” optional cosmetic
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
- Stability: unverified → 0.03 ▲ functional
- 29 Oct 26 60
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://wai.transaction.science/quantum-jobs/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=transaction.science | CN=YE1,O=Let's Encrypt,C=US | 16 Sept 2026 | 15 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 5fd43a1a692fa3e5e2334bbe8bf05bc6eab |
| SANs: *.transaction.science, transaction.science | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of wai.transaction.science. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| science. | present | 10030 | 8 | Verified |
| transaction.science. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | interest-cohort=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://wai.transaction.science/quantum-jobs/mcp | Verified | 200 | |
| http (plaintext) | http://wai.transaction.science/quantum-jobs/mcp | Inconclusive | 405 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
build_algorithm Write the program for a standard algorithm, checked against its reference ~399
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.
| Name | Type | Req | Description |
|---|---|---|---|
| a | integer | – | adder: the first addend, prepared. |
| algorithm | – | yes | – |
| amplitude | number | – | amplitude_estimation: the good state's probability a. |
| b | integer | – | adder: the second, which the sum replaces. |
| bits | integer | – | adder: the integers' width. |
| carry_in | boolean | – | adder: a carry in. |
| counting | integer | – | qpe, amplitude_estimation: counting qubits (default 4). |
| matrix | array | – | qsvt: [[a, b], [b, c]], real and symmetric, its eigenvalues within [-1, 1]. |
| phase | number | – | qpe: the phase φ, in turns. |
| phases | array | – | qsvt: φ₀ … φ_d, radians. |
| x | number | – | qsvt: the signal. |
Structured output declared, but exposes no named fields.
No examples provided.
check_equivalent Check two quantum programs are the same circuit ~148
Whether two programs are the same circuit up to a global phase, and how the engine knows: Clifford circuits by their tableaus at any size, others on every basis state to 8 qubits, then by checked rewrites of one followed by the other's inverse to nothing (a proof at any width), then on random product states to 22 (evidence, not proof), otherwise unchecked with the reason. Its `verdict` is that decision; `verification` is the level it reached, as every tool's verdict states it. A check that would take long here is refused with the command that runs it locally.
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | – |
| b | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
classical_shortcuts Find a quantum program's classical shortcuts ~116
Every exact classical route to simulating a program, priced on it: the stabilizer tableau, the cut-rank sum, an exact matrix product state at a rigorous bond bound, the light cone of a one-qubit expectation value, and the state vector. The cheapest is named for each question. A cheap route proves the program classically easy; none being cheap proves nothing about hardness. A thorough search, with a contraction tree, runs locally: wai-quantum shortcuts --thorough.
| Name | Type | Req | Description |
|---|---|---|---|
| qasm | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
compile_qasm Compile a quantum program, every pass checked ~272
Compile an OpenQASM program through named passes (lowering, checked rewrites, phase folding, one- and two-qubit resynthesis, and every rotation off the multiples of π/4 written as a Clifford+T word within its share of the ε budget), each checked where it acts. Returns the compiled program and a certificate sealed with the service's key: each pass's counts before and after, its check and verdict (proof, exact or approximate with its distance), the budget and the bound the distances add to. verify_quantum_receipt checks it. Quote the bound; an approximate compile is not exact. A large or very fine compile is refused with the local command.
| Name | Type | Req | Description |
|---|---|---|---|
| basis | string | – | clifford_t (default): every rotation off the multiples of π/4 written as a Clifford+T word within its share of epsilon; standard: nothing approximated. |
| epsilon | number | – | The most the output may differ from the program in the operator norm, up to a global phase, shared by its rotations (default 1e-6). |
| level | integer | – | 0: lower and approximate; 1 (default): also checked rewrites and phase folding; 2: also one- and two-qubit resynthesis. |
| qasm | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
convert_program Convert a program between formats ~288
Carry a program between OpenQASM 3, QIR (LLVM text, read under its base and adaptive profiles, written as QIR 2.0) and jeff (its Cap'n Proto message, as base64). The answer is the program written, the program as OpenQASM 3 (what every other tool takes), each note with its code (a rotation at an arbitrary angle, a custom gate read by its name, what a format leaves out), what was read and written, and the check: the output read back and held to the program by the equivalence ladder. A construct a reader cannot hold exactly is refused with its code (Q700 to Q721) and its place: quote the code, and never guess around it. A conversion larger than the service takes is refused with the command that runs it locally.
| Name | Type | Req | Description |
|---|---|---|---|
| check | boolean | – | false: write it without the check. |
| from | string | – | Its format; found from its bytes when not given. |
| profile | string | – | QIR's profile to write: by default base when the program's measurements all come at the end, else adaptive. |
| program | string | – | The program's text: OpenQASM or QIR. |
| program_base64 | string | – | The program's bytes as base64: jeff. |
| to | string | yes | The format to write. |
Structured output declared, but exposes no named fields.
No examples provided.
critique_qasm Critique a quantum program ~101
A program's measures, computed by the engine: gates by kind, two-qubit gates, depth and two-qubit depth, T count, whether it is a Clifford circuit, and a fidelity under reference error rates (a model, not a run). Also its smells, each with its lines: gates that cancel, rotations that merge or do nothing, idle qubits, and qubits acted on but never measured.
| Name | Type | Req | Description |
|---|---|---|---|
| qasm | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
dry_run_quantum_job Plan a quantum job or set without running it ~1,515
What the service would do with a job or a set, running nothing: the method and why, the memory, the estimated time and energy (each with its basis: this service's own timings and readings where it has them, otherwise the planner's nominal rate, and no energy figure without readings), the bounds that apply, where you stand against your limits, and whether the service would take it now, or the refusal it would give, with its code. Takes what run_quantum_circuit or run_quantum_set takes. It counts as one submission.
| Name | Type | Req | Description |
|---|---|---|---|
| amplitudes | array | – | Basis states to give amplitudes of: one character per qubit, qubit n-1 first, e.g. "0011". |
| compile | object | – | Compile the program first (as compile_qasm does) and run the compiled circuit: with basis clifford_t it runs bit-exact, and the result's `compiled` states its distance from the program. |
| fabric | – | – | Where the statevector method's state runs: auto (the default: on a member only where the committed measurements show it faster than the host's CPU for the job's size and fusion, otherwise the CPU), c… |
| intent | – | – | What the program must do, checked by the engine with the run: the result's `verdict` states how far it checked (proof, evidence, executed, parsed, refused) and whether the intent holds, sealed by the… |
| method | string | – | Leave as auto unless you need a particular method; pulse runs a pulse program (OpenPulse calibrations on physical qubits, see pulse_schedule) under the pulse options, its error bounded. |
| mitigate | – | – | Mitigate the job's expectation values (or, for readout, its counts) under its own noise: zne (the whole program folded U(U†U)^k and extrapolated), pea (the noise learned as a sparse Pauli–Lindblad mo… |
| noise | object | – | Optional noise, each a probability: depolarizing_1q, depolarizing_2q, amplitude_damping, dephasing (after each gate on its qubits), readout (each measured bit). |
| observables | array | – | Pauli strings to take expectation values of, e.g. ["Z0", "Z0 Z1", "X2 Y3"]. Qubits count from 0. |
| options | object | – | Advanced, per method: max_bond (mps), threshold and max_terms (pauli), fusion (statevector), trajectories. |
| params | object | – | A value for each of the program's parameters (input float theta;, input angle phi;), as {"theta": 0.3}: bound exactly before the program is read; a parameter left without one is refused (J050). In a… |
| programs | array | – | The set's programs: each a program's text, or a job ({"qasm", …}) whose own fields win over the set's. |
| pulse | object | – | A pulse run's options (method "pulse"): the sample period, the levels kept, the tolerance on the stated error, the steps a sample is divided into, each qubit's parameters, static couplings, and ports… |
| qasm | string | – | The program, OpenQASM 3 (or 2), read as the whole language: registers, aliases and slices; the standard gates, `U` and `gphase`; user `gate` definitions and `def` subroutines, inlined; every modifier… |
| repair | – | – | Repair the program first, on the lines its diagnostics flag alone (as repair_qasm does): true, or the choices {"max_iterations": N, "dyadic_bits": K, "sizes": {"q": 3}}. The result's `repaired` holds… |
| seed | integer | – | Sampling seed (default 1); the same job and seed give the same counts. |
| shots | integer | – | Measurement shots. Default 1024 when no observables or amplitudes are asked for. |
| source | object | – | The program in another format, in place of qasm: read to the job's qasm before the job is read (a module that does not read is refused with the reader's code, Q700 to Q721), the request keeping its s… |
| sweep | object | – | Each input of qasm and its values: every combination runs, the names in sorted order, the first varying slowest; an integer input's values are whole numbers. |
| target | – | – | A device target: a built-in target's name (list_targets) or a target document (wai.quantum.target/1). The program is then compiled to its gates, placed where it is most likely to succeed and simulate… |
Structured output declared, but exposes no named fields.
No examples provided.
estimate_resources Estimate a quantum program's fault-tolerant resources ~533
What a fault-tolerant quantum computer would need to run a program. First its logical counts: T gates, Toffolis, rotations (each costed at the T count of its own synthesised Clifford+T word, within its share of the budget), measurements, T depth and total depth, and logical qubits with the ancillas that gates under several controls need. Then, on a physical qubit, the planar model's code distance (the gate-based surface code's model fitted to this engine's own decoders), T factories, physical qubits and runtime, and the frontier of estimates trading qubits for time. Takes a program, or a logical-counts or routine document. Every estimate is sealed in the resource-estimate receipt family, binding the program's digest and the ε budget; the answer's notes state the model's assumptions. Quote the figures with the qubit and the budget, and call them an estimate. Sealed with the service's key; verify_quantum_receipt checks the seals and re-runs it. A program with more than 256 distinct rotation angles, or a budget too fine for its rotations, is refused with the local command.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | number | – | The probability the run may fail, shared by logical errors, distillation and the rotations' synthesis (default 1e-3). |
| calibration | string | – | The gate-based surface code's model: fitted to this engine's exact-matching decoder (default) or its union-find decoder, or the planar model's assumed one. |
| counts | object | – | A logical-counts document instead of a program: numQubits, tCount, rotationCount, rotationDepth, cczCount, ccixCount, measurementCount. |
| export | string | – | Also give the program's counts as a logical-counts or a routine document, under export. |
| max_slowdown | integer | – | The most the frontier slows the program by to need fewer factories (default 256). |
| name | string | – | The program's name in a routine document. |
| qasm | string | – | The program, OpenQASM 3 or 2. Give this, counts or routine. |
| qubit | – | – | The physical qubit: a reference qubit (ns-e4, the default: 50 ns gates, 1e-4 error; us-* are 100 µs gates, meas-* measurement-based), or one described. |
| routine | object | – | A routine document instead of a program (version v1: routines with their ports, resources, children and connections). |
Structured output declared, but exposes no named fields.
No examples provided.
get_quantum_job Read a quantum job ~83
A job's status, and its result when it is done. The service keeps every job across its restarts for its retention (a day on the public service); a job that was running when it stopped is run again once from its request (its interruptions say when), and stopped again it comes back interrupted, with the reason.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gradient_qasm The exact gradient of a Hamiltonian's expectation by a program's parameters ~371
The expectation E = ⟨ψ|H|ψ⟩ of a Hamiltonian at a program's parameters, and its gradient by each parameter, exactly: by adjoint differentiation or the parameter-shift rule on the double-precision state vector (at most 20 qubits, no noise, measurements only at the end). The reader follows each parameter into the gates, so an argument may be any expression of the built-in functions. The answer states its method, that it is f64 and approximate, and a bound on the rounding of the value and of each component (precision.rounding_bound). Sealed with the service's key. Quote the gradient with its bound.
| Name | Type | Req | Description |
|---|---|---|---|
| gradient | – | – | adjoint (the default: one pass forward, one back) or parameter_shift (each gate a parameter moves run at shifted angles: two terms, four for a controlled rotation); both exact up to f64 rounding. |
| hamiltonian | array | yes | A Hamiltonian as Pauli terms summed: "Z0 Z1", "0.5 X2", "-1.5" (a constant), or {"pauli": "Y0 Y1", "coeff": -0.7}; qubit 0 is q[0]. |
| params | object | yes | A value for each parameter, by name, as {"theta": 0.3}: bound exactly. Every parameter the program declares needs one (J050). |
| qasm | string | yes | The program, OpenQASM 3: its parameters declared `input float theta;` (or `input angle theta;`) and used in gates' arguments, through arithmetic, the built-in functions and gate definitions (not unde… |
Structured output declared, but exposes no named fields.
No examples provided.
improve_qasm Improve a quantum program ~62
The program with its smells fixed in its own text (all of them, and each alone), each candidate with its measures and the equivalence check's verdict against the program. A candidate the check finds different is never returned.
| Name | Type | Req | Description |
|---|---|---|---|
| qasm | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_components List the engine's components ~82
Every component the service plans, runs, compiles and converts through: the simulation methods, the compiler passes, the noise channels and the program formats, each with its version, its origin and the BLAKE3 digest of its descriptor, which is the identity a result is sealed with. The service runs the built-ins alone and never loads a component from a request.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_targets List the device targets ~69
The device targets the service knows by name: synthetic, made up in the shapes of published formats, each with its qubits, pairs, the gates a program compiles to, the spread of its T1 and readout errors, and its hash. A job may give its own target document instead.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
optimize_qasm Minimise a Hamiltonian's expectation over a program's parameters ~515
Minimise E = ⟨ψ|H|ψ⟩ over a program's parameters from the given params, deterministically: gradient descent with a fixed step, Adam, or SPSA from a seeded stream (at most 2000 steps). Every step's parameters and value (and gradient, or SPSA's perturbation and estimate) are listed, each step a link of a digest chain from the request, best and final given; the same request gives the same bytes on every platform. Sealed with the service's key: the receipt binds the program, every step, the method and the seed, and verify_quantum_result (or wai-quantum verify) re-runs it. A minimum found is a minimum along this path, not a proof of the global one.
| Name | Type | Req | Description |
|---|---|---|---|
| gradient | – | – | adjoint (the default: one pass forward, one back) or parameter_shift (each gate a parameter moves run at shifted angles: two terms, four for a controlled rotation); both exact up to f64 rounding. |
| hamiltonian | array | yes | A Hamiltonian as Pauli terms summed: "Z0 Z1", "0.5 X2", "-1.5" (a constant), or {"pauli": "Y0 Y1", "coeff": -0.7}; qubit 0 is q[0]. |
| optimizer | – | – | gradient_descent (θ ← θ − step·∇E), adam (default; beta1, beta2, epsilon), or spsa (two evaluations a step along a ±1 perturbation from the seeded stream; c, A, alpha, gamma). |
| params | object | yes | A value for each parameter, by name, as {"theta": 0.3}: bound exactly. Every parameter the program declares needs one (J050). |
| qasm | string | yes | The program, OpenQASM 3: its parameters declared `input float theta;` (or `input angle theta;`) and used in gates' arguments, through arithmetic, the built-in functions and gate definitions (not unde… |
| seed | integer | – | SPSA's seed (default 1). |
| step_size | number | – | The step (gradient descent 0.1, Adam 0.05) or SPSA's gain a (0.2). |
| steps | integer | – | Steps to take (default 100). |
Structured output declared, but exposes no named fields.
No examples provided.
pulse_check Check a pulse run by running it again ~144
Check a pulse job as a host returned it ({"request", "result"}, the result with its receipt): the receipt's signature, the program's digest against the request's text, and the request run again here with the result held to the one given field by field (the density matrix's digest among them), each difference named. A pulse run is the same bits on every platform, so a result that does not reproduce was not made from that request by this engine. Sealed with the service's key. Quote `verified` and the statement.
| Name | Type | Req | Description |
|---|---|---|---|
| request | object | yes | The pulse job's request. |
| result | object | yes | Its result, with its receipt. |
Structured output declared, but exposes no named fields.
No examples provided.
pulse_schedule Read a pulse program into its schedule ~328
Read a pulse program (OpenPulse calibrations: ports, frames, waveforms, play, delay, shift_phase, set_phase, shift_frequency, set_frequency, captures and barriers) into its schedule on frames: every instruction at its sample, each waveform's samples (gaussian, drag, gaussian_square, constant, sech, sine, or explicit), each gate call with the samples its calibration spans, and the digests a pulse run's receipt binds (the program, its calibrations, the schedule). Durations are whole samples of dt (pulse.dt_ns, default 0.5 ns) or refused. A construct the reader does not take is refused with a Q code and its line. Sealed with the service's key. To run it, give the program to run_quantum_circuit with method "pulse".
| Name | Type | Req | Description |
|---|---|---|---|
| pulse | object | – | A pulse run's options (method "pulse"): the sample period, the levels kept, the tolerance on the stated error, the steps a sample is divided into, each qubit's parameters, static couplings, and ports… |
| qasm | string | yes | A pulse program: OpenQASM 3 with `defcalgrammar "openpulse";`, `cal` blocks declaring ports (d0 drives qubit 0, m0 is its measurement port, a0 its acquisition port), frames (newframe(port, frequency… |
Structured output declared, but exposes no named fields.
No examples provided.
qaoa_maxcut Solve Max-Cut on a graph by QAOA ~352
Max-Cut by the quantum approximate optimisation algorithm: the program (|+⟩ⁿ, then for each layer rzz(gamma·w) on every edge and rx(2·beta) on every qubit) and its cost Hamiltonian built from the graph (at most 20 vertices, 16 layers), optimised as optimize_qasm does from the params or a linear ramp, and read against the maximum cut found by brute force: the expected cut and its ratio to the maximum, the likeliest assignment and whether it is optimal, and the probability of an optimal one. Sealed with the service's key.
| Name | Type | Req | Description |
|---|---|---|---|
| gradient | – | – | adjoint (the default: one pass forward, one back) or parameter_shift (each gate a parameter moves run at shifted angles: two terms, four for a controlled rotation); both exact up to f64 rounding. |
| graph | object | yes | – |
| layers | integer | – | QAOA's p (default 1). |
| optimizer | – | – | gradient_descent (θ ← θ − step·∇E), adam (default; beta1, beta2, epsilon), or spsa (two evaluations a step along a ±1 perturbation from the seeded stream; c, A, alpha, gamma). |
| params | object | – | gamma_0, beta_0, … to start from. |
| seed | integer | – | SPSA's seed (default 1). |
| step_size | number | – | The step (gradient descent 0.1, Adam 0.05) or SPSA's gain a (0.2). |
| steps | integer | – | Steps to take (default 100). |
Structured output declared, but exposes no named fields.
No examples provided.
qasm_diagnostics The reader's diagnostic codes ~128
Every code the OpenQASM reader gives (each refusal and warning carries one, as `[Q103]` at the end of its message): its outcome (refused, lowered, carried, preserved or warned) and its meaning; and beside them, under job_codes, the codes of what is asked of a program (`[J011]`: the request, the method, an intent, a repair, the host). A code never changes meaning once released. Give `code` for one of either.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | One code, as Q103 or J011. |
Structured output declared, but exposes no named fields.
No examples provided.
qec_code Show an error-correcting code and certify its distance ~326
Show an error-correcting code and certify its distance: its checks (Z-type: they see X errors) and stabilizers (X-type), k counted by rank, a layout to draw it, the decoders it admits, and its distance certificate. In each sector the certificate gives the least weight of a logical found, a witness of that weight, and every lighter support ruled out by an exhaustive search over connected supports (a bivariate-bicycle code's translations checked as symmetries before use), re-checkable node for node. Give `certificate` to check one: its witnesses and the search run again. Sealed with the service's key. Quote the certificate's distance and its reading; a search stopped by `bound` settles nothing past it.
| Name | Type | Req | Description |
|---|---|---|---|
| bound | integer | – | The heaviest support to search (default the code's nominal distance). |
| certificate | object | – | A certificate (wai.quantum.distance/1) to check against the code. |
| certify | boolean | – | Certify the distance (default true). |
| code | – | yes | A code by name: surface:D (the rotated surface code, odd D from 3 to 15), toric:L (2 to 12), steane, color:D (the triangular 6.6.6 colour code, odd D from 3 to 15), bb:72, bb:90, bb:108, bb:144 (or g… |
Structured output declared, but exposes no named fields.
No examples provided.
qec_decode Decode a syndrome or a circuit's detectors ~618
Decode with the engine's decoders. At code capacity, give `code` and a `syndrome` (the violated checks) or an `error` (the flipped qubits: its syndrome is taken and its residual judged, logical or not): matching (exact) and union_find for codes whose qubits sit in at most two checks; color for colour codes (restriction to matching on the three restricted lattices, lifted at each colour, completed below half the distance by an exact search); relay_bp for any code (it can stall on a degenerate error of a topological code, and then says it did not converge); search for the lightest error with the syndrome up to max_weight. At circuit level, give `memory` ({distance, rounds, p}: the rotated surface-code memory experiment), `circuit` (the circuit text: tags, Pauli-target observables and coordinates read) or `model` (detector error model text, decompositions with ^ read), with the fired `detectors` (the prediction: which observables flipped) or `shots` (sampled and decoded: the failure rate and its standard error): matching (exact), correlated (exact matching twice through the model's decomposed faults, the second answer kept only when the model's mechanisms explain it more cheaply), union_find, bp_osd, or window (a sliding window: `window` {commit, buffer} rounds; every edge set below half the distance is corrected once the buffer is at least (d + 1)/2). Sealed with the service's key.
| Name | Type | Req | Description |
|---|---|---|---|
| circuit | string | – | A noisy Clifford circuit in the circuit text. |
| code | – | – | A code by name: surface:D (the rotated surface code, odd D from 3 to 15), toric:L (2 to 12), steane, color:D (the triangular 6.6.6 colour code, odd D from 3 to 15), bb:72, bb:90, bb:108, bb:144 (or g… |
| decoder | string | – | The decoder (default: matching, or color for a colour code, relay_bp for a bivariate-bicycle code). |
| detectors | array | – | The detectors that fired. |
| error | array | – | The flipped qubits, by index. |
| max_weight | integer | – | search: the heaviest error to try. |
| memory | object | – | The rotated surface-code memory experiment at circuit level. |
| model | string | – | A detector error model in its text. |
| seed | integer | – | The sampling seed (default 1). |
| shots | integer | – | Sample this many shots of the circuit and decode each. |
| syndrome | array | – | The violated checks, by index. |
| window | object | – | window: rounds each window commits and the rounds after them it sees. |
Structured output declared, but exposes no named fields.
No examples provided.
qec_threshold Measure logical failure rates over distances ~230
Measure logical failure rates over distances and physical error rates: family surface at circuit level (decoders matching, correlated or union_find; the code model P(d) = a·(p/p*)^((d+1)/2) per round fitted to the points), or color, toric or surface_capacity at code capacity. Each point gives its shots, failures, rate and standard error; below_threshold says, at each p, whether every larger distance failed less. Sealed with the service's key. Report rates with their errors: a crossing measured on few shots is not a threshold.
| Name | Type | Req | Description |
|---|---|---|---|
| decoder | string | – | surface: the decoder (default matching). |
| distances | array | – | Odd distances (default 3, 5, 7). |
| family | string | – | surface (circuit level, the default) or a code at code capacity. |
| p | array | – | Physical error rates. |
| rounds | integer | – | surface: rounds (default the distance). |
| seed | integer | – | – |
| shots | integer | – | Shots at each point (default 10000). |
Structured output declared, but exposes no named fields.
No examples provided.
quantum_circuit_examples Ready-to-run quantum examples ~88
Worked examples, each a complete job (OpenQASM program and arguments) with what it shows: a Bell pair, a rotation, QAOA, noise, a 1000-qubit GHZ state, 100-qubit dynamics, 200 qubits as a matrix product state. Pass an example's job to run_quantum_circuit as it is, or adapt it.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
quantum_service_info What the quantum service can do ~57
The methods with their qubit limits and what each answers, the accuracy classes, the per-client limits, the current load, how jobs are kept and metered, the receipt keys, and the conventions (bit order, Pauli strings).
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
repair_qasm Repair a quantum program on its flagged lines ~293
Repair a program the reader refuses, changing only the lines its diagnostics flag. The engine makes the fixes that are mechanical (a missing `;`, an undeclared register's size, a measurement with no target, an unbounded while given the bound chosen, an angle the bit-exact method refuses rounded to the bits chosen with its rounding stated), and holds a fix you propose (`proposed`) to the flagged lines: any change to another line is rejected (J021) and nothing is changed. Returns the repaired program, each repair with its code and every line it changed, what needs a person with the reader's advice, and the verdict.
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics | array | – | Codes you saw that reading the text does not raise (Q500). |
| dyadic_bits | integer | – | Round each angle the bit-exact method refuses (Q500) to the nearest multiple of 2π/2^K. |
| max_iterations | integer | – | The bound for an unbounded `while` on measured bits (Q310), as the person chose it. |
| proposed | string | – | Your repaired version: taken only if every changed line is a flagged one (or a line added beside one). |
| qasm | string | yes | – |
| rules | boolean | – | false: only check the proposal. |
| sizes | object | – | A register's size, for one used before it is declared (Q102). |
Structured output declared, but exposes no named fields.
No examples provided.
run_on_target Run a program as a device would ~1,527
Run an OpenQASM program as it would run on a device target: compiled exactly to its gates, placed on its most reliable qubits and routes (the expected success given), checked against the circuit, and simulated under the noise its calibration gives, on the density matrix or by trajectories. Counts and expectation values with their distance from the ideal distribution, the noise derived, and a receipt that binds the target's hash. A model of the device, not a run on it. Every angle must be a dyadic multiple of 2π. Waits up to 50 s, as run_quantum_circuit does, and like it, each call is a new job unless it gives idempotency_key.
| Name | Type | Req | Description |
|---|---|---|---|
| amplitudes | array | – | Basis states to give amplitudes of: one character per qubit, qubit n-1 first, e.g. "0011". |
| compile | object | – | Compile the program first (as compile_qasm does) and run the compiled circuit: with basis clifford_t it runs bit-exact, and the result's `compiled` states its distance from the program. |
| fabric | – | – | Where the statevector method's state runs: auto (the default: on a member only where the committed measurements show it faster than the host's CPU for the job's size and fusion, otherwise the CPU), c… |
| idempotency_key | string | – | A key of your making that names this run, so that a call sent again is not a second job: the same key with the same arguments answers with the job it names, for as long as the job is kept, rather tha… |
| intent | – | – | What the program must do, checked by the engine with the run: the result's `verdict` states how far it checked (proof, evidence, executed, parsed, refused) and whether the intent holds, sealed by the… |
| mitigate | – | – | Mitigate the job's expectation values (or, for readout, its counts) under its own noise: zne (the whole program folded U(U†U)^k and extrapolated), pea (the noise learned as a sparse Pauli–Lindblad mo… |
| noise | object | – | Optional noise, each a probability: depolarizing_1q, depolarizing_2q, amplitude_damping, dephasing (after each gate on its qubits), readout (each measured bit). |
| observables | array | – | Pauli strings to take expectation values of, e.g. ["Z0", "Z0 Z1", "X2 Y3"]. Qubits count from 0. |
| options | object | – | Advanced, per method: max_bond (mps), threshold and max_terms (pauli), fusion (statevector), trajectories. |
| params | object | – | A value for each of the program's parameters (input float theta;, input angle phi;), as {"theta": 0.3}: bound exactly before the program is read; a parameter left without one is refused (J050). In a… |
| pulse | object | – | A pulse run's options (method "pulse"): the sample period, the levels kept, the tolerance on the stated error, the steps a sample is divided into, each qubit's parameters, static couplings, and ports… |
| qasm | string | – | The program, OpenQASM 3 (or 2), read as the whole language: registers, aliases and slices; the standard gates, `U` and `gphase`; user `gate` definitions and `def` subroutines, inlined; every modifier… |
| repair | – | – | Repair the program first, on the lines its diagnostics flag alone (as repair_qasm does): true, or the choices {"max_iterations": N, "dyadic_bits": K, "sizes": {"q": 3}}. The result's `repaired` holds… |
| seed | integer | – | Sampling seed (default 1); the same job and seed give the same counts. |
| shots | integer | – | Measurement shots. Default 1024 when no observables or amplitudes are asked for. |
| source | object | – | The program in another format, in place of qasm: read to the job's qasm before the job is read (a module that does not read is refused with the reader's code, Q700 to Q721), the request keeping its s… |
| target | – | yes | A device target: a built-in target's name (list_targets) or a target document (wai.quantum.target/1). The program is then compiled to its gates, placed where it is most likely to succeed and simulate… |
Structured output declared, but exposes no named fields.
No examples provided.
run_quantum_circuit Run a quantum circuit ~1,656
Run an OpenQASM program and return measurement counts, Pauli expectation values and/or amplitudes. The service chooses the method (bit-exact or double-precision state vector up to 32 qubits, single precision on a GPU to 33, stabilizer tableau for Clifford circuits up to 32768 qubits, matrix product states up to 4096, sparse Pauli dynamics for expectation values up to 1024 with an error bound, an exact density matrix or trajectories for noise), reports why and how accurate, and signs the result. Give `intent` (an exact distribution, or a reference program it must equal or whose state it must prepare) and the engine checks it with the run. Every answer carries `verdict`: the level the engine checked to (proof, evidence, executed, parsed, refused), whether the intent holds and a plain statement, sealed in the receipt. Waits up to 50 s; a longer job answers with status running and an id for get_quantum_job. Each call is a new job unless it gives idempotency_key, which makes sending it again safe.
| Name | Type | Req | Description |
|---|---|---|---|
| amplitudes | array | – | Basis states to give amplitudes of: one character per qubit, qubit n-1 first, e.g. "0011". |
| compile | object | – | Compile the program first (as compile_qasm does) and run the compiled circuit: with basis clifford_t it runs bit-exact, and the result's `compiled` states its distance from the program. |
| fabric | – | – | Where the statevector method's state runs: auto (the default: on a member only where the committed measurements show it faster than the host's CPU for the job's size and fusion, otherwise the CPU), c… |
| idempotency_key | string | – | A key of your making that names this run, so that a call sent again is not a second job: the same key with the same arguments answers with the job it names, for as long as the job is kept, rather tha… |
| intent | – | – | What the program must do, checked by the engine with the run: the result's `verdict` states how far it checked (proof, evidence, executed, parsed, refused) and whether the intent holds, sealed by the… |
| method | string | – | Leave as auto unless you need a particular method; pulse runs a pulse program (OpenPulse calibrations on physical qubits, see pulse_schedule) under the pulse options, its error bounded. |
| mitigate | – | – | Mitigate the job's expectation values (or, for readout, its counts) under its own noise: zne (the whole program folded U(U†U)^k and extrapolated), pea (the noise learned as a sparse Pauli–Lindblad mo… |
| noise | object | – | Optional noise, each a probability: depolarizing_1q, depolarizing_2q, amplitude_damping, dephasing (after each gate on its qubits), readout (each measured bit). |
| observables | array | – | Pauli strings to take expectation values of, e.g. ["Z0", "Z0 Z1", "X2 Y3"]. Qubits count from 0. |
| options | object | – | Advanced, per method: max_bond (mps), threshold and max_terms (pauli), fusion (statevector), trajectories. |
| params | object | – | A value for each of the program's parameters (input float theta;, input angle phi;), as {"theta": 0.3}: bound exactly before the program is read; a parameter left without one is refused (J050). In a… |
| pulse | object | – | A pulse run's options (method "pulse"): the sample period, the levels kept, the tolerance on the stated error, the steps a sample is divided into, each qubit's parameters, static couplings, and ports… |
| qasm | string | – | The program, OpenQASM 3 (or 2), read as the whole language: registers, aliases and slices; the standard gates, `U` and `gphase`; user `gate` definitions and `def` subroutines, inlined; every modifier… |
| repair | – | – | Repair the program first, on the lines its diagnostics flag alone (as repair_qasm does): true, or the choices {"max_iterations": N, "dyadic_bits": K, "sizes": {"q": 3}}. The result's `repaired` holds… |
| seed | integer | – | Sampling seed (default 1); the same job and seed give the same counts. |
| shots | integer | – | Measurement shots. Default 1024 when no observables or amplitudes are asked for. |
| source | object | – | The program in another format, in place of qasm: read to the job's qasm before the job is read (a module that does not read is refused with the reader's code, Q700 to Q721), the request keeping its s… |
| target | – | – | A device target: a built-in target's name (list_targets) or a target document (wai.quantum.target/1). The program is then compiled to its gates, placed where it is most likely to succeed and simulate… |
Structured output declared, but exposes no named fields.
No examples provided.
run_quantum_set Run a set of quantum programs, or one over a grid ~1,380
Run several OpenQASM programs as one set (`programs`: each a program's text or a job), or one program over a grid of its inputs (`qasm` with `sweep`, as {"theta": [0.1, 0.2], "n": [2, 3]}: every combination; integer inputs written out, float and angle inputs bound to the double given). The set's other fields (shots, observables, seed, intent, …) apply to every item. Each item gets its own result and receipt, each stating its verdict, and one receipt over the set binds every item through a Merkle root; verify_quantum_receipt checks it whole. At most 100 items, run one after another in one job. Waits up to 50 s; a longer set answers with status running and an id for get_quantum_job. Each call is a new job unless it gives idempotency_key, which makes sending it again safe.
| Name | Type | Req | Description |
|---|---|---|---|
| amplitudes | array | – | Basis states to give amplitudes of: one character per qubit, qubit n-1 first, e.g. "0011". |
| compile | object | – | Compile the program first (as compile_qasm does) and run the compiled circuit: with basis clifford_t it runs bit-exact, and the result's `compiled` states its distance from the program. |
| fabric | – | – | Where the statevector method's state runs: auto (the default: on a member only where the committed measurements show it faster than the host's CPU for the job's size and fusion, otherwise the CPU), c… |
| idempotency_key | string | – | A key of your making that names this run, so that a call sent again is not a second job: the same key with the same arguments answers with the job it names, for as long as the job is kept, rather tha… |
| intent | – | – | What the program must do, checked by the engine with the run: the result's `verdict` states how far it checked (proof, evidence, executed, parsed, refused) and whether the intent holds, sealed by the… |
| method | string | – | Leave as auto unless you need a particular method; pulse runs a pulse program (OpenPulse calibrations on physical qubits, see pulse_schedule) under the pulse options, its error bounded. |
| mitigate | – | – | Mitigate the job's expectation values (or, for readout, its counts) under its own noise: zne (the whole program folded U(U†U)^k and extrapolated), pea (the noise learned as a sparse Pauli–Lindblad mo… |
| noise | object | – | Optional noise, each a probability: depolarizing_1q, depolarizing_2q, amplitude_damping, dephasing (after each gate on its qubits), readout (each measured bit). |
| observables | array | – | Pauli strings to take expectation values of, e.g. ["Z0", "Z0 Z1", "X2 Y3"]. Qubits count from 0. |
| options | object | – | Advanced, per method: max_bond (mps), threshold and max_terms (pauli), fusion (statevector), trajectories. |
| params | object | – | A value for each of the program's parameters (input float theta;, input angle phi;), as {"theta": 0.3}: bound exactly before the program is read; a parameter left without one is refused (J050). In a… |
| programs | array | – | The set's programs: each a program's text, or a job ({"qasm", …}) whose own fields win over the set's. |
| pulse | object | – | A pulse run's options (method "pulse"): the sample period, the levels kept, the tolerance on the stated error, the steps a sample is divided into, each qubit's parameters, static couplings, and ports… |
| qasm | string | – | With sweep: the program, which declares the inputs the sweep gives values (`input uint n;`, `input float theta;`, `input angle phi;`). |
| repair | – | – | Repair the program first, on the lines its diagnostics flag alone (as repair_qasm does): true, or the choices {"max_iterations": N, "dyadic_bits": K, "sizes": {"q": 3}}. The result's `repaired` holds… |
| seed | integer | – | Sampling seed (default 1); the same job and seed give the same counts. |
| shots | integer | – | Measurement shots. Default 1024 when no observables or amplitudes are asked for. |
| sweep | object | – | Each input of qasm and its values: every combination runs, the names in sorted order, the first varying slowest; an integer input's values are whole numbers. |
| target | – | – | A device target: a built-in target's name (list_targets) or a target document (wai.quantum.target/1). The program is then compiled to its gates, placed where it is most likely to succeed and simulate… |
Structured output declared, but exposes no named fields.
No examples provided.
show_target Show a device target ~102
A device target's qubits, pairs, native gates with the spread of their errors and durations, its calibration snapshot and its hash; with view, each qubit's place for drawing its coupling map with its readout and one-qubit errors, and each pair's two-qubit error. Give a built-in target's name or a target document.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | yes | A built-in target's name, or a target document. |
| view | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
verify_quantum_receipt Verify a result's receipt ~91
Whether a result's receipt (an Ed25519 signature by the service) seals exactly that request and that result. Pass the job's own `request` (as run_quantum_circuit or get_quantum_job returns it: a run here asks for its verdict, so the request it seals says so) and its result.
| Name | Type | Req | Description |
|---|---|---|---|
| request | object | yes | – |
| result | object | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
vqe_ground_state Find a Hamiltonian's ground energy by the variational eigensolver ~516
The variational eigensolver: an ansatz (the program given as qasm with params, or ansatz {"layers": L}: layers of ry and rz on every qubit and a ring of cx, its parameters t0, t1, … from 0.1) optimised on the Hamiltonian as optimize_qasm does. At most 8 qubits the answer sets the energy found beside the exact ground energy by diagonalisation (reference.ground_energy and gap); the energy found is never below it. Sealed with the service's key. Report the gap: an ansatz that cannot reach the ground state stops above it.
| Name | Type | Req | Description |
|---|---|---|---|
| ansatz | object | – | The built-in ansatz in place of qasm (layers default 2, qubits the Hamiltonian's). |
| gradient | – | – | adjoint (the default: one pass forward, one back) or parameter_shift (each gate a parameter moves run at shifted angles: two terms, four for a controlled rotation); both exact up to f64 rounding. |
| hamiltonian | array | yes | A Hamiltonian as Pauli terms summed: "Z0 Z1", "0.5 X2", "-1.5" (a constant), or {"pauli": "Y0 Y1", "coeff": -0.7}; qubit 0 is q[0]. |
| optimizer | – | – | gradient_descent (θ ← θ − step·∇E), adam (default; beta1, beta2, epsilon), or spsa (two evaluations a step along a ±1 perturbation from the seeded stream; c, A, alpha, gamma). |
| params | object | – | A value for each parameter, by name, as {"theta": 0.3}: bound exactly. Every parameter the program declares needs one (J050). |
| qasm | string | – | The program, OpenQASM 3: its parameters declared `input float theta;` (or `input angle theta;`) and used in gates' arguments, through arithmetic, the built-in functions and gate definitions (not unde… |
| seed | integer | – | SPSA's seed (default 1). |
| step_size | number | – | The step (gradient descent 0.1, Adam 0.05) or SPSA's gain a (0.2). |
| steps | integer | – | Steps to take (default 100). |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the WAI Quantum job service MCP server?
WAI Quantum job service is a hosted endpoint at https://wai.transaction.science/quantum-jobs/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · wai.transaction.science
claude mcp add --transport http science-transaction-wai-quantum-jobs 'https://wai.transaction.science/quantum-jobs/mcp'
What is the WAI Quantum job service MCP server?
WAI Quantum job service is an MCP server listed in the public MCP registry as science.transaction.wai/quantum-jobs. A free quantum job service: OpenQASM 3 run, checked and signed, with no account or key. This page covers its hosted endpoint (https://wai.transaction.science/quantum-jobs/mcp).
Is the WAI Quantum job service MCP server safe to use?
WAI Quantum job service scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the WAI Quantum job service MCP server expose?
WAI Quantum job service exposes 30 tools: run_quantum_circuit, run_quantum_set, dry_run_quantum_job, get_quantum_job, verify_quantum_receipt, and 25 more. Their descriptions and schemas cost roughly 12,390 tokens of context every time the server is loaded.
Does the WAI Quantum job service MCP server require authentication?
No. We connected to WAI Quantum job service without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the WAI Quantum job service MCP server still maintained?
WAI Quantum job service is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.