Reference
runs
Cloud test runs: a troupe test run split into sandboxed shards, each driving its own device. Index · shared schemas · errors.
| Procedure | Summary | REST | MCP tool | Stability |
|---|---|---|---|---|
runs.create | Start a sharded cloud run of a suite: each shard runs troupe test --shard=i/n in a sandbox with its own device budget | POST | — | experimental |
runs.cancel | Cancel a run: unfinished shards end canceled, their sandboxes stop and their devices are released | POST | — | experimental |
runs.wait | Wait until the run ends or timeoutMs passes; a timeout is a normal result (done: false) | GET | — | experimental |
runs.shards | A cloud run's shards, in index order, with their status, devices and outcome | GET | — | experimental |
runs.create
Start a sharded cloud run of a suite: each shard runs troupe test --shard=i/n in a sandbox with its own device budget
| REST | POST /v1/runs/create (input as a JSON body) |
| RPC | /rpc/v2/runs/create |
| MCP | not a tool (a cloud platform procedure; the cloud MCP surface is the curated device tools); hints: none |
| Auth | devices:acquire and runs:report |
| Tenancy | project |
| Troupe Cloud | answered by the control plane |
| Stability | experimental, since 1.0 |
Input:
{
projectId: ProjectId
suite: RunSuiteSource
device: DeviceSpec
shards?: integer // 1–16
workers?: integer // 1–4
projects?: string[] // ≤ 16 items; each 1–128 chars
grep?: string // 1–512 chars
timeoutMs?: integer // 10000–10800000
install?: { artifactId: ArtifactId }[] // ≤ 5 items
}Output:
{ run: CloudRun; suiteUpload?: SignedRequestOut }Errors: U, NOT_FOUND, ORG_SUSPENDED, PROJECT_SUSPENDED, QUOTA_EXCEEDED, CAPACITY_UNAVAILABLE, DEVICE_SPEC_INVALID.
Named types: ArtifactId, CloudRun, DeviceSpec, ProjectId, RunSuiteSource, SignedRequestOut.
runs.cancel
Cancel a run: unfinished shards end canceled, their sandboxes stop and their devices are released
| REST | POST /v1/runs/cancel (input as a JSON body) |
| RPC | /rpc/v2/runs/cancel |
| MCP | not a tool (a cloud platform procedure; the cloud MCP surface is the curated device tools); hints: idempotent, destructive |
| Auth | devices:acquire |
| Tenancy | project |
| Troupe Cloud | answered by the control plane |
| Stability | experimental, since 1.0 |
Input:
{ projectId: ProjectId; runId: RunId }Output:
{ run: CloudRun }Errors: U, NOT_FOUND, CONFLICT.
Named types: CloudRun, ProjectId, RunId.
runs.wait
Wait until the run ends or timeoutMs passes; a timeout is a normal result (done: false)
| REST | GET /v1/runs/wait (input as query parameters) |
| RPC | /rpc/v2/runs/wait |
| MCP | not a tool (a cloud platform procedure; the cloud MCP surface is the curated device tools); hints: read-only, idempotent |
| Auth | runs:read |
| Tenancy | project |
| Troupe Cloud | answered by the control plane |
| Stability | experimental, since 1.0 |
Input:
{ projectId: ProjectId; runId: RunId; timeoutMs?: TimeoutMs }Output:
{ done: boolean; run: CloudRun }Named types: CloudRun, ProjectId, RunId, TimeoutMs.
runs.shards
A cloud run's shards, in index order, with their status, devices and outcome
| REST | GET /v1/runs/shards (input as query parameters) |
| RPC | /rpc/v2/runs/shards |
| MCP | not a tool (a cloud platform procedure; the cloud MCP surface is the curated device tools); hints: read-only, idempotent |
| Auth | runs:read |
| Tenancy | project |
| Troupe Cloud | answered by the control plane |
| Stability | experimental, since 1.0 |
Input:
{ projectId: ProjectId; runId: RunId }Output:
{ shards: CloudShard[] }Named types: CloudShard, ProjectId, RunId.