Troupeby AliveDocsSign in

Reference

Troupe Cloud platform reference

Every procedure of Troupe Cloud's platform contract. Troupe Cloud serves them over REST and RPC with the same mapping as the runtime contract; none is an MCP tool. Troupe Cloud also serves the open runtime contract: see the runtime protocol reference.

Groups

63 procedures in 15 groups; 0 are MCP tools.

GroupPurposeProceduresMCP tools
accountThe caller's own identity, sign-in sessions and re-authentication.60
orgsOrganizations, the tenant. The creator becomes the first owner.50
membersAn org's members and their roles.40
invitationsInvitations to join an org, sent and received.50
projectsProjects inside an org: what device sessions, runs and builds belong to.70
keysOrg API keys: scoped credentials for CI and other non-interactive callers.30
usageMetered usage of an org, per period.10
quotasAn org's limits and what is in use, and the project limits an org admin sets within the org's.20
issuersTrusted-issuer registrations: an external issuer's short-lived JWTs exchanged for Troupe tokens.50
connectionsOIDC connections: signing people in to Troupe with an external OpenID Provider.30
runsCloud test runs: a troupe test run split into sandboxed shards, each driving its own device.40
buildsBuilds of a repository ref or an uploaded tarball: probed in a sandbox, planned with a preset, built on a build machine.50
artifactsWhat builds left: write-once objects with a server-computed SHA-256, installed by id or downloaded.30
uploadsUpload sessions: per-file, create-only, size-bound signed PUTs within a byte budget.20
credentialsStore signing credentials: an App Store Connect key, an Android upload keystore, held by the credentials service; reads return metadata only, and every change is trust-class.80

Also: shared schemas, scopes, errors.

Reading a procedure

  • REST is /v1/<group>/<operation-kebab>: GET with query parameters when the procedure is read-only and its input is flat, otherwise POST with a JSON body. RPC is /rpc/v2/<group>/<operation>. Send Authorization: Bearer <token> and Troupe-Contract: 1.0.
  • MCP: the tool name is the id with . replaced by _. Only procedures marked as tools are served on /mcp and by troupe mcp. The hints become the tool's annotations.
  • Auth lists the scopes a caller must hold, all of them (scopes). Tenancy says what the input names and whose view it must be in.
  • Requires names the capabilities the device must declare; the runtime checks them before it calls the platform and answers CAPABILITY_UNSUPPORTED otherwise.
  • Input is a strict object: an unknown key fails with VALIDATION. ? marks an optional field; comments give defaults and bounds. Output objects are read leniently: unknown keys are kept, and an enum written 'a' | 'b' | … is open, so a client must handle values it does not know.
  • Errors: the letters are the implicit sets (U universal, S session, D drive, L locator, E environment), followed by the extra codes. Every surface carries the same error body (errors).
  • Stability: an experimental procedure may change or disappear in any minor version and is never an MCP tool; a stable one changes only additively within its major.

All procedures

ProcedureRESTAuthMCP toolStability
account.getGET /v1/account/getsession—experimental
account.sessionsGET /v1/account/sessionsaccount:read—experimental
account.revokeSessionPOST /v1/account/revoke-sessionaccount:write—experimental
account.reauthenticatePOST /v1/account/reauthenticateaccount:write—experimental
account.grantsGET /v1/account/grantsaccount:read—experimental
account.revokeGrantPOST /v1/account/revoke-grantaccount:write—experimental
orgs.createPOST /v1/orgs/createaccount:write—experimental
orgs.listGET /v1/orgs/listsession—experimental
orgs.getGET /v1/orgs/getorg:read—experimental
orgs.updatePOST /v1/orgs/updateorg:manage—experimental
orgs.setPlacementScopePOST /v1/orgs/set-placement-scopeorg:manage—experimental
members.listGET /v1/members/listorg:read—experimental
members.updateRolePOST /v1/members/update-roleorg:manage—experimental
members.removePOST /v1/members/removeorg:manage—experimental
members.leavePOST /v1/members/leaveaccount:write—experimental
invitations.createPOST /v1/invitations/createorg:manage—experimental
invitations.listGET /v1/invitations/listorg:read—experimental
invitations.revokePOST /v1/invitations/revokeorg:manage—experimental
invitations.receivedGET /v1/invitations/receivedaccount:read—experimental
invitations.acceptPOST /v1/invitations/acceptaccount:write—experimental
projects.listGET /v1/projects/listprojects:read—experimental
projects.getGET /v1/projects/getprojects:read—experimental
projects.createPOST /v1/projects/createprojects:write—experimental
projects.updatePOST /v1/projects/updateprojects:write—experimental
projects.archivePOST /v1/projects/archiveprojects:write—experimental
projects.resolveGET /v1/projects/resolveprojects:read—experimental
projects.ensurePOST /v1/projects/ensureprojects:write—experimental
keys.createPOST /v1/keys/createkeys:write—experimental
keys.listGET /v1/keys/listkeys:read—experimental
keys.revokePOST /v1/keys/revokekeys:write—experimental
usage.getGET /v1/usage/getusage:read—experimental
quotas.getGET /v1/quotas/getusage:read—experimental
quotas.setProjectPOST /v1/quotas/set-projectorg:manage—experimental
issuers.createPOST /v1/issuers/createorg:manage—experimental
issuers.listGET /v1/issuers/listorg:manage—experimental
issuers.updatePOST /v1/issuers/updateorg:manage—experimental
issuers.suspendPOST /v1/issuers/suspendorg:manage—experimental
issuers.removePOST /v1/issuers/removeorg:manage—experimental
connections.createPOST /v1/connections/createorg:manage—experimental
connections.listGET /v1/connections/listorg:manage—experimental
connections.removePOST /v1/connections/removeorg:manage—experimental
credentials.listGET /v1/credentials/listsigning:use—experimental
credentials.getGET /v1/credentials/getsigning:use—experimental
credentials.uploadAscKeyPOST /v1/credentials/upload-asc-keyorg:manage—experimental
credentials.createAndroidKeystorePOST /v1/credentials/create-android-keystoreorg:manage—experimental
credentials.uploadAndroidKeystorePOST /v1/credentials/upload-android-keystoreorg:manage—experimental
credentials.rotatePOST /v1/credentials/rotateorg:manage—experimental
credentials.updateAllowListPOST /v1/credentials/update-allow-listorg:manage—experimental
credentials.deletePOST /v1/credentials/deleteorg:manage—experimental
runs.createPOST /v1/runs/createdevices:acquire, runs:report—experimental
runs.cancelPOST /v1/runs/canceldevices:acquire—experimental
runs.waitGET /v1/runs/waitruns:read—experimental
runs.shardsGET /v1/runs/shardsruns:read—experimental
builds.createPOST /v1/builds/createbuilds:write—experimental
builds.getGET /v1/builds/getbuilds:read—experimental
builds.listGET /v1/builds/listbuilds:read—experimental
builds.cancelPOST /v1/builds/cancelbuilds:write—experimental
builds.logsGET /v1/builds/logsbuilds:read—experimental
artifacts.listGET /v1/artifacts/listartifacts:read—experimental
artifacts.getGET /v1/artifacts/getartifacts:read—experimental
artifacts.downloadGET /v1/artifacts/downloadartifacts:read—experimental
uploads.grantPOST /v1/uploads/grantbuilds:write—experimental
uploads.completePOST /v1/uploads/completebuilds:write—experimental
esc

    Type to search every page, the protocol reference and the cloud API.