Skip to main content
Glama

upload_build

Upload Quest APKs or PC build directories to an app release channel, as a draft by default, with optional publish, dry-run preview, and background job status polling.

Instructions

Upload an APK (Quest) or build directory (PC) to an app's release channel with ovr-platform-util. Uploads as a DRAFT unless publish=true. Publishing to LIVE requires confirm_live=true. Use dry_run=true to preview the exact command. Runs in the background: poll upload_status with the returned job_id.

Input Schema

NameRequiredDescriptionDefault
apkYesAbsolute path to the .apk (Quest) or build directory (PC)
appYesApp id, or app name (partial ok) within the selected/given org
obbNoOptional .obb expansion file path
orgNoOrganization id or name; defaults to the selected org
notesNoRelease notes
channelYesALPHA, BETA, RC, LIVE (store), a custom channel name, or a channel id
dry_runNoResolve everything and return the command without uploading
publishNoPublish immediately instead of uploading as a draft
extra_argsNoExtra ovr-platform-util flags, e.g. ["--age-group","TEENS_AND_ADULTS"]
confirm_liveNoRequired (true) to publish directly to LIVE

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so well: it discloses the write operation, draft default, LIVE publishing guardrail, dry-run preview, background execution, and polling via returned job_id. This is the key context an agent needs before invoking a mutating async upload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: first the action, then draft/publish semantics, then live confirmation, then dry-run, then async polling. Every sentence provides useful operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex ten-parameter mutation with no output schema and no annotations, the description covers the critical async flow and safety gates. It does not mention prerequisites such as authentication or org selection, but those are partially handled by schema fields and sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all ten parameters thoroughly. The description reinforces publish, confirm_live, and dry_run behavior, but it does not add substantial meaning beyond the structured field descriptions; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: upload an APK or PC build directory to an app's release channel using ovr-platform-util. It also distinguishes the Quest/PC artifact types, making the tool's role immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational conditions: draft by default, publish=true to publish, confirm_live=true for LIVE, and dry_run=true to preview. It also names upload_status as the required follow-up, though it does not compare against siblings such as copy_build.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.