wai-quantum: the job service on the MCP Registry, and wai-quantum-cli 0.2.1 for the command line's listing #528

Merged
dcharlot merged 2 commits from wai/quantum-mcp-registry into main 2026-10-29 03:19:36 -04:00
10 changed files with 23 additions and 19 deletions

View file

@ -6,6 +6,18 @@ wire format may change and such changes are recorded here.
## Unreleased
### wai-quantum-cli 0.2.1: the command line on the MCP Registry
This release changes no code; `wai-quantum-cli` 0.2.1 is 0.2.0 with the README line the MCP Registry reads.
- **The MCP Registry lists the job service** as `science.transaction.wai/quantum-jobs` 0.2.0, its endpoint
`https://wai.transaction.science/quantum-jobs/mcp`, under the namespace that
`https://wai.transaction.science/.well-known/mcp-registry-auth` proves.
- **The command line's README carries the `mcp-name` line** that the registry reads from a crate's README to
list `science.transaction.wai/quantum`. 0.2.0's README lacks it, and the registry refused that entry.
- **Both `server.json` files drop `repository`**, which the registry refuses for the forge's address.
- The desktop app requires 0.2.1, and both lockfiles that hold `wai-quantum-cli` move with it.
## v0.4.0
### One catalogue of operations, the agent rules on every command, and the service binaries named `wai-*`

View file

@ -1133,7 +1133,7 @@ dependencies = [
[[package]]
name = "wai-quantum-cli"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"clap",
"clap_complete",

View file

@ -1,6 +1,6 @@
[package]
name = "wai-quantum-cli"
version = "0.2.0"
version = "0.2.1"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"

View file

@ -1,5 +1,7 @@
# wai-quantum
<!-- The MCP Registry reads this line from the crate's README to list the server: mcp-name: science.transaction.wai/quantum -->
The command line of the WAI quantum stack. It runs OpenQASM programs on this machine, planned and run by the same engine as the quantum job service ([`wai_quantum::engine`](../wai-quantum/src/engine/mod.rs)), so a job gives the same result here as there. It also sends programs to the service, checks and draws them, verifies receipts, and serves its tools to agents over MCP.
## Installing it
@ -394,7 +396,7 @@ wai-quantum mcp install --file PATH # merged into the JSON configura
{ "mcpServers": { "wai-quantum": { "command": "wai-quantum", "args": ["mcp"] } } }
```
`install` keeps every other entry and key, in its order, and writes the file whole or not at all. It refuses a file that is not a JSON object (one with comments included), and refuses to replace a different `wai-quantum` entry unless you pass `--force`. `--command` gives the full path of `wai-quantum` for a client that does not search your PATH, and `--name`, `--memory-gb` and `--key` shape the entry. [`server.json`](server.json) describes the server in the MCP registry's format; it has not been submitted.
`install` keeps every other entry and key, in its order, and writes the file whole or not at all. It refuses a file that is not a JSON object (one with comments included), and refuses to replace a different `wai-quantum` entry unless you pass `--force`. `--command` gives the full path of `wai-quantum` for a client that does not search your PATH, and `--name`, `--memory-gb` and `--key` shape the entry. [`server.json`](server.json) describes the server in the MCP Registry's format, as `science.transaction.wai/quantum`.
### Instructions for coding agents

View file

@ -387,7 +387,7 @@ wai-quantum mcp install --file PATH # 合并到客户端读取的 JS
{ "mcpServers": { "wai-quantum": { "command": "wai-quantum", "args": ["mcp"] } } }
```
`install` 保留其他所有条目和键及其顺序,并且要么完整写入文件,要么完全不写。它拒绝不是 JSON 对象的文件(包括带注释的文件),并且除非你传入 `--force`,否则拒绝替换另一个不同的 `wai-quantum` 条目。对于不搜索你的 PATH 的客户端,`--command` 给出 `wai-quantum` 的完整路径;`--name`、`--memory-gb` 和 `--key` 用于定制该条目。[`server.json`](server.json) 以 MCP 注册表的格式描述该服务器;它尚未提交。
`install` 保留其他所有条目和键及其顺序,并且要么完整写入文件,要么完全不写。它拒绝不是 JSON 对象的文件(包括带注释的文件),并且除非你传入 `--force`,否则拒绝替换另一个不同的 `wai-quantum` 条目。对于不搜索你的 PATH 的客户端,`--command` 给出 `wai-quantum` 的完整路径;`--name`、`--memory-gb` 和 `--key` 用于定制该条目。[`server.json`](server.json) 以 MCP 注册表的格式描述该服务器,名称为 `science.transaction.wai/quantum`。
### 给编程智能体的说明

View file

@ -3,19 +3,14 @@
"name": "science.transaction.wai/quantum",
"title": "WAI Quantum",
"description": "OpenQASM 3 programs run, checked against their intent and signed on this machine.",
"version": "0.2.0",
"version": "0.2.1",
"websiteUrl": "https://wai.transaction.science/quantum-run/",
"repository": {
"url": "https://git.transaction.science/Transaction-Science/open-standards",
"source": "forgejo",
"subfolder": "wai/wai-quantum-cli"
},
"packages": [
{
"registryType": "cargo",
"registryBaseUrl": "https://crates.io",
"identifier": "wai-quantum-cli",
"version": "0.2.0",
"version": "0.2.1",
"transport": {
"type": "stdio"
},

View file

@ -4143,7 +4143,7 @@ dependencies = [
[[package]]
name = "wai-quantum-cli"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"clap",
"clap_complete",

View file

@ -17,7 +17,7 @@ serde_json = { version = "1", features = ["float_roundtrip"] }
# The assistant's model server, called by the app (a local one by default).
ureq = { version = "3", features = ["json"] }
wai-quantum = { version = "0.7.0", path = "../wai-quantum", default-features = false, features = ["quantum_engine", "quantum_receipt", "quantum_toolchain", "quantum_qec", "quantum_noise"] }
wai-quantum-cli = { version = "0.2.0", path = "../wai-quantum-cli", default-features = false }
wai-quantum-cli = { version = "0.2.1", path = "../wai-quantum-cli", default-features = false }
# The person's own providers: their registry, their credentials in the
# operating system's keychain, and runs on them sealed with the app's key.
wai-quantum-qpu = { version = "0.3.0", path = "../wai-quantum-qpu" }

View file

@ -198,7 +198,7 @@ The six checks answer at once, in the service's own process. Each counts against
A client whose `initialize` says its host draws interactive views (the extension `io.modelcontextprotocol/ui`, version 2026-01-26) gets the engine's answers as views, as from the command line's server: each tool that has one names its `ui://wai-quantum/*` resource, the six views are listed and read, and each answer carries what its view draws in its `_meta`. The service keeps no session, so the client's word is carried in the session id it is given at `initialize` (`wq-views-` and 32 random hex digits, kept nowhere), which a client sends back with every request (`Mcp-Session-Id`); a client that draws no views gets no session id and none of this. For a job still running when the run's wait ends, the result view follows it with `poll_quantum_job`, which the host keeps from the model (`visibility: ["app"]`); a model reads a job with `get_quantum_job`.
`server.json` beside this README describes the endpoint in the MCP registry's format; it has not been submitted. The command line's agent docs (`llms.txt`, `AGENTS.md`, the Agent Skill) list these tools from `wai/wai-quantum-cli/docs/service-mcp.json`, which this crate's tests hold to the live list. After changing a tool, run `WAI_QUANTUM_BLESS=1 cargo test mcp::` here, then regenerate the command line's docs (its README says how).
`server.json` beside this README describes the endpoint in the MCP Registry's format; the registry lists it as `science.transaction.wai/quantum-jobs`. The command line's agent docs (`llms.txt`, `AGENTS.md`, the Agent Skill) list these tools from `wai/wai-quantum-cli/docs/service-mcp.json`, which this crate's tests hold to the live list. After changing a tool, run `WAI_QUANTUM_BLESS=1 cargo test mcp::` here, then regenerate the command line's docs (its README says how).
## Receipts

View file

@ -5,11 +5,6 @@
"description": "A free quantum job service: OpenQASM 3 run, checked and signed, with no account or key.",
"version": "0.2.0",
"websiteUrl": "https://wai.transaction.science/quantum-run/",
"repository": {
"url": "https://git.transaction.science/Transaction-Science/open-standards",
"source": "forgejo",
"subfolder": "wai/wai-quantum-service"
},
"remotes": [
{
"type": "streamable-http",