app-publish-mcp
Run an MCP server for App Store Connect and Google Play publishing workflows from an AI assistant.
Apple: inspect and update apps, versions, localizations, app info, categories, age ratings, review details, pricing, availability, and reviews; submit/cancel review.
Apple provisioning/TestFlight: manage bundle IDs, capabilities, certificates, profiles, devices, beta groups and testers; manage IAPs and subscription groups.
Apple assets/builds: upload/delete screenshots and assign builds; README also documents Asset Library uploads/placements and build upload workflows.
Google Play: manage edit sessions (create, validate, commit, discard), app details, listings, country availability, testers, and images.
Google releases: list tracks, create/promote/halt releases, upload AAB/APK, and inspect release statuses.
Google engagement/monetization: list/get/reply to reviews; manage in-app products and subscriptions.
README adds advanced Apple reporting/optimization capabilities: sales/finance/analytics reports, custom product pages, A/B tests, offer codes, accessibility declarations, and phased releases.
Writes affect live store data; APP_PUBLISH_READ_ONLY=true can register read-only tools for monitoring.
Provides tools for managing the lifecycle of Android applications, including uploading bundles/APKs, managing release tracks, and handling store listings.
Manages Apple developer resources such as certificates, provisioning profiles, and devices, alongside comprehensive App Store Connect app management.
Enables management of App Store Connect tasks including version submission, screenshot uploads, metadata localization, and TestFlight beta tester coordination.
Interacts with Google developer APIs to manage app details, releases, in-app products, and customer reviews on the Play Store.
Provides comprehensive tools for Google Play Console operations, including edit lifecycle management, track releases, and responding to user reviews.
Facilitates the submission and management of iOS applications, covering build assignment, review info updates, and store localization.
app-publish-mcp
A unified MCP (Model Context Protocol) server for App Store Connect and Google Play Console. Manage app listings, screenshots, releases, reviews and submissions — all from your AI assistant.
Publishing Boundary
You provide a release-ready, correctly signed Android .aab / .apk or Apple .ipa. The MCP handles supported store-side work from upload through metadata, testing, review submission, and release. It does not compile the app, own signing keys, or replace Xcode, Gradle, or CI.
The first release of a new app still requires manual setup in App Store Connect or Play Console, including developer enrollment, agreements, app records where required, API access, signing, tax and banking details, and policy, privacy, or content declarations. For an existing, fully configured Android app, a signed AAB is usually enough to let the MCP run the update workflow. A Google edit commit only commits the requested changes; store review, managed publishing, or a staged rollout can delay public availability.
Related MCP server: appstore-release-mcp
When to Use
Use this MCP when you need to:
"Update my app's App Store description and keywords" — modify version localizations, app info localizations
"Upload new screenshots for iPhone 16 Pro" — upload to the Asset Library and place images on the version localization
"Submit a new version for review" — create version, assign build, set review info, submit
"Check the status of my app review" — list versions and check review state
"Respond to a user review on Google Play" — list reviews and reply
"Create a phased release on Google Play" — create edit, create release on a track, commit
"Manage TestFlight beta testers" — create groups, invite testers, manage access
"Set up in-app purchases" — create and manage IAPs and subscription groups on both platforms
"Register a new device for development" — manage devices, certificates, and provisioning profiles
Features
Apple App Store Connect (135 tools)
Category | Tools |
App Management |
|
Bundle IDs |
|
Bundle ID Capabilities |
|
Versions |
|
Version Localizations |
|
App Info Localizations |
|
Asset Library |
|
Asset Placements |
|
Legacy Screenshots (deprecated) |
|
Builds |
|
Age Rating |
|
Review Info |
|
Submission |
|
Release |
|
Pricing & Availability |
|
Customer Reviews |
|
Certificates |
|
Provisioning Profiles |
|
Devices |
|
TestFlight Beta Groups |
|
TestFlight Beta Testers |
|
In-App Purchases |
|
Subscription Groups |
|
Accessibility Declarations |
|
Price Points |
|
Offer Codes |
|
Win-Back Offers |
|
Custom Product Pages |
|
Product Page Optimization |
|
Sales & Finance Reports |
|
App Analytics Reports |
|
Review submission workflow |
|
apple_get_pricing follows all manual and automatic price pages. apple_set_price submits the complete manual price schedule, so include every current or future manual entry that must remain; omitted entries may be removed from the schedule.
Apple provisioning resources — Bundle IDs, capabilities, certificates, profiles, and devices — require a Team API key with suitable access. Individual API keys can be used for supported App Store Connect publishing operations, but not for those provisioning resources. TestFlight internal testers are members of your App Store Connect team, not Apple employees.
Google Play Console (53 tools)
Category | Tools |
Edit Lifecycle |
|
App Details |
|
Store Listing |
|
Country Availability |
|
Testers |
|
Images |
|
Tracks & Releases |
|
Bundle / APK |
|
Data Safety |
|
Reviews¹ |
|
In-App Products |
|
Subscriptions |
|
Android Vitals³ |
|
One-time Products² |
|
¹ The Reviews API returns only production-app reviews with comments created or modified within the last 7 days. Ratings without comments and alpha/beta feedback are excluded. pageToken does not extend that window; export CSV from Play Console for older history. Check Reply to reviews permission when troubleshooting, but an empty result alone does not prove a permission problem.
² One-time Products (monetization.onetimeproducts) is Google Play's newer purchase model for buy/rent items, distinct from the older inappproducts API. Inspect each returned purchase-option state and use the dedicated activate/deactivate tools to change it.
³ Vitals use the Play Developer Reporting API. Enable it in the service account's Cloud project and grant the account View app information in Play Console. Saved OAuth tokens created before this scope was added need app-publish-mcp auth google again.
Prompts (2)
Prompt | Description |
| Guided checklist from signed artifact upload through review, release, and publishing-status checks for iOS and/or Android |
| ASO audit that reviews current listing metadata (title, description, keywords, screenshots, localization) and provides actionable improvement recommendations |
Resources (2)
URI | Description |
| Current server configuration — connected accounts, auth methods, tool counts |
| All supported tools grouped by platform with descriptions |
Setup
1. Install
npm install
npm run build2. Apple Credentials
Go to App Store Connect > Keys
Create an API Key with App Manager role (reports need a second key, see Keys and roles)
Download the
.p8fileNote the Key ID and, for team keys, the Issuer ID. For an individual key, set
APPLE_KEY_TYPE=INDIVIDUALand omit the issuer ID.Use a Team API key with suitable access for Bundle ID, certificate, profile, capability, or device tools.
3. Google Credentials
Enable the Google Play Android Developer API, then choose one authentication method:
Service account: Create one in Google Cloud Console, download its JSON key, then invite its email and grant the needed app permissions in Play Console under Users and permissions.
OAuth: Create a Desktop OAuth client, then run:
app-publish-mcp auth google --client-id=YOUR_ID --client-secret=YOUR_SECRETThe OAuth command stores the refresh token in ~/.app-publish-mcp/google.json; the server loads it automatically. You can instead set GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REFRESH_TOKEN explicitly.
4. Configure Environment
cp .env.example .envEdit .env:
APPLE_KEY_ID=YOUR_KEY_ID
APPLE_KEY_TYPE=TEAM
APPLE_ISSUER_ID=YOUR_ISSUER_ID
APPLE_P8_PATH=/path/to/AuthKey.p8
GOOGLE_SERVICE_ACCOUNT_PATH=/path/to/service-account.jsonOptional:
APPLE_VENDOR_NUMBER=YOUR_VENDOR_NUMBER # sales and finance reports
APPLE_REPORTS_KEY_ID=REPORTS_KEY_ID # key for Sales/Finance/Analytics reports
APPLE_REPORTS_P8_PATH=/path/to/AuthKey_REPORTS.p8
APPLE_ADMIN_KEY_ID=ADMIN_KEY_ID # analytics requests and finance/reporting fallback
APPLE_ADMIN_P8_PATH=/path/to/AuthKey_ADMIN.p8
APP_PUBLISH_READ_ONLY=true # register only read tools (list/get/search/query/download, no Google edit creation or deletion)See Keys and roles for the extra keys and Safety for read-only mode.
The server automatically loads .env from the package/project root. Environment variables supplied by the shell or MCP host take precedence. For OAuth variables, see .env.example.
5. Add to Claude Code
Add to ~/.claude/settings.local.json:
{
"mcpServers": {
"app-publish-mcp": {
"command": "node",
"args": ["/path/to/app-publish-mcp/dist/index.js"],
"env": {
"APPLE_KEY_ID": "YOUR_KEY_ID",
"APPLE_KEY_TYPE": "TEAM",
"APPLE_ISSUER_ID": "YOUR_ISSUER_ID",
"APPLE_P8_PATH": "/path/to/AuthKey.p8",
"GOOGLE_SERVICE_ACCOUNT_PATH": "/path/to/service-account.json"
}
}
}
}Keys and roles
Apple decides what an API key may do by its role, so one key is often not enough. A key that can run the listing gets 403 on reports, and a reports key cannot change the listing.
Which Apple role does what
Job | Works with | Fails with |
Listing, screenshots and visuals, custom product pages, A/B tests, versions, review submission, TestFlight, pricing | App Manager, Admin | Sales and Reports, Finance |
Bundle IDs, capabilities, certificates, profiles, devices | Team key with suitable access (Admin covers it) | Individual keys |
| Sales and Reports, Finance, Admin | App Manager ( |
| Finance, Admin | Sales and Reports, App Manager ( |
Reading App Analytics reports | Sales and Reports, Finance, Admin | App Manager ( |
| Admin | Sales and Reports, App Manager ( |
Apple documents the analytics and sales rows in Analytics Reports. Check the key role and app access before using a report endpoint.
Several keys on one server
Set the main key as usual and add optional keys. Each request picks its key by API; the server never retries a refused request with a stronger key.
Request | Key used |
Everything except reports | Main key ( |
Sales reports, reading analytics reports |
|
Finance reports |
|
Creating or deleting an analytics report request |
|
APPLE_REPORTS_ISSUER_ID, APPLE_ADMIN_ISSUER_ID and the matching *_KEY_TYPE default to the main key's values. apple_get_sales_report and apple_get_finance_report also need APPLE_VENDOR_NUMBER (App Store Connect → Payments and Financial Reports).
Recipe: App Analytics without a permanent Admin key
Main key: App Manager.
Create a Sales and Reports key and set
APPLE_REPORTS_KEY_ID/APPLE_REPORTS_P8_PATH.Create a temporary Admin key, set
APPLE_ADMIN_KEY_ID/APPLE_ADMIN_P8_PATH, restart the server and callapple_create_analytics_report_requestonce per app (ONGOING).Revoke the Admin key in App Store Connect and remove the
APPLE_ADMIN_*variables. The request keeps producing reports, and the Sales and Reports key reads them.
Apple generates the first report instances a day or two later and keeps each instance for 35 days. Download them with apple_list_analytics_reports → apple_list_analytics_report_instances → apple_download_analytics_report.
One service account covers publishing and vitals. Enable the Google Play Android Developer API for publishing and the Google Play Developer Reporting API for vitals, and grant the account the needed app permissions in Play Console. Vitals need View app information.
Troubleshooting
Response | Usually means |
| Wrong Key ID, Issuer ID or |
| The key's role cannot do this. Check the role table and add |
| No data for that date or region, e.g. a free app has no finance report. |
| Wrong vendor number, or a |
Google vitals return no rows | Google has no vitals data for the app in that window, which is common for new or low-traffic apps. |
Safety
Most tools change real store data. Know which ones before you let an assistant call them.
Reach users or start Apple review
apple_submit_for_review,apple_release_version,apple_create_phased_release/apple_update_phased_releaseapple_update_experimentwithstarted=truestarts a product page test that real visitors seegoogle_commit_editpublishes everything in the edit;google_create_release,google_promote_releaseandgoogle_halt_releasetake effect on commit
Money and availability
apple_set_price(replaces the whole manual price schedule),apple_create_availability,apple_update_territory_availabilityCreating, changing, activating or deactivating in-app purchases, subscriptions, base plans, one-time products and offer codes
Public text
apple_respond_to_reviewandgoogle_reply_to_reviewpost replies everyone can read
Cannot be undone
Every
apple_delete_*tool,google_delete_listing,google_delete_all_images,google_delete_iap,google_delete_one_time_productapple_revoke_certificate: builds signed with that certificate stop installing
Recommendations
Run a separate read-only server for monitoring and reports:
APP_PUBLISH_READ_ONLY=true. It registers store-read tools, asset polling and Google edit validation. It excludes Google edit creation and deletion: creating a new edit can invalidate that user's existing release draft. For edit-scoped reads supply an existing editId explicitly; the server never creates or cleans it up in this mode. Any value except empty,0,false,nooroffturns it on. Report tools that takeoutputPathstill write that local file, never over an existing one unlessoverwrite=true.Give each key the smallest role that does the job, and revoke temporary Admin keys after use.
On Google Play, change things inside an edit, check them with
google_validate_edit, then commit;google_delete_editdiscards the edit.Keep your MCP client's tool approval on for write tools.
Tested against mocks only: the write tools for custom product pages and product page optimization follow Apple's OpenAPI 4.5.1 schema and are covered by tests, but have not yet been run against a live account. Try them on a test app first.
Usage Examples
Submit assets, custom pages or product page tests
Use apple_create_review_submission to create a draft (or apple_list_review_submissions to find one), then apple_add_review_submission_item for an image/video, custom product page version, or v2 experiment. Inspect apple_get_review_submission, then pass its complete review item IDs to apple_submit_review_submission. Adding items does not submit them; only the last step starts App Review. An interrupted call preserves the submission ID for inspection/retry. Apple controls review eligibility: a first app release needs an app version in the submission; assets assigned to a submitted page/test/version are reviewed with that item. Existing apple_submit_for_review still handles app-version releases.
Report downloads are limited to 32 MiB per response and 64 MiB of decompressed/merged text. Analytics segments are checked against Apple's MD5 when provided; signed URLs are never returned in failures. Saved reports use exclusive creation unless overwrite=true.
Build uploads use a supported MD5 transfer checksum and retain the optional local expectedSha256 artifact-integrity check. This does not imply that Apple's documented SHA-256 checksum algorithm is unsupported.
Upload and arrange Apple screenshots or preview videos
apple_get_asset_library(appId)returns the app's library ID. Useapple_get_asset_specsto select the current spec, compatible placement type and placement group; do not guess device dimensions or group identifiers.apple_upload_assettakesassetLibraryId,mediaType(IMAGEorVIDEO),filePath, andexpectedSpecId. It validates the file extension/size against Apple's specs, uploads all parts, commits, and waits for processing by default. Videos also acceptpreviewFrameTimeCode.If processing times out or fails, retain the returned asset ID and inspect it with
apple_get_asset/apple_wait_for_asset. Do not blindly upload a duplicate.waitForProcessing=falsereturns sooner, but a ready asset is required for placement.apple_create_placementlinks the asset to alocalizationIdusing the selectedplacementTypeandplacementGroup. The defaulttargetTypeisappStoreVersionLocalizations; custom product pages, experiment treatments, and in-app events are also supported. Repeating the same placement reuses it.Read
apple_list_placements, then pass all placement IDs in the desired group order toapple_reorder_placements. In-app events do not support this ordering endpoint.apple_delete_placementremoves a placement only.apple_list_asset_placementsshows everywhere an asset is used;apple_delete_assetrefuses to delete an asset still in use.
Apple deprecated the legacy screenshot endpoints in App Store Connect API 4.5.1. The four existing screenshot tools remain for compatibility; Apple has not announced their shutdown date. Use the Asset Library workflow for new work. Korea age-rating overrides now also support ALL and TWELVE_PLUS.
Header and search visuals, custom product pages, A/B tests
The App Store product page header and the search results visual are Asset Library placements (PRODUCT_PAGE_HEADER_ASSET, APP_STORE_SEARCH_RESULTS_ASSET). Pick the spec with apple_get_asset_specs(placementType=...), upload with apple_upload_asset, then apple_create_placement. The same placements work on custom product page localizations (apple_create_custom_product_page → apple_list_custom_product_page_localizations) and on test treatments (apple_create_experiment → apple_create_experiment_treatment → apple_create_treatment_localization).
Store analytics
apple_create_analytics_report_request asks Apple to start generating App Analytics reports; the first instances appear after 1–2 days. Then apple_list_analytics_reports → apple_list_analytics_report_instances → apple_download_analytics_report (pass outputPath to keep the full file). apple_get_sales_report returns daily units and proceeds. On Android, google_query_vitals returns crash/ANR rates for the latest 28 days by default.
Submit an iOS app update
1. apple_list_apps → get the app ID
2. apple_create_version / apple_update_version and localization tools → prepare version 1.1.0, release settings, and metadata
3. apple_upload_build → upload the signed IPA and wait for import
(or resume with apple_get_build_upload / apple_wait_for_build_upload)
If an ambiguous commit error retains a buildUploadId, inspect it with apple_get_build_upload; when it is AWAITING_UPLOAD or FAILED, delete it with apple_delete_build_upload before uploading again.
4. apple_set_build_encryption → answer export-compliance encryption for the imported build
(`true` can still require a manual encryption declaration, supporting documents, and appEncryptionDeclaration linkage in App Store Connect.)
5. apple_assign_build → attach the imported build to the version
6. apple_update_review_detail and apple_get_age_rating → verify review metadata
7. apple_submit_for_review → submit for App Review
8. For an update (not a first version), optionally configure a seven-day phased release before release.
9. After approval, use apple_release_version only for PENDING_DEVELOPER_RELEASE; then monitor or manage any phased release.Release an Android app
1. google_create_edit → start an edit (or google_get_edit to verify a resumed edit)
2. google_list_bundles / google_list_apks → reuse an artifact already in the edit when possible
3. google_upload_bundle / google_upload_apk → upload only when the artifact is missing
4. Listing tools and google_update_data_safety → apply reviewed store changes as needed
5. google_create_release → create the target-track release with the exact versionCodes set
6. google_validate_edit → check for errors
7. google_commit_edit → commit changes for Play processing
8. google_list_release_statuses → inspect review and publishing state after commitCommitting an edit does not guarantee immediate public availability. Google Play review, managed publishing, and staged rollout settings still apply.
Manage Google Play in-app products
1. google_list_iap → list all products
2. google_create_iap → create a new managed product
3. google_update_iap → update price or description
4. google_delete_iap → remove a productCreate a Google Play subscription
1. google_create_subscription → create the subscription with listings and a
base plan (billing period, grace period, regional pricing in micros).
The base plan is created in DRAFT state.
2. google_activate_subscription_base_plan → flip the base plan to ACTIVE so
it becomes purchasable in the Play Store.
3. google_deactivate_subscription_base_plan → pause sales without deleting
the plan.
4. There is no supported subscription archive operation. Keep all base plans
deactivated when retiring a previously published subscription.Example arguments for google_create_subscription:
{
"packageName": "com.example.app",
"productId": "com.example.app.pro_monthly",
"listings": [
{
"languageCode": "en-US",
"title": "Pro Monthly",
"description": "Unlock all premium features.",
"benefits": ["Ad-free", "Cloud sync", "Priority support"]
}
],
"basePlans": [
{
"basePlanId": "pro-monthly",
"autoRenewing": {
"billingPeriodDuration": "P1M",
"gracePeriodDuration": "P3D",
"accountHoldDuration": "P30D"
},
"regionalConfigs": [
{ "regionCode": "US", "priceMicros": "3990000", "currency": "USD" },
{ "regionCode": "TR", "priceMicros": "99000000", "currency": "TRY" }
]
}
]
}Prices are given in micros (1 USD = 1,000,000 micros) and converted to
the Play API's Money shape (units + nanos) internally. regionsVersion
defaults to 2022/02, which the Play API currently requires when regional
pricing is supplied.
License
MIT
Available Tools
188 toolsapple_add_beta_testers_to_groupC
Add beta testers to a group
| Name | Required | Description | Default |
|---|---|---|---|
| betaGroupId | Yes | Beta Group ID | |
| betaTesterIds | Yes | Array of beta tester IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It only states the action without revealing if testers are appended or replaced, required permissions, or side effects. This is insufficient for a read-mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear and concise sentence, no redundant information. It is appropriately brief for a simple action, though it could include more context without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and zero annotations, the description is minimally complete. It states the action but lacks context about prerequisites, effects, or typical use cases. Adequate but not informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond 'betaGroupId' and 'betaTesterIds'. Baseline score of 3 is appropriate since schema already clarifies the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add beta testers to a group', specifying the verb and resource. It distinguishes from siblings like apple_remove_beta_testers_from_group, but could be more specific about the type of testers (existing vs. new).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool, prerequisites (e.g., testers must exist, group must exist), or alternatives like apple_invite_beta_tester. The description is too minimal for a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_add_review_submission_itemA
Attach an Asset Library image/video, custom product page version, v2 experiment or app version to a draft, without submitting. For an initial app release include the app version; assigned assets are reviewed with their owning item. Retries reconcile an already attached item.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| platform | No | IOS | |
| resourceId | Yes | ||
| resourceType | Yes | ||
| submissionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It usefully discloses two behavioral traits: no submission occurs (state effect) and retries reconcile an already-attached item (idempotency), plus that assigned assets are reviewed with their owning item. It omits permission requirements, error behavior for mismatched resource types, and what the call returns, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and accepted resource types, then the initial-release rule, then the retry guarantee. No filler or restated name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation with no annotations and no output schema, the description covers purpose, one usage condition, and idempotency but leaves parameter meaning and return/error semantics undocumented. Adequate to start, not complete enough to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does map the resourceType enum to human meanings (image/video, custom product page version, v2 experiment, app version) and explains when to use appStoreVersions, but says nothing about appId, submissionId, resourceId, or platform, leaving half the parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Attach") and enumerates the exact resource kinds it accepts, plus the target ("a draft"). The phrase "without submitting" implicitly contrasts with the sibling submit_review_submission, so an agent can differentiate without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"For an initial app release include the app version" gives a real conditional usage hint, and "without submitting" implies this is a preparation step rather than the submission action. But it never explicitly names alternatives (e.g., use apple_submit_review_submission to submit, apple_create_review_submission to create the draft) or states prerequisites as exclusion rules, so guidance stays implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_assign_buildC
Assign a build to an App Store version
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | Build ID | |
| versionId | Yes | App Store Version ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like destructive potential, required permissions, or side effects (e.g., replacing an existing assignment). The description carries the full burden but provides minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no superfluous words. It is appropriately sized for the simple operation it describes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks important context such as whether the version must be in a specific state, what happens if the build is already assigned, or what the tool returns. With no output schema, the agent gains no insight into the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% but the descriptions ('App Store Version ID', 'Build ID') are generic. The tool description adds no additional meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('assign a build') and the resource ('App Store version'). It distinguishes from siblings which handle listing, creating, or deleting, but does not elaborate on scope or preconditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, such as requiring that the version and build exist, or when assignment is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_cancel_submissionA
Cancel an in-review submission (if still possible). Operates on the reviewSubmissions resource created by apple_submit_for_review — sets attributes.canceled=true via PATCH. The legacy appStoreVersionSubmissions DELETE endpoint only applied to submissions created through the retired create-submission flow and does not accept reviewSubmissions IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| submissionId | Yes | Review Submission ID (the ID returned by apple_submit_for_review) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full behavioral burden, and it does substantial work: it discloses the mutation mechanism (PATCH with attributes.canceled=true), the target resource, and that the operation is conditional. It stops short of describing failure behavior when the submission is no longer cancellable, or permission/auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and precondition are front-loaded in the first sentence, with mechanism following. The third sentence about the legacy endpoint is longer than necessary but earns its place by preventing a wrong-endpoint misconception.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no annotations, the description covers what is acted upon and how. The remaining gap is outcome semantics — what the agent should expect if cancellation fails — which an agent would want before calling a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single submissionId parameter is already fully documented in the schema. The description's note that submissionId comes from apple_submit_for_review restates the schema text rather than adding new meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cancel an in-review submission') and names the operation that produces the target resource (apple_submit_for_review). It also distinguishes itself from the legacy appStoreVersionSubmissions DELETE endpoint, which removes ambiguity about which cancellation mechanism applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'if still possible' and 'in-review submission' communicate preconditions, and it points back to apple_submit_for_review as the source of the ID. It does not explicitly state what to do when cancellation is no longer possible or name sibling alternatives (e.g. apple_respond_to_review), so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_accessibility_declarationC
Create an accessibility nutrition label declaration for an app on a specific device family (Accessibility Nutrition Labels)
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| deviceFamily | Yes | Device family this declaration applies to | |
| supportsCaptions | No | ||
| supportsVoiceover | No | ||
| supportsLargerText | No | ||
| supportsVoiceControl | No | ||
| supportsDarkInterface | No | ||
| supportsReducedMotion | No | ||
| supportsAudioDescriptions | No | ||
| supportsSufficientContrast | No | ||
| supportsDifferentiateWithoutColorAlone | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutating tool. It only says a declaration is created and does not disclose permission requirements, whether existing declarations are replaced, how omitted boolean fields are treated, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant or wasted text. It immediately establishes the core action, resource, and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is an 11-parameter mutation tool with low schema description coverage, no annotations, and no output schema. The description is far too thin to compensate for those gaps, leaving the agent without enough context to confidently populate the boolean accessibility fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18%, and nine boolean parameters have no schema descriptions at all. The tool description mentions only the app and device family at a conceptual level, leaving parameters such as supportsCaptions, supportsVoiceover, and supportsDifferentiateWithoutColorAlone unexplained beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Create), resource (accessibility nutrition label declaration), and scope (app on a specific device family). It is clear what the tool does, though it does not explicitly distinguish itself from sibling tools such as apple_update_accessibility_declaration or apple_list_accessibility_declarations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus updating, listing, or deleting accessibility declarations. The word 'Create' implies a new declaration, but the description does not mention prerequisites, when not to use it, or which sibling tool handles existing declarations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_analytics_report_requestA
Ask Apple to start generating App Analytics reports (impressions, product page views, downloads, sessions, retention). ONGOING keeps producing daily data; the first reports take 1-2 days. Only one request per access type is allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| accessType | No | ONGOING |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does real work: it signals an asynchronous long-running operation ('the first reports take 1-2 days'), explains the ongoing vs one-time semantics of accessType, and warns of a uniqueness limit per access type. It omits auth/permission requirements and what response or error a duplicate request yields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: purpose first, then the enum effect, then the latency and rate constraint. Nothing is redundant and no sentence could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an unannotated, no-output-schema creation tool the description covers what is created, the time-to-first-data, and the per-access-type limit. It stops short of describing the ONE_TIME_SNAPSHOT mode and the follow-up step of listing/polling the created request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully compensate; it explains only ONGOING ('keeps producing daily data') and leaves ONE_TIME_SNAPSHOT's behavior and appId unaddressed. Helpful but partial for a two-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ask Apple to start generating App Analytics reports') and enumerates the metrics produced, which immediately separates it from sibling readers such as apple_list_analytics_report_requests and apple_download_analytics_report. An agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied ('Ask Apple to start generating...') and the constraint 'Only one request per access type is allowed' hints that existing requests should be checked first, but the description never names the enabling siblings or states when not to call it. A reader must infer the workflow from the existence of apple_list_analytics_report_requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_availabilityA
Create initial app availability with explicit territory settings; use available=true and preOrderEnabled=false for a normal release
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| territories | Yes | Initial availability settings for each selected territory | |
| availableInNewTerritories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses one real behavioral fact — that this is the initial creation step, implying a precondition that availability does not already exist — but says nothing about permissions, conflict/error behavior, or whether existing settings are overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the action front-loaded and the actionable recommendation appended. No waste, though the two clauses could be split for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with nested territory objects and no annotations or output schema, the description covers what it does and one recommended configuration but omits failure modes and the relationship to the territory-update sibling. There is a nested array of objects with fields (releaseDate, availableInNewTerritories) whose purpose is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema documents territoryId and the territories array but leaves available, preOrderEnabled, and availableInNewTerritories bare. The description adds genuine semantics by explaining what available/preOrderEnabled combination corresponds to a normal release, which the schema defaults alone do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb plus resource ('Create initial app availability') and the scope ('explicit territory settings'). The word 'initial' implicitly distinguishes it from the sibling mutation apple_update_territory_availability and the reader apple_list_availability, though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one concrete usage recipe ('use available=true and preOrderEnabled=false for a normal release'), which tells the agent how to handle the common case. It stops short of saying when to use this versus apple_update_territory_availability, or what to do if availability already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_beta_groupC
Create a beta group
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name | |
| appId | Yes | App ID | |
| feedbackEnabled | No | Enable feedback | |
| isInternalGroup | No | Internal group for App Store Connect team members | |
| publicLinkLimit | No | Max testers via public link | |
| publicLinkEnabled | No | Enable public TestFlight link | |
| hasAccessToAllBuilds | No | Auto-enable all new builds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it only implies a mutating create. It does not cover permissions, whether the group is immediately usable, defaults for feedbackEnabled/hasAccessToAllBuilds, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence is technically concise but is under-specification rather than efficient communication; it spends no words on the required appId/name or the five optional configuration flags.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with no annotations and no output schema, the description is far too thin. An agent cannot learn from it what a beta group is in TestFlight terms or how the optional flags affect tester behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all 7 parameters are documented in the schema, so the baseline of 3 applies. The description adds no meaning beyond the schema, such as which options are mutually exclusive or typical default choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource (create a beta group), so the basic action is identifiable. But it is essentially a restatement of the tool name and offers no scope or differentiation from siblings such as apple_list_beta_groups, apple_delete_beta_group, or apple_add_beta_testers_to_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to create a beta group versus adding testers to an existing one, no prerequisites (an appId is required), and no mention of alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_bundle_idC
Register a new bundle ID
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name | |
| platform | Yes | ||
| identifier | Yes | Bundle ID (e.g. com.example.app) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the obvious action without mentioning idempotency, duplicate handling, required permissions, or side effects. The lack of depth fails to inform the agent of important behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence at the front. It is efficiently short, though it sacrifices necessary detail. It meets the standard for brevity but lacks substantive content to earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three required parameters, no output schema, and no annotations, the description is insufficient. It does not explain uniqueness constraints, failure behaviors, or return values. The minimal text leaves the agent underinformed for a registration operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes two of three parameters (identifier and name), and the description adds no additional meaning. The 'platform' parameter has an enum but no explanation of its implications. The description does not compensate for the schema's limited coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Register a new bundle ID' uses a specific verb and resource, clearly distinguishing this tool from siblings like 'apple_list_bundle_ids' (list) or 'apple_create_certificate' (different resource). The action is unambiguous and directly maps to its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives, nor does it mention prerequisites, constraints, or cases where the tool should not be used. The agent receives no contextual information to decide between this and similar creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_certificateC
Create a certificate
| Name | Required | Description | Default |
|---|---|---|---|
| csrContent | Yes | Certificate Signing Request (CSR) content | |
| certificateType | Yes | Certificate type (e.g. IOS_DEVELOPMENT, IOS_DISTRIBUTION, MAC_APP_DISTRIBUTION, DEVELOPER_ID_APPLICATION) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Create a certificate' without mentioning required permissions, irreversible actions, rate limits, or that it generates a certificate from a CSR. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (three words) but lacks structure. It is front-loaded but too sparse to be informative; the single phrase does not earn its place as it merely restates the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (creating a certificate from CSR with specific types), the description is severely incomplete. It does not explain the process, output, or potential errors, and there is no output schema to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with descriptions for both parameters (csrContent and certificateType). The description adds no additional semantic value, meeting the baseline for schema-rich tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a certificate' clearly states a specific verb and resource, distinguishing it from other creation tools like apple_create_beta_group or apple_create_iap. However, it lacks context about the platform (Apple Developer) and does not elaborate on the type of certificate beyond what the schema provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., apple_create_profile). The description does not mention prerequisites, caveats, or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_custom_product_pageA
Create a custom product page with its first version and localizations in one request. Optionally copy screenshots and text from an App Store version or another custom page. Add visuals afterwards with the Asset Library placement tools.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| appId | Yes | ||
| deepLink | No | Universal link opened when the app is already installed | |
| localizations | Yes | ||
| templateAppStoreVersionId | No | Copy content from this App Store version | |
| templateCustomProductPageId | No | Copy content from this custom product page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the useful atomic behavior (page + first version + localizations created together) and that copying is optional. It does not state the resulting state of the page (draft vs. live), permission requirements, or failure behavior for a mutation that creates several resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, optional behavior, follow-up workflow. The core capability is front-loaded with zero preamble.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-resource mutation with no annotations and no output schema, the description covers what gets created, the optional copy sources, and the follow-up path. It omits the resulting page state, permissions, and what the caller gets back, which an agent would want before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: deepLink, locale, and both template params are documented in the schema. The description adds meaning for the two template IDs by framing them as an optional copy source. But the required name and appId parameters are undocumented in both places, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (custom product page) plus the key scope detail that it also creates the first version and localizations in one request. That 'in one request' phrasing implicitly separates it from the granular sibling tools like apple_create_custom_product_page_version and apple_create_custom_product_page_localization. It isn't explicit about sibling distinction, keeping it at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the conditional use of the template parameters ('optionally copy screenshots and text from an App Store version or another custom page') and gives a workflow pointer ('add visuals afterwards with the Asset Library placement tools'). It lacks an explicit 'use this instead of X when...' exclusion, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_custom_product_page_localizationB
Add a locale to an editable custom product page version
| Name | Required | Description | Default |
|---|---|---|---|
| locale | Yes | Locale code, e.g. en-US | |
| versionId | Yes | ||
| promotionalText | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the 'editable' precondition, which is useful, but it does not explain mutation effects, permissions, error cases, or what happens to existing localizations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no wasted wording. It is appropriately concise for the core operation, even though it is sparse overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and incomplete parameter documentation, the description is too thin. It does not give enough context about return behavior, required version state beyond 'editable', or how this differs from updating an existing localization.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: locale is documented in the schema, but versionId and promotionalText are not. The description adds some meaning to versionId by implying it must identify an editable version, but it says nothing about promotionalText and does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('locale to an editable custom product page version'), making the operation clear. It does not explicitly contrast with sibling tools such as update_custom_product_page_localization or delete_custom_product_page_localization, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'editable custom product page version' and the create-style verb, but there is no explicit when-to-use guidance or comparison to update/delete/list localization tools. An agent can infer the basic scenario but is not told prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_custom_product_page_versionC
Start a new editable version of an approved custom product page
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | ||
| deepLink | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does convey the resulting state ('new editable version'), but says nothing about whether existing content is copied, whether a prior draft blocks creation, permission requirements, or side effects on the live approved version.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is also the source of the missing detail rather than a deliberate trade-off.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter coverage, the description does too little. An agent cannot tell what the call returns (presumably a new version ID), how to use deepLink, or what to do next after the version is created.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions neither parameter. 'pageId' is at least inferable from 'custom product page', but 'deepLink' (a URI-formatted string) is completely unexplained — its purpose, format, and whether it is optional are left entirely to guesswork.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Start a new editable version') against a specific resource ('an approved custom product page'), so an agent knows this creates a new draft version rather than modifying an existing one. It does not explicitly name sibling tools like apple_update_custom_product_page_version or apple_create_custom_product_page, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'of an approved custom product page' implies the precondition that a page must already be approved before a new version can be started, which is useful context. However, it never states when to choose this over apple_update_custom_product_page_version or apple_create_custom_product_page, nor what to do when a draft version already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_experimentC
Create a product page optimization test. trafficProportion is the percentage of visitors sent to the treatments (split evenly); the rest see the original page.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| appId | Yes | ||
| platform | No | IOS | |
| trafficProportion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It explains traffic routing but omits mutation-related context such as permissions, required setup, experiment lifecycle, or whether creation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two tight sentences. It is front-loaded with the action and uses the second sentence efficiently to explain the most distinctive parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no annotations and no output schema, the description is too thin. It covers trafficProportion but leaves the other three parameters, including required appId and name, undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters. The description adds useful meaning for trafficProportion but says nothing about appId, name, platform, or the 1-100 range constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: create a product page optimization test. It distinguishes creation from sibling experiment operations like list, get, update, and delete, though it does not use the exact term 'experiment'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says what the tool creates but gives no guidance on when to use it versus alternatives, prerequisites, or constraints. There is only an implied 'use this to create' message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_experiment_treatmentC
Add a treatment (variant) to a test. appIconName selects an alternate icon shipped in the binary.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| appIconName | No | ||
| experimentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It confirms this is a creation/mutation but says nothing about required permissions, whether the experiment must be in a particular state, or what side effects occur. Only the appIconName detail adds behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded; the second sentence is a useful, non-redundant clarification of one parameter. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations, no output schema, and three undocumented-in-schema parameters needs far more: what gets created, what the response contains, and what name/experimentId mean. The definition is under-specified for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, yet the description only explains appIconName. The 'name' parameter (presumably the treatment name) and 'experimentId' are left entirely undocumented, so the description compensates for only a third of the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a treatment (variant) to a test') and parenthetically disambiguates the domain term 'treatment' as 'variant'. It doesn't distinguish itself from siblings like apple_update_experiment_treatment or apple_create_experiment, but the create semantic is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus apple_update_experiment_treatment or apple_create_experiment, and no prerequisites such as an existing experiment being required. The agent must infer usage purely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_iapC
Create an in-app purchase
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | IAP name | |
| appId | Yes | App ID | |
| productId | Yes | Product ID (e.g. com.example.app.coins100) | |
| inAppPurchaseType | Yes | IAP type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No behavioral traits disclosed beyond the basic action. For a creation tool, one might expect information about side effects, idempotency, or required permissions. With no annotations, the description fails to provide this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no fluff. It is concise but could be slightly expanded without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 required parameters, an enum, and no output schema, the description is too sparse. It doesn't mention what happens after creation (e.g., return value, confirmation) or any constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning to parameters; it simply restates the action. No extra semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Create an in-app purchase'. It distinguishes from sibling tools like apple_delete_iap or apple_get_iap by specifying 'create'. However, it lacks context specific to Apple's environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., google_create_iap) or under what conditions. No mention of prerequisites or prohibitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_iap_offer_codeA
Create an offer code for a consumable/non-consumable/non-renewing-subscription in-app purchase. Requires per-territory prices — look them up first with apple_get_iap_price_points.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Internal reference name for the offer code | |
| iapId | Yes | In-App Purchase ID | |
| prices | Yes | Per-territory prices for the offer | |
| customerEligibilities | Yes | Which customers are eligible |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavior burden. It usefully discloses the ordering dependency on price points, but says nothing about whether the created codes are active immediately, whether the operation is reversible, what permissions are needed, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, and the product-type restriction is front-loaded before the prerequisite. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition covers the key dependency but leaves the agent without a picture of result behavior, permissions, or irreversibility of a created offer code. Adequate but with real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, iapId, prices and customerEligibilities are already documented in the schema, including the pricePointId cross-reference. The description only reinforces the price lookup hint already present, adding no new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an offer code') and bounds the scope to three IAP kinds, which implicitly separates it from the sibling apple_create_subscription_offer_code. An agent can pick the right creator without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite: per-territory prices must be looked up first via apple_get_iap_price_points, naming the alternative tool. It does not explicitly say to use apple_create_subscription_offer_code when the product is a subscription, but the scoping sentence carries that meaning implicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_phased_releaseB
Enable a seven-day phased release for an app update; phased release is unavailable for an app's first version
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | INACTIVE | |
| versionId | Yes | App Store Version ID for an update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it does disclose the first-version restriction, a real behavioral trait. However, it says nothing about idempotency, what happens if a phased release already exists, permission requirements, or that the default state is INACTIVE (i.e. that the call may not actually 'enable' anything without the state parameter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the action front-loaded and the restriction appended; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and an undocumented parameter, the description is too thin. It does not explain how to actually activate the release or what the response represents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and the description never mentions the `state` parameter at all, leaving the agent to infer from the enum alone. Worse, `state` defaults to INACTIVE while the description promises to 'enable' a release, a tension the description should resolve but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Enable a seven-day phased release'), which clearly separates it from the readable/mutable siblings apple_get_phased_release, apple_update_phased_release and apple_delete_phased_release. It does not name those siblings explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete precondition for non-use ('unavailable for an app's first version'), which is genuinely useful routing guidance. It never mentions the alternative of apple_update_phased_release when a phased release already exists, so 'when-not' is covered but 'alternatives' is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_placementA
Place a ready library asset on an editable localization using a placement type and group from apple_get_asset_specs. Reuses an existing identical placement.
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | ||
| mediaType | Yes | ||
| targetType | No | appStoreVersionLocalizations | |
| placementType | Yes | ||
| localizationId | Yes | ||
| placementGroup | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but does disclose meaningful behavior: it implicitly requires the asset to be uploaded/ready and it is idempotent because it reuses an existing identical placement. It does not cover permissions, what happens on conflicting placements, or what the call returns (no output schema), leaving notable gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core action front-loaded and the prerequisite (apple_get_asset_specs) plus idempotency note following. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers the main workflow but omits the mediaType and targetType dimensions and says nothing about the returned placement identifier that sibling tools like apple_reorder_placements or apple_delete_placement would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It correctly explains where placementType and placementGroup values come from and implies localizationId must be editable, but mediaType, targetType (defaulting to appStoreVersionLocalizations), and the string format of assetId/localizationId are never addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: place a ready library asset onto an editable localization. It references the sibling that supplies inputs (apple_get_asset_specs) and distinguishes itself from listing siblings by the 'place' verb. It does not explicitly contrast with apple_delete_placement or apple_reorder_placements, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite chain: placementType and placementGroup must come from apple_get_asset_specs, and the asset must already be a 'ready' library asset. It also notes reuse of identical placements. No explicit when-not-to-use or alternative routing is provided, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_profileC
Create a provisioning profile
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Profile name | |
| deviceIds | No | Array of device IDs (required for development profiles) | |
| bundleIdId | Yes | Bundle ID | |
| profileType | Yes | Profile type (e.g. IOS_APP_DEVELOPMENT, IOS_APP_STORE) | |
| certificateIds | Yes | Array of certificate IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It only states the action without mentioning side effects, authorization needs, or any constraints beyond the schema. Mutations like profile creation typically involve dependencies and potential errors, which are not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and concise, consisting of a single sentence. It is front-loaded with the action. However, given the complexity and importance of profile creation, a slightly more detailed description would be justified without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description should explain what is returned upon creation (e.g., profile ID, profile object). It also does not clarify conditional requirements (e.g., deviceIds needed for development profiles) or the relationship with other resources. The description is incomplete for a user to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds no additional meaning to the parameters beyond what the schema already provides. The schema itself has clear descriptions for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource ('Create a provisioning profile'). It effectively distinguishes from siblings like 'apple_delete_profile' and 'apple_list_profiles'. However, it could be more specific about the scope (e.g., iOS, macOS) but the 'profileType' parameter covers this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. There is no mention of prerequisites (e.g., needing certificates, bundle IDs, or devices) or conditions under which the tool should or should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_review_submissionA
Create an empty review draft; does not submit it. For asset-only, custom product page or product page optimization review. Existing drafts must be explicitly resumed, not replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| platform | No | IOS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose two important traits: the call creates an empty draft (no submission side effect) and it will not replace an existing draft. It omits return shape (draft ID/state), permissions, and any failure modes for conflicting drafts, so the disclosure is good but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, with the verb and the non-submission caveat front-loaded. The middle fragment ("For asset-only, custom product page or product page optimization review") is terse to the point of being slightly opaque, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow entry point with no output schema and no annotations, the description should hint at what comes next (add items, then submit) and what the created draft returns. It covers the creation semantics but leaves the surrounding lifecycle implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must compensate and it says nothing about appId or the platform enum (IOS default vs MAC_OS/TV_OS/VISION_OS). The review-type sentence hints at scope but never maps to a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create an empty review draft") plus an explicit non-goal ("does not submit it"), which separates it from apple_submit_review_submission. It stops short of naming the sibling tools, so the differentiation is implicit rather than spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection rule for use: asset-only, custom product page, or product page optimization review types. It also warns that existing drafts must be resumed rather than replaced, but never names which tool performs the resume, leaving the agent to hunt through apple_list_review_submissions / apple_get_review_submission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_screenshot_setA
Legacy: create a screenshot set for a specific display type. Deprecated by Apple; prefer apple_upload_asset and apple_create_placement.
| Name | Required | Description | Default |
|---|---|---|---|
| displayType | Yes | Display type (e.g. APP_IPHONE_67, APP_IPHONE_65, APP_IPAD_PRO_129, APP_IPAD_PRO_3GEN_129) | |
| localizationId | Yes | Version Localization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden itself; it does disclose the critical behavioral trait that the endpoint is deprecated by Apple, which is valuable beyond anything structured. However, it says nothing about prerequisites (auth/scopes), whether the operation is reversible, or what a successful call yields for a mutating legacy endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero redundancy, with the deprecation warning and preferred alternatives front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, non-nested mutation with full schema coverage, the description covers purpose, status, and replacement path. It leaves out what a screenshot set contains and any failure/permission expectations, which is a minor gap but not one that blocks a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both required parameters documented, including displayType examples, so the schema does the heavy lifting. The description only alludes to display-type scoping and adds no format or constraint detail beyond the schema, meeting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('create a screenshot set') scoped to 'a specific display type', and explicitly separates itself from the modern path by naming apple_upload_asset and apple_create_placement. An agent can identify the tool and its status without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly flags the tool as legacy and directs the agent to two named alternatives with the implied condition (prefer the new asset/placement flow). This is exactly the when-to-use guidance an agent needs to avoid a deprecated path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_subscription_groupC
Create a subscription group
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| referenceName | Yes | Reference name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states 'create' implying mutation, but does not mention idempotency, irreversible effects, required permissions, or what happens if the group already exists. Lacks transparency for a creation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is too brief and does not earn its place. It sacrifices completeness for brevity, lacking valuable details that could be added without significant verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 parameters, no output schema), the description is minimal. It does not explain what a subscription group is, how referenceName is used, or any constraints. Incomplete for a new user unfamiliar with App Store Connect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters ('App ID', 'Reference name'). The tool description adds no additional meaning beyond the schema. Baseline of 3 is appropriate since the schema already provides the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a subscription group' uses a specific verb and resource, clearly indicating creation of a subscription group. It distinguishes from sibling tools like delete and list. However, it could be more explicit about what a subscription group is in the context of Apple App Store Connect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites such as needing an existing app (appId) or that groups are used for auto-renewable subscriptions. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_subscription_offer_codeA
Create a subscription offer code (custom or one-time-use codes distributed outside the App Store). Requires per-territory prices — look them up first with apple_get_subscription_price_points.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Internal reference name for the offer code | |
| prices | Yes | Per-territory prices for the offer | |
| duration | Yes | Billing period duration of the offer | |
| offerMode | Yes | Offer pricing mode | |
| subscriptionId | Yes | Subscription ID | |
| numberOfPeriods | Yes | Number of billing periods the offer applies for | |
| autoRenewEnabled | No | Whether the subscription auto-renews after the offer period | |
| offerEligibility | Yes | How this offer interacts with introductory offers | |
| customerEligibilities | Yes | Which customers are eligible |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and only discloses the price-lookup dependency and external distribution. It says nothing about required App Store Connect permissions/roles, whether codes are immediately live, whether they can be revoked or expire, or that creation is a non-reversible write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded with actionable content: what it makes, and the mandatory lookup step before calling. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter, eight-required mutation with no annotations and no output schema, the description covers the main trap (price points) but leaves the offerEligibility/offerMode interaction and post-creation behavior unexplained. Adequate to start, not complete enough to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all nine parameters including the three enums are already documented. The description only adds that prices are 'per-territory' and must come from the price-points tool, which is a helpful cross-reference but nothing the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Create a subscription offer code') with clarifying parenthetical that these are custom/one-time-use codes distributed outside the App Store. It does not explicitly distinguish itself from the near-sibling apple_create_iap_offer_code, which an agent scanning a long tool list would likely confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States a concrete prerequisite ('look them up first with apple_get_subscription_price_points'), naming the exact sibling tool and ordering, which prevents a likely failure. It gives no exclusion conditions, however (e.g., when to use apple_create_iap_offer_code instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_treatment_localizationC
Add a locale to a treatment so it can get its own screenshots and visuals
| Name | Required | Description | Default |
|---|---|---|---|
| locale | Yes | Locale code, e.g. en-US | |
| treatmentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses little beyond the mutation itself. It does not say what happens if the locale already exists, whether the call is idempotent, what permissions are needed, or what is created/returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action first and the payoff second, with no filler. Its brevity is a virtue for structure but contributes to the disclosure gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and an undocumented required ID parameter, the description is too thin. An agent cannot tell from it what a successful call produces or how to handle an already-localized treatment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'locale' is documented in the schema, but 'treatmentId' has no description anywhere. The phrase 'to a treatment' only loosely hints at treatmentId and adds no format, sourcing, or lookup guidance for either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Add a locale to a treatment'. The sibling set contains list/delete treatment localizations and custom-product-page localization tools, and the name plus description make this one distinguishable, though the description itself does not name the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose clause ('so it can get its own screenshots and visuals') implies why you would do this, but there is no guidance on prerequisites (treatment must already exist), duplicate-locale behavior, or when to use the custom-product-page localization variant instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_versionC
Create a new App Store version for submission
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| platform | No | IOS | |
| copyright | No | ||
| releaseType | No | ||
| versionString | Yes | Version (e.g. 1.0.0) | |
| earliestReleaseDate | No | ISO 8601 date-time with timezone; required only for SCHEDULED releases |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description has to carry the full behavioral burden. It states that this is a mutation, but says nothing about required permissions, whether the new version starts in an editable state, how releaseType affects behavior, or what happens after creation. That is a real gap for a write tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence that says what the tool does without extra words. But it is terse to the point of under-specification rather than being concise and complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with 6 parameters, 2 enums, no annotations, no output schema, and only 50% schema coverage. The description doesn't cover required fields, platform defaults, release scheduling semantics, or the result of the call, so an agent would have to infer most of the calling contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%. The description doesn't define versionString, platform, releaseType, earliestReleaseDate, or copyright, and it doesn't explain the interplay between releaseType=SCHEDULED and earliestReleaseDate. Three parameters have no description anywhere, so the description should compensate but doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new App Store version.' This clearly distinguishes it from siblings like apple_create_version_localization or apple_create_custom_product_page_version, which operate on sub-resources rather than the top-level version. It just doesn't say how to differentiate further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. It doesn't say to check apple_list_versions first, nor to use apple_update_version for existing versions, nor what prerequisites must be met before creating a version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_create_version_localizationC
Create a new localization for a version
| Name | Required | Description | Default |
|---|---|---|---|
| locale | Yes | Locale code (e.g. ko, en-US, ja) | |
| keywords | No | Comma-separated keywords | |
| whatsNew | No | ||
| versionId | Yes | App Store Version ID | |
| supportUrl | No | ||
| description | No | ||
| marketingUrl | No | ||
| promotionalText | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like mutation, required permissions, or side effects. It only states 'create' without elaboration on what happens to existing data or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at one sentence, front-loading the key action. While it lacks detail, it avoids redundancy and is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, no annotations), the description is insufficient. It does not explain the purpose of localization, expected return values, or how to structure multiple optional fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (38%), requiring the description to add meaning. However, it does not explain how parameters like 'description', 'whatsNew', or 'promotionalText' are used together, nor does it clarify the format of 'locale' beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'localization for a version', distinguishing it from sibling tools like 'apple_update_version_localization' and 'apple_list_version_localizations'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as updating or listing localizations. The description lacks context on prerequisites (e.g., version must exist) and excludes any when-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_accessibility_declarationC
Delete an accessibility nutrition label declaration
| Name | Required | Description | Default |
|---|---|---|---|
| declarationId | Yes | Accessibility Declaration ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a destructive operation. It does not say whether the deletion is permanent, what happens to declarations referenced by a live app version, or what permissions are required — all of which matter for an irreversible mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though its brevity is partly the reason behavioral details are absent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an unannotated destructive tool with no output schema, the description should at minimum state irreversibility and the expected result. It says nothing about consequences or return behavior, leaving the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already documents declarationId fully. The description adds no format hints (e.g., where the ID comes from or whether it is the numeric or opaque identifier), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (an accessibility nutrition label declaration), which pairs cleanly with the list/create/update siblings in the same family. It is clear what the tool does, though it relies on the naming convention rather than an explicit contrast with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete versus updating the declaration via apple_update_accessibility_declaration, nor any prerequisites such as app/version scoping or whether the declaration must be detached first. The agent must infer all of this from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_assetA
Delete an unplaced image or video from the library. Refuses to delete if any localization still uses it; delete the intended placements first.
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | ||
| mediaType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but does disclose the single most important trait: the tool fails rather than cascades when localizations reference the asset. It omits whether deletion is irreversible, required permissions, and what a failure returns, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler; the scope constraint and the refusal precondition are both front-loaded before any remedy is mentioned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema, the description supplies the critical dependency rule an agent must know before calling. Missing only peripheral details like auth requirements and response shape on failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'image or video' maps onto the mediaType enum, and 'from the library' implies assetId, but neither parameter is described by name or format, so meaning is only partially added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an ... image or video from the library') and narrows the scope with 'unplaced', which separates it from apple_delete_placement and apple_delete_screenshot. It doesn't name a sibling outright, but the constraint is precise enough to identify the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the precondition that selects success vs. refusal ('Refuses to delete if any localization still uses it') and names the prerequisite action ('delete the intended placements first'). That's concrete when-to-use guidance; only the exclusion of an alternative deletion tool is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_beta_groupB
Delete a beta group
| Name | Required | Description | Default |
|---|---|---|---|
| betaGroupId | Yes | Beta Group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must bear full burden. It only states the action (delete) but omits details like irreversibility, cascading effects, or required permissions, which are important for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, front-loading the key action. It is appropriately concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should provide more context about the operation's effects. It is too minimal for a delete tool that likely has irreversible consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear 'Beta Group ID' description. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (delete) and resource (beta group), clearly distinguishing it from sibling tools like apple_create_beta_group or apple_list_beta_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool, what prerequisites are needed, or what alternatives exist. For a destructive operation, such context is critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_beta_testerC
Delete a beta tester
| Name | Required | Description | Default |
|---|---|---|---|
| betaTesterId | Yes | Beta Tester ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, so the description must convey behavioral traits. It only states 'delete', implying a destructive action, but does not disclose if it is permanent, what cascading effects occur, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (4 words). While not verbose, it is too brief to provide adequate context. It is appropriately sized for a simple tool but lacks structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter and no output schema, the description should cover consequences, permissions, and error conditions. It only states the action, leaving significant gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter having a description. The description adds no additional meaning beyond 'Beta Tester ID'. For a single parameter, the baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a beta tester' clearly states the action and resource. It distinguishes from sibling tools like 'apple_invite_beta_tester' or 'apple_list_beta_testers'. However, it lacks additional context about scope or side effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, circumstances under which deletion is allowed, or consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_build_uploadA
Explicitly discard an AWAITING_UPLOAD or FAILED Build Upload after checking it with apple_get_build_upload; do not use for PROCESSING or COMPLETE uploads
| Name | Required | Description | Default |
|---|---|---|---|
| buildUploadId | Yes | Build Upload ID to discard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full disclosure burden. It usefully flags the state gate that will block or error on PROCESSING/COMPLETE uploads, but says nothing about whether the discard is irreversible, what error surfaces if the state is wrong, or what permissions are needed for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler; the destructive action and its state restriction come first, and the exclusion clause follows. Everything earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations, the description covers the critical usage constraint and prerequisite. It stops short of noting irreversibility or post-delete state, which is the main remaining gap for a mutation with no annotation safety net.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema already describing buildUploadId as the 'Build Upload ID to discard'. The description adds no format, ID-source, or lookup guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (discard) and resource (Build Upload) and constrains it to two named states, AWAITING_UPLOAD and FAILED. That state scoping separates it cleanly from sibling tools like apple_upload_build and apple_wait_for_build_upload without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the prerequisite check (apple_get_build_upload) and carves out the exclusion cases: do not use for PROCESSING or COMPLETE uploads. Both the when and the when-not are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_custom_product_pageB
Delete a custom product page; its URL stops working in campaigns
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully states that the page URL stops working in campaigns, but does not disclose irreversibility, permission requirements, or what happens to associated localizations and campaign references.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The consequence is appended efficiently via a semicolon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, no output schema, and an undocumented parameter, the description is too thin. It covers the basic consequence but omits irreversibility, side effects on localizations, and any confirmation or prerequisite context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, pageId, with 0% description coverage, and the description never mentions it. The single sentence implies the target is the page, but adds no format, source, or identifier guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: deleting a custom product page. It is distinguishable from sibling update/get/list custom product page tools, though it does not explicitly distinguish itself from deletion tools for related resources such as localizations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description: use this to remove a custom product page. There is no explicit guidance on when not to use it, prerequisites, or how it differs from related deletion tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_custom_product_page_localizationC
Remove a locale from an editable custom product page version
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does not say whether the removal is permanent, what happens to translated content, what permissions are required, or what the response contains. The only real signal is the mildly implied 'editable' state constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. Its brevity is efficient, though the terse phrasing leaves little room for the missing behavioral and parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-parameter tool with no annotations and no output schema, the definition omits too much. It does not explain ID provenance, irreversibility, or the editable-version prerequisite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter localizationId has 0% schema description coverage, so the description must compensate. It only says 'a locale,' which does not explain that the parameter is an opaque identifier or how to obtain it via apple_list_custom_product_page_localizations before deleting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove a locale from an editable custom product page version.' That clearly separates it from apple_delete_custom_product_page and apple_delete_treatment_localization. It stops short of naming those siblings or noting that the target is a localization record rather than just a locale string.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'editable' hints that the parent version must be in an editable state, but no explicit precondition is stated. There is no guidance on when to delete versus update a localization, and no alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_experimentB
Delete a product page optimization test that has not run
| Name | Required | Description | Default |
|---|---|---|---|
| experimentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one meaningful behavioral constraint — the test must not have run — but omits irreversibility, required permissions/roles, and the failure mode when the precondition is violated, which are the traits that matter most for a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and the constraint arrive in one pass. It is efficient, though its brevity is partly the source of the gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-annotated tool with no output schema and an undocumented parameter, this is thin. An agent lacks irreversibility guidance, the error behavior for a running test, and any pointer on ID provenance — the definition does not give enough to invoke it safely with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter experimentId, and the description says nothing about it — no format, no indication of where to obtain the ID (e.g., from apple_list_experiments). With one undocumented parameter the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (product page optimization test / experiment), which lets an agent distinguish it from adjacent siblings such as apple_delete_experiment_treatment and apple_delete_custom_product_page. It stops short of explicitly naming those siblings, but the resource is precise enough to identify the target unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'that has not run' gives an implicit precondition that narrows when this is legal, but the description never says what to do instead for a test that has run (e.g., use apple_update_experiment to stop it) and names no alternatives. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_experiment_treatmentB
Delete a treatment from a test that has not started
| Name | Required | Description | Default |
|---|---|---|---|
| treatmentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that this is a deletion and that the test must not have started, but it omits irreversibility, permissions, and effects on related treatment localizations or other resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one front-loaded sentence with no unnecessary wording. Every word contributes to stating the action and its main precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete tool with no annotations, no output schema, and an undocumented required parameter, the description is too sparse. It gives the core action and precondition but lacks safety, permission, and parameter guidance needed for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single required parameter, treatmentId. The description only implies that a treatment is being deleted and adds no format, source, or validation details for the parameter beyond what the schema name and type already convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: delete a treatment from a test. It also distinguishes this from deleting an experiment and from treatment creation/update via the 'not started' scope, but it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'that has not started' gives an implied precondition for when deletion is valid. However, the description does not explain how to find the treatmentId, what to do if the test has started, or when to use this tool versus updating or deleting the experiment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_iapC
Delete an in-app purchase
| Name | Required | Description | Default |
|---|---|---|---|
| iapId | Yes | In-App Purchase ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a destructive action ('Delete') but fails to disclose behavioral traits such as irreversibility, side effects (e.g., affecting related resources like pricing), or required permissions. With no annotations provided, this gap is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a single sentence, but it may be too minimal. While it avoids excess, it misses opportunities to add value in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is incomplete. It does not clarify return values, confirmation messages, or error scenarios, leaving the agent unsure about the outcome of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema description coverage is 100%, the description adds no meaning beyond the schema's own description of 'iapId'. It does not clarify the format, origin, or validation constraints for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Delete' and the resource 'in-app purchase', which is a specific verb+resource combination. While it does not differentiate from sibling tools that delete other entities, the resource name is distinct enough given the context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not mention when to use this tool versus alternatives like apple_get_iap or apple_list_iap, nor does it specify prerequisites such as the need for the in-app purchase to exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_phased_releaseA
Cancel a phased release configuration before the phased release has started
| Name | Required | Description | Default |
|---|---|---|---|
| phasedReleaseId | Yes | Inactive App Store Version Phased Release ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description must carry the full behavioral load. It discloses the key state constraint (must not have started) but says nothing about irreversibility, required App Store Connect permissions, or what happens to the parent version after cancellation — significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb/resource and then the constraint. Zero padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool this covers the essentials of what and when, but with no annotations and no output schema the description should at least mention irreversibility or post-cancel behavior; those omissions leave it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as an "Inactive App Store Version Phased Release ID". The description adds no format, sourcing, or lookup guidance beyond the precondition already implied by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Cancel) plus the resource (a phased release configuration) and the state precondition. It is distinguishable from apple_update_phased_release / apple_create_phased_release by name and by the cancellation framing, though it does not explicitly name a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"before the phased release has started" is an explicit precondition that gates usage and implicitly routes post-start cases to apple_update_phased_release. No alternative tool is named outright, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_placementB
Remove a placement from its localization; the reusable library asset and its other placements remain intact
| Name | Required | Description | Default |
|---|---|---|---|
| placementId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the key blast radius: only the placement goes away, the reusable asset and other placements survive. It does not say whether the removal is reversible, what permissions are required, or what happens to a localization left with zero placements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the action front-loaded and the most important safety fact (asset survives) trailing immediately. No filler, nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no annotations and no output schema, the description covers intent and blast radius but omits confirmation of irreversibility, auth requirements, and return behavior. Adequate but with clear gaps for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is one required parameter, placementId, which the description never mentions. The only help is the word "localization," hinting the placement lives under a localization, but nothing explains the identifier's format or where to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ("Remove a placement from its localization") and immediately delimits scope by saying the library asset and its other placements are untouched, which separates it from apple_delete_asset. It does not name the sibling it differs from explicitly, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the reader can infer this is the right tool when the intent is to detach a placement from one localization rather than delete the asset, and that apple_delete_asset covers the latter. There is no explicit when-to-use statement, no prerequisites, and no mention of alternatives by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_profileB
Delete a provisioning profile
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | Profile ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully explain behavior. It only mentions deletion without specifying if it's irreversible, what happens to associated entities, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant information; very concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 1 parameter and no output schema, the description is minimal. While it conveys the basic action, it lacks context about deletion behavior, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers 100% of parameters with 'Profile ID' for profileId. The description adds no additional meaning beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a provisioning profile' clearly states the action (delete) and the resource (provisioning profile), distinguishing it from siblings like apple_create_profile and apple_list_profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool, prerequisites (e.g., profile existence), or when not to use it. Lacks context about dependencies or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_screenshotA
Legacy: delete a screenshot from the deprecated screenshot-set API. Use apple_delete_placement and apple_delete_asset for Asset Library media.
| Name | Required | Description | Default |
|---|---|---|---|
| screenshotId | Yes | Screenshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses that this targets a deprecated API and names replacements, but never states that the deletion is permanent, what permissions are needed, or whether anything else is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the legacy status and primary behavior front-loaded, with the redirect to alternatives second. No filler, though the 'Legacy:' label plus 'deprecated' is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter legacy delete with no output schema, the agent knows which API it targets and where to go for modern media deletion. Only the destructive/irreversible nature and confirmation behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ('screenshotId') with 100% schema coverage, so the schema already documents everything. The description adds no format, source, or ID-acquisition guidance beyond the deprecated-context framing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('delete a screenshot') and immediately scopes it to the deprecated screenshot-set API, which distinguishes it from the Asset Library siblings it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the tool as legacy and routes the agent to apple_delete_placement and apple_delete_asset for Asset Library media. The condition that selects the alternative is spelled out, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_subscription_groupC
Delete a subscription group
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Subscription Group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the brief description carries the full burden of behavioral disclosure. It indicates destruction (delete) but omits critical details such as permanence, cascading effects on associated data, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at only 4 words, but it sacrifices necessary detail for brevity. It is not fluff-free, it is underspecified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema or annotations, the description should provide more context about the operation's effects, success indicators, or error conditions. It lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for its sole parameter, already describing 'groupId' as 'Subscription Group ID'. The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('subscription group'), making the primary purpose unambiguous. However, it does not differentiate from sibling delete tools beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or conditions (e.g., ensuring no active subscriptions before deletion).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_delete_treatment_localizationC
Remove a locale from a treatment
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does not meet it. 'Remove' implies a destructive mutation, but nothing states whether the deletion is permanent, whether it requires the treatment to be in an editable state, or what happens to the treatment if its last locale is deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient phrase with zero filler and the action front-loaded. The terseness is under-specification rather than verbosity, so it is not penalized heavily here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, non-annotated tool with an undocumented required parameter and no output schema needs more than five words. Nothing tells the agent how to obtain a valid localizationId (presumably via apple_list_treatment_localizations) or what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the single parameter is undocumented, but the description does establish that the parameter selects the locale to remove. It leaves the key ambiguity unresolved: whether localizationId is the locale code (e.g. 'en-US') or the opaque ID of an existing localization resource.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove') and resource ('a locale from a treatment'), which is enough to separate it from apple_delete_experiment_treatment and apple_delete_custom_product_page_localization. It stops short of naming those siblings or stating the parent treatment relationship, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus apple_update_treatment_localization or the experiment-treatment deletion tool, no prerequisites (e.g., experiment must be in a draft state), and no mention of what happens when the last localization is removed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_disable_capabilityC
Disable a capability on a bundle ID
| Name | Required | Description | Default |
|---|---|---|---|
| capabilityId | Yes | Bundle ID Capability ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the action itself. No mention of side effects, required permissions, or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and very concise, but it is extremely short and could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of annotations/output schema, the description is minimal and does not fully inform an agent about the tool's behavior or constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the single parameter. The tool description does not add additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Disable a capability on a bundle ID' clearly states the action (disable) and the resource (capability on a bundle ID). It directly differentiates from the sibling tool 'apple_enable_capability'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites or context, such as needing to know the capability ID or that the bundle ID must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_download_analytics_reportC
Download every segment of an analytics report instance, decompress and merge them into rows
| Name | Required | Description | Default |
|---|---|---|---|
| maxRows | No | Rows to return in the response; the full report goes to outputPath | |
| overwrite | No | Allow replacing an existing file at outputPath | |
| instanceId | Yes | ||
| outputPath | No | Save the full decompressed report to this file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the segment download + decompress + merge behavior, which is useful, but never states that the tool WRITES A FILE to disk, what happens on overwrite refusal, whether downloading is long-running or rate-limited, or what it returns. The file-writing side effect is only visible in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and zero filler. It is efficient, though it stops short of including the file-output detail that would make it self-sufficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the schema covers two of the parameters reasonably well. What is missing is the prerequisite state of the report instance and the on-disk side effect / error behavior when overwrite is false, which an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with maxRows and outputPath (and their interplay, full report to file vs. rows in response) documented in the schema, so baseline 3 applies. The description adds nothing about parameters, and instanceId is undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Download') with a clear resource ('every segment of an analytics report instance') and adds what it does with them ('decompress and merge them into rows'). It implicitly distinguishes itself from the sibling listing tools (apple_list_analytics_report_segments, apple_list_analytics_report_instances) that only enumerate, but it never names a sibling or explicitly contrasts with apple_get_sales_report / apple_get_finance_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated prerequisites (e.g. the report instance must be completed/ready before downloading), and no mention of alternatives. The agent must infer that this follows the list-analytics-report-instances flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_enable_capabilityC
Enable a capability on a bundle ID
| Name | Required | Description | Default |
|---|---|---|---|
| settings | No | Capability-specific settings | |
| bundleIdId | Yes | Bundle ID | |
| capabilityType | Yes | Capability type (e.g. ICLOUD, PUSH_NOTIFICATIONS, IN_APP_PURCHASE, GAME_CENTER, WALLET, MAPS, ASSOCIATED_DOMAINS, PERSONAL_VPN, APP_GROUPS, HEALTHKIT, HOMEKIT, WIRELESS_ACCESSORY_CONFIGURATION, APPLE_PAY, DATA_PROTECTION, SIRIKIT, NETWORK_EXTENSIONS, MULTIPATH, HOT_SPOT, NFC_TAG_READING, CLASSKIT, AUTOFILL_CREDENTIAL_PROVIDER, ACCESS_WIFI_INFORMATION, NETWORK_CUSTOM_PROTOCOL, COREMEDIA_HLS_LOW_LATENCY, SYSTEM_EXTENSION_INSTALL, USER_MANAGEMENT, SIGN_IN_WITH_APPLE) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Enable' without specifying side effects, whether the operation is reversible, or what permissions are required. Insufficient for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient for a straightforward tool. However, it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters, the description is too brief. It doesn't explain what the response is, or confirm success. Sibling tools like apple_disable_capability might provide contrast but the description alone is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters, and the description does not add meaningful information beyond the schema. The baseline of 3 applies as the schema itself is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Enable) and the resource (capability on a bundle ID). It distinguishes from the sibling tool apple_disable_capability. However, it does not elaborate on what a capability is in Apple context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like apple_disable_capability or any prerequisites (e.g., bundle ID must exist). The description does not help the agent decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_age_ratingB
Get age rating declaration for an app info
| Name | Required | Description | Default |
|---|---|---|---|
| appInfoId | Yes | AppInfo ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as authentication requirements, error handling for invalid appInfoId, or any resource limits. For a read tool, basic safety is implied but not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the key purpose. However, it could include more context without harming brevity (e.g., what the declaration contains).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema, and the description does not explain what the returned age rating declaration includes. Given the tool is a getter, more detail on the return value is needed for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter appInfoId as 'AppInfo ID', which is clear. The description adds no additional meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves an age rating declaration for an app info. It uses a specific verb (Get) and resource (age rating declaration), and is distinct from sibling tool apple_update_age_rating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not indicate prerequisites such as needing a valid appInfoId, or note that it's a read-only operation that does not modify data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_appB
Get detailed info about an app including latest version state
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. The description implies a read operation but fails to mention any behavioral traits such as rate limits, authentication needs, or data freshness. The agent gains little insight beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Perfectly concise and front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-param getter with no output schema, the description covers the essential purpose. However, it could hint at return fields beyond 'latest version state' for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no additional meaning beyond the schema's 'App ID'. Baseline 3 is appropriate as the schema already suffices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed app info with latest version state. It distinguishes from siblings like apple_list_apps (list) and apple_get_app_info (possibly a different detail level), though not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool over alternatives like apple_get_app_info. No when-not or context clues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_app_infoC
Get app info (categories, age rating, etc)
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose any behavioral traits (e.g., read-only nature, authentication needs, rate limits, or side effects). The description only states purpose without any behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficient but lacks depth. Under-specification prevents higher score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and no annotations, description severely lacks context. Does not specify return format, constraints, or prerequisite information for using the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only parameter 'appId' has basic description 'App ID' in schema; schema coverage is 100%. Description adds no additional meaning beyond the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Get' and resource 'app info' with examples (categories, age rating). However, sibling tool 'apple_get_app' exists with similar purpose, and description does not differentiate between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'apple_get_app' or other info tools. No context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_assetC
Read an image or video asset’s processing state, matched specId, and delivery errors without exposing presigned upload URLs
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | ||
| mediaType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose one useful behavioral trait — that presigned upload URLs are deliberately not returned — and that processing state and delivery errors are surfaced. However, it says nothing about auth/permission needs, whether 'processing' implies polling, or how failures are signaled, which is a notable gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and the returned data lead immediately. It is dense but readable and every clause maps to real behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what is returned (processing state, specId, errors) and what is not (presigned URLs), which partially substitutes for a schema. But with zero annotation and zero param coverage, the guidance on inputs and failure/retry semantics is thin for an agent to call it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across two required params, so the description must compensate and largely does not: assetId is never explained, and mediaType is only obliquely implied by 'image or video'. The mention of 'matched specId' is a concept but not a parameter, adding little parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') plus a precisely scoped resource: an image or video asset's processing state, matched specId, and delivery errors. This clearly separates it from write-path siblings like apple_upload_asset or apple_delete_asset, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. It's implied you call this to inspect an asset's state, but the description doesn't mention alternatives such as apple_wait_for_asset (for polling) or apple_list_assets (for enumeration), leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_asset_libraryC
Get the reusable App Asset Library for an app before uploading screenshots, previews, or creative assets
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state that this is a read-only operation, does not describe the returned structure, does not mention required permissions or rate limits, and does not say what the 'library' contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted clauses. It is appropriately sized for a simple one-parameter getter, though 'reusable' is somewhat vague and the trailing list of asset types adds little precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and no annotations, the description should at minimum explain the identifier convention and what the returned library represents. Neither is covered, leaving the agent to guess key details before invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter appId has no format guidance. The description says 'for an app', which loosely ties appId to an app identifier, but it does not say whether this is a numeric App Store Connect ID, a bundle ID, or another identifier — a meaningful ambiguity for Apple tooling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('reusable App Asset Library for an app') and scopes it to the appId. The mention of screenshots, previews, and creative assets ties it to asset upload workflows, though it does not explicitly distinguish itself from the many sibling asset tools (apple_list_assets, apple_get_asset, apple_upload_asset).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before uploading screenshots, previews, or creative assets' implies a when-to-use context, but there is no explicit guidance on when not to use it or which sibling tool to choose instead (e.g., apple_list_assets vs apple_get_asset_library).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_asset_specsB
Read Apple’s current asset specifications, placement types, device groups, and limits; use the returned IDs instead of hard-coded device sizes
| Name | Required | Description | Default |
|---|---|---|---|
| specId | No | ||
| feature | No | ||
| placementType | No | ||
| placementGroup | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the categories of data returned and the key behavioral rule (prefer returned IDs over hard-coded sizes), which is valuable. It says nothing about auth needs, caching/freshness of 'current' specs, or whether the four inputs act as optional filters that narrow the result set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and resource, then appends the usage note after a semicolon. No filler, though the semicolon-joined clause packs two distinct ideas (what it returns, how to use it) into one dense statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only reference-data tool with four optional filters and no output schema, the description conveys the general shape of the return (specs, placement types, device groups, limits) but not how the inputs narrow results or what a result entry looks like. Adequate to attempt a call, insufficient to call it precisely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only partially does: 'placement types' and 'device groups' loosely hint at placementType and placementGroup. The params specId and feature get no explanation at all, and nothing states that all four are optional filters rather than required selectors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ('Read') plus a precisely enumerated set of resources (asset specifications, placement types, device groups, limits). It is distinguishable from siblings like apple_get_asset or apple_list_asset_placements because it returns reference/spec data rather than concrete assets. It doesn't explicitly name a sibling to contrast with, keeping it just below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'use the returned IDs instead of hard-coded device sizes' implies the intended workflow (fetch specs first, then pass IDs downstream), which is useful implied guidance. However, it never states when to call this versus apple_get_asset_library or apple_list_asset_placements, and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_build_uploadA
Get the current state of a Build Uploads API operation, including the imported build when available
| Name | Required | Description | Default |
|---|---|---|---|
| buildUploadId | Yes | Build Upload ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; 'Get' implies a read-only lookup and 'including the imported build when available' usefully flags that the build field is conditional. It does not disclose state values, error behaviour for unknown/expired upload IDs, or any rate/timeout characteristics expected of a status-polling endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the key resource and the notable response caveat are both up front.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should say more about what a 'state' contains and what happens before a build is imported. It partially compensates by mentioning the conditional imported build, but the polling semantics and state vocabulary remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage ('Build Upload ID'), so the schema already documents it. The description adds nothing about where that ID comes from (e.g. apple_upload_build's response) or its format, which is the only meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource (a Build Uploads API operation) plus what the response contains ('including the imported build when available'). This distinguishes it reasonably well from apple_upload_build, apple_delete_build_upload and apple_wait_for_build_upload, though it never names the closest sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current state' implies a single non-blocking status check, which implicitly contrasts with apple_wait_for_build_upload, but the description never states that contrast or tells the agent when to poll versus wait. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_custom_product_pageC
Get a custom product page with its versions
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses almost no behavioral traits: no indication of whether versions are returned in full or as references, no behavior when pageId is invalid or the page is unpublished, no auth or permission notes, no pagination hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource, with no filler. It is efficiently written but so terse that the brevity reflects under-specification as much as conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented required parameter, the description leaves key questions unanswered: what fields the page and its versions contain, whether a missing id errors or returns empty, and how this differs from the version-listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter pageId has no description in the schema or in the tool description. The only clue is the parameter name itself, so the description adds essentially nothing to the parameter's meaning or expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get a custom product page') and adds a useful scope note that the returned page includes its versions. It is distinguishable from apple_list_custom_product_pages and apple_update_custom_product_page by name, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus apple_list_custom_product_pages or apple_list_custom_product_page_versions. The agent must infer from the name alone that this is a single-item fetch by id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_experimentC
Get a product page optimization test with its treatments
| Name | Required | Description | Default |
|---|---|---|---|
| experimentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a read operation and notes that treatments are included, but says nothing about permissions, rate limits, error behavior, or exact return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the operation and included data front-loaded. There is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-resource GET tool this is minimally adequate, but with no annotations and no output schema the description should do more to explain the returned object structure and the experimentId's source or format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is one required parameter. The description does not explain experimentId format, where to obtain it, or any constraints beyond what the schema's type/minLength already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('product page optimization test', i.e. experiment), and adds scope with 'with its treatments'. It is clear enough to distinguish from list/create/update/delete experiment siblings, though it does not explicitly name the closest alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus apple_list_experiments, apple_list_experiment_treatments, or other experiment operations. Usage is only implied by the verb 'Get' and the required experimentId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_finance_reportC
Download a monthly financial report (earnings by region) as rows
| Name | Required | Description | Default |
|---|---|---|---|
| maxRows | No | Rows to return in the response; the full report goes to outputPath | |
| overwrite | No | Allow replacing an existing file at outputPath | |
| outputPath | No | Save the full decompressed report to this file | |
| regionCode | Yes | Region code, e.g. ZZ for all regions, EU, US | |
| reportDate | Yes | Fiscal month, YYYY-MM | |
| reportType | No | FINANCIAL | |
| vendorNumber | No | Defaults to APPLE_VENDOR_NUMBER |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It never discloses that the full report is decompressed and written to a file at outputPath, that maxRows only truncates the inline response, or that overwrite controls file clobbering — all of which are actual side effects an agent must know about before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Appropriate in size, though it is arguably too terse for a 7-parameter tool that writes files.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-annotation, no-output-schema tool that performs a file-write side effect, the description omits the essential facts (file output, truncation semantics, overwrite behavior, report type choice). It is not complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema already documents nearly every parameter, and the description adds no further semantics. The one enum (reportType: FINANCIAL vs FINANCE_DETAIL) is left entirely unexplained, and the behavior of the required regionCode/reportDate pair is only implied by the phrase 'earnings by region'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (download) and resource (monthly financial report, earnings by region) with a note on the return shape ('as rows'). It is distinguishable from sales/analytics sibling tools, though it never names the closest alternatives (apple_get_sales_report, apple_download_analytics_report).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no pointer to which of the many Apple report/download siblings is the right one for a given need. The agent must infer selection purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_iapC
Get in-app purchase details
| Name | Required | Description | Default |
|---|---|---|---|
| iapId | Yes | In-App Purchase ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only says 'Get in-app purchase details' without specifying fields returned, permissions, or rate limits. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence with no wasted words. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity, the description lacks context about return values, especially without an output schema. It does not clarify what 'details' entails compared to other tools, leaving the agent uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter iapId, and its description is present. The tool description adds no extra meaning beyond the schema, but baseline is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves details for a specific in-app purchase. However, there is no explicit differentiation from sibling tool apple_list_iap, which lists IAPs, but the purpose is still clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like apple_list_iap. No exclusions or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_iap_offer_codeC
Get details of an in-app purchase offer code
| Name | Required | Description | Default |
|---|---|---|---|
| offerCodeId | Yes | In-App Purchase Offer Code ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the behavioral burden, but it adds nothing beyond the bare verb. It does not say whether this is a read-only operation, what happens when the ID is unknown (error versus empty result), whether the call is rate-limited, or what kind of detail object comes back. For a getter with zero annotation coverage, this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler or repetition. It is efficient, though its brevity is also the source of the definition's gaps rather than an example of tight writing around rich content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should clarify what 'details' means (redemption info, eligibility, expiration, status), and it does not. The single input is fully documented by the schema, so the definition is adequate to invoke the tool but not to predict its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, and the schema documents it at 100% coverage as 'In-App Purchase Offer Code ID'. The description does not add format hints, whether it is an opaque App Store Connect ID or a developer-defined code string — a distinction that matters given the separate 'offer code' naming in the sibling list. Baseline 3 applies because the schema already does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Get') and resource ('in-app purchase offer code details'), which clearly separates it from the list/create siblings such as apple_list_iap_offer_codes and apple_create_iap_offer_code. It does not, however, explicitly name a sibling or state how it differs from apple_get_iap or apple_get_subscription_offer_code, which sit in the same tool family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says nothing about when to use this tool rather than apple_list_iap_offer_codes (to enumerate) or apple_get_iap (for product-level details). It likewise states no prerequisites, like needing a valid offer code ID or the permissions required to read Apple App Store Connect data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_iap_price_pointsA
List available price points for an in-app purchase, per territory. Use the returned IDs (with a territory ID) to build the prices for apple_create_iap_offer_code.
| Name | Required | Description | Default |
|---|---|---|---|
| iapId | Yes | In-App Purchase ID | |
| territoryFilter | No | Filter by territory ID, e.g. USA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only listing and explains that IDs are returned per territory, but it omits pagination behavior, authentication requirements, and whether results are stable across calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with zero waste. The core operation is front-loaded, followed by the actionable downstream step.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and no output schema, the description covers purpose and result usage adequately. Minor omissions like pagination and return shape are the only gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 iapId and territoryFilter. The description reinforces that territory matters when using the IDs but does not add syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list available price points for an in-app purchase, scoped per territory. This is clearly distinct from the sibling apple_get_subscription_price_points by the in-app-purchase qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to use the result: pair returned IDs with a territory ID when building prices for apple_create_iap_offer_code. It gives a clear downstream workflow but does not mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_next_pageA
Fetch the next App Store Connect page using the exact links.next URL returned by another Apple list tool
| Name | Required | Description | Default |
|---|---|---|---|
| nextUrl | Yes | The links.next URL from a previous Apple API response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the key pagination mechanism (exact links.next cursor from a prior response) but omits return format, pagination termination behavior, and error handling for invalid URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the essential action and input source efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple pagination helper, the description explains how to call it, but without an output schema it does not describe what the response contains or how to continue paginating if another links.next is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already well documented. The description reinforces that the URL must be 'exact' and sourced from a previous Apple list tool, but adds little beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Fetch the next App Store Connect page.' It clearly distinguishes this from the sibling list tools by framing it as a continuation using a 'links.next URL returned by another Apple list tool.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes clear context for use: call this with the exact links.next URL from a previous list response. It does not explicitly say when not to use it or name specific sibling tools that produce paginated results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_phased_releaseA
Get phased-release status and progress for an App Store version
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes | App Store Version ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read operation and the description says it returns status and progress, but it does not cover permissions, errors when no phased release exists, or response details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted language. Every word contributes to stating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description gives enough to understand the high-level purpose. However, it does not describe what fields 'status and progress' include, which matters because there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single versionId parameter, so the schema already provides the parameter meaning. The description adds no parameter-specific detail beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get phased-release status and progress for an App Store version. It is clearly distinguishable from sibling tools that create, update, or delete phased releases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'get phased-release status and progress', but the description does not explicitly say when to use this tool versus create/update/delete phased-release tools or other version-status tools. Minimum viable guidance only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_pricingB
Get the app price schedule plus complete, fully paginated manual and automatic price collections
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add one real behavioral fact – 'fully paginated' plus 'complete' signals the tool aggregates all pages so the caller need not loop – which is genuinely useful. But it omits read-only confirmation, auth/permission requirements, and any note about response size or ordering for what could be a large multi-collection payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no preamble, which is the right shape. It is slightly padded: 'complete', 'fully paginated', and 'collections' stack overlapping emphasis on the same point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with one fully-documented parameter and no output schema, the description is adequate but thin: it never explains what a 'price schedule' contains or how the manual and automatic collections differ, which is the main thing an agent needs to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single appId parameter is documented in the schema and the baseline is 3. The description adds no extra meaning about appId format or scope (e.g., whether it's the numeric App Store Connect ID).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieves the app's price schedule along with manual and automatic price collections. This is meaningfully more specific than a bare 'get pricing', though it never names the closely related siblings (apple_list_app_price_points, apple_set_price) that an agent would need to distinguish it from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. An agent cannot tell from the description whether to call this instead of apple_list_app_price_points or apple_get_iap_price_points, nor what prerequisites (app ID ownership, pricing configured) exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_review_submissionB
Inspect a review submission and all item IDs before adding an asset/custom page/test or explicitly submitting it
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| platform | No | IOS | |
| submissionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'Inspect' implies a read-only, non-mutating call and it discloses partial output content (submission plus all item IDs), but it omits any statement of permissions, pagination, or whether the submission is locked/editable. Adequate but with clear gaps for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste; the core action leads and the usage trigger follows. It stays efficient while covering purpose and timing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter get tool with no annotations and no output schema, the description lacks parameter semantics (appId, submissionId, platform) and does not describe what a submission object contains. It covers purpose and timing but is incomplete given the surrounding schema gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across all three parameters, so the description must compensate for undefined appId, submissionId, and platform (which has an IOS/MAC_OS/TV_OS/VISION_OS enum and a default). The description says nothing about any parameter's meaning or the platform effect, leaving the schema gaps unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Inspect) and resource (review submission plus all item IDs), making clear it is a read/inspection operation. It doesn't explicitly name sibling tools like apple_list_review_submissions or apple_get_asset to differentiate scope, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'before adding an asset/custom page/test or explicitly submitting it' gives clear sequencing context that maps to siblings like apple_add_review_submission_item and apple_submit_review_submission. It offers no explicit exclusions or negative guidance, so it is a strong 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_sales_reportA
Download a Sales and Trends report (units, installs, proceeds by territory/device) as rows. Needs the vendor number; data for a day usually appears the next day. reportSubType and version must suit the reportType (SALES uses SUMMARY); Apple names the accepted values in its error.
| Name | Required | Description | Default |
|---|---|---|---|
| maxRows | No | Rows to return in the response; the full report goes to outputPath | |
| version | No | Report format version, e.g. 1_1; Apple names the accepted versions in its error if this is wrong | |
| frequency | No | DAILY | |
| overwrite | No | Allow replacing an existing file at outputPath | |
| outputPath | No | Save the full decompressed report to this file | |
| reportDate | No | Omit for the latest available report | |
| reportType | No | SALES | |
| vendorNumber | No | Defaults to APPLE_VENDOR_NUMBER | |
| reportSubType | No | SUMMARY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses data latency (next-day availability), the vendor-number dependency, and that Apple reports accepted reportSubType/version values via error rather than up front. Missing permission/rate-limit notes, but it is well beyond a bare restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the purpose, then prerequisites, then the type/subtype coupling. No filler, and each clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, zero-required tool with no output schema, the description covers the essential reasoning: what data comes back, what governs validity of type/subtype/version, and the availability lag. Minor gaps remain, e.g. that maxRows truncates while outputPath gets the full file is only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds genuine cross-parameter meaning the schema cannot express: reportSubType and version must be consistent with reportType, and SALES pairs with SUMMARY. The error-driven discovery hint for accepted values is also useful beyond the enum lists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ("Download a Sales and Trends report") plus the concrete contents (units, installs, proceeds by territory/device) make it unmistakable. It is clearly distinguishable from siblings like apple_get_finance_report and apple_download_analytics_report by naming the report family and its data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States prerequisites (vendor number required) and a key timing caveat (data usually appears the next day), which tells the agent when a report is actually available. It does not explicitly compare against apple_get_finance_report or the analytics-report siblings, but the described data content implies the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_subscription_offer_codeC
Get details of a subscription offer code
| Name | Required | Description | Default |
|---|---|---|---|
| offerCodeId | Yes | Subscription Offer Code ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Get' implies read-only, but nothing states permission requirements, whether the offer code must be in a certain state, or what is returned. For a lookup with zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. It's efficiently sized; the shortfall is missing information, not verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A single-param read with full schema coverage and no output schema is close to self-explanatory, but 'details' is never specified and there is no indication of what the response contains. Just enough for a competent agent to invoke it, not enough to set expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter, 100% schema description coverage, so the schema already documents offerCodeId. The description adds nothing about ID format or provenance, which is acceptable at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Get details of a subscription offer code'. It is distinguishable by name from apple_get_iap_offer_code and apple_list_subscription_offer_codes, though the description itself does no explicit differentiating. The object 'subscription offer code' is clearly narrower than a general IAP offer code, so an agent can pick it out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, no alternatives named. The agent must infer from the sibling names that this is a single-item lookup versus the list variant, and there's no note about needing an existing offerCodeId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_subscription_price_pointsA
List available price points for a subscription, per territory. Use the returned IDs (with a territory ID) to build the prices for apple_create_subscription_offer_code.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID | |
| territoryFilter | No | Filter by territory ID, e.g. USA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read-only, non-mutating call and the second sentence hints at the shape of the return (IDs plus territory ID), but there is no mention of pagination, rate limits, or whether all territories are returned when the filter is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core operation front-loaded and the downstream-use note following. Nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two fully documented parameters, the description is nearly sufficient: it explains what comes back (price-point IDs, territory IDs) and how to consume it. Only pagination and the no-filter default are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (subscriptionId and territoryFilter, with its 'USA' example) are already documented structurally. The description adds the notion that results are organized per territory, but no format or default details beyond the schema – baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list available price points for a subscription, scoped per territory. That scope distinguishes it in practice from siblings like apple_get_iap_price_points and apple_list_app_price_points, though those siblings are never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear downstream context: the returned IDs plus a territory ID are the inputs for apple_create_subscription_offer_code, so an agent knows why and when to call this. It stops short of stating exclusions (e.g., when to use the IAP or app price-point variants instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_get_win_back_offerC
Get details of a win-back offer
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | Win-Back Offer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. "Get" implies a safe read, but nothing is said about error behavior for an unknown offerId, whether the response includes offer state or eligibility data, or any rate/permission constraints — for a bare detail-fetch this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. It is arguably too terse rather than too long, but there is no structural problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and no statement of what "details" comprise or where the offerId comes from. For a fetch tool in a large Apple/Google sibling set, the definition leaves too much for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single offerId parameter is documented in-schema as "Win-Back Offer ID". The description adds nothing beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get details of a win-back offer"), which clearly pairs with the sibling apple_list_win_back_offers as the singular fetch. It does not explicitly call out that distinction, but the name and description together are unambiguous about what is retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus apple_list_win_back_offers, nor any prerequisite such as needing an offerId obtained from the list call. The agent must infer the list-then-get workflow entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_invite_beta_testerC
Invite a beta tester
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Tester email | ||
| lastName | No | Last name | |
| firstName | No | First name | |
| betaGroupIds | Yes | Array of beta group IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'Invite' without explaining mutation, state changes, or side effects. Does not disclose if email is sent, if tester record is created, or any permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short (4 words) but under-specified for a tool with 4 parameters and complex sibling relationships. Lacks essential details, making it insufficient for effective use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and sibling tools like 'add_beta_testers_to_group', the description fails to clarify the invitation workflow, the role of betaGroupIds, or expected outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no additional meaning beyond the schema; it doesn't reference parameters or explain their role in the invite process.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Invite a beta tester' – clear verb+resource but insufficient to distinguish from sibling 'apple_add_beta_testers_to_group' which may also involve inviting. Lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'apple_add_beta_testers_to_group' or 'apple_remove_beta_testers_from_group'. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_accessibility_declarationsB
List accessibility nutrition label declarations for an app, one per device family
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' plus 'one per device family' discloses the read-only nature and the cardinality semantics of the result, but says nothing about pagination, permission requirements, or what happens for an app with no declarations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Only mild redundancy in 'for an app' given appId is the sole required parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers intent and result cardinality but not the returned declaration fields or empty-result behavior. Adequate to call it, thin for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required appId, so the schema already documents the only parameter. The description adds no meaning beyond it (e.g., whether appId is the numeric Apple app ID or a bundle ID), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (accessibility nutrition label declarations) scoped to an app, which cleanly separates it from sibling mutators like apple_create_accessibility_declaration and apple_delete_accessibility_declaration. It stops short of naming those siblings explicitly, so differentiation comes only from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read/list framing implies when to use it, and 'one per device family' hints at what the result set looks like. However, there is no explicit guidance on when to prefer this over fetching a single declaration, nor any prerequisite or exclusion stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_analytics_report_instancesC
List generated instances (one per processing date) of an analytics report
| Name | Required | Description | Default |
|---|---|---|---|
| reportId | Yes | ||
| granularity | No | ||
| processingDate | No | YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read-only operation, but nothing is said about result size, pagination, whether instances expire, or how granularity affects the returned instances – all relevant for a report-instance listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loaded with the verb. It is efficient, though the terseness is part of why other dimensions are underspecified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter reporting tool with no annotations and no output schema, the description should say what an instance is, how granularity changes results, and where to go next (segments/download). Almost none of that is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only processingDate is documented, as YYYY-MM-DD). The description adds no meaning for reportId, granularity (DAILY/WEEKLY/MONTHLY), or how filtering by processingDate interacts with the instance-per-date model, leaving real ambiguity for two of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb and resource ('List generated instances ... of an analytics report') and adds a useful clarifying gloss ('one per processing date'). However, it does not distinguish this from close siblings such as apple_list_analytics_reports, apple_list_analytics_report_requests, or apple_list_analytics_report_segments, so an agent could plausibly confuse the four.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of the sibling tools that retrieve related analytics artifacts. The agent must infer the sequencing (request -> reports -> instances -> segments -> download) entirely from tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_analytics_report_requestsB
List App Analytics report requests for an app. Apple generates analytics reports only after a request exists.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| accessType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does add one genuine domain fact — that report requests are a prerequisite for report generation — which helps the agent reason about state. It omits whether the call is read-only (only implied by 'List'), pagination behavior, permission/auth requirements, and what a returned request looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that front-load the action and follow with the one piece of context that matters. No filler, no restating the name verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, two-parameter list tool with no output schema, the definition covers purpose and lifecycle context adequately, but leaves the filtering semantics of accessType and the shape/paging of results unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does not. 'For an app' loosely maps to appId, but the accessType enum (ONGOING vs ONE_TIME_SNAPSHOT) — the parameter with real semantic ambiguity — is never explained in terms of whether it filters results or how the two values differ.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List App Analytics report requests') scoped to an app, which clearly separates it from siblings such as apple_create_analytics_report_request, apple_list_analytics_reports, and apple_list_analytics_report_instances. It doesn't explicitly name those siblings, but the resource noun is precise enough to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence ('Apple generates analytics reports only after a request exists') implies this is the discovery step that must precede report listing/downloading, which is useful implied usage. However, it never states when to use this versus apple_list_analytics_reports or apple_create_analytics_report_request, nor any exclusions or prerequisites explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_analytics_reportsC
List the reports available for an analytics report request, e.g. "App Store Discovery and Engagement" or "App Downloads"
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| category | No | ||
| requestId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. “List” implies a read operation, but the description does not disclose pagination, auth requirements, return shape, or any other behavioral detail beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with useful examples and no wasted wording. It is concise, though its brevity contributes to the missing usage and parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters, zero schema descriptions, no annotations, and no output schema, the description is too thin. It does not explain optional filters, return values, or how this tool fits with the related analytics report tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only indirectly signals that requestId is the analytics report request identifier. It does not explain the optional name parameter or the category enum values, which the schema leaves undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: “List the reports available for an analytics report request,” with examples of report names. It is clear enough to distinguish from listing report requests themselves, though it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase “for an analytics report request” implies that a request ID is needed, but the description gives no explicit when-to-use guidance, prerequisites, or comparison with sibling tools such as list_analytics_report_instances or list_analytics_report_segments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_analytics_report_segmentsA
List the segment files of an analytics report instance (size and checksum, without download URLs)
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose a genuinely useful behavioral trait: the response contains size and checksum but no download URLs, telling the agent it must switch tools to fetch content. It leaves out pagination, auth, and error behavior, keeping it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with the key scoping qualifier front-loaded and a compact parenthetical that adds non-obvious information. No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with no output schema, the description covers what the tool lists and what the returned data includes/excludes. The only notable gap is that it doesn't mention pagination or how to get the instanceId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter (instanceId) with 0% schema description coverage; the description clarifies that the ID refers to an analytics report instance, which adds real meaning beyond the bare string in the schema, but it doesn't say how to obtain that ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (List) and a precisely scoped resource (segment files of an analytics report instance). It clearly separates this tool from siblings like apple_download_analytics_report and apple_list_analytics_report_instances, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical about size/checksum 'without download URLs' implies this is a metadata-inspection step before downloading, but the description never states when to use this tool versus apple_download_analytics_report or what prerequisite instanceId must come from. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_app_info_localizationsA
List app info localizations (app name, subtitle, privacy policy URL)
| Name | Required | Description | Default |
|---|---|---|---|
| appInfoId | Yes | AppInfo ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose safety (read-only), side effects, or any behavioral traits beyond the listing action. The agent lacks assurance about non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence with no fluff. Every word adds meaning, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists key fields but omits output structure, pagination, and any prerequisites. For a simple tool with no output schema, it is minimally adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description for appInfoId is minimal ('AppInfo ID'). The description adds no value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List app info localizations' and specifies the resource (localizations) and included fields (app name, subtitle, privacy policy URL), making the tool's purpose distinct from siblings like apple_get_app_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives, nor any prerequisites like needing an appInfoId. Usage is implied but not clarified with exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_app_price_pointsA
List current App Price Points for an app in a base territory; use an ID from this response with apple_set_price
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| limit | No | ||
| territoryId | Yes | Territory ID used as the base territory, e.g. USA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'List current' implies a read-only snapshot and the base-territory scoping is useful, but it does not mention permissions, pagination, rate limits, or what the limit parameter controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single compact sentence with the core purpose front-loaded. The semicolon cleanly appends the follow-up workflow without adding filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter listing tool with no output schema and no annotations, the description covers the basic purpose and one downstream use. It still leaves out pagination/limit behavior and the shape of the returned price-point data, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with appId and territoryId described in the schema while limit has no description. The description adds the base-territory concept and the downstream use of returned IDs, but it does not compensate for the undocumented limit parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list current App Price Points for an app in a base territory. It is clear enough to act on, but it does not explicitly distinguish this tool from nearby siblings such as apple_get_iap_price_points or apple_get_subscription_price_points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a useful downstream workflow by saying a returned ID should be used with apple_set_price. However, it does not say when to choose this tool over apple_get_pricing or the IAP/subscription price-point siblings, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_appsB
List all apps in App Store Connect
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Implies a read operation, but with no annotations, it lacks explicit behavioral info like side effects, auth needs, or rate limits. Adequate for a simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise at 6 words, no wasted text. However, could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with optional limit and no output schema, the description omits pagination details and return format. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the limit parameter. Description adds no additional meaning or context for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all apps in App Store Connect. Verb 'List' and resource 'apps' are specific, and it distinguishes from siblings like apple_get_app or apple_list_iap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No mention of pagination, filtering, or scenarios where this is preferred over apple_get_app.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_asset_placementsA
List every placement that uses an image or video, including other localizations, before deleting or replacing that asset
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | ||
| mediaType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a meaningful behavioral trait — results include placements from other localizations, so the list is broader than the caller's current locale. It says nothing about read-only nature, pagination, or what happens if the asset is unused/not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the purpose front-loaded and the usage condition trailing. No wasted words, and the localization caveat is folded in economically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and zero schema description coverage mean everything must come from the description. It explains purpose and timing but not the return shape (IDs vs full placement objects) or pagination, despite a sibling apple_get_next_page implying paged results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description partially compensates: 'an image or video' maps to the mediaType enum (IMAGE/VIDEO) and 'that asset' implies assetId. It never explains the assetId format or whether mediaType must match the asset's actual type, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List every placement that uses an image or video') and scopes it to a single asset, which distinguishes it from the broader apple_list_placements. It does not name that sibling explicitly, so an agent must infer the distinction, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear use condition: call this 'before deleting or replacing that asset', which positions it as a safety pre-check ahead of apple_delete_asset. It stops short of naming alternatives or stating what to do with the results, so no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_assetsA
List all image or video assets in an App Asset Library, following every page; use this to reuse files and find interrupted uploads
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | ||
| category | No | ||
| mediaType | Yes | ||
| referenceName | No | ||
| assetLibraryId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool follows every page, which is important pagination behavior, but it does not state permissions, ordering, rate limits, or the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The core listing behavior comes first, followed by the use-case note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with no annotations, no output schema, and zero schema description coverage, the description provides the essential purpose and pagination behavior but leaves major gaps around filters and return details. It is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for all five parameters. It only indirectly maps mediaType (image or video) and assetLibraryId (App Asset Library); it says nothing about state, category, or referenceName, nor about the enum values or filtering behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list all image or video assets in an App Asset Library. It distinguishes this from sibling operations like apple_get_asset (single asset) and apple_list_asset_placements (placements rather than assets) by scoping the result to all assets and noting automatic pagination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: reuse files and find interrupted uploads. However, it does not name alternatives or state when not to use this tool, such as when to prefer apple_get_asset for a single asset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_availabilityC
List current App Availability and all related territory availability records
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a safe read, but it never says whether results are paginated, what permissions are needed, or whether inactive/future territory records are included — meaningful gaps for an availability query an agent may act on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is partly the source of the missing behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a fully documented single parameter, the description is minimally adequate. With no output schema and no annotations, it should say something about the shape of the returned records (whether territory records are nested or a separate collection) and about pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter (appId) with 100% schema description coverage, which sets the baseline at 3. The description adds no syntax or scoping detail beyond the schema, so it neither helps nor hurts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it lists current App Availability plus related territory availability records. An agent can tell this is a read of availability state, distinct from mutation siblings like apple_create_availability or apple_update_territory_availability, though the description never names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'current' implies this is the read path for availability, but there is no explicit statement of when to use this versus apple_create_availability, apple_update_territory_availability, or google_get_country_availability, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_beta_groupsC
List beta groups
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | Filter by app ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits beyond listing. It fails to mention read-only nature, permissions, or constraints, leaving the agent uninformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence, concise and efficient for a simple list tool. It could be slightly improved by mentioning the optional filter, but overall it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description provides minimal context. It does not explain what a beta group is or any operational nuances, but the schema and sibling tools partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'appId' parameter already described as 'Filter by app ID'. The description adds no additional meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List beta groups', providing a specific verb and resource. It distinguishes from sibling tools like apple_create_beta_group and apple_delete_beta_group. However, it could be improved by mentioning the optional filter parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like apple_list_beta_testers or apple_list_builds. The description does not provide context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_beta_testersC
List beta testers
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | Filter by app ID | |
| No | Filter by email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. 'List beta testers' does not disclose read-only nature, pagination, rate limits, or other behavioral traits. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence. However, it may be underspecified; more structure could improve clarity for complex queries.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks context about output, scope, or constraints. No output schema, no annotations, and optional filters only. Agent may need to discover behavior through trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. Description adds no additional meaning beyond the schema, meeting baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description 'List beta testers' clearly states the action and resource. However, it does not distinguish from sibling tools like apple_list_beta_groups or apple_invite_beta_tester, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as apple_list_beta_groups for listing groups or apple_invite_beta_tester for inviting testers. Agent must infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_buildsC
List builds uploaded to App Store Connect
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| limit | No | ||
| preReleaseVersion | No | Filter by version string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states that it lists builds uploaded to App Store Connect, but does not mention pagination, rate limits, or whether it returns only recent builds or all builds. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, which is appropriate for a simple tool. However, it could be slightly more informative without exceeding reasonable length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and simple parameters, the description still leaves gaps. It does not explain what the response looks like (e.g., list of build objects with IDs, statuses) or how to interpret the output, making it incomplete for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no information about parameters beyond what the schema already provides. It does not mention the required appId or the optional limit and preReleaseVersion filters. Schema coverage is 67%, so the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'builds', and specifies the platform 'App Store Connect'. This distinguishes it from other list tools that target different resources (e.g., apple_list_apps, apple_list_versions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as apple_list_versions or apple_assign_build. There is no discussion of prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_bundle_id_capabilitiesB
List capabilities for a bundle ID
| Name | Required | Description | Default |
|---|---|---|---|
| bundleIdId | Yes | Bundle ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It does not state that the operation is read-only, or any potential side effects, auth requirements, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is appropriately front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return values or format. For a list tool with one parameter, it is minimally adequate but lacks completeness on what capabilities are listed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description 'Bundle ID' is clear. The description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (capabilities for a bundle ID). It distinguishes itself from siblings like apple_list_bundle_ids which lists bundle IDs rather than capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as checking capabilities before enabling/disabling them. The description does not mention any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_bundle_idsC
List registered bundle IDs
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as whether the operation is read-only, safe, or requires specific permissions. It is too brief to convey safety or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (3 words), which is concise but lacks structure and fails to provide necessary details. It is not overly verbose, but it does not earn its place with valuable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 optional parameter, no output schema), the description is minimally adequate. However, it does not explain what bundle IDs are or their context within Apple tools, leaving gaps for an AI agent unfamiliar with the domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'limit' has no description in the schema, and the description does not mention it. With 0% schema coverage, the description fails to add any meaning beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'list registered bundle IDs', specifying the action (list) and resource (bundle IDs). It is straightforward but does not differentiate from sibling list tools like apple_list_builds or apple_list_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites or context for listing bundle IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_certificatesC
List certificates
| Name | Required | Description | Default |
|---|---|---|---|
| certificateType | No | Filter by certificate type (e.g. IOS_DEVELOPMENT, IOS_DISTRIBUTION, MAC_APP_DISTRIBUTION, MAC_INSTALLER_DISTRIBUTION, MAC_APP_DEVELOPMENT, DEVELOPER_ID_KEXT, DEVELOPER_ID_APPLICATION, DEVELOPER_ID_INSTALLER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits such as whether it returns all certificates, pagination behavior, or authentication requirements. With no annotations provided, the description carries the full burden and is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two words) and front-loaded. However, the conciseness sacrifices critical information, earning a score slightly below perfect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema), the description should specify that the output is a list of certificate objects. It fails to describe the return format, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, listing valid certificate type values. The description adds no further meaning beyond the schema, so it meets the baseline for high coverage but does not go beyond.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List certificates' clearly identifies the action and resource, but it lacks specificity about the scope (e.g., all certificates for the account) and does not differentiate from sibling list tools like apple_list_profiles or apple_list_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as apple_create_certificate or apple_revoke_certificate. There is no mention of prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_custom_product_page_localizationsA
List localizations of a custom product page version; their IDs are the targets for apple_create_placement
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full load. It discloses one genuinely useful behavioral fact — the returned IDs are the input contract for apple_create_placement — but says nothing about pagination, ordering, empty-set behavior, or whether listing requires the version to be in a particular state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the scope stated first and the actionable payoff after a semicolon. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param list tool with no annotations and no output schema, the description covers purpose and the most important output semantic (IDs feed create_placement). It falls short only on pagination/response-shape and how to obtain a valid versionId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single versionId parameter, so the description has to compensate. It implicitly anchors versionId to 'a custom product page version', which is helpful, but gives no format, sourcing hint (e.g. obtainable from apple_list_custom_product_page_versions), or error behavior for a bad ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: lists localizations scoped to a custom product page version. That scope distinguishes it from the other localization listers in the sibling set (version, app info, treatment localizations), though the description never explicitly says so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'their IDs are the targets for apple_create_placement' gives a clear downstream-use signal, which implies when the tool matters. However, there is no explicit statement of when to prefer this over apple_list_custom_product_page_versions or the other localization list tools, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_custom_product_pagesB
List custom product pages for an app, with their versions (state, deep link) and the page URL to use in ad campaigns
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| visible | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. "List" implies a read-only operation and the description discloses the returned data shape, but it omits permissions, pagination behavior, and any side-effect confirmation. That is adequate but incomplete for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It delivers the core purpose and key return details efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, and the description explains the main returned fields, but it does not cover the visible filter, pagination behavior, or output-schema details. It is sufficient to start a call but not complete enough for confident use across all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are two parameters. The description's "for an app" loosely maps to appId, but the optional visible filter is completely undocumented, leaving a meaningful gap that the schema cannot fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ("List") and names the resource ("custom product pages for an app") plus the included data (versions, deep link, page URL). It does not explicitly differentiate itself from sibling tools like apple_get_custom_product_page or apple_list_custom_product_page_versions, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a contextual hint (page URL for ad campaigns), which implies a use case, but does not state when to use this tool versus apple_get_custom_product_page, apple_list_custom_product_page_versions, or other custom-product-page tools. Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_custom_product_page_versionsC
List versions of a custom product page
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it only implies read-only via 'List'. It says nothing about pagination (notable given the sibling apple_get_next_page), ordering, or what a version record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity reflects under-specification rather than precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with an undocumented required ID, no output schema, and no annotations, the description leaves too much unknown: where pageId comes from, whether results paginate, and what fields a version has. An agent would need trial and error to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter 'pageId' is undocumented in both schema and description. The description only vaguely implies it targets one page's versions, without stating the ID format or source (e.g., from apple_list_custom_product_pages).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('versions of a custom product page'), which distinguishes it from sibling mutators like apple_create_custom_product_page_version and apple_update_custom_product_page_version. However it does not explicitly name those siblings or clarify scope (e.g., all versions vs. one page's versions beyond pageId).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus apple_get_custom_product_page or the create/update version tools, and no prerequisites or pagination notes. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_devicesC
List registered devices
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| platform | No | Filter by platform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. The term 'list' implies a read operation, but the description does not explicitly confirm it is safe or non-destructive. It also does not mention permissions, pagination, sorting, or the behavior when no filters are applied, leaving significant gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at four words, with no unnecessary fluff. It is front-loaded and easy to parse. However, the extreme brevity slightly reduces its informativeness, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (optional filters, no output schema), the description is minimally adequate. However, it lacks details on the list's size, pagination, ordering, or response structure. For a complete understanding, the agent would need external knowledge or additional cues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (platform and status) with their enums and meanings, achieving 100% coverage. The description adds no additional parameter context, such as how the parameters interact or example values. The baseline of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List registered devices' clearly states the action and resource, using a specific verb and noun. It distinguishes itself from sibling tools like apple_register_device or apple_update_device by focusing on listing. However, it does not elaborate on the scope (e.g., Apple Developer account) or differentiate from other list tools beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like apple_list_apps or apple_list_builds, nor does it mention any prerequisites or limitations. The agent receives no context about appropriate scenarios for listing devices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_experimentsB
List product page optimization tests (A/B tests of icon, screenshots and visuals) for an app, with state and dates
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a safe read and 'with state and dates' discloses part of the response shape, which is real added value. However, it says nothing about pagination (notable given an apple_get_next_page sibling exists), rate limits, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core purpose front-loaded and the parenthetical clarification earning its place. No filler, though it is short enough that the missing routing/identifier detail is a content gap rather than a length problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no annotations and no output schema, the description covers purpose and partially covers returns ('state and dates'). It still leaves the appId format and pagination behavior undocumented, which an agent needs before a first correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (appId) with 0% schema description coverage, so the description must compensate and largely does not. 'For an app' weakly maps to appId but never states the expected identifier form (Apple resource ID vs bundle ID) or cardinality assumptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List product page optimization tests') and parenthesizes what a PPO test actually is (A/B tests of icon, screenshots, visuals), which is genuinely clarifying domain knowledge. It scopes to 'for an app' and previews returned fields, though it does not name-check sibling tools like apple_get_experiment or apple_list_experiment_treatments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'List' plus the app scoping — an agent can infer this is the enumeration step before apple_get_experiment or apple_list_experiment_treatments. There is no explicit when-to-use, no prerequisite (e.g. app must have PPO enabled), and no exclusion of the detail/child-list siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_experiment_treatmentsC
List the treatments (variants) of a product page optimization test
| Name | Required | Description | Default |
|---|---|---|---|
| experimentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that this is a read-only operation, whether results are paginated, whether empty lists are possible, or what permission scope is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, but it is under-specified rather than genuinely concise — there is room for one more clarifying clause at no structural cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% parameter description coverage, the definition leaves the agent without return-shape, pagination, or id-provenance information needed to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter 'experimentId' is undocumented. The description only implies the id identifies the test; it says nothing about format, source (e.g. from apple_list_experiments), or validation beyond minLength 1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('treatments (variants) of a product page optimization test'), which is clear enough to distinguish it from apple_list_experiments and apple_list_treatment_localizations. It does not explicitly name those siblings, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as apple_get_experiment or apple_list_treatment_localizations, and no prerequisites (e.g. that a valid experiment must exist). The agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_iapA
List in-app purchases for an app
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Description only states 'list' – no mention of pagination, rate limits, or side effects. Lacks behavioral context beyond the obvious read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler. Front-loaded and efficient. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter and no output schema – the description is minimally adequate. Could mention return format or pagination for completeness but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with appId described as 'App ID'. Description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List in-app purchases for an app' – a specific verb and resource. Easily distinguishes from sibling tools like apple_get_iap (single IAP) and apple_create_iap (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when needing to view all IAPs for an app, but no explicit guidance on when not to use or alternative tools. No exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_iap_offer_codesB
List custom/one-time-use offer codes configured for an in-app purchase
| Name | Required | Description | Default |
|---|---|---|---|
| iapId | Yes | In-App Purchase ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does not state that the call is read-only, whether results are paginated, what the response shape is, or any auth/rate-limit expectations for a simple one-parameter list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the resource qualifier ('custom/one-time-use') front-loaded and no filler. Nothing in it is redundant or misplaced.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read with no output schema and no annotations, the description covers the core purpose but omits what the response contains (code strings, redemption limits, expiry), which matters since there is no output schema to fall back on. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter iapId is documented as 'In-App Purchase ID'. The description only implies that iapId scopes the listing and adds no format, ID-source, or filtering detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and a specific resource ('custom/one-time-use offer codes configured for an in-app purchase'), which is enough to distinguish it from the subscription-offer-code siblings by resource type. It does not explicitly name apple_list_subscription_offer_codes or apple_get_iap_offer_code as the alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool versus apple_list_subscription_offer_codes, apple_get_iap_offer_code, or apple_create_iap_offer_code, and gives no prerequisites or exclusions. The only usage signal is the implied read semantics of 'List', leaving the agent to infer routing from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_placementsC
List all placements for a localization in display order, including their image/video assets
| Name | Required | Description | Default |
|---|---|---|---|
| targetType | No | appStoreVersionLocalizations | |
| placementType | No | ||
| localizationId | Yes | ||
| placementGroup | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies read-only and 'in display order' usefully signals sorted output with embedded assets, but nothing is said about pagination, permissions, or what happens with the four different target types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the ordering and asset-inclusion facts are useful. It is tight but skimpy given the parameter surface it has to support.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A four-parameter list tool with zero schema description coverage, no annotations, and no output schema needs the description to explain targetType/placementType/placementGroup roles and return shape. The one-sentence description leaves the agent guessing on all of these.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only implicitly covers localizationId ('for a localization'). The three other parameters — targetType (with its four-value enum and default), placementType, and placementGroup — get no explanation of their meaning or interaction at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (list) plus resource (placements) plus scope ('for a localization') and even mentions display order and included image/video assets. It does not, however, differentiate itself from the adjacent apple_list_asset_placements sibling, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and names no alternatives. It never says how this differs from apple_list_asset_placements or that apple_create_placement / apple_reorder_placements are the mutating counterparts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_profilesC
List provisioning profiles
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by profile name | |
| profileType | No | Filter by profile type (e.g. IOS_APP_DEVELOPMENT, IOS_APP_STORE, IOS_APP_ADHOC, IOS_APP_INHOUSE, MAC_APP_DEVELOPMENT, MAC_APP_STORE, MAC_APP_DIRECT, TVOS_APP_DEVELOPMENT, TVOS_APP_STORE, TVOS_APP_ADHOC, TVOS_APP_INHOUSE, MAC_CATALYST_APP_DEVELOPMENT, MAC_CATALYST_APP_STORE, MAC_CATALYST_APP_DIRECT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only repeats the action. It does not disclose pagination, authentication needs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (3 words) but lacks structure and front-loading of important details, making it under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and two parameters, the description is severely incomplete; it misses return value info and behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions, so baseline is 3. The description adds no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List provisioning profiles' clearly states the verb and resource, adding specificity by specifying 'provisioning' which is not in the tool name. It distinguishes from sibling tools like apple_create_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as filtering options or comparison to other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_reviewsC
List customer reviews for an app
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| appId | Yes | App ID | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose safety traits (e.g., read-only), response behavior, or limitations like pagination or sorting defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 5 words, which is acceptable for a simple tool but misses the chance to add valuable context. It is not verbose but could include more information without becoming lengthy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description is insufficient. It does not mention expected response format, pagination, or behavior when limit is omitted. Sibling tools like google_list_reviews likely have richer descriptions, making this one feel incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only 33% of parameters have schema descriptions (appId). The description adds no meaning to sort or limit beyond the schema. For example, it doesn't clarify how sorting by '-createdDate' differs from 'createdDate'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List customer reviews for an app' clearly states the verb (list), resource (customer reviews), and scope (for an app). It accurately describes the tool's function without ambiguity. However, it doesn't differentiate from sibling tools like google_list_reviews, but the tool name includes 'apple_' which resolves that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like apple_respond_to_review or apple_update_review_detail. There is no mention of prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_review_submissionsB
List review submissions for an app and platform, including drafts to resume after an interrupted request
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| platform | No | IOS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that drafts are included and can be resumed, but says nothing about pagination, ordering, statuses covered, or what the returned submissions contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The draft/resume clause is useful context, though slightly cryptic without elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter list tool, the description is adequate but thin. With no output schema and no annotations, it leaves the return shape and pagination behavior unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description conceptually maps both parameters by saying the list is 'for an app and platform.' It does not add format details or explain the default IOS platform behavior beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List) and resource (review submissions) scoped to an app and platform. This clearly separates it from apple_get_review_submission (singular get) and apple_list_reviews (customer reviews), though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase about drafts to resume after an interrupted request implies a use case, but there is no explicit guidance on when to choose this tool over apple_get_review_submission or apple_list_reviews, nor any stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_screenshot_setsA
Legacy: list screenshot sets for a localization. Apple deprecated this API in 4.5.1; use apple_list_placements for Asset Library media.
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | Version Localization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses deprecation status and an alternative, but it does not explicitly state that this is a read-only listing, describe return shape, or mention any limitations beyond deprecation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero waste. It front-loads the legacy status and purpose, then immediately provides the alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool with no output schema and no annotations, the description covers purpose, deprecation, and the replacement tool. It is sufficient to call correctly, though it could say more about the return content or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single localizationId parameter and documents it as a 'Version Localization ID.' The description only says 'for a localization' and adds no further syntax or semantics beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'list screenshot sets for a localization.' It also names the replacement tool, apple_list_placements, which distinguishes it from the Asset Library media siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the tool is legacy, notes that Apple deprecated the API in 4.5.1, and directs callers to use apple_list_placements for Asset Library media. That gives a clear when-to-use versus when-to-use-alternative condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_subscription_groupsC
List subscription groups for an app
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It fails to mention any traits such as read-only nature, authentication requirements, error handling, or pagination. The description adds no behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 5 words, with no wasted language. However, it is so minimal that it sacrifices detail for brevity, which slightly detracts from its overall utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no nested objects), the description is adequate but not complete. The absence of an output schema means the agent has no information about the return format, and no alternative behaviors are described. A list operation often benefits from mentioning ordering or filtering, which is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter (appId: 'App ID'). The description does not add any additional meaning or formatting guidance, so it meets but does not exceed the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('subscription groups') with a qualifying scope ('for an app'). It distinguishes from sibling tools like apple_list_iap by specifying 'subscription groups', though it does not explicitly contrast with related tools like apple_create_subscription_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. Sibling tools like apple_create_subscription_group or apple_delete_subscription_group exist but are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_subscription_offer_codesB
List custom/one-time-use offer codes configured for a subscription
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'List' implies a safe read, but there is nothing about pagination, ordering, whether expired/redeemed codes are included, or permission requirements for reading subscription offer codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the qualifiers 'custom/one-time-use' are exactly the load-bearing part and come before the resource noun.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source of context, and it omits return shape, pagination, and code-status filtering semantics. For a minimal one-parameter list tool this is adequate but noticeably thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter at 100% schema coverage sets the baseline at 3. The phrase 'for a subscription' confirms the role of subscriptionId as the scoping key, but adds no format or sourcing detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a precisely qualified resource (custom/one-time-use offer codes for a subscription), which separates it from generic offer-code listing. It does not explicitly name the near siblings (apple_list_iap_offer_codes, apple_list_win_back_offers), so differentiation is implied by the resource qualifier rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (you need codes for a specific subscription), but gives no explicit when/when-not guidance and no exclusions against the other offer-code listers in the sibling set. An agent must infer from the resource wording that this is the subscription-scoped variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_treatment_localizationsB
List localizations of a treatment; their IDs are the targets for apple_create_placement
| Name | Required | Description | Default |
|---|---|---|---|
| treatmentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing and explains the downstream use of the IDs, but says nothing about pagination, permissions, response shape, or what happens with an invalid treatmentId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the core purpose front-loaded and a useful second clause about downstream usage. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool with no annotations or output schema, the description covers purpose and downstream linkage but omits return format, pagination, and error behaviour. Adequate but with clear gaps given the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required treatmentId parameter, and the description only indirectly hints at it via 'of a treatment'. It adds no format, source, or constraint information beyond what the bare schema type string conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('localizations of a treatment'), which is distinct from the create/delete treatment-localization siblings. The added note that the resulting IDs feed apple_create_placement further pins down what this tool returns, though it doesn't explicitly contrast itself with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear workflow context: call this to obtain localization IDs that serve as targets for apple_create_placement. That tells an agent when to reach for it, but there are no explicit exclusions (e.g., pagination behaviour or when another listing tool would be preferred).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_version_localizationsB
List all localizations for a version
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes | App Store Version ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not state that this is a read-only operation, nor does it mention potential performance issues, data limits, or what happens if the version ID is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks necessary detail. It is front-loaded with the verb 'List', but could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should provide more context about the behavior, such as whether the list includes all localization fields or if there are pagination limits. The current description is too minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'versionId' ('App Store Version ID'). The tool description adds no extra semantics beyond the schema. Baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all localizations for a version' uses a specific verb and resource, clearly indicating the tool's action. It effectively distinguishes from sibling tools like 'apple_create_version_localization' (create) and 'apple_update_version_localization' (update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when listing localizations for a specific version vs. listing all versions. No prerequisites or context of use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_versionsC
List all App Store versions for an app
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| state | No | Filter by current appVersionState (e.g. PREPARE_FOR_SUBMISSION, READY_FOR_DISTRIBUTION) | |
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read operation, but the description says nothing about pagination, whether results are truncated, ordering, or required auth scope. For a listing tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is partly under-specification rather than pure economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and two of three parameters undocumented in the description, an agent lacks enough context to use the filters or anticipate the response shape. The description should at minimum note the available filters and that this returns version records.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description only implies that an app identifier is needed ('for an app'). It never mentions that results can be filtered by version state or platform, so the optional filter parameters are explained only by the schema, and platform's enum carries no description anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List all App Store versions for an app.' An agent can tell it lists version records rather than localizations or builds. It does not differentiate itself from nearby siblings like apple_list_version_localizations or apple_get_app, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as apple_list_version_localizations or apple_get_app, nor any mention of prerequisites or context. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_list_win_back_offersA
List win-back offers configured for a subscription (offers to bring back churned/expired subscribers)
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. 'List' implies a read-only operation, but the description does not mention permissions, pagination behavior, filtering by status, or any return-shape expectations. The behavioral profile is therefore only minimally inferable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted language. The parenthetical clarification earns its place by defining win-back offers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only listing tool, the description covers the subject and scope sufficiently for selection. However, with no annotations and no output schema, it leaves pagination and return behavior unaddressed, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sole parameter is documented as 'Subscription ID'. The description reinforces that the subscription is the listing scope but adds no format or syntax details beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: list win-back offers. It also states the scope, configured for a subscription, and clarifies the business meaning with churned/expired subscribers. This makes it clearly distinct from the sibling apple_get_win_back_offer retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope 'for a subscription' and the parenthetical explanation imply when the tool is useful. However, it does not explicitly distinguish when to use this list operation versus apple_get_win_back_offer or the offer-code tools, and it provides no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_register_deviceB
Register a new device
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Device name | |
| udid | Yes | Device UDID | |
| platform | Yes | Platform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. Only says 'register', but does not mention permissions, side effects, or return values. Lacks detail for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence, no fluff, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and description fails to explain what the tool returns or the outcome of registration. Missing context about relationships to sibling tools like apple_list_devices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no extra meaning beyond schema parameter descriptions. Adequate but not improved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'register' and the resource 'a new device', which is specific and distinguishes from sibling tools like apple_list_devices and apple_update_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Missing prerequisites (e.g., need UDID) and context for when registration is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_release_versionA
Irreversibly request release of an approved version that is in PENDING_DEVELOPER_RELEASE
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes | Approved App Store Version ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the two most safety-critical traits: the operation is irreversible, and it is a 'request' rather than an immediate state change. It omits what happens after the request (resulting state, whether Apple review intercedes) and any auth/failure behavior, so not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the most consequential word ('Irreversibly') front-loaded. Nothing is padded or repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, side-effecting tool with no output schema, the description covers the precondition, the irreversibility warning, and the async 'request' nature. It leaves the post-call lifecycle state unexplained, which is the only material gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 100% schema description coverage ('Approved App Store Version ID'), so the schema already carries the semantics. The description adds no format or source hint for versionId beyond what the schema states, which is the documented baseline of 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (request release) and resource (an approved version), plus the exact precondition state PENDING_DEVELOPER_RELEASE. This separates it cleanly from siblings like apple_submit_for_review or apple_update_version without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite condition (version must be approved and in PENDING_DEVELOPER_RELEASE) is stated explicitly, which tells the agent when the call is valid. It stops short of naming alternatives (e.g. submit_for_review vs release) or stating when not to use it, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_remove_beta_testers_from_groupB
Remove beta testers from a group
| Name | Required | Description | Default |
|---|---|---|---|
| betaGroupId | Yes | Beta Group ID | |
| betaTesterIds | Yes | Array of beta tester IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic action. It does not disclose reversibility, permissions, notifications, or impact on other groups.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, but it is appropriately sized for a simple tool. However, it could be slightly more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple parameters, the description lacks completeness by not clarifying that removing testers does not delete them (distinguishing from apple_delete_beta_tester) and not noting group existence requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so the description adds no extra meaning. Baseline score of 3 is appropriate as the schema already explains parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and resources (beta testers from a group), effectively distinguishing it from sibling tools like apple_add_beta_testers_to_group and apple_delete_beta_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or consequences of removing testers not in the group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reorder_placementsA
Set the complete display order for one localization and placement group, then read back and verify the order. In-app event localizations are not orderable.
| Name | Required | Description | Default |
|---|---|---|---|
| targetType | No | appStoreVersionLocalizations | |
| placementIds | Yes | ||
| localizationId | Yes | ||
| placementGroup | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It adds useful context by saying the tool reads back and verifies the order after setting it, and it notes the in-app event localization exclusion, but it does not disclose permissions required, whether the operation is destructive, or what happens to existing placements not included in the list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and scope, followed by a critical constraint. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, no annotations, no output schema, and 0% schema description coverage, the description is too thin. It omits parameter-level details, permission requirements, and the behavior of the targetType enum beyond the single exclusion, leaving an agent without enough information to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should explain the four parameters. It only vaguely references 'one localization and placement group' and 'display order', leaving targetType values (beyond the in-app exclusion), the array nature of placementIds, and the distinction between localizationId and placementGroup unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Set the complete display order') and resource ('placements') for a scoped unit ('one localization and placement group'). It distinguishes itself from sibling placement tools like apple_list_placements and apple_create_placement by focusing on reordering rather than listing or creating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for use (setting display order for a localization and placement group) and an explicit exclusion ('In-app event localizations are not orderable'), which helps avoid a common misuse. It stops short of naming alternative tools or describing when not to use it beyond that single exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_respond_to_reviewC
Respond to a customer review
| Name | Required | Description | Default |
|---|---|---|---|
| reviewId | Yes | Customer Review ID | |
| responseBody | Yes | Response text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but provides no behavioral details (e.g., visibility of response, character limits, idempotency). Only states the action without context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence is concise and front-loaded, but it sacrifices necessary detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is insufficient. It omits return information, error states, and important behavioral context for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond parameter names; it doesn't clarify format or constraints for 'responseBody'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Respond to a customer review' indicates a clear verb+resource but lacks specificity regarding platform (App Store assumed from prefix) and does not distinguish from sibling tools like 'apple_update_review_detail' or 'google_reply_to_review'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., apple_update_review_detail, google_reply_to_review). No mention of prerequisites like prior listing of reviews.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_revoke_certificateC
Revoke a certificate
| Name | Required | Description | Default |
|---|---|---|---|
| certificateId | Yes | Certificate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fails to disclose that revoking a certificate is irreversible and likely invalidates associated services or apps. With no annotations, the tool's behavioral traits are inadequately described, especially given the destructive nature of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, but it is too terse to be fully informative. It earns a middle score because while it is concise, it sacrifices necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool performs a destructive action with one parameter and no output schema, the description is insufficient. It should clarify the consequences of revocation and any required permissions, but it omits these critical details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a minimal description for the only parameter ('Certificate ID'). The tool description adds no further meaning beyond what the schema already provides, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Revoke') and the resource ('a certificate'), and it distinguishes from sibling tools like apple_create_certificate and apple_list_certificates. However, it lacks specificity about the type of certificate or any additional context that would elevate clarity to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as apple_delete_profile for related resources. There are no prerequisites, warnings, or notes on side effects, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_set_build_encryptionA
Set a processed build's usesNonExemptEncryption answer before submission; true may also require an app encryption declaration or supporting export-compliance documentation
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | Build ID | |
| usesNonExemptEncryption | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is a mutation and that true may trigger compliance documentation requirements, but it omits permissions/auth, reversibility, idempotency, and response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core action first and the compliance caveat second. Every clause contributes useful information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, two-parameter mutation tool with no output schema, the description covers purpose, timing, and the key compliance side effect. The remaining gaps—permissions and post-set behavior—are minor for correct invocation, though notable given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: buildId has a schema description, but usesNonExemptEncryption does not. The description adds meaning to the boolean by explaining its submission/compliance implications and clarifies that buildId refers to a processed build, but it does not document buildId format or whether the answer can later be changed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set'), specific resource (a processed build's usesNonExemptEncryption answer), and timing ('before submission'). It is clearly distinct from sibling tools like apple_assign_build and apple_submit_for_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before submission' gives clear timing context for when to use this tool, and the caveat about true requiring documentation adds domain guidance. It does not explicitly name alternatives or when-not conditions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_set_priceA
Replace the complete manual app price schedule. Call apple_get_pricing first and include every current and future manual price entry that must be preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| manualPrices | Yes | Complete desired manual schedule, including existing entries that must remain | |
| baseTerritoryId | Yes | Base territory ID for that price point, e.g. USA |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety burden and does so well: 'Replace the complete' combined with 'include every ... entry that must be preserved' makes clear that omitted entries are dropped — critical destructive semantics an agent would otherwise miss. It does not mention permission requirements, rate limits, or what the response contains, which keeps it at 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both essential, with the destructive replace semantics front-loaded before the prerequisite call. No restatement of the name or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no annotations and no output schema, the description supplies the two things that matter most: whole-schedule replacement and the get-pricing prerequisite. Gaps remain around permissions and result/confirmation behavior, but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds genuine meaning by framing manualPrices as a full replacement set rather than a delta, which changes how an agent constructs the array. It doesn't elaborate on baseTerritoryId or appPricePointId beyond the schema, so it stays just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Replace) and a precisely scoped resource (the complete manual app price schedule), distinguishing it from the read-only siblings apple_get_pricing and apple_list_app_price_points. The 'complete ... schedule' wording signals the whole-collection semantics an agent needs to distinguish it from a per-entry update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite workflow: 'Call apple_get_pricing first' and re-include every current and future entry that must be preserved. That is concrete when-to-use guidance for a destructive operation. It stops short of naming when not to use it (e.g., for a single price change vs. full schedule rewrite), but the prerequisite plus preservation instruction covers the main selection risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_submit_for_reviewB
Create or resume an App Store review submission, attach the version idempotently, and submit it while preserving the submission ID for safe recovery
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| platform | No | Platform of the version being submitted | IOS |
| versionId | Yes | App Store Version ID to submit | |
| submissionId | No | Existing READY_FOR_REVIEW submission ID to resume after an interrupted call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add real value by disclosing idempotent attachment and preservation of the submission ID for safe recovery, which is genuinely useful mutation context. It still omits permissions, failure modes (e.g. what happens if the version is already submitted), and whether the operation is partially applied on error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the create/resume/attach/submit sequence front-loaded and no filler. It is packed but every clause maps to a real behavior, so the brevity is earned rather than under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-step mutation with no annotations and no output schema, the definition explains the happy path and recovery via submissionId but leaves out the resulting state, error/rollback behavior, and how it relates to the granular submission siblings. Adequate but with clear gaps for a state-changing submission tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four parameters, including the resume semantics of submissionId. The description adds no syntax, constraints, or interpretation beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verbs and resource: creates/resumes a review submission, attaches the version, and submits it. However it bundles the work of three sibling tools (apple_create_review_submission, apple_add_review_submission_item, apple_submit_review_submission) without acknowledging them, so an agent cannot tell from this text alone why it should pick the composite over the granular path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'resume... after an interrupted call' implies the recovery scenario, but there is no explicit when-to-use-vs-alternatives guidance against the sibling submission tools, no prerequisite state (e.g. version must be READY_FOR_REVIEW), and no exclusions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_submit_review_submissionA
Submit an inspected review draft containing assets, custom pages or experiments. itemIds must exactly match all review item IDs returned by apple_get_review_submission, to avoid submitting unexpected items. This starts App Review; saving or attaching an item does not.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| itemIds | Yes | ||
| platform | No | IOS | |
| submissionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key behavioral trait: this action starts App Review, while saving or attaching an item does not. That is exactly the side-effect context an agent needs before mutating state. It doesn't cover permissions, idempotency, or whether submission can be undone/withdrawn (apple_cancel_submission exists), which a fully transparent definition would mention.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the highest-risk constraint (exact item IDs). Every sentence adds information; no filler. Slightly dense but well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing submission tool with no annotations, no output schema, and 0% schema coverage, the description covers the critical side effect and the itemIds contract but leaves appId, submissionId, and platform unexplained, and doesn't say what the call returns or what failure looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains itemIds well (must be the exact set returned by apple_get_review_submission) but says nothing about appId, submissionId, or the platform enum. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (submit) and resource (review draft / submission) and enumerates what the draft contains (assets, custom pages, experiments). It implicitly separates itself from apple_add_review_submission_item by noting that attaching an item does not start review, though it never explicitly distinguishes itself from the nearby apple_submit_for_review sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition ('itemIds must exactly match all review item IDs returned by apple_get_review_submission') which routes the agent to the prerequisite tool first. It also marks the boundary versus saving/attaching. What's missing is an explicit statement of when not to use it (e.g. draft not yet inspected, or use apple_submit_for_review for version submissions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_accessibility_declarationC
Update an existing accessibility nutrition label declaration
| Name | Required | Description | Default |
|---|---|---|---|
| declarationId | Yes | Accessibility Declaration ID | |
| supportsCaptions | No | ||
| supportsVoiceover | No | ||
| supportsLargerText | No | ||
| supportsVoiceControl | No | ||
| supportsDarkInterface | No | ||
| supportsReducedMotion | No | ||
| supportsAudioDescriptions | No | ||
| supportsSufficientContrast | No | ||
| supportsDifferentiateWithoutColorAlone | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a mutation tool, yet it says nothing about permissions, whether omitted boolean fields are preserved or reset (critical with 9 optional booleans), or whether changes are reversible. Only the bare implication of 'Update' is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, but its brevity reflects under-specification rather than disciplined density; every sentence earns its place but there are too few of them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no annotations and no output schema, the description should explain update semantics and field handling; instead it offers only a one-line restatement of the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 10%: declarationId is described, and the nine supports* booleans have no schema descriptions at all. The description never mentions these capability flags or how partial updates are handled, so it does not compensate for the coverage gap even though the property names are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and a specific resource ('accessibility nutrition label declaration'), which clearly separates it from siblings like apple_create_accessibility_declaration, apple_list_accessibility_declarations, and apple_delete_accessibility_declaration. It stops short of any scope or effect detail, but an agent can identify the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create, get, or list, and no note that a declarationId must first be obtained via apple_list_accessibility_declarations. The agent must infer all preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_age_ratingC
Update the current App Store age-rating questionnaire. Prefer NONE, INFREQUENT, or FREQUENT for frequency fields; legacy values remain accepted by Apple for compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| lootBox | No | ||
| contests | No | ||
| gambling | No | ||
| advertising | No | ||
| ageRatingId | Yes | Age Rating Declaration ID | |
| kidsAgeBand | No | ||
| socialMedia | No | ||
| ageAssurance | No | ||
| messagingAndChat | No | ||
| parentalControls | No | ||
| gamblingSimulated | No | ||
| violenceRealistic | No | ||
| gunsOrOtherWeapons | No | ||
| horrorOrFearThemes | No | ||
| ageRatingOverrideV2 | No | ||
| userGeneratedContent | No | ||
| profanityOrCrudeHumor | No | ||
| sexualContentOrNudity | No | ||
| unrestrictedWebAccess | No | ||
| healthOrWellnessTopics | No | ||
| koreaAgeRatingOverride | No | ||
| matureOrSuggestiveThemes | No | ||
| socialMediaAgeRestricted | No | ||
| violenceCartoonOrFantasy | No | ||
| developerAgeRatingInfoUrl | No | ||
| medicalOrTreatmentInformation | No | ||
| sexualContentGraphicAndNudity | No | ||
| alcoholTobaccoOrDrugUseOrReferences | No | ||
| violenceRealisticProlongedGraphicOrSadistic | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It indicates a mutation of the current questionnaire and notes legacy value acceptance, but it does not explain permissions, partial-vs-full update semantics, what happens to omitted fields, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no waste. The purpose is front-loaded and the second sentence directly addresses an important enum-value choice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 29 parameters, no annotations, and no output schema, the description is incomplete. It should explain the required ageRatingId, partial update behavior, and at least the major field groups beyond frequency values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 3%, with only ageRatingId documented. The description adds useful guidance for frequency fields, but it does not identify which parameters are frequency fields or explain the many booleans, override enums, kidsAgeBand, or developerAgeRatingInfoUrl.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update the current App Store age-rating questionnaire. It is clear enough to distinguish from the read-only sibling apple_get_age_rating, though it does not explicitly name alternatives or scope exclusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the tool updates the questionnaire but gives no explicit when-to-use guidance, no prerequisites, and no alternatives such as reading first with apple_get_age_rating. The only guidance concerns preferred enum values, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_appC
Update app-level submission settings: the content-rights declaration and primary locale
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| primaryLocale | No | ||
| contentRightsDeclaration | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says this is an update and identifies the affected settings, but it does not state permission requirements, whether the update is partial or full-replacement, what null values do, or what happens to other submission settings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. It immediately communicates the update target and the specific settings involved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is too thin. It identifies the fields being changed but omits behavioral details such as permissions, reversibility, partial-update semantics, and response expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with primaryLocale and contentRightsDeclaration undocumented in the schema. The description partially compensates by naming those two settings, but it does not explain the content-rights enum meanings, null semantics, or primary locale format, leaving meaningful gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('app-level submission settings') and names the two editable fields, so the tool's purpose is clear. It does not explicitly distinguish this update target from nearby siblings such as localized app-info or category updates, keeping it just below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what can be updated but gives no guidance on when to use this tool versus alternatives such as apple_update_app_info_localization or apple_update_category, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_app_info_localizationB
Update app name, subtitle, or privacy policy URL for a locale
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | App name | |
| subtitle | No | App subtitle | |
| localizationId | Yes | AppInfo Localization ID | |
| privacyPolicyUrl | No | ||
| privacyPolicyText | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as idempotency, required permissions, or what happens if fields are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, and concise. Could be slightly more structured with a list of fields, but no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is too minimal for a mutation tool with 5 parameters. It does not explain return values, constraints, or behavior when optional fields are not provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for three parameters (name, subtitle, privacyPolicyUrl) beyond the schema, but privacyPolicyText and localizationId are not mentioned. Schema coverage is 60%, so description partly compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (update) and the resource (app info localization for a locale), distinguishing it from list and create siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like apple_create_version_localization or apple_list_app_info_localizations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_categoryA
Update app primary/secondary category
| Name | Required | Description | Default |
|---|---|---|---|
| appInfoId | Yes | AppInfo ID | |
| primaryCategoryId | No | Primary category ID (e.g. SOCIAL_NETWORKING) | |
| secondaryCategoryId | No | Secondary category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavioral traits. The description merely states 'Update' without indicating whether the operation is destructive, idempotent, or what happens to existing categories if only one parameter is provided. This lacks the necessary transparency for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the core functionality without any extraneous words. It is appropriately front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no output schema, no nested objects, and high schema coverage), the description is minimally adequate. However, it lacks behavioral context such as whether both category IDs are optional or the effect of partial updates, which would improve completeness for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for all parameters with clear descriptions. The tool description adds no additional meaning beyond what the schema already conveys. Therefore, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Update') and the resource ('app primary/secondary category'), which is a specific verb+resource combination. It effectively distinguishes the tool from its siblings, as no other sibling tool has a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when updating app categories, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., using get_app_info first to check current categories) or mention any prerequisites (e.g., existence of the app).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_custom_product_pageB
Rename a custom product page or switch its visibility (a hidden page stops serving its URL)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| pageId | Yes | ||
| visible | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one real side effect — a hidden page stops serving its URL — which is genuinely useful beyond the schema. However, it omits whether this is a partial update (unlisted fields untouched), whether visibility can be re-enabled, permission/auth needs, and what a rename affects downstream.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single economical sentence that front-loads the two capabilities, with the parenthetical adding real semantic value rather than padding. Slightly compressed phrasing but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema coverage, the definition is thin: partial-update semantics, pageId sourcing, reversibility of hiding a page, and auth requirements are all absent. An agent could invoke it but not confidently predict the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives meaning to 'name' (rename) and 'visible' (visibility toggle with its effect), covering two of three params, but says nothing about 'pageId' — the sole required parameter — its format, or where to source it, and never states that omitted optional params leave existing values unchanged.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair (rename / switch visibility) and a specific resource (a custom product page), which lets an agent separate it from apple_create_custom_product_page, apple_delete_custom_product_page, and the *_custom_product_page_version siblings. It is clear without explicitly naming the siblings it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. an existing pageId obtained from apple_list_custom_product_pages), and no routing between this tool and apple_update_custom_product_page_version or apple_update_custom_product_page_localization. Usage is only inferable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_custom_product_page_localizationC
Change the promotional text of a custom product page localization
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | ||
| promotionalText | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It identifies a mutation to promotional text but omits whether the localization must already exist, what permissions are required, whether other localization fields are affected, and the 170-character constraint present in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It is appropriately concise, though its brevity contributes to gaps covered in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with no annotations, no output schema, and 0% schema description coverage across two required parameters, the one-sentence description is not complete enough for an agent to invoke it confidently. Key details about localization identification, text limits, and side effects are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It references the concept of promotional text but never explains the localizationId parameter, parameter names, or the 170-character maximum, leaving both parameters semantically underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Change") and names the exact resource ("promotional text of a custom product page localization"). It is clear what the tool does, though it does not explicitly differentiate itself from sibling update tools such as apple_update_custom_product_page_version or apple_update_version_localization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It only states the operation, leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_custom_product_page_versionB
Change the deep link of an editable custom product page version
| Name | Required | Description | Default |
|---|---|---|---|
| deepLink | Yes | ||
| versionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full disclosure burden. It signals a mutation ('Change') and an 'editable' precondition, but says nothing about permissions, whether the change requires re-review or submission, whether it affects live versions, or what happens on rejection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the scope (one field on one version type) is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description omits key operational context such as the editable-state requirement details and side effects. It does at least scope the tool to a single field change, which is the minimum an agent needs to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but schema itself declares both fields and a URI format for deepLink. The description adds meaning via the 'editable' qualifier on the version, though it does not explain the deepLink format expectations or how to obtain a valid versionId beyond what the schema gives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: it changes the deep link of a custom product page version, which distinguishes it from apple_update_custom_product_page (the page) and apple_create_custom_product_page_version. It never names those siblings explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'editable' implies a precondition and thus suggests when the call is valid, but there is no explicit when-to-use guidance, no mention of the sibling version-creation tool, and no statement of what to do if the version is not editable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_deviceC
Update device name or status
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New device name | |
| status | No | New status | |
| deviceId | Yes | Device ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It merely states the action without revealing side effects (e.g., irreversibility, permission requirements, or whether the update is immediate). The agent lacks information about the tool's operational impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no extraneous words. While it could be more informative, it is not verbose, earning a score of 4 for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema) and lack of annotations, the description is minimally adequate. It does not explain required parameters, optionality, or any constraints (e.g., device must exist). The agent may miss critical context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since input schema description coverage is 100%, the schema already describes each parameter's meaning (e.g., 'New device name', 'New status'). The description adds no additional semantics beyond the schema, meriting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'device', and specifies the modifiable attributes ('name or status'). This distinguishes it from tools like 'apple_register_device' (create) and 'apple_list_devices' (read). However, it does not explicitly mention that only existing devices can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'apple_register_device' or 'apple_list_devices'. It does not mention prerequisites, conditions, or exclusions, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_experimentA
Rename a test, change its traffic share, or start it (started=true). New visuals in a test go through App Review before it runs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| started | No | Start the test; a running test cannot be un-started | |
| experimentId | Yes | ||
| trafficProportion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but does add real value: the one-way nature of starting and the App Review gate for new visuals. It does not state whether omitted fields are left untouched, what permissions are needed, or what the call returns, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the actionable verbs and followed by the one caveat that matters. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with no annotations and no output schema, the description covers the updateable fields and the review caveat but omits update semantics (partial vs. full replacement), permission requirements, and return expectations. Adequate but with clear remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, but the description compensates by explaining the intent behind each optional parameter: name means rename, trafficProportion means traffic share, and started=true means start. Only experimentId and numeric bounds are left to the schema, which already supplies minimum/maximum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific mutations available (rename, change traffic share, start) on the resource referred to as a 'test', which maps clearly to an experiment. It doesn't explicitly say it is a partial update of an existing experiment or reference the experimentId, but an agent can distinguish this from create/delete experiment siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it by listing the editable aspects (name, traffic share, started), but never names alternatives such as apple_update_experiment_treatment for treatment-level changes or apple_delete_experiment. No explicit exclusions or prerequisites beyond the App Review note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_experiment_treatmentC
Rename a treatment or change its alternate icon
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| appIconName | No | ||
| treatmentId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses only the mutable fields. It doesn't say whether name and appIconName can be changed together or are mutually exclusive, whether the update is partial/merge, what happens to unspecified fields, or what an error looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and no redundancy. It is efficient, though the extreme brevity is also the source of the missing detail rather than a symptom of good structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with zero annotations, no output schema, and a completely undocumented parameter schema, the description is too thin. An agent still lacks permission requirements, success/return behavior, and confirmation of which parameters may be combined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it does map 'rename' to the name parameter and 'alternate icon' to appIconName, which helps. However, treatmentId, the one required parameter, is never explained, and nothing indicates that both optional fields are constrained to minLength 1 strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs specific verbs (rename, change) with the concrete resource (a treatment) and its two mutable fields. It is clearly distinguishable from siblings like apple_update_experiment or apple_create_experiment_treatment, though it never names the treatment ID as the target key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus apple_update_experiment, apple_delete_experiment_treatment, or the localization tools. Prerequisites (an existing experiment treatment) and the fact that only name/icon are editable are left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_phased_releaseA
Pause, resume, or complete an existing phased release; COMPLETE immediately releases the update to all users
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | ||
| phasedReleaseId | Yes | App Store Version Phased Release ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose the one high-stakes behavior: COMPLETE immediately releases the update to all users. However, it says nothing about what PAUSED means for users already on the rollout, whether COMPLETE is reversible, permission requirements, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause lists the actions, and the semicolon clause delivers the one caveat that matters most. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no annotations and no output schema, the description covers the main risk but omits reversibility, preconditions, and the effect of each state transition. An agent can select it correctly but must still guess at operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: the 'state' enum has no per-value description. The description compensates by mapping natural-language verbs to enum values (pause→PAUSED, resume→ACTIVE) and flagging the semantic weight of COMPLETE, which is exactly the meaning the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb set (pause, resume, complete) and a specific resource (an existing phased release), which clearly separates it from apple_create_phased_release, apple_get_phased_release and apple_delete_phased_release in the sibling list. It stops short of explicitly naming those siblings or stating the tool is the only mutator of release state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'An existing phased release' implies the precondition that a release must already exist, but there is no explicit when-to-use or when-not-to-use guidance, no mention of prerequisites (e.g. version approved for release), and no routing to alternative tools for other release operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_review_detailC
Update app review info (contact info, notes, demo account for reviewer)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes for the reviewer | |
| versionId | Yes | App Store Version ID | |
| contactEmail | No | ||
| contactPhone | No | ||
| contactLastName | No | ||
| demoAccountName | No | ||
| contactFirstName | No | ||
| demoAccountPassword | No | ||
| demoAccountRequired | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry full behavioral transparency burden. It only says 'Update', implying a write operation, but does not disclose side effects, reversibility, permission requirements, rate limits, or any other behavioral traits. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 12 words, front-loaded with key information. No extra words or fluff. Every word earns its place. Example of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 9 parameters and no output schema, the description provides only a minimal summary. It doesn't explain return values, error states, prerequisites, or what happens when fields are left null. For a complex operation like updating app review details, more context is needed to ensure correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22% (only versionId and notes have descriptions). The tool description groups parameters into categories (contact info, notes, demo account) which provides a high-level summary, but does not add specific format, constraints, or meaning beyond the schema for the undocumented parameters. For example, it doesn't clarify that contactEmail, contactPhone, etc. are for reviewer communication.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Update' and resource 'app review info', and lists specific fields (contact info, notes, demo account). However, it does not differentiate from other apple_update_* tools in the sibling list, such as apple_update_age_rating or apple_update_version_localization, which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It implies usage for updating review details but does not mention prerequisites (e.g., that a versionId must be obtained first) or when not to use (e.g., if review is already submitted). The description lacks any usage context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_territory_availabilityA
Change availability, release date, or pre-order state for one existing territory availability record returned by apple_list_availability
| Name | Required | Description | Default |
|---|---|---|---|
| available | No | ||
| releaseDate | No | ||
| preOrderEnabled | No | ||
| territoryAvailabilityId | Yes | Territory Availability resource ID, not the territory code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses scope (single existing record) and that this is a mutation, but says nothing about whether it is a partial or full replacement update, what happens to fields left null/omitted, permission requirements, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the mutation and its scope front-loaded, and no filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an unannotated mutation tool with no output schema and partial parameter documentation, the description omits update semantics (partial vs. full), null handling, and return behavior. It is adequate to identify the tool but not to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, with just territoryAvailabilityId documented (including the useful 'not the territory code' note). The description names the three mutable fields but adds no semantics beyond the schema, such as whether releaseDate must accompany preOrderEnabled or what null means for each field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change) and the exact resource and fields affected (availability, release date, pre-order state) on a single existing territory availability record. It also anchors the target to records returned by apple_list_availability, which distinguishes it from apple_create_availability and apple_list_availability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one existing territory availability record returned by apple_list_availability' implicitly tells the agent to fetch the ID from that list tool first, which is real usage guidance. It stops short of explicit exclusions, such as directing new territories to apple_create_availability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_versionC
Update an existing App Store version's version, copyright, or release timing
| Name | Required | Description | Default |
|---|---|---|---|
| copyright | No | ||
| versionId | Yes | App Store Version ID | |
| releaseType | No | ||
| versionString | No | ||
| earliestReleaseDate | No | ISO 8601 date-time with timezone; required for SCHEDULED releases |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden for a mutation tool. It says nothing about permission/role requirements, whether the version must be in an editable state, whether changes are reversible, or what happens to release fields the caller omits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler and the resource stated immediately. It is efficient, though at only one clause it is thin rather than tight – there is no second sentence carrying guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 5-parameter mutation tool with no annotations and no output schema needs more: editability preconditions, how releaseType values behave, and how this differs from the release/submit siblings are all absent. The agent can guess the call but cannot call it confidently in edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description names the three touchable areas (version string, copyright, release timing) which roughly maps to versionString, copyright, and releaseType/earliestReleaseDate, but it adds no semantics beyond the property names. With only 40% schema coverage, it leaves the releaseType enum values and the SCHEDULED→earliestReleaseDate coupling (documented only in the schema) unexplained in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and a specific resource ('an existing App Store version'), plus the field groups touched. It distinguishes itself from apple_create_version by the word 'existing', but never names siblings or the App Store Connect concept it belongs to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to call this versus apple_create_version, apple_update_version_localization, apple_release_version, or apple_update_app. No preconditions (e.g. version must not be in review) are stated, so the agent must infer the entire usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_update_version_localizationC
Update localization fields (description, keywords, whatsNew, etc)
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | No | Comma-separated keywords | |
| whatsNew | No | ||
| supportUrl | No | ||
| description | No | ||
| marketingUrl | No | ||
| localizationId | Yes | Localization ID | |
| promotionalText | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While the description indicates mutation, it fails to disclose behavioral details such as whether fields are overwritten or merged, constraints on field values (e.g., length limits), or idempotency. With no annotations provided, the description should cover these but does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the basic purpose. However, it could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no output schema, and no annotations, the description is incomplete. It lacks details about return values, side effects, and required context (e.g., that localizationId must correspond to an existing version localization), leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (29%), and the description merely lists field names without adding constraints, formats, or usage context. It does not compensate for the missing schema descriptions, providing little additional meaning beyond the field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'localization fields', listing example fields. The tool name and description distinguish it from sibling tools like create and list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g., needing a localization ID from a prior list call), and no exclusions or scenarios where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_upload_assetA
Upload an image or video once to the App Asset Library, commit uploaded=true, and verify processing against a specId from apple_get_asset_specs. Create placements separately to reuse it across localizations.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | APP_SCREENSHOTS_AND_PREVIEWS | |
| filePath | Yes | ||
| mediaType | Yes | ||
| referenceName | No | ||
| assetLibraryId | Yes | ||
| expectedSpecId | Yes | Specification ID from apple_get_asset_specs; checked after processing | |
| timeoutSeconds | No | ||
| waitForProcessing | No | ||
| pollIntervalSeconds | No | ||
| previewFrameTimeCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It usefully discloses the commit-then-verify processing lifecycle and that verification is checked against a specId, but omits permission requirements, what happens on spec mismatch/failure, and the waiting/polling semantics that materially shape the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core action, with the prerequisite and the follow-up tool named last. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 10-parameter mutation with 10% schema coverage, no annotations and no output schema needs far more: the meaning and defaults/limits of the polling and timeout parameters, what referenceName/category do, and what a failed verification returns are all absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% across 10 parameters. The description reinforces expectedSpecId (already documented in the schema) and mentions a 'uploaded=true' commit flag that does not even appear as a parameter, while category, mediaType, referenceName, filePath, previewFrameTimeCode, waitForProcessing, timeoutSeconds and pollIntervalSeconds go unexplained in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upload) and resource (image/video into the App Asset Library), plus the follow-on commit/verify steps. It implicitly separates itself from apple_upload_screenshot (screenshot sets) and apple_create_placement (placements), which the last sentence makes explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the prerequisite source of specId (apple_get_asset_specs) and routes the reuse-across-localizations case to apple_create_placement. No explicit when-not-to-use case, but the workflow guidance is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_upload_buildA
Upload a signed IPA through the App Store Connect Build Uploads API: verify its SHA-256 locally, reserve the upload and file, send every presigned range, commit its MD5 transfer checksum, and optionally wait for import
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| filePath | Yes | Local path to a signed .ipa file | |
| platform | No | IOS | |
| buildNumber | Yes | CFBundleVersion, e.g. 42 | |
| versionString | Yes | CFBundleShortVersionString, e.g. 1.2.0 | |
| expectedSha256 | No | Optional expected SHA-256 hex digest; checked locally before any API request | |
| timeoutSeconds | No | ||
| expectedFileSize | No | Optional expected IPA size in bytes; checked locally before any API request | |
| waitForProcessing | No | Wait for the Build Upload to reach COMPLETE or FAILED | |
| pollIntervalSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does well: it discloses the ordered side effects (local SHA-256 verification before any API request, reserving upload and file, sending presigned ranges, committing an MD5 transfer checksum). It stops short of stating that a build record is created irreversibly, what happens if the transfer fails mid-way, or whether retries are idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, and every clause (verify, reserve, send ranges, commit checksum, optional wait) carries real information. The chained colon-and-comma construction is dense enough to be slightly hard to parse but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, 5-stage mutation with no annotations and no output schema, the description covers the procedure but not the result: it does not say what a successful call yields (upload ID, build state) or how failures after the commit are surfaced. That leaves an agent unable to reason about the outcome without probing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 70%, and the properties already describe the local pre-flight checks for expectedSha256 and expectedFileSize in the same terms the description uses. The description adds no semantics for appId, filePath, versionString, buildNumber, platform, or pollIntervalSeconds, so it does not meaningfully exceed what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 a signed IPA through the App Store Connect Build Uploads API') and enumerates the full upload pipeline, which clearly separates it from siblings like apple_upload_asset (assets rather than builds) or google_upload_bundle. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally wait for import' implies a mode selection, and 'signed IPA' implies a prerequisite, but the description never says when to prefer this over apple_get_build_upload / apple_wait_for_build_upload for an existing upload, nor when to set waitForProcessing=false. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_upload_screenshotA
Legacy: upload and commit a screenshot while preserving its ID for recovery. Deprecated by Apple; prefer apple_upload_asset and apple_create_placement.
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | Yes | File name (e.g. screen1.png) | |
| filePath | Yes | Local path to the screenshot image | |
| fileSize | No | Expected file size in bytes; the actual file size is always used | |
| screenshotSetId | Yes | Screenshot Set ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It helpfully discloses that the operation both uploads and commits (mutating state) and preserves the ID for recovery, but says nothing about permissions, failure modes, reversibility, or how commit behaves on error. Adequate but incomplete for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste: the deprecation status and the alternatives are front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a legacy mutation with full schema coverage and no output schema, the description covers purpose, deprecation, and alternatives well. It could disclose a bit more about commit semantics and failure behavior, but an agent has enough to call it correctly or avoid it in favor of the recommended tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented (fileName, filePath, fileSize, screenshotSetId). The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (upload and commit) plus the resource (screenshot), and explicitly distinguishes itself from the modern siblings apple_upload_asset and apple_create_placement. An agent can identify what it does and how it differs from alternatives without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly flags the tool as 'Legacy' and 'Deprecated by Apple', and directs the agent to prefer apple_upload_asset and apple_create_placement instead. This is clear when-not-to-use and alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_wait_for_assetB
Resume waiting for an uploaded asset to become ready; optionally check that Apple matched the intended specification
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | ||
| mediaType | Yes | ||
| expectedSpecId | No | ||
| timeoutSeconds | No | ||
| pollIntervalSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It communicates that the tool waits/resumes and can check specification matching, but omits polling/blocking behavior, timeout semantics, failure modes, permissions, and what is returned when the asset becomes ready or times out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence and front-loads the core action. It contains no boilerplate or irrelevant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter wait/polling tool with no annotations and no output schema, the description is missing essential operating details: timeout and polling behavior, what 'ready' means, result/status behavior, and how expectedSpecId mismatches are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds some meaning to assetId and expectedSpecId via 'uploaded asset' and 'intended specification', but leaves mediaType and especially timeoutSeconds/pollIntervalSeconds unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Resume waiting for an uploaded asset to become ready', with an optional spec-match check. It distinguishes assets from build uploads implicitly by naming 'asset', but does not explicitly differentiate from sibling tools such as apple_wait_for_build_upload or apple_get_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this after an asset upload to wait for readiness, and optionally validate the expected specification. However, it gives no explicit when-not-to-use guidance and does not name alternatives like apple_get_asset or apple_wait_for_build_upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_wait_for_build_uploadB
Wait until a Build Uploads API operation completes or fails, returning the imported build relationship on success
| Name | Required | Description | Default |
|---|---|---|---|
| buildUploadId | Yes | Build Upload ID | |
| timeoutSeconds | No | ||
| pollIntervalSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the tool waits for completion or failure and returns the imported build relationship on success, but it omits what happens on timeout, how polling works, and what is returned or raised on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. The terminal condition and success return are stated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a wait/polling tool with timeout and poll-interval parameters, no annotations, and no output schema, the definition is too thin. Critical details such as timeout behavior, failure behavior, and polling semantics are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 33%: only buildUploadId has a description. The description adds no meaning for buildUploadId, timeoutSeconds, or pollIntervalSeconds, so it does not compensate for the undocumented timeout and polling parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: wait for a Build Uploads API operation to reach a terminal state. It also states the successful outcome, returning the imported build relationship. It is clear, though it does not explicitly contrast itself with sibling apple_get_build_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The wait-until-complete wording implies this should be used after a build upload operation has been started, but no explicit guidance is given about when to use it instead of apple_get_build_upload or after apple_upload_build. There are no when-not-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_activate_purchase_optionB
Activate a one-time product purchase option so it becomes available for purchase
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | One-time product ID | |
| packageName | Yes | Android package name | |
| purchaseOptionId | Yes | Purchase option ID to activate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the one important behavioral trait: this is a state-changing operation whose result is the option becoming purchasable. It says nothing about idempotency, what happens if already active, required permissions, or whether the change is reversible, which for an unannotated mutation is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler; the verb and effect come first. It is arguably too terse for a mutation tool, but that is a completeness issue rather than a structural one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three required parameters, no output schema and no annotations, a single sentence is barely sufficient. An agent can call it, but cannot tell from the definition whether an edit is required, whether activation is idempotent, or what state the option must be in beforehand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters are required and self-documented (packageName, productId, purchaseOptionId). The description adds no additional meaning such as ID formats or the relationship between productId and purchaseOptionId, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Activate') on a specific resource ('one-time product purchase option') and adds the effect ('becomes available for purchase'). It contrasts implicitly with the sibling google_deactivate_purchase_option and google_activate_subscription_base_plan through the resource naming, though it never names the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the effect ('so it becomes available for purchase') signals you call this when a purchase option should be sellable, and the sibling deactivate tool implies the inverse. There is no explicit when-to-use, when-not-to-use, or stated prerequisite such as needing a committed edit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_activate_subscription_base_planA
Activate a subscription base plan so it becomes purchasable. Base plans default to DRAFT after creation; this is required to make them ACTIVE.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Subscription product ID | |
| basePlanId | Yes | Base plan id to activate | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden; it usefully discloses the DRAFT→ACTIVE lifecycle and that activation gates purchasability. It does not disclose permission requirements, idempotency (what happens if already ACTIVE), failure modes for unknown basePlanId, or whether an edit/commit is involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the state-transition purpose is front-loaded and the lifecycle rationale follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-required-param mutation with no output schema, the description gives the essential lifecycle context an agent needs to pick and call it. It could reasonably add what the call returns (e.g., the updated base plan) and error behavior, but the core is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (packageName, productId, basePlanId) are already documented at 100% schema coverage, so the description does not need to explain them. It adds no format hints or constraint notes beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb (Activate) with a specific resource (subscription base plan) and states the resulting outcome ('becomes purchasable'), so an agent knows exactly what state change occurs. It is clearly distinguishable from the deactivate sibling by the direction of the transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the condition that selects this tool: base plans are DRAFT after creation and this call is required to make them ACTIVE/purchasable. What is missing is any explicit mention of the inverse sibling (google_deactivate_subscription_base_plan) or other prerequisites such as the subscription product already existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_commit_editA
Commit all pending changes. By default, fail safely instead of canceling changes that are already in review.
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID from google_create_edit | |
| packageName | Yes | Android package name | |
| changesInReviewBehavior | No | Safe default is ERROR_IF_IN_REVIEW. Choose cancellation only when intentionally replacing a review. | ERROR_IF_IN_REVIEW |
| changesNotSentForReview | No | Keep rejected changes out of review until they are explicitly sent from Play Console. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and only partially meets it: it discloses the safe-default failure mode for in-review changes, which is real behavioral value. It does not say that committing is a consequential, hard-to-reverse action, whether credentials or review permissions are required, or what happens to the edit afterwards, all of which matter for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core action is stated first and the default-safety note follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations and no output schema, so the description must supply the consequences of calling it. It never says that committing finalizes an edit into a release-ready state, that failures leave the edit open, or what a successful commit returns, which are exactly the gaps annotations would otherwise fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds the intent behind the default: the tool prefers to fail rather than silently cancel in-review changes. That reinforces rather than merely repeats the changesInReviewBehavior documentation, though it adds nothing about changesNotSentForReview or the required editId/packageName pairing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Commit all pending changes" names a specific verb and resource, and the surrounding language makes clear this is an edit-commit operation distinct from validate/delete siblings. It stops short of explicitly naming google_validate_edit or google_delete_edit as the alternatives, so an agent must infer the boundary from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"By default, fail safely instead of canceling changes that are already in review" gives useful guidance on which behavior to pick, but only for one parameter. There is no explicit statement of when to commit versus validate an edit first, or when committing is inappropriate, leaving the broader routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_create_editA
Create a new edit session. Required before making any changes to a Google Play listing.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name (e.g. com.example.app) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool is a mutation ('create'), but does not mention idempotency, whether calling it again overwrites an existing session, authentication requirements, or other side effects. This lack of detail leaves the agent underinformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no redundant information. It is front-loaded with the core action and a key prerequisite. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description adequately states the purpose and prerequisite. However, it lacks behavioral details (e.g., edit session lifecycle) that would make it fully complete given the complexity of a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter (packageName), so the description adds no extra meaning beyond what the schema provides. The baseline is 3, and the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool creates a new edit session and is required before making changes to a Google Play listing. It uses a specific verb (Create) and resource (edit session), distinguishing it from sibling tools like google_commit_edit and google_delete_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Required before making any changes to a Google Play listing,' providing clear context for when to use this tool. However, it does not mention when not to use it or alternatives (e.g., reusing an existing edit session), but the sibling tool names imply the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_create_iapC
Create a new in-app product (managed product)
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Product SKU (unique identifier) | |
| status | No | active | |
| packageName | Yes | Android package name | |
| defaultTitle | Yes | Default product title | |
| purchaseType | No | managedUser | |
| defaultLanguage | Yes | Default language (e.g. en-US) | |
| defaultDescription | Yes | Default product description | |
| defaultPriceMicros | Yes | Price in micros (e.g. 990000 for $0.99) | |
| defaultPriceCurrencyCode | Yes | Currency code (e.g. USD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the creation action but omits details about required permissions, whether the product is created in a draft state, or what the response looks like. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose. While concise, it could be slightly expanded without losing brevity. The front-loading is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 9 parameters, no output schema, and no annotations, the description is too minimal. It lacks information on return values, side effects, or validation behavior. A more complete description would clarify expected outcomes and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema itself describes 78% of parameters (e.g., 'Android package name', 'Product SKU'). The description adds no additional meaning beyond the schema. While the schema covers most parameters, the description could provide context on parameter usage but fails to do so. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new in-app product (managed product)'). It is distinguishable from sibling tools like google_update_iap and google_delete_iap. However, it does not provide additional context to differentiate from other creation tools like google_create_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like google_update_iap or google_create_release. There is no mention of prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_create_one_time_productA
Create a new one-time product (buy or rent) on Google Play. Inspect the returned purchase-option state and call google_activate_purchase_option when it is DRAFT.
| Name | Required | Description | Default |
|---|---|---|---|
| listings | Yes | At least one localization is required | |
| offerTags | No | ||
| productId | Yes | One-time product ID, e.g. com.example.app.remove_ads | |
| packageName | Yes | Android package name (e.g. com.example.app) | |
| regionsVersion | No | Google Play regions version. Default 2022/02 matches Google API expectations. | 2022/02 |
| purchaseOptions | Yes | At least one purchase option (buy or rent) is required | |
| taxAndComplianceSettings | No | ||
| restrictedPaymentCountries | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the returned purchase option may be in DRAFT state and that google_activate_purchase_option is the follow-up, but it omits important mutation details such as whether an edit transaction is required, permission requirements, idempotency, and what exactly gets created.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the critical post-creation workflow. Every sentence adds value and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex create tool with 8 parameters, nested objects, no annotations, and no output schema, the description is too sparse. It covers the activation workflow but not the prerequisites or the structure of the large configuration payload an agent must supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 63% across 8 parameters, many nested. The description adds no parameter-level meaning beyond repeating the buy/rent distinction already present in the schema, leaving substantial gaps such as regional pricing, tax settings, and listing structure unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new one-time product (buy or rent)') and clearly distinguishes the scope from sibling subscription or IAP creation tools. The parenthetical clarifies the two purchase-option modes without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this to create a new one-time product, then inspect the returned purchase-option state and call google_activate_purchase_option if it is DRAFT. It does not explicitly state when not to use it (e.g., use google_update_one_time_product for existing products) or mention prerequisites such as an edit session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_create_releaseB
Create or update one release with an explicit version-code set. Google Play retains fallback releases; send only the desired change.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Target track ID, including custom or form-factor tracks returned by google_list_tracks | |
| editId | Yes | Edit ID | |
| status | No | completed | |
| packageName | Yes | Android package name | |
| releaseName | No | Release name/label | |
| releaseNotes | No | Release notes per language | |
| userFraction | No | Staged rollout fraction (exclusive range 0-1; not supported for internal) | |
| versionCodes | Yes | Complete version-code set for this release | |
| countryTargeting | No | Country targeting for an inProgress production rollout | |
| inAppUpdatePriority | No | In-app update priority from 0 (lowest) to 5 (highest); cannot be changed after rollout |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two non-obvious traits: this is an upsert ('create or update'), and Google Play retains fallback releases so callers need only send the desired change. It omits the edit lifecycle (must be inside an active edit, must commit), permission/auth needs, and idempotency behavior, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action and the key semantic constraint front-loaded. Nothing is redundant and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation with nested objects, no annotations, and no output schema, the description is thin on workflow context. The rich schema compensates for field-level detail, but the edit/commit lifecycle and relationship to promote/halt siblings are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 90%, so parameters are already well documented. The description's 'explicit version-code set' merely echoes the schema's 'Complete version-code set for this release' and adds no format, ordering, or interaction detail beyond structured data; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create/update) and resource (one release) plus the defining constraint 'explicit version-code set,' which is enough to distinguish it from status-listing or halt tools. It does not, however, name or differentiate against close siblings like google_promote_release or google_halt_release, which also act on releases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use/when-not guidance. The phrase 'send only the desired change' hints at how to call it, but nothing tells the agent when to prefer google_promote_release or google_halt_release, nor that an active edit and subsequent commit are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_create_subscriptionA
Create a new subscription on Google Play (monetization API). Pass the full subscription body — including listings and at least one base plan with billing details and per-region pricing. Base plans are created in DRAFT state; call google_activate_subscription_base_plan to make them purchasable.
| Name | Required | Description | Default |
|---|---|---|---|
| listings | Yes | At least one localization is required | |
| basePlans | Yes | At least one auto-renewing, prepaid, or installments base plan is required | |
| productId | Yes | Subscription product ID, e.g. com.example.app.pro_monthly | |
| packageName | Yes | Android package name (e.g. com.example.app) | |
| regionsVersion | No | Google Play regions version. Default 2022/02 matches Google API expectations. | 2022/02 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the most consequential behavior: base plans are created in DRAFT and are not purchasable until google_activate_subscription_base_plan is called. However, it says nothing about the Google Play edit-transaction lifecycle (google_create_edit / google_commit_edit siblings exist) or required permissions, which are real prerequisites for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose first, required payload second, resulting state and follow-up action third. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with a deeply nested schema and no output schema, the description covers the critical inputs and the post-creation state an agent must reason about. The remaining gap is the surrounding edit/publish workflow and authorization prerequisites, which an agent would need before invoking this in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 packageName, productId, listings, basePlans and regionsVersion in detail. The description restates the required shape ('listings and at least one base plan with billing details and per-region pricing') without adding format or constraint detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new subscription on Google Play') and scopes it to the monetization API, clearly separating it from sibling product-creation tools like google_create_one_time_product and google_create_iap. It also enumerates the required body shape, so the agent knows exactly what kind of object it is creating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent what must be supplied (listings plus at least one base plan with billing details and per-region pricing) and routes it to google_activate_subscription_base_plan as the follow-up step. What is missing is an explicit exclusion — e.g. 'use google_create_one_time_product for non-recurring SKUs' — so it falls just short of the 5 benchmark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_deactivate_purchase_optionB
Deactivate a one-time product purchase option so it stops being available for purchase
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | One-time product ID | |
| packageName | Yes | Android package name | |
| purchaseOptionId | Yes | Purchase option ID to deactivate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure. It states the state change and its effect, but it omits whether the deactivation is reversible, how existing purchases are affected, and what permissions or edit/commit workflow is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero waste. It puts the action and resource first, then the effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It should mention prerequisites, reversibility, side effects on existing purchases, and whether a commit/edit step is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: productId, packageName, and purchaseOptionId are each documented in the schema. The description adds no additional meaning about parameter formats or constraints beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Deactivate a one-time product purchase option.' It clearly states the effect: the option 'stops being available for purchase.' However, it does not explicitly contrast with the sibling tool google_activate_purchase_option or with delete/update alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'so it stops being available for purchase' implies when to use the tool, but the description gives no explicit guidance on when not to use it or which alternative to choose, such as google_activate_purchase_option or google_delete_one_time_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_deactivate_subscription_base_planA
Deactivate a base plan for new subscribers while existing subscribers retain their subscription. Use this instead of the unsupported subscription archive operation.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Subscription product ID | |
| basePlanId | Yes | Base plan id to deactivate | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses that existing subscribers retain their subscription, but it does not cover permissions, reversibility, rate limits, or error behavior for this mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are front-loaded with the core action and effect, followed by the alternative operation. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core effect and the archive alternative, which is useful for a mutation tool. However, with no annotations and no output schema, it leaves operational prerequisites, reversibility, and response behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are fully described in the schema, so the baseline is 3. The description only implies 'base plan' semantics and adds no parameter-level detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Deactivate a base plan') and clarifies the scope: new subscribers are affected while existing subscribers retain their subscription. This is enough to distinguish it from the activation sibling and from broader subscription operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this instead of the unsupported subscription archive operation, giving a clear usage context. It does not state when not to use it or compare against the activate/deactivate purchase option tools, but the primary alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_delete_all_imagesB
Delete all images of a specific type for a language
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| language | Yes | Language code | |
| imageType | Yes | Image type | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It indicates a destructive action but does not disclose potential side effects, permissions required, reversibility, or rate limits. The behavioral context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous information. Every word is necessary to convey the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 required parameters, no output schema, and no annotations, the description is insufficient. It lacks context about return values, scope of deletion, and operational implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions 'imageType' and 'language', which map to schema fields, but adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete', the resource 'all images', and the constraints 'of a specific type for a language'. This distinguishes it from sibling tools like google_delete_image (single image) and google_delete_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, when not to use it, or any prerequisites. The description is purely definitional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_delete_editB
Discard an edit session without committing changes
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It only states the basic action without disclosing side effects (e.g., irreversibility, permission requirements, or impact on related resources).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Exceptionally concise single sentence that front-loads the action and resource. Every word is well-chosen; no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple delete-by-ID operation, but could mention that the edit must exist or that the action is irreversible. Given no output schema or annotations, slightly more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with clear descriptions (packageName and editId). The description adds no additional meaning beyond the schema, meeting the baseline for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (discard) and the resource (edit session), distinguishing it from siblings like google_commit_edit and google_create_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as google_commit_edit or when an edit is still active. The description lacks contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_delete_iapB
Delete an in-app product
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Product SKU to delete | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description fails to disclose side effects (e.g., irreversibility, required permissions, impact on related data). As a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise but lacks necessary detail for safe usage. It is front-loaded but under-specified for a delete operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deletion tool with no output schema, the description should explain return values or success indicators. It is incomplete given the lack of behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds no extra meaning beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete an in-app product' clearly states the verb and resource, distinguishing it from siblings like google_delete_edit or google_delete_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like google_delete_edit or google_delete_all_images. Prerequisites like needing an active edit are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_delete_imageB
Delete a specific uploaded image
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| imageId | Yes | Image ID to delete | |
| language | Yes | Language code | |
| imageType | Yes | Image type | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It fails to disclose any behavioral traits such as idempotency, permission requirements, or whether the deletion is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single phrase, front-loaded with the verb. However, it lacks any structure beyond a bare statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 required parameters tied to a complex edit workflow, the description provides no context about the edit lifecycle or what happens on success (e.g., success response). Agents lack critical workflow information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no additional meaning beyond the schema's parameter descriptions, which are adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies action ('Delete') and resource ('a specific uploaded image'), distinguishing it from sibling tools like google_delete_all_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any context about required prerequisites (e.g., needing an active edit from google_create_edit).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_delete_listingB
Delete a store listing for a specific language
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| language | Yes | Language code to delete (e.g. ko-KR) | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. 'Delete' implies mutation, but no details on irreversibility, required permissions, or side effects (e.g., impact on other resources) are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, but it is overly brief. Each word earns its place, but additional context could improve without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain what happens upon success or failure. It covers the basic purpose but lacks details on the edit context (required editId) and expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 3 parameters with descriptions, so baseline is 3. The description does not add additional semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and the resource (store listing for a specific language). It is specific and distinguishes from sibling tools like google_update_listing or google_get_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as google_delete_all_images or google_update_listing. No context on prerequisites or best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_delete_one_time_productC
Delete a one-time product
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | One-time product ID to delete | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does not state that deletion is permanent/irreversible, whether the product must be inactive first, or whether a commit_edit is required to apply the change. 'Delete' implies mutation but nothing about consequences or workflow is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no waste, but the brevity comes at the cost of under-specification rather than genuine efficiency. Front-loaded yes, but nearly empty.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no annotations and no output schema, an agent would need to know about edit-session requirements, irreversibility, and error cases; none of this is present. The definition is too thin for the tool's risk profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (productId, packageName) are documented in the schema itself, so baseline 3 applies. The description adds no syntax, format, or scoping detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb ('Delete') and a resource ('one-time product'), which does distinguish it from google_delete_iap, google_delete_subscription_group and other delete siblings. However, it is little more than an expansion of the tool name, adding only the 'one-time' qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus google_update_one_time_product, google_delete_iap, or a deactivate path, and no mention of prerequisites such as being inside an edit session. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_country_availabilityB
Get country availability for a specific track
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track name (e.g. production, beta, alpha, internal) | |
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation ('get'), but without annotations, it doesn't disclose potential side effects, rate limits, or prerequisites. Additional behavioral context (e.g., return format) is missing, though the core read-only nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It front-loads the purpose effectively, though a bit more detail could be added without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description does not explain what the tool returns. It also lacks context about when to use this specific tool among siblings. The simplicity of the tool (3 required params) reduces the burden, but the gaps are notable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the input schema (100% coverage). The description adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'country availability' for a specific track. It differentiates from siblings like google_get_track and google_get_details, but the meaning of 'country availability' could be more explicit (e.g., which countries are allowed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With many sibling tools (e.g., google_get_track, google_get_details, apple_list_availability), the lack of usage context makes it harder for an AI agent to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_detailsA
Get app details (default language, contact email/phone/website)
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. It correctly implies a read-only operation ('Get'), but does not disclose potential side effects, authentication requirements, or rate limits. The listed fields give some output context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose and specific details. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description compensates by listing three specific fields returned (default language, contact email, phone, website). This provides useful context for the agent, though the full output may include more fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, with descriptions for both packageName and editId. The description does not add any additional parameter-level information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'app details', listing specific fields like default language, contact email/phone/website. This distinguishes it from sibling tools like google_get_listing or google_get_iap, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description merely states what it does, without exclusions or context regarding other 'get' tools for Google Play.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_editB
Get an edit session, including its ID and expiry time, before resuming pending work
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it does disclose that the response contains the edit ID and expiry time, which is genuine behavioral value. However, it says nothing about permission/auth needs, what happens when the edit is missing, expired, or already committed — the exact failure modes that matter for edit sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the payload description front-loaded and no filler. The trailing clause 'before resuming pending work' is slightly generic but still carries the usage signal rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter getter with no output schema, the mention of ID and expiry partly substitutes for a return-value spec. Gaps remain around error/expiry behavior and whether other session fields come back, which the description should cover given there are no annotations to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so packageName and editId are already documented in the schema, establishing the baseline of 3. The description adds no extra syntax, format, or constraint information about either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get an edit session') and even names the returned fields (ID, expiry time). It is clearly distinct from google_create_edit / google_commit_edit / google_delete_edit / google_validate_edit, but it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'before resuming pending work' implies the triggering situation, so an agent can infer this is a pre-flight re-fetch of an existing edit. There is no explicit when-not guidance and no mention of the alternative flow (create_edit vs this vs commit_edit), leaving routing partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_iapB
Get details of a specific in-app product
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Product SKU | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read operation ('Get details') but does not explicitly state it is read-only, nor does it disclose auth requirements, rate limits, or what 'details' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation, the description is adequate but minimal. It does not specify what fields are returned (no output schema) or how the response is structured. Given the sibling tools, a bit more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (packageName and sku). The tool description adds no new meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get details') and the resource ('a specific in-app product'), directly matching the tool name 'google_get_iap'. This distinguishes it from siblings like google_get_subscription or google_get_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., google_list_iap for listing all IAPs). There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_listingB
Get store listing for a specific language
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| language | Yes | Language code (e.g. ko-KR, en-US, ja-JP) | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only restates the tool name's implication of a read operation, without specifying permission requirements, error handling, or whether the listing is fetched from a cache or live. The description adds no value beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. It is appropriately sized for a simple read operation, though it could be slightly more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description should elaborate on what the store listing contains or how it behaves (e.g., returns a localized listing or fields). The current description is too minimal for a complete understanding, lacking context about return value or potential failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a description. The tool description adds minimal extra meaning, only explicitly linking 'language' to the language parameter. This meets the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', resource 'store listing', and scope 'for a specific language'. It distinguishes from sibling tools like 'google_list_listings' (list all) and 'google_update_listing' (update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conveys usage: use when you need a single listing for a language. However, it provides no explicit guidance on when not to use it or alternatives, such as 'google_list_listings' for multiple languages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_one_time_productB
Get details of a specific one-time product
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | One-time product ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only says 'Get details' and does not state read-only safety, authentication/package requirements, not-found behavior, or what the returned details include.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant or wasted wording. It communicates the core action efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read operation with full schema parameter coverage and no output schema, the description is sufficient to call the tool correctly. It could add a little more about read-only behavior or what 'details' means, but it is not required for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both packageName and productId are already documented in the schema. The description adds no parameter syntax, constraints, or filtering semantics beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get details of a specific one-time product. It clearly distinguishes a single product lookup from siblings such as google_list_one_time_products, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus google_list_one_time_products, google_get_iap, or google_get_subscription. It also does not mention prerequisites such as needing a known productId or an edit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_reviewB
Get a specific review with details
| Name | Required | Description | Default |
|---|---|---|---|
| reviewId | Yes | Review ID | |
| packageName | Yes | Android package name | |
| translationLanguage | No | BCP-47 language code to translate review text into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not confirm this is read-only, describe permission or error behavior, explain translationLanguage effects, or disclose what 'details' are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with the core action front-loaded and no wasted clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain what review details are returned and any notable behavior. 'With details' is too vague for an agent to know what to expect from a get operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented in the schema. The description adds no parameter meaning beyond that, which is acceptable baseline when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (review), and the word 'specific' distinguishes it from google_list_reviews. However, it does not explicitly contrast with that sibling or clarify what 'details' includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: fetch one review when a reviewId is known. There is no explicit when-to-use guidance, no mention of google_list_reviews as the alternative for browsing, and no prerequisites such as required packageName scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_subscriptionC
Get details of a specific subscription
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Subscription product ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a read operation ('Get') but does not disclose behavioral traits such as permission requirements, rate limits, or whether it is read-only. Additional context would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Purpose is front-loaded. Could be slightly more efficient by omitting 'of a', but overall concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet description does not hint at return value (e.g., subscription details object). For a simple get tool, this is marginally adequate but could be more complete by mentioning what information is retrieved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear parameter descriptions ('Android package name', 'Subscription product ID'). The description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details of a specific subscription', using a specific verb and resource. It distinguishes from siblings like 'google_list_subscriptions' (lists all) and 'google_get_iap' (for IAPs), but does not explicitly mention the parameters that identify the subscription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'google_list_subscriptions' or other get tools. The description simply states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_testersC
Get tester configuration for a track
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track name (e.g. internal, alpha, beta) | |
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'Get', implying read-only, but does not confirm safety, auth needs, or side effects. The tool likely is read-only, but the description does not explicitly say so.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (5 words) and front-loaded. Every word is meaningful, but it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or annotations, the description should provide more context about return values or usage. It lacks detail on what the tester configuration contains, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; the parameter descriptions are already clear in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'tester configuration for a track', distinguishing it from siblings like google_get_track (which gets track details) and google_update_testers (which updates testers). However, it could be more specific about what 'tester configuration' includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as google_update_testers or google_get_track. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_get_trackC
Get details of a specific release track
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track ID returned by google_list_tracks | |
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies read-only, but the description does not confirm safety, note that an editId must exist, or describe what the response contains. It adds essentially nothing about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no waste, but it is terse enough that it omits information an agent needs. Concise at the cost of under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-required-parameter tool with no annotations and no output schema, the description should at least explain the edit prerequisite and what the details are. Neither is covered, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (track, editId, packageName) are already documented in the schema. The description adds no format or constraint details beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (release track), and the singular 'a specific release track' does distinguish it from the plural google_list_tracks sibling. However, 'details' is vague about what is actually returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus google_list_tracks, nor any mention of prerequisites such as needing an active edit (editId) first. The agent must infer the edit-lifecycle context from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_halt_releaseA
Halt an exact in-progress or completed release; halting a completed production release rolls users back to the previous completed release
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track ID returned by google_list_tracks | |
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name | |
| versionCodes | Yes | Complete version-code set identifying the release to halt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the critical side effect: halting a completed production release rolls users back to the previous completed release. It still omits permission requirements, reversibility details, and edit lifecycle requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with the action front-loaded and the key rollback consequence attached. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description covers purpose and one major side effect but leaves out workflow context such as needing an open edit and committing it afterward. It is adequate but incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four required parameters. The description reinforces the idea of an 'exact release' but does not add parameter-level syntax or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Halt ... release.' It scopes the operation to an 'exact in-progress or completed release,' which clearly distinguishes it from create/promote release siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a usable condition by saying the release must be in-progress or completed, and notes the completed-production rollback effect. However, it does not name alternatives such as promote_release or create_release, nor does it state when not to use it or what edit prerequisite is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_apksB
List APKs already available in an edit, including version codes and hashes
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. 'Already available in an edit' implies a read-only listing over existing edit state and hints at prerequisites (an open edit for the package), but it never states read-only nature, permission needs, or that an uncommitted edit is the scope. Some value added, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero padding, and the returned fields land before any filler. Nothing is wasted, though there is also very little there.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-required-param read over edit state, the single sentence covers what is listed and roughly what comes back (version codes, hashes), which is what an agent needs absent an output schema. Prerequisite and read-only framing are the modest remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description's only added signal is that listing is scoped by edit, indirectly reinforcing editId; it adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource + scope: 'List APKs already available in an edit', with the returned content named (version codes and hashes). It is implicitly distinguishable from google_list_bundles by the APK/bundle distinction, but that contrast is never made explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus google_list_bundles, google_upload_apk, or any other edit-scoped sibling. The only contextual hook is 'in an edit', which the agent must infer means an open edit is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_bundlesA
List Android App Bundles already available in an edit, including version codes and hashes
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; 'List' reasonably signals a read-only operation, and it discloses that version codes and hashes are included in the result. However, it does not state that an edit must already be open, whether results are paginated, which hash algorithm is used, or what happens with an invalid/expired editId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope and the returned fields packed in and no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and no output schema, telling the agent that version codes and hashes come back compensates for the missing return schema. The main remaining gap is the edit lifecycle prerequisite, which is not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the baseline is 3. The description adds no meaning beyond the schema for editId or packageName, though the edit-scoping context marginally clarifies what editId refers to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Android App Bundles') and adds scope ('already available in an edit') plus the fields returned (version codes and hashes). It does not explicitly name a sibling such as google_list_apks or google_upload_bundle, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'already available in an edit' implies the tool is used after an edit exists and before committing it, but no explicit when/when-not guidance or alternative routes (e.g., upload first via google_upload_bundle, or list APKs instead) are given. An agent must infer usage from the required editId parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_iapB
List all in-app products (managed products) for an app
| Name | Required | Description | Default |
|---|---|---|---|
| pageToken | No | Pagination token from the previous response | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only operation, how pagination works, authentication requirements, or what the response contains, even though the pageToken parameter signals pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is appropriately sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter list tool with complete schema descriptions, the core purpose is covered. However, without annotations or an output schema, the description could usefully mention pagination behavior or the shape of the returned list, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema. The description adds no extra meaning for packageName or pageToken beyond what the schema already provides, which is the expected baseline when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('List') and resource ('in-app products (managed products)') scoped to an app. It distinguishes the resource from subscriptions, but does not explicitly contrast with sibling list tools such as google_list_one_time_products or google_list_subscriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit guidance on when to use this tool versus the sibling google_get_iap, google_list_one_time_products, or google_list_subscriptions. The listing intent is implied, but no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_imagesC
List uploaded images of a specific type
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| language | Yes | Language code | |
| imageType | Yes | Image type | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It fails to mention that the tool is read-only, what the response format is (no output schema), or any prerequisites like requiring an active edit. This is critically insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is efficiently brief, though at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is severely lacking. It does not explain what the tool returns, how to paginate results, or that it operates within a specific edit context. The tool is not sufficiently documented for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 4 parameters have descriptions in the input schema (100% coverage), so the description adds no extra meaning. Baseline 3 is appropriate as the schema already communicates the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'uploaded images', qualified by 'of a specific type' which maps directly to the imageType parameter. It distinguishes this tool from sibling tools like google_upload_image and google_delete_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, such as the need for an existing edit (created via google_create_edit) or that it requires a specific image type. The agent is left without context for proper invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_listingsA
List all store listings (all languages) for an app
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not mention behavioral traits such as read-only nature, required prerequisites (e.g., an active edit), or pagination. The burden is entirely on the description, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description lacks context about the requirement for an edit ID and what a listing includes. It is moderately complete but leaves gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter names and descriptions. The description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action 'List', the resource 'store listings', and clarifies the scope 'all languages'. It clearly distinguishes from sibling tools like google_get_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies listing all listings without filtering, but does not explicitly state when to use it versus alternatives like google_get_listing for a single listing. No usage exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_one_time_productsC
List all one-time products (non-subscription purchases, buy or rent) for an app
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | ||
| pageToken | No | Pagination token from the previous response | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it only implies a read operation. It says nothing about pagination behavior, the default/maximum page size, whether results include drafts or inactive products, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with no filler and the key qualifier (non-subscription) front-loaded. It is short to the point of under-specification rather than bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description should explain the return shape and pagination contract, but it describes only the listing. For a paginated list tool this leaves meaningful gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: packageName and pageToken are documented in the schema, but pageSize has only a range and no textual meaning. The description adds no parameter details at all, so it neither compensates for the gap nor adds value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (List) and resource (one-time products) and clarifies these are non-subscription, buy-or-rent purchases, which implicitly separates it from google_list_subscriptions and google_list_iap. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g., whether an edit must be open), and no pointer to sibling tools such as google_get_one_time_product. The agent must infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_release_statusesA
List non-obsolete releases and their review/publishing lifecycle states for a track after an edit is committed
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track ID, including custom or form-factor tracks | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It usefully discloses the filtering behavior (obsolete releases excluded), the state set returned, and the post-commit precondition, but says nothing about the read-only guarantee, auth/permission needs, or behavior when no edit has been committed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler; the resource, the filter, and the timing precondition are all front-loaded. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and no output schema, the description covers what is returned (lifecycle states) and the key precondition (committed edit). The remaining gaps are minor since there are no annotations to reconcile against.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required parameters (packageName, track) are already documented and the baseline is 3. The description only implicitly references the track parameter ('for a track') and adds no format or validation guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'List' plus a precise resource: non-obsolete releases and their review/publishing lifecycle states, scoped to a single track. The 'non-obsolete' qualifier and 'after an edit is committed' precondition differentiate it from google_list_tracks / google_get_track without naming them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'after an edit is committed' states a clear precondition for when the tool is meaningful, which is real usage context an agent would otherwise have to guess. It stops short of naming alternatives (e.g., use google_get_track for track config), so it isn't a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_reviewsA
List production-app reviews with comments created or modified within the last 7 days. Ratings without comments and alpha/beta feedback are excluded. Requires Reply to reviews permission. pageToken pages only within that 7-day window; use Play Console CSV export for older history. An empty result alone does not indicate missing permission.
| Name | Required | Description | Default |
|---|---|---|---|
| pageToken | No | Pagination token from a previous response (nextPageToken) | |
| maxResults | No | Max reviews to return per page (API max is 100) | |
| packageName | Yes | Android package name | |
| translationLanguage | No | BCP-47 language code to translate review text into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses important behaviors: the 7-day window, exclusion of ratings without comments and alpha/beta feedback, the required 'Reply to reviews' permission, pagination confined to the window, and the caveat that an empty result does not indicate missing permission. It stops short of describing return fields or ordering, but covers the critical operational caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with the core scope and followed by critical caveats. Every sentence adds value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no annotations and no output schema, the description provides enough for correct invocation: scope, exclusions, permission requirement, pagination limitation, alternative for older data, and a false-negative warning. The schema covers parameter details; nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four parameters. The description adds one useful nuance for pageToken ('pages only within that 7-day window') but says nothing about maxResults or translationLanguage beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List production-app reviews') with clear scope: comments created or modified in the last 7 days, excluding ratings without comments and alpha/beta feedback. This readily distinguishes it from siblings like google_get_review (single review) and apple_list_reviews (different platform).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the context for use (recent production reviews with comments) and explicitly names an alternative for older history ('use Play Console CSV export'). It does not mention google_get_review or google_reply_to_review, but the guidance for this tool's appropriate scope is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_subscriptionsC
List all subscriptions for an app
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | ||
| pageToken | No | Pagination token from the previous response | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full disclosure burden. It does not mention that the operation is read-only, paginated, or scoped by package name; 'list all' does not explain the pageSize/pageToken paging model. For a tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the scope ('for an app') is stated immediately. It is efficient, though its brevity reflects under-specification rather than deliberate economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and an incomplete parameter picture (pageSize undocumented) mean the agent lacks the paging behavior and return-shape context it needs. The one-line description does not fill those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with packageName and pageToken documented in the schema but pageSize undocumented. The description only adds 'for an app', which loosely maps to packageName; it gives no explanation of the pagination parameters or how pageSize interacts with paging, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource+scope: 'List all subscriptions for an app.' An agent understands this returns the subscription collection for a package name, distinguishable from singular google_get_subscription on the verb alone. However, it does not explicitly contrast with adjacent list tools like google_list_iap, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-to-avoid guidance and no named alternative. The agent must infer from the name that this lists subscriptions scoped to an app, with no hint about when to prefer it over google_list_iap or google_get_subscription.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_tracksA
List all release tracks, including custom closed-test and form-factor tracks
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses useful scope information by naming custom closed-test and form-factor tracks, but it does not mention permissions, whether an edit must be active, pagination, or other read-operation characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. It front-loads the core action and resource, then adds the notable inclusion of custom track types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list operation with fully documented parameters, the description is mostly complete. It states the resource and the noteworthy track types included, though without annotations or an output schema it stops short of describing return structure or access context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are documented in the schema as 'Edit ID' and 'Android package name'. The description adds no additional meaning about these parameters beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('release tracks'), and it clarifies scope by specifying inclusion of custom closed-test and form-factor tracks. This clearly distinguishes it from the sibling singular retrieval tool google_get_track.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'List all release tracks' implies the tool should be used when a complete track overview is needed, but it gives no explicit guidance on when to choose this over google_get_track or other track-related operations. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_list_vitals_anomaliesC
List anomalies Google detected in Android vitals (sudden crash/ANR spikes) with the affected metric and dimensions
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | e.g. activeBetween("2026-10-01T00:00:00Z", UNBOUNDED) | |
| maxResults | No | ||
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. 'List' implies a read, but it says nothing about pagination, result ordering, how many anomalies are returned, or what the response looks like, despite maxResults allowing 1-1000.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that defines the resource and parenthetical detail efficiently. No padding, though the brevity leaves gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description should explain returns and filter semantics; it gives only a terse hint of return fields and no filter guidance. For a tool with three siblings in the vitals space, it is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, below the 80% baseline, so the description should compensate but does not. The phrase 'affected metric and dimensions' describes output rather than explaining the filter syntax (activeBetween) or the maxResults cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (anomalies Google detected in Android vitals) and even clarifies what an anomaly is (sudden crash/ANR spikes). It is clear on its own, but never distinguishes itself from vitals siblings like google_query_vitals or google_search_vitals_error_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus google_query_vitals, google_search_vitals_error_issues, or google_search_vitals_error_reports. An agent must infer from the name alone which vitals tool answers which question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_promote_releaseB
Promote a release from one track to another (e.g. beta → production)
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| toTrack | Yes | Target track ID, including custom or form-factor tracks | |
| fromTrack | Yes | Source track ID returned by google_list_tracks | |
| packageName | Yes | Android package name | |
| releaseNotes | No | ||
| userFraction | No | Staged rollout fraction (not supported for internal) | |
| versionCodes | Yes | Complete version-code set identifying the source release | |
| countryTargeting | No | Country targeting for an inProgress production rollout | |
| inAppUpdatePriority | No | In-app update priority from 0 (lowest) to 5 (highest) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool promotes a release between tracks, but it does not explain side effects, permissions, reversibility, edit lifecycle requirements, or what happens to the source release. For a mutation tool with no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The example is compact and immediately useful. It is appropriately sized for a tool whose parameters are documented by the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a complex mutation with nine parameters, a nested object, no annotations, and no output schema. The description does not cover the edit lifecycle, required commit/validation context, or behavioral consequences of promotion. Given that richness and the absence of structured behavioral metadata, the description is not complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents nearly all parameters, including fromTrack, toTrack, versionCodes, userFraction, and countryTargeting. The description adds no parameter-specific meaning beyond the example. With high schema coverage, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: promoting a release from one track to another. The beta-to-production example makes the operation concrete. However, it does not explicitly distinguish this from sibling tools such as google_create_release or google_halt_release, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the operation and giving a beta-to-production example. It does not state when this tool should be used instead of alternatives, nor does it mention prerequisites or exclusions. The guidance is therefore implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_query_vitalsA
Query Android vitals (crash, ANR, slow start, slow rendering, wakeups, wakelocks, LMK, memory, error counts) by day, optionally split by versionCode, countryCode, deviceModel or apiLevel. Defaults to the last 28 days that Google has data for. Rates are returned exactly as the API reports them. Google judges its bad-behavior thresholds on the user-perceived 28-day rates, which the crash and ANR defaults include.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Used when startDate is omitted | |
| filter | No | AIP-160 filter, e.g. versionCode = 123 | |
| endDate | No | Exclusive end date; defaults to the freshest day available | |
| maxRows | No | ||
| metrics | No | Override the default metrics for the set | |
| metricSet | No | crash | |
| startDate | No | YYYY-MM-DD (America/Los_Angeles calendar) | |
| dimensions | No | e.g. versionCode, countryCode, deviceModel, apiLevel | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present the description must carry the load, and it does disclose key behaviors: the default window is bounded by data Google actually has (a freshness lag the agent would otherwise miss), and rates are returned verbatim with no transformation. It still omits permission requirements, rate limits, and whether results are paginated or capped by maxRows, so it falls short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the metric scope before the optional dimension breakdown and defaults. Dense but essentially waste-free; the final threshold sentence is the least load-bearing and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no annotations and no output schema, the description covers metric selection, dimensions, and the default window but says nothing about the shape of returned data (rows, rate fields, how metrics arrays override metricSet, how maxRows truncates). An agent can call it, but cannot predict the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78%, so the schema already documents most parameters including the date format, the AIP-160 filter syntax, and the dimension examples. The description largely restates what the schema says (dimension names, default window) rather than adding new parameter semantics; the one genuinely additive note is that crash and ANR defaults already include the user-perceived 28-day rates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Query) and resource (Android vitals) and enumerates the metric families covered (crash, ANR, slow start, slow rendering, wakeups, wakelocks, LMK, memory, error counts) plus the aggregation grain (by day). It does not explicitly name sibling tools such as google_search_vitals_error_issues or google_list_vitals_anomalies, so the agent must infer that this is the aggregate-metrics tool rather than the error-detail tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default time window ('last 28 days that Google has data for') and why crash/ANR defaults matter for threshold comparison, which implies when the tool is appropriate. However, it never states when to prefer it over the vitals siblings (error issues, error reports, anomalies) or any prerequisites such as needed permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_reply_to_reviewC
Reply to a user review
| Name | Required | Description | Default |
|---|---|---|---|
| reviewId | Yes | Review ID | |
| replyText | Yes | Reply text | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description merely says 'Reply to a user review' without disclosing any behavioral traits like idempotency, side effects, or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence; appropriate for a simple tool but lacks any additional structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations or output schema, the description is too brief to fully inform the agent; lacks details on outcome or constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions; the tool description adds no further meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Reply' and resource 'user review', distinguishing it from read-only tools like google_get_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_search_vitals_error_issuesA
Search crash and ANR clusters (error issues) with counts, affected versions, cause and location, most frequent first. Read the stack trace with google_search_vitals_error_reports.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | AIP-160, e.g. errorIssueType = CRASH AND versionCode = 123 | |
| endDate | No | YYYY-MM-DD (America/Los_Angeles calendar) | |
| orderBy | No | errorReportCount desc | |
| pageSize | No | ||
| pageToken | No | nextPageToken from the previous call; keep the other arguments unchanged | |
| startDate | No | YYYY-MM-DD (America/Los_Angeles calendar) | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It does disclose useful behavioral detail — the response includes counts, affected versions, cause and location, and results are ordered most frequent first — but says nothing about read-only safety, permissions, or pagination behavior (pageToken semantics live only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the capability and result shape first, the sibling routing second. No filler, and the most actionable facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read tool with no output schema, the description covers what is returned (counts, versions, cause, location), result ordering, and the follow-up tool for stack traces. The remaining gaps — pagination and filter composition — are covered by the schema, so it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so the schema already documents filter syntax, date format, pageToken and packageName. The description adds only the ordering hint ('most frequent first'), which duplicates the orderBy default, and gives no guidance on constructing the AIP-160 filter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and a precisely scoped resource (crash and ANR clusters / error issues), and explicitly contrasts itself with the sibling that reads stack traces. An agent can distinguish it from google_search_vitals_error_reports without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to google_search_vitals_error_reports for stack traces, giving a clear condition for using the alternative. It doesn't state when not to use this tool (e.g., for other vitals metrics, which google_query_vitals covers), so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_search_vitals_error_reportsA
Fetch individual crash/ANR reports with the full stack trace (reportText), device and app version. Filter by issue with errorIssueId from google_search_vitals_error_issues.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | AIP-160, e.g. errorIssueId = 1234567890 AND versionCode = 123 | |
| endDate | No | YYYY-MM-DD (America/Los_Angeles calendar) | |
| pageSize | No | ||
| pageToken | No | nextPageToken from the previous call; keep the other arguments unchanged | |
| startDate | No | YYYY-MM-DD (America/Los_Angeles calendar) | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does usefully disclose the return content (reportText stack trace, device and app version) and implies a read via 'fetch', but says nothing about permissions/scopes, sensitive-data handling, or pagination behavior beyond what the schema's pageToken conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the return payload is front-loaded and the cross-reference to the sibling follows. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filtered-list tool with no output schema, describing the returned fields (stack trace, device, app version) does the heavy lifting and pagination is covered by schema. What's missing is auth-scope context and whether the reports contain PII, which matters for a crash-log tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, with filter syntax (AIP-160), date format, pageSize bounds and pageToken already documented. The description adds only the specific errorIssueId usage, which is a marginal supplement rather than compensation for any gap, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and a precisely scoped resource (individual crash/ANR reports), which cleanly separates it from sibling google_search_vitals_error_issues (issue-level listing) and google_query_vitals (aggregated metrics). An agent can tell what it returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to google_search_vitals_error_issues as the source of errorIssueId, giving clear usage context. It stops short of stating when-not to use it (e.g., vs google_query_vitals for aggregates), so it is strong but not fully exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_update_data_safetyA
Submit a user-reviewed Data Safety declaration from an up-to-date Google Play CSV export. Google does not provide a corresponding read endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| csvPath | Yes | Local path to the reviewed Data Safety .csv file | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that this is a submission of pre-existing reviewed data (not a field-by-field edit) and that no read endpoint exists, so results cannot be verified by reading back. It does not say whether the call replaces an existing declaration, what permissions/API scope are needed, or what happens if the CSV is stale or malformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core action and the key constraint (CSV export) front-loaded and the read-endpoint caveat following.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no annotations and no output schema, the description covers what to submit and that there is no read counterpart, but omits replacement semantics, failure modes for stale/invalid CSVs, and permission requirements — meaningful gaps for an unannotated write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so packageName and csvPath are already documented; baseline is 3. The description reinforces that csvPath must be a Google Play Data Safety export in reviewed form, which adds a small amount of meaning beyond the schema's 'Local path to the reviewed Data Safety .csv file'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb plus resource: submit a Data Safety declaration, scoped to a Google Play CSV export. No sibling in the tool list touches Data Safety, so it is effectively distinguishable, but the description never explicitly separates itself from other google_update_* mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied prerequisites are present: the CSV must be 'up-to-date' and 'user-reviewed', and the note that Google offers no read endpoint tells the agent not to look for a corresponding getter. However there is no explicit when-to-use/when-not guidance, no mention of edit-based workflows (create/validate/commit edit) that govern other Play mutations, and no statement of what to do if a declaration already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_update_detailsB
Update app details (default language, contact email/phone/website)
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name | |
| contactEmail | No | User-visible support email | |
| contactPhone | No | User-visible support phone number | |
| contactWebsite | No | User-visible website URL | |
| defaultLanguage | No | Default language code in BCP 47 format (e.g. en-US) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It only says 'Update' implying mutation, but does not disclose requirements (permissions, edit ID management), reversibility, or side effects on unchanged fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, containing no unnecessary words. However, it could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is part of an edit workflow with 6 parameters and no output schema, the description lacks critical context about the required editId lifecycle and that changes are not committed until google_commit_edit is called.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description repeats the field names but does not add deeper semantics beyond grouping them as 'app details'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates app details and lists specific fields (default language, contact email/phone/website). It distinguishes from sibling tools like google_update_listing which update store listing details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description does not mention that an edit must be created first and changes committed later, nor does it contrast with similar update tools like google_update_listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_update_iapB
Update an existing in-app product
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Product SKU | |
| title | No | Product title (for default language) | |
| status | No | ||
| description | No | Product description (for default language) | |
| packageName | Yes | Android package name | |
| defaultLanguage | No | Default language | |
| defaultPriceMicros | No | Price in micros | |
| defaultPriceCurrencyCode | No | Currency code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description provides minimal behavioral context: it implies mutation but does not disclose whether updates are partial or full, required permissions, reversibility, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that efficiently conveys the core purpose without extraneous words. Could be slightly expanded for clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of many sibling tools and 8 parameters, the description offers no differentiation from other update tools, no mention of return values, and no context for when to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 88% schema description coverage, the schema already explains most parameters. The description adds no additional meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing in-app product' clearly states the action (update) and the resource (in-app product), distinguishing it from sibling tools like google_create_iap or google_delete_iap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lacks guidance on when to use this tool versus alternatives (e.g., when to update vs create), and no mention of prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_update_listingC
Update store listing for a specific language (title, descriptions, promo video)
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | App title (max 30 chars) | |
| video | No | URL of a promotional YouTube video for the app | |
| editId | Yes | Edit ID | |
| language | Yes | Language code (e.g. ko-KR, en-US) | |
| packageName | Yes | Android package name | |
| fullDescription | No | Full description (max 4000 chars) | |
| shortDescription | No | Short description (max 80 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a mutation tool. It does not state whether omitted fields are preserved or cleared, whether the change is staged in an edit and requires commit, or what permissions/validation constraints apply (e.g. character limits), so real behavioral risk remains undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the verb, resource, and language scoping all arrive immediately. It is arguably too terse for a mutation tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Seven parameters, three required, no annotations, and no output schema: the description should at minimum signal the edit-staging workflow and partial-update semantics. As written, an agent could invoke it without knowing the change must be committed, which is a significant completeness gap for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parenthetical '(title, descriptions, promo video)' loosely maps to the schema fields and adds a small amount of grouping value. However, schema description coverage is 100% with per-field constraints already documented, so the description adds no syntax, format, or requirement details beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('store listing') plus the scoping dimension ('for a specific language'), which clearly separates it from google_get_listing, google_list_listings, and google_delete_listing. It is also implicitly distinct from google_update_details, though it never names that sibling or explains the boundary between 'listing' and 'details'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus google_update_details, nor any mention of the prerequisite edit flow (goog_create_edit / commit_edit) despite editId being required. The agent must infer the entire call sequence from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_update_one_time_productB
Update an existing one-time product. Pass the full desired listings/purchaseOptions state plus an updateMask (e.g. "listings,purchaseOptions").
| Name | Required | Description | Default |
|---|---|---|---|
| listings | Yes | At least one localization is required | |
| offerTags | No | ||
| productId | Yes | One-time product ID, e.g. com.example.app.remove_ads | |
| updateMask | Yes | Comma-separated field mask of top-level fields to update, e.g. "listings,purchaseOptions" | |
| packageName | Yes | Android package name (e.g. com.example.app) | |
| regionsVersion | No | Google Play regions version. Default 2022/02 matches Google API expectations. | 2022/02 |
| purchaseOptions | Yes | At least one purchase option (buy or rent) is required | |
| taxAndComplianceSettings | No | ||
| restrictedPaymentCountries | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the caller must pass the full desired listings/purchaseOptions state plus an updateMask, but it omits permissions, reversibility, behavior for fields not in the mask, and response expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no filler. Every sentence contributes either purpose or a critical updateMask usage constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex mutation tool with nine parameters, nested objects, no annotations, and no output schema. The description provides one key mutation instruction, but it is too thin regarding permissions, side effects, updateMask scope for top-level fields, and expected behavior after the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description only elaborates on listings, purchaseOptions, and updateMask. It adds the important 'full desired state' replacement hint, but mostly repeats the schema's updateMask example and does not compensate for the remaining undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Update an existing one-time product.' This clearly distinguishes it from create/delete/get/list one-time product siblings, but it does not explicitly name or contrast those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating an existing one-time product, but it gives no explicit when-to-use versus alternatives or exclusions. The second sentence is a parameter/updateMask instruction rather than guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_update_testersC
Update tester Google Groups for a track
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track name (e.g. internal, alpha, beta) | |
| editId | Yes | Edit ID | |
| packageName | Yes | Android package name | |
| googleGroups | No | List of Google Group email addresses |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Update', implying mutation, but lacks details on permissions, side effects, or consequences (e.g., whether changes are immediate, require a commit, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no superfluous words. It is front-loaded with the action. However, it could be slightly more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, the description is too minimal. It does not explain what happens when testers are updated (e.g., replaces or appends), or the need to commit edits. The high schema coverage partially compensates, but completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all parameters. The description adds no additional meaning beyond the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('tester Google Groups for a track'). However, it does not differentiate from sibling tools like 'google_get_testers' or other update tools, but the verb and resource are specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., when to use google_get_testers or other Google tools). No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_upload_apkC
Upload an APK file
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| apkPath | Yes | Local path to the .apk file | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It fails to disclose that the upload modifies a draft edit, requires prior steps, or any side effects. Basic behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (4 words) and to the point. It uses no filler, but could benefit from slight expansion for clarity without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 required params, no output schema, no annotations), the description is too minimal. It does not explain the Google Play Console edit context or what uploading entails, leaving gaps for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description adds no additional meaning beyond the schema, which is adequate but not improved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Upload an APK file', which clearly indicates the verb and resource. However, it does not differentiate from sibling upload tools like google_upload_bundle, leaving ambiguity about the target format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives, nor any prerequisites (e.g., requiring an edit ID from google_create_edit). The description offers no contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_upload_bundleB
Upload an Android App Bundle (.aab)
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| bundlePath | Yes | Local path to the .aab file | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It does not mention failure modes, overwriting behavior, or the need to commit the edit afterward. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, but could benefit from slightly more context without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations; the description does not explain the workflow (e.g., edit lifecycle) or return behavior, leaving agents underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate parameter descriptions. The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Upload' and the resource 'Android App Bundle (.aab)', distinguishing it from siblings like google_upload_apk and google_upload_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives or required prerequisites (e.g., creating an edit first). The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_upload_imageB
Upload an image (screenshot, icon, feature graphic, etc)
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID | |
| language | Yes | Language code | |
| imagePath | Yes | Local path to the image file | |
| imageType | Yes | Image type | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only indicates an upload operation but discloses no behavioral traits such as success/error conditions, size limits, format requirements, or whether it overwrites existing images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb. It is efficient but could include a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 required parameters and no output schema, the description is too brief to provide workflow context. It does not mention that an edit must be created first, or how images relate to other Google Play Console operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The tool description adds no additional meaning beyond the schema, such as parameter relationships or constraints. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Upload') and the resource ('image'), listing examples like screenshot, icon, feature graphic. This distinguishes it from sibling tools that delete, list, or upload other file types (e.g., google_upload_apk).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided. The description does not specify when to use this tool versus alternatives, nor does it mention prerequisites (e.g., having an edit ID) or comparison with other upload tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_validate_editA
Validate an edit session without committing. Useful to check for errors before commit.
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | Edit ID from google_create_edit | |
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states validation without committing, implying a read-only check, but lacks details on what exactly is validated, what error responses look like, or if there are any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence defines the action and scope, the second adds usage guidance. It is front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers the core purpose and usage adequately. Adding information about the return value (e.g., validation errors) would improve completeness, but it is already sufficient for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters. The description does not add additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'validate' and the resource 'edit session', and explicitly distinguishes it from committing by saying 'without committing'. This differentiates it from sibling tools like google_commit_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Useful to check for errors before commit', which provides clear context of when to use the tool. However, it does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
117 tool updates
v0.7.0- Added
apple_add_review_submission_item - Changed
apple_cancel_submission1 field changed- changed
Input schema / properties / submissionId / descriptionPrevious value: -"Submission ID"New value: +"Review Submission ID (the ID returned by apple_submit_for_review)"
- Added
apple_create_accessibility_declaration - Added
apple_create_analytics_report_request - Added
apple_create_availability - Changed
apple_create_beta_group1 field changed- changed
Input schema / properties / isInternalGroup / descriptionPrevious value: -"Is internal group (Apple employees)"New value: +"Internal group for App Store Connect team members"
- Added
apple_create_custom_product_page - Added
apple_create_custom_product_page_localization - Added
apple_create_custom_product_page_version - Added
apple_create_experiment - Added
apple_create_experiment_treatment - Added
apple_create_iap_offer_code - Added
apple_create_phased_release - Added
apple_create_placement - Added
apple_create_review_submission - Added
apple_create_subscription_offer_code - Added
apple_create_treatment_localization - Changed
apple_create_version4 fields changed- added
Input schema / properties / appId / minLengthAdded value: +1 - changed
Input schema / properties / earliestReleaseDate / descriptionPrevious value: -"ISO 8601 date for scheduled release"New value: +"ISO 8601 date-time with timezone; required only for SCHEDULED releases" - added
Input schema / properties / earliestReleaseDate / formatAdded value: +"date-time" - added
Input schema / properties / versionString / minLengthAdded value: +1
- Added
apple_delete_accessibility_declaration - Added
apple_delete_asset - Added
apple_delete_build_upload - Added
apple_delete_custom_product_page - Added
apple_delete_custom_product_page_localization - Added
apple_delete_experiment - Added
apple_delete_experiment_treatment - Added
apple_delete_phased_release - Added
apple_delete_placement - Added
apple_delete_treatment_localization - Added
apple_download_analytics_report - Added
apple_get_asset - Added
apple_get_asset_library - Added
apple_get_asset_specs - Added
apple_get_build_upload - Added
apple_get_custom_product_page - Added
apple_get_experiment - Added
apple_get_finance_report - Added
apple_get_iap_offer_code - Added
apple_get_iap_price_points - Added
apple_get_next_page - Added
apple_get_phased_release - Added
apple_get_review_submission - Added
apple_get_sales_report - Added
apple_get_subscription_offer_code - Added
apple_get_subscription_price_points - Added
apple_get_win_back_offer - Added
apple_list_accessibility_declarations - Added
apple_list_analytics_report_instances - Added
apple_list_analytics_report_requests - Added
apple_list_analytics_report_segments - Added
apple_list_analytics_reports - Added
apple_list_app_price_points - Added
apple_list_asset_placements - Added
apple_list_assets - Added
apple_list_custom_product_page_localizations - Added
apple_list_custom_product_page_versions - Added
apple_list_custom_product_pages - Added
apple_list_experiment_treatments - Added
apple_list_experiments - Added
apple_list_iap_offer_codes - Added
apple_list_placements - Added
apple_list_review_submissions - Added
apple_list_subscription_offer_codes - Added
apple_list_treatment_localizations - Changed
apple_list_versions1 field changed- changed
Input schema / properties / state / descriptionPrevious value: -"Filter by state (e.g. PREPARE_FOR_SUBMISSION, READY_FOR_SALE)"New value: +"Filter by current appVersionState (e.g. PREPARE_FOR_SUBMISSION, READY_FOR_DISTRIBUTION)"
- Added
apple_list_win_back_offers - Added
apple_release_version - Added
apple_reorder_placements - Added
apple_set_build_encryption - Changed
apple_set_price5 fields changed- added
Input schema / properties / baseTerritoryIdAdded value: +{ + "description": "Base territory ID for that price point, e.g. USA", + "type": "string" +} - added
Input schema / properties / manualPricesAdded value: +{ + "description": "Complete desired manual schedule, including existing entries that must remain", + "items": { + "additionalProperties": false, + "properties": { + "appPricePointId": { + "description": "App Price Point ID returned by apple_list_app_price_points", + "minLength": 1, + "type": "string" + }, + "endDate": { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "End date in YYYY-MM-DD, or null for an open-ended entry" + }, + "startDate": { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Start date in YYYY-MM-DD, or null for the current entry" + } + }, + "required": [ + "appPricePointId" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - removed
Input schema / properties / priceTierIdRemoved value: -{ - "description": "Price tier ID (use \"0\" for free)", - "type": "string" -} - removed
Input schema / properties / startDateRemoved value: -{ - "description": "ISO 8601 start date", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "appId", - "priceTierId" -]New value: +[ + "appId", + "baseTerritoryId", + "manualPrices" +]
- Changed
apple_submit_for_review6 fields changed- added
Input schema / properties / appIdAdded value: +{ + "description": "App ID", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / platformAdded value: +{ + "default": "IOS", + "description": "Platform of the version being submitted", + "enum": [ + "IOS", + "MAC_OS", + "TV_OS", + "VISION_OS" + ], + "type": "string" +} - added
Input schema / properties / submissionIdAdded value: +{ + "description": "Existing READY_FOR_REVIEW submission ID to resume after an interrupted call", + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / versionId / descriptionPrevious value: -"App Store Version ID"New value: +"App Store Version ID to submit" - added
Input schema / properties / versionId / minLengthAdded value: +1 - changed
Input schema / requiredPrevious value: -[ - "versionId" -]New value: +[ + "appId", + "versionId" +]
- Added
apple_submit_review_submission - Added
apple_update_accessibility_declaration - Changed
apple_update_age_rating45 fields changed- added
Input schema / properties / advertisingAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / ageAssuranceAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / ageRatingOverrideV2Added value: +{ + "anyOf": [ + { + "enum": [ + "NONE", + "NINE_PLUS", + "THIRTEEN_PLUS", + "SIXTEEN_PLUS", + "EIGHTEEN_PLUS", + "UNRATED" + ], + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / alcoholTobaccoOrDrugUseOrReferences / anyOfAdded value: +[ + { + "enum": [ + "NONE", + "INFREQUENT", + "FREQUENT", + "INFREQUENT_OR_MILD", + "FREQUENT_OR_INTENSE" + ], + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / alcoholTobaccoOrDrugUseOrReferences / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / alcoholTobaccoOrDrugUseOrReferences / typeRemoved value: -"string" - added
Input schema / properties / contestsAdded value: +{ + "anyOf": [ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / developerAgeRatingInfoUrlAdded value: +{ + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / gamblingAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - removed
Input schema / properties / gamblingAndContestsRemoved value: -{ - "type": "boolean" -} - added
Input schema / properties / gamblingSimulated / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / gamblingSimulated / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / gamblingSimulated / typeRemoved value: -"string" - added
Input schema / properties / gunsOrOtherWeaponsAdded value: +{ + "anyOf": [ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / healthOrWellnessTopicsAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / horrorOrFearThemes / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / horrorOrFearThemes / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / horrorOrFearThemes / typeRemoved value: -"string" - added
Input schema / properties / kidsAgeBandAdded value: +{ + "anyOf": [ + { + "enum": [ + "FIVE_AND_UNDER", + "SIX_TO_EIGHT", + "NINE_TO_ELEVEN" + ], + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / koreaAgeRatingOverrideAdded value: +{ + "anyOf": [ + { + "enum": [ + "NONE", + "ALL", + "TWELVE_PLUS", + "FIFTEEN_PLUS", + "NINETEEN_PLUS" + ], + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / lootBoxAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / matureOrSuggestiveThemesAdded value: +{ + "anyOf": [ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / medicalOrTreatmentInformation / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / medicalOrTreatmentInformation / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / medicalOrTreatmentInformation / typeRemoved value: -"string" - added
Input schema / properties / messagingAndChatAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / parentalControlsAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / profanityOrCrudeHumor / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / profanityOrCrudeHumor / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / profanityOrCrudeHumor / typeRemoved value: -"string" - added
Input schema / properties / sexualContentGraphicAndNudityAdded value: +{ + "anyOf": [ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / sexualContentOrNudity / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / sexualContentOrNudity / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / sexualContentOrNudity / typeRemoved value: -"string" - added
Input schema / properties / socialMediaAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / socialMediaAgeRestrictedAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - changed
Input schema / properties / unrestrictedWebAccess / typePrevious value: -"boolean"New value: +[ + "boolean", + "null" +] - added
Input schema / properties / userGeneratedContentAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Input schema / properties / violenceCartoonOrFantasy / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / violenceCartoonOrFantasy / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / violenceCartoonOrFantasy / typeRemoved value: -"string" - added
Input schema / properties / violenceRealistic / anyOfAdded value: +[ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } +] - removed
Input schema / properties / violenceRealistic / enumRemoved value: -[ - "NONE", - "INFREQUENT_OR_MILD", - "FREQUENT_OR_INTENSE" -] - removed
Input schema / properties / violenceRealistic / typeRemoved value: -"string" - added
Input schema / properties / violenceRealisticProlongedGraphicOrSadisticAdded value: +{ + "anyOf": [ + { + "$ref": "#/properties/alcoholTobaccoOrDrugUseOrReferences/anyOf/0" + }, + { + "type": "null" + } + ] +}
- Added
apple_update_app - Added
apple_update_custom_product_page - Added
apple_update_custom_product_page_localization - Added
apple_update_custom_product_page_version - Added
apple_update_experiment - Added
apple_update_experiment_treatment - Added
apple_update_phased_release - Added
apple_update_territory_availability - Added
apple_update_version - Added
apple_upload_asset - Added
apple_upload_build - Changed
apple_upload_screenshot4 fields changed- changed
Input schema / properties / fileSize / descriptionPrevious value: -"File size in bytes"New value: +"Expected file size in bytes; the actual file size is always used" - added
Input schema / properties / fileSize / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / fileSize / typePrevious value: -"number"New value: +"integer" - changed
Input schema / requiredPrevious value: -[ - "screenshotSetId", - "filePath", - "fileName", - "fileSize" -]New value: +[ + "screenshotSetId", + "filePath", + "fileName" +]
- Added
apple_wait_for_asset - Added
apple_wait_for_build_upload - Added
google_activate_purchase_option - Added
google_activate_subscription_base_plan - Removed
google_archive_subscription - Changed
google_commit_edit2 fields changed- added
Input schema / properties / changesInReviewBehaviorAdded value: +{ + "default": "ERROR_IF_IN_REVIEW", + "description": "Safe default is ERROR_IF_IN_REVIEW. Choose cancellation only when intentionally replacing a review.", + "enum": [ + "ERROR_IF_IN_REVIEW", + "CANCEL_IN_REVIEW_AND_SUBMIT" + ], + "type": "string" +} - added
Input schema / properties / changesNotSentForReviewAdded value: +{ + "description": "Keep rejected changes out of review until they are explicitly sent from Play Console.", + "type": "boolean" +}
- Added
google_create_one_time_product - Changed
google_create_release12 fields changed- added
Input schema / properties / countryTargetingAdded value: +{ + "additionalProperties": false, + "description": "Country targeting for an inProgress production rollout", + "properties": { + "countries": { + "default": [], + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" + }, + "includeRestOfWorld": { + "default": false, + "type": "boolean" + } + }, + "type": "object" +} - added
Input schema / properties / inAppUpdatePriorityAdded value: +{ + "description": "In-app update priority from 0 (lowest) to 5 (highest); cannot be changed after rollout", + "maximum": 5, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / track / descriptionPrevious value: -"Target track"New value: +"Target track ID, including custom or form-factor tracks returned by google_list_tracks" - removed
Input schema / properties / track / enumRemoved value: -[ - "internal", - "alpha", - "beta", - "production" -] - added
Input schema / properties / track / minLengthAdded value: +1 - changed
Input schema / properties / userFraction / descriptionPrevious value: -"Staged rollout fraction (0.0-1.0, only for production)"New value: +"Staged rollout fraction (exclusive range 0-1; not supported for internal)" - added
Input schema / properties / userFraction / exclusiveMaximumAdded value: +1 - added
Input schema / properties / userFraction / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / versionCodes / descriptionPrevious value: -"Version codes to include"New value: +"Complete version-code set for this release" - added
Input schema / properties / versionCodes / items / patternAdded value: +"^[1-9]\\d*$" - added
Input schema / properties / versionCodes / minItemsAdded value: +1 - changed
Input schema / requiredPrevious value: -[ - "packageName", - "editId", - "track" -]New value: +[ + "packageName", + "editId", + "track", + "versionCodes" +]
- Added
google_create_subscription - Added
google_deactivate_purchase_option - Added
google_deactivate_subscription_base_plan - Added
google_delete_one_time_product - Added
google_get_edit - Added
google_get_one_time_product - Changed
google_get_review1 field changed- added
Input schema / properties / translationLanguageAdded value: +{ + "description": "BCP-47 language code to translate review text into", + "type": "string" +}
- Changed
google_get_track3 fields changed- changed
Input schema / properties / track / descriptionPrevious value: -"Track name"New value: +"Track ID returned by google_list_tracks" - removed
Input schema / properties / track / enumRemoved value: -[ - "internal", - "alpha", - "beta", - "production" -] - added
Input schema / properties / track / minLengthAdded value: +1
- Changed
google_halt_release4 fields changed- changed
Input schema / properties / track / descriptionPrevious value: -"Track name"New value: +"Track ID returned by google_list_tracks" - added
Input schema / properties / track / minLengthAdded value: +1 - added
Input schema / properties / versionCodesAdded value: +{ + "description": "Complete version-code set identifying the release to halt", + "items": { + "pattern": "^[1-9]\\d*$", + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "packageName", - "editId", - "track" -]New value: +[ + "packageName", + "editId", + "track", + "versionCodes" +]
- Added
google_list_apks - Added
google_list_bundles - Changed
google_list_iap1 field changed- added
Input schema / properties / pageTokenAdded value: +{ + "description": "Pagination token from the previous response", + "type": "string" +}
- Added
google_list_one_time_products - Added
google_list_release_statuses - Changed
google_list_reviews3 fields changed- added
Input schema / properties / maxResultsAdded value: +{ + "description": "Max reviews to return per page (API max is 100)", + "type": "number" +} - added
Input schema / properties / pageTokenAdded value: +{ + "description": "Pagination token from a previous response (nextPageToken)", + "type": "string" +} - added
Input schema / properties / translationLanguageAdded value: +{ + "description": "BCP-47 language code to translate review text into", + "type": "string" +}
- Changed
google_list_subscriptions2 fields changed- added
Input schema / properties / pageSizeAdded value: +{ + "maximum": 1000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / pageTokenAdded value: +{ + "description": "Pagination token from the previous response", + "type": "string" +}
- Added
google_list_vitals_anomalies - Changed
google_promote_release13 fields changed- added
Input schema / properties / countryTargetingAdded value: +{ + "additionalProperties": false, + "description": "Country targeting for an inProgress production rollout", + "properties": { + "countries": { + "default": [], + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" + }, + "includeRestOfWorld": { + "default": false, + "type": "boolean" + } + }, + "type": "object" +} - changed
Input schema / properties / fromTrack / descriptionPrevious value: -"Source track"New value: +"Source track ID returned by google_list_tracks" - removed
Input schema / properties / fromTrack / enumRemoved value: -[ - "internal", - "alpha", - "beta" -] - added
Input schema / properties / fromTrack / minLengthAdded value: +1 - added
Input schema / properties / inAppUpdatePriorityAdded value: +{ + "description": "In-app update priority from 0 (lowest) to 5 (highest)", + "maximum": 5, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / toTrack / descriptionPrevious value: -"Target track"New value: +"Target track ID, including custom or form-factor tracks" - removed
Input schema / properties / toTrack / enumRemoved value: -[ - "alpha", - "beta", - "production" -] - added
Input schema / properties / toTrack / minLengthAdded value: +1 - changed
Input schema / properties / userFraction / descriptionPrevious value: -"Staged rollout fraction for production"New value: +"Staged rollout fraction (not supported for internal)" - added
Input schema / properties / userFraction / exclusiveMaximumAdded value: +1 - added
Input schema / properties / userFraction / exclusiveMinimumAdded value: +0 - added
Input schema / properties / versionCodesAdded value: +{ + "description": "Complete version-code set identifying the source release", + "items": { + "pattern": "^[1-9]\\d*$", + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "packageName", - "editId", - "fromTrack", - "toTrack" -]New value: +[ + "packageName", + "editId", + "fromTrack", + "toTrack", + "versionCodes" +]
- Added
google_query_vitals - Added
google_search_vitals_error_issues - Added
google_search_vitals_error_reports - Added
google_update_data_safety - Changed
google_update_listing1 field changed- added
Input schema / properties / videoAdded value: +{ + "description": "URL of a promotional YouTube video for the app", + "type": "string" +}
- Added
google_update_one_time_product
91 tool updates
v0.3.1- First observed
apple_add_beta_testers_to_group - First observed
apple_assign_build - First observed
apple_cancel_submission - First observed
apple_create_beta_group - First observed
apple_create_bundle_id - First observed
apple_create_certificate - First observed
apple_create_iap - First observed
apple_create_profile - First observed
apple_create_screenshot_set - First observed
apple_create_subscription_group - First observed
apple_create_version - First observed
apple_create_version_localization - First observed
apple_delete_beta_group - First observed
apple_delete_beta_tester - First observed
apple_delete_iap - First observed
apple_delete_profile - First observed
apple_delete_screenshot - First observed
apple_delete_subscription_group - First observed
apple_disable_capability - First observed
apple_enable_capability - First observed
apple_get_age_rating - First observed
apple_get_app - First observed
apple_get_app_info - First observed
apple_get_iap - First observed
apple_get_pricing - First observed
apple_invite_beta_tester - First observed
apple_list_app_info_localizations - First observed
apple_list_apps - First observed
apple_list_availability - First observed
apple_list_beta_groups - First observed
apple_list_beta_testers - First observed
apple_list_builds - First observed
apple_list_bundle_id_capabilities - First observed
apple_list_bundle_ids - First observed
apple_list_certificates - First observed
apple_list_devices - First observed
apple_list_iap - First observed
apple_list_profiles - First observed
apple_list_reviews - First observed
apple_list_screenshot_sets - First observed
apple_list_subscription_groups - First observed
apple_list_version_localizations - First observed
apple_list_versions - First observed
apple_register_device - First observed
apple_remove_beta_testers_from_group - First observed
apple_respond_to_review - First observed
apple_revoke_certificate - First observed
apple_set_price - First observed
apple_submit_for_review - First observed
apple_update_age_rating - First observed
apple_update_app_info_localization - First observed
apple_update_category - First observed
apple_update_device - First observed
apple_update_review_detail - First observed
apple_update_version_localization - First observed
apple_upload_screenshot - First observed
google_archive_subscription - First observed
google_commit_edit - First observed
google_create_edit - First observed
google_create_iap - First observed
google_create_release - First observed
google_delete_all_images - First observed
google_delete_edit - First observed
google_delete_iap - First observed
google_delete_image - First observed
google_delete_listing - First observed
google_get_country_availability - First observed
google_get_details - First observed
google_get_iap - First observed
google_get_listing - First observed
google_get_review - First observed
google_get_subscription - First observed
google_get_testers - First observed
google_get_track - First observed
google_halt_release - First observed
google_list_iap - First observed
google_list_images - First observed
google_list_listings - First observed
google_list_reviews - First observed
google_list_subscriptions - First observed
google_list_tracks - First observed
google_promote_release - First observed
google_reply_to_review - First observed
google_update_details - First observed
google_update_iap - First observed
google_update_listing - First observed
google_update_testers - First observed
google_upload_apk - First observed
google_upload_bundle - First observed
google_upload_image - First observed
google_validate_edit
TDQS
Scored across 188 tools
Platform prefixes and detailed descriptions separate most Apple vs Google and resource/action pairs. However, the set contains confusing overlaps: deprecated screenshot tools alongside the Asset Library/placement tools, and two Apple review-submission paths (`apple_submit_for_review` vs. `apple_create_review_submission` + `apple_add_review_submission_item` + `apple_submit_review_submission`). These overlaps make misselection plausible without careful reading.
Tool names consistently follow a platform-prefixed snake_case verb_noun pattern (`apple_list_*`, `google_create_*`, etc.), including wait/search/query variants. The minor legacy exceptions still fit the same predictable convention.
188 tools is far beyond a manageable set for an MCP server, even for a broad app-publishing domain. This harms discoverability and tool selection; the rubric treats 50+ tools as an extreme mismatch.
The surface covers app metadata, versions/builds/uploads, assets/placements, pricing/availability, IAP/subscriptions/offer codes, reviews, beta testing, analytics/finance, certificates/profiles/devices, and Google edit/release/vitals workflows. Some lifecycle gaps remain, such as Apple IAP update and subscription-group get/update, but core workflows are well covered.
Maintenance
Related MCP Connectors
Create App Store screenshots, icons, ASO copy, localization, and revisions via hosted MCP.
MCP server for Appcircle mobile CI/CD platform.
Manage App Store and Google Play apps: listings, screenshots, builds, releases, reviews, metrics.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server to communicate with the App Store Connect API for iOS Developers25117 npm331MIT
- AlicenseAqualityCmaintenanceAn MCP server that drives the full App Store release cycle for iOS and macOS apps: version bump, archive + TestFlight upload, metadata, review submission, and status.818 npmMIT
- AlicenseNot gradedqualityCmaintenanceApp Store Connect MCP Server (Swift) that manages apps, builds, TestFlight, metadata, reviews natively on macOSMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for managing mobile app releases on App Store Connect and Google Play. It exposes 101 tools for iOS and Android release lifecycle and reacts to EAS/GitHub webhooks automatically.0MIT