Skip to main content
Glama

Preflight an App Review submission

preflight_submission
Read-onlyIdempotent

Run a read-only go/no-go checklist before App Store submission: verify build, version, export compliance, notes, review state, and IAPs, returning pass/fail/warn with fixes.

Instructions

Run the full go/no-go checklist before submitting a version to App Review and return pass/fail/warn per check with a concrete fix. Self-contained: it already checks build processing and version state, so call it first and alone for readiness questions and before any submit. Checks: version exists and is editable; build processed, VALID and attached; export compliance answered; What's New present in every locale and free of banned claims; App Review notes and contact present; in-app purchases in READY_TO_SUBMIT attached or not; no other version stuck in review; local build number (AppVersion.xcconfig) not behind App Store Connect; release commit is an ancestor of main. Use for 'is 2.88 ready to submit?', 'preflight build 4', 'what's blocking the release?'. Read-only; never submits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
app_idNoNumeric Apple app id (the number in the App Store URL). Omit to use the server default.
commitNoCommit sha, tag or branch the build was archived from. Omit for HEAD.
versionYesMarketing version exactly as in App Store Connect (CFBundleShortVersionString), e.g. '2.88' or '2.4.0'. Not the build number.
repo_pathNoAbsolute path of the app's git repository for the local checks. Omit to use the server default.
build_numberNoBuild number (CFBundleVersion), e.g. '3'. Omit to use the newest upload.
xcconfig_pathNoPath of AppVersion.xcconfig relative to the repo. Omit to auto-discover.
expected_iap_product_idsNoProduct ids that must ship with this version; fails if any is not attached.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoread_only
app_idYes
checksYes
failedYes
passedYes
warnedYes
skippedYes
verdictYesblocked if any check failed; ready_with_warnings if any warned.
versionYes
blockingNoIds of failed checks.
build_numberYes
generated_atYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: it returns 'pass/fail/warn per check with a concrete fix,' it is self-contained (subsumes build processing and version state checks), and it 'never submits.' It does not discuss latency, auth, or failure modes, keeping it just short of a 5.

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

Conciseness4/5

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

Front-loaded with purpose and the self-contained/call-first guidance, then a scannable semicolon-delimited check list, then concrete usage examples. The check enumeration is long but each entry carries a distinct gate, so it earns its space; only minor trimming is possible.

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

Completeness5/5

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

With an output schema present, the description needn't explain return values, and it still conveys the return shape (pass/fail/warn per check plus fix). Combined with 100% parameter coverage and rich annotations, an agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description meaningfully connects checks to parameters it does not otherwise name: the local build-number check tied to AppVersion.xcconfig, the release commit ancestor check, and the IAP attachment check. This adds mapping context beyond the schema's own field docs.

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?

States a specific verb ('Run the full go/no-go checklist before submitting') and resource ('a version to App Review'), and enumerates exactly what it checks. An agent can immediately distinguish it from check_build_status, check_version_state, and submit_for_review because it explicitly claims to encompass the first two and precede the last.

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

Usage Guidelines5/5

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

Explicit routing: 'call it first and alone for readiness questions and before any submit,' plus concrete invocation phrasings ('is 2.88 ready to submit?', 'preflight build 4', 'what's blocking the release?'). It tells the agent both when to use it and when the sibling checks are unnecessary.

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