### The job service's runs are MCP tasks

- **wai-quantum-service:** a client that speaks MCP 2025-11-25 may call `run_quantum_circuit`, `run_quantum_set` and
  `run_on_target` as tasks. `initialize` declares `tasks` (`cancel`, and `requests.tools.call`), and each run's
  `execution.taskSupport` is `optional`.
  - **The task is the job.** Its id is the job's id, answered at once as `working`. A program that does not read makes
    no task: the answer is an error whose `data` is the refusal, with its codes and verdict.
  - **Statuses.** `tasks/get` gives the job as a task: `completed`, `cancelled`, or `failed` for a job that failed or
    that the service interrupted. Its `ttl` is the service's retention.
  - **The result.** `tasks/result` gives `get_quantum_job`'s answer for the ended job, naming the task in its `_meta`.
    Asked early by a client that takes `text/event-stream`, it is an event stream kept open until the job ends.
    Any other client is held up to 50 s, then told to poll.
  - **Cancelling.** `tasks/cancel` cancels the job, and refuses a task that has ended.
  - **Who may read a task.** There is no `tasks/list`: the public service binds a task to no one, and the task's id,
    128 random bits, is what reads it. Where the service takes API keys, a task is its key's alone.

