App Store Connect MCP Server
The App Store Connect MCP Server provides a comprehensive interface to Apple's App Store Connect API, enabling you to manage virtually every aspect of your account directly from AI assistants like Claude or Cursor.
App & Version Management
List and inspect apps across all Apple platforms (iOS, macOS, tvOS, visionOS)
Create and manage App Store versions, filtered by platform and state
Localization & Metadata
Full CRUD for version localizations (descriptions, keywords, What's New, promotional text)
Update app info localizations (app name, subtitle, privacy policy URL)
Beta Testing (TestFlight)
List beta groups and testers; add and remove beta testers from groups
Screenshot Management
List screenshot sets and individual screenshots; upload new screenshots
Bundle ID Management
Create, list, update, and delete bundle identifiers
User & Device Management
List and inspect registered devices (filter by platform/status) and team users (filter by role)
Build Management
List and inspect app builds
Categories & Pricing
Browse App Store categories by platform
View price schedules, territory availability, and price points
Get Purchase Power Parity (PPP) equivalent prices; set per-territory manual pricing
In-App Purchases (IAP)
Create, update, delete, and localize one-time IAPs (non-consumable, consumable, non-renewing)
Set IAP pricing with PPP support, manage territory availability, and submit for App Review
Analytics & Reporting
Create, list, and delete analytics report requests
List reports by category (engagement, commerce, usage, frameworks, performance) and granularity
Download and parse analytics report segments (gzip-compressed TSV)
Download and parse sales reports (summary, subscription, subscriber, pre-order) and finance reports (summary, detailed) by vendor number, region, and date
Performance Metrics & Diagnostics
Retrieve app-level and build-level performance metrics (launch time, memory, battery, hangs, disk, animation, termination)
List diagnostic signatures and logs for performance issues (disk writes, hangs, slow launches)
Manage iOS, macOS, tvOS, and visionOS apps on the App Store via App Store Connect API, including app listing, version control, localizations, beta testing via TestFlight, screenshots, bundle IDs, devices, users, builds, categories, pricing, and per-territory pricing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@App Store Connect MCP Serverlist my apps"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
App Store Connect MCP Server
A Model Context Protocol (MCP) server for Apple's App Store Connect API. Manage your iOS, macOS, tvOS, and visionOS apps directly from Claude, Cursor, or any MCP-compatible client.
Features
App Store Localizations - Full CRUD for version descriptions, keywords, and what's new
App Management - List and inspect apps across all platforms
Version Control - Create and manage app store versions
Beta Testing - Manage TestFlight groups and testers
Screenshot Management - Upload and organize app screenshots
Bundle ID Management - Full CRUD for bundle identifiers
Device Management - List and inspect registered devices
User Management - List and inspect team users
Build Management - List and inspect app builds
Category & Pricing - Browse categories, check pricing and availability
Pricing & PPP - Set per-territory pricing with Purchase Power Parity support
In-App Purchases - Create and manage one-time purchases (lifetime/non-consumable, consumable, non-renewing): metadata, localization, pricing & PPP, availability, and review submission (review-screenshot upload excluded)
Analytics Reports - Request and download app analytics reports (engagement, commerce, usage, performance)
Sales & Finance - Download sales, trends, and financial reports
Performance & Diagnostics - App/build power & performance metrics and diagnostic logs
Secure by Default - ES256 JWT auth with automatic token refresh, credential redaction in logs
Related MCP server: App Store Connect MCP
Table of Contents
Quick Start
# 1. Install
npm install -g asc-mcp
# 2. Set credentials (get from App Store Connect > Users and Access > Keys)
export APP_STORE_CONNECT_KEY_ID="YOUR_KEY_ID"
export APP_STORE_CONNECT_ISSUER_ID="YOUR_ISSUER_ID"
export APP_STORE_CONNECT_P8_PATH="/path/to/AuthKey.p8"
# 3. Add to your MCP client config and start using!Installation
npm (recommended)
npm install -g asc-mcpUsing npx
npx asc-mcpFrom Source
git clone https://github.com/SardorbekR/appstore-connect-mcp.git
cd appstore-connect-mcp
npm install
npm run buildConfiguration
Prerequisites: Get Your Apple API Credentials
Sign in to App Store Connect
Go to Users and Access → Integrations → App Store Connect API
Click Generate API Key (or use existing)
Select appropriate role (Admin or App Manager recommended)
Download the .p8 file - you can only download it once!
Note your Key ID (shown in the keys list)
Note your Issuer ID (shown at the top of the page)
Environment Variables
Variable | Required | Description |
| Yes | Your API Key ID (e.g., |
| Yes | Your Issuer ID (UUID format) |
| Yes* | Path to your |
| Yes* | Raw content of |
*One of P8_PATH or P8_CONTENT is required.
MCP Client Configuration
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"app-store-connect": {
"command": "asc-mcp",
"env": {
"APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
"APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
"APP_STORE_CONNECT_P8_PATH": "/absolute/path/to/AuthKey.p8"
}
}
}
}Add to your Cursor MCP settings (Settings → MCP Servers):
{
"mcpServers": {
"app-store-connect": {
"command": "npx",
"args": ["-y", "asc-mcp"],
"env": {
"APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
"APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
"APP_STORE_CONNECT_P8_PATH": "/absolute/path/to/AuthKey.p8"
}
}
}
}Add to your Continue configuration:
{
"mcpServers": {
"app-store-connect": {
"command": "asc-mcp",
"env": {
"APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
"APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
"APP_STORE_CONNECT_P8_PATH": "/absolute/path/to/AuthKey.p8"
}
}
}
}For CI/CD or containerized environments, you can pass the key content directly:
{
"mcpServers": {
"app-store-connect": {
"command": "asc-mcp",
"env": {
"APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
"APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
"APP_STORE_CONNECT_P8_CONTENT": "-----BEGIN PRIVATE KEY-----\nMIGT...your key here...AB12\n-----END PRIVATE KEY-----"
}
}
}
}Available Tools
Apps
Tool | Description | Parameters |
| List all apps in your account |
|
| Get details of a specific app |
|
Versions
Tool | Description | Parameters |
| List all versions for an app |
|
| Get version details |
|
| Create a new app version |
|
Version Localizations
Tool | Description | Parameters |
| List localizations for a version |
|
| Get localization details |
|
| Add a new locale |
|
| Update localization |
|
| Remove a locale |
|
App Info Localizations
Tool | Description | Parameters |
| List app info records |
|
| List name/subtitle localizations |
|
| Update app name, subtitle |
|
Beta Testing (TestFlight)
Tool | Description | Parameters |
| List beta groups for an app |
|
| List testers in a group |
|
| Add a tester to a group |
|
| Remove a tester from a group |
|
Screenshots
Tool | Description | Parameters |
| List screenshot sets |
|
| List screenshots in a set |
|
| Upload a new screenshot |
|
Bundle IDs
Tool | Description | Parameters |
| List all bundle IDs |
|
| Get bundle ID details |
|
| Register a new bundle ID |
|
| Update bundle ID name |
|
| Delete a bundle ID |
|
Devices
Tool | Description | Parameters |
| List registered devices |
|
| Get device details |
|
Users
Tool | Description | Parameters |
| List team users |
|
| Get user details |
|
Builds
Tool | Description | Parameters |
| List builds for an app |
|
| Get build details |
|
Categories & Pricing
Tool | Description | Parameters |
| List app categories |
|
| Get app pricing info |
|
| Get app territory availability |
|
Pricing (PPP)
Tool | Description | Parameters |
| List all territories with currencies |
|
| List available price tiers for an app |
|
| Get PPP equivalent prices across countries |
|
| Set per-territory manual pricing (replaces entire schedule) |
|
In-App Purchases (Lifetime / Non-Consumable)
One-time purchases via Apple's In-App Purchases v2 API. create_in_app_purchase defaults to NON_CONSUMABLE — a "lifetime" unlock. To ship one: create → add a localization → set a price → set availability → submit for review.
Note: App Review usually requires a review screenshot on the in-app purchase. Uploading IAP review screenshots is not yet covered by these tools — add one in App Store Connect if
submit_in_app_purchase_for_reviewis rejected for a missing screenshot.
Tool | Description | Parameters |
| List an app's in-app purchases, optionally by type |
|
| Get a single in-app purchase's details and state |
|
| Create an IAP (defaults to NON_CONSUMABLE / lifetime) |
|
| Update name, Family Sharing, or review note (productId/type immutable) |
|
| Delete an in-app purchase |
|
| List localized names/descriptions |
|
| Add a localized display name (+ description) |
|
| Update a localization |
|
| Delete a localization |
|
| List price points (customer price & proceeds) |
|
| Apple's PPP-equivalent price points for a base price point |
|
| Set pricing (replaces schedule; one base territory to auto-equalize, or full PPP list) |
|
| Read current per-territory prices (manual; optional automatic) |
|
| Get territory availability |
|
| Set territory availability |
|
| Submit the IAP to App Review (independent of an app version) |
|
Analytics Reports
Tool | Description | Parameters |
| Request an analytics report (ongoing or one-time snapshot) |
|
| List analytics report requests for an app |
|
| Get an analytics report request |
|
| Delete an analytics report request |
|
| List reports available within a request |
|
| List instances (by date) of a report |
|
| List downloadable segments of a report instance |
|
| Download a report segment |
|
Sales & Finance
Tool | Description | Parameters |
| Download a sales/trends report |
|
| Download a financial report |
|
Performance & Diagnostics
Tool | Description | Parameters |
| Get an app's power & performance metrics |
|
| Get a build's performance metrics |
|
| List diagnostic signatures for a build |
|
| List diagnostic logs for a signature |
|
Usage Examples
List Your Apps
"Show me all my apps in App Store Connect"
Claude will use list_apps to retrieve and display your apps.
Update App Description
"Update the English description for version 2.0 of MyApp to: 'A revolutionary app that simplifies your daily tasks.'"
Claude will:
Find the app using
list_appsGet the version using
list_app_versionsFind the English localization using
list_version_localizationsUpdate it using
update_version_localization
Add Japanese Localization
"Add Japanese localization to MyApp version 2.0 with description '素晴らしいアプリです' and keywords 'アプリ,便利,簡単'"
Claude will use create_version_localization with locale ja.
Add a Beta Tester
"Add john@example.com as a beta tester to the Internal Testing group for MyApp"
Claude will:
Find the app and beta group using
list_beta_groupsAdd the tester using
add_beta_tester
Set PPP Pricing
"Show me the equivalent prices for my $9.99 tier in India, Brazil, and Turkey"
Claude will:
Find the $9.99 price point using
list_app_price_pointsGet equivalent prices using
get_price_point_equalizationsShow you the PPP-adjusted prices in each territory
"Set my app to $9.99 in the US and use PPP pricing for India and Brazil"
Claude will use set_app_prices with the appropriate price point IDs for each territory.
Create a Lifetime Purchase
"Add a $99.99 lifetime unlock to MyApp with PPP pricing for India and Brazil"
Claude will:
Create a non-consumable IAP with
create_in_app_purchaseAdd a display name with
create_in_app_purchase_localizationFind the $99.99 tier with
list_in_app_purchase_price_points, then PPP equivalents withget_in_app_purchase_price_point_equalizationsApply per-territory pricing with
set_in_app_purchase_priceand open availability withset_in_app_purchase_availabilityConfirm the result with
list_in_app_purchase_prices
Check Version Status
"What's the status of all versions of MyApp?"
Claude will use list_app_versions to show version states (PREPARE_FOR_SUBMISSION, IN_REVIEW, READY_FOR_SALE, etc.)
Security
Credential Handling
Private keys are never logged or exposed in error messages
JWT tokens are automatically redacted from any error output
Issuer IDs (UUIDs) are redacted from logs
Token caching minimizes key usage (15-min tokens, refreshed at 10 min)
Path Validation
P8 file paths are validated against directory traversal attacks (
..not allowed)Only absolute paths are resolved
Best Practices
Never commit credentials - Use environment variables or a secrets manager
Restrict API key permissions - Use minimal required role (App Manager for most operations)
Rotate keys periodically - Generate new API keys and revoke old ones
Secure your .p8 file - Set file permissions to
600(owner read/write only)
chmod 600 /path/to/AuthKey.p8Troubleshooting
"Configuration error: APP_STORE_CONNECT_KEY_ID environment variable is required"
Ensure all required environment variables are set:
APP_STORE_CONNECT_KEY_IDAPP_STORE_CONNECT_ISSUER_IDAPP_STORE_CONNECT_P8_PATHorAPP_STORE_CONNECT_P8_CONTENT
"Failed to read private key"
Verify the path in
APP_STORE_CONNECT_P8_PATHis correct and absoluteCheck file permissions:
ls -la /path/to/AuthKey.p8Ensure the file is a valid
.p8from Apple (starts with-----BEGIN PRIVATE KEY-----)
"Authentication failed"
This usually means:
The API key was revoked in App Store Connect
The Key ID or Issuer ID doesn't match the .p8 file
The .p8 file is corrupted or incomplete
"Rate limit exceeded"
The server includes built-in rate limiting (50 requests/minute). If you hit Apple's limits:
Wait for the indicated retry time
Batch your operations when possible
The server automatically retries with exponential backoff
Tools Not Appearing in Claude
Verify the server is running: check Claude Desktop logs
Ensure the config file path is correct for your OS
Restart Claude Desktop after config changes
Development
Prerequisites
Node.js 20+
npm or pnpm
Setup
# Clone the repository
git clone https://github.com/SardorbekR/appstore-connect-mcp.git
cd appstore-connect-mcp
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Lint
npm run lint
# Type check
npm run typecheckProject Structure
src/
├── index.ts # MCP server entry point
├── auth/
│ └── jwt.ts # JWT token generation & caching
├── api/
│ ├── client.ts # HTTP client with retry logic
│ └── types.ts # TypeScript interfaces
├── tools/
│ ├── index.ts # Tool registry
│ ├── apps.tools.ts
│ ├── versions.tools.ts
│ ├── localizations.tools.ts
│ ├── app-info.tools.ts
│ ├── beta.tools.ts
│ ├── screenshots.tools.ts
│ ├── bundle-ids.tools.ts
│ ├── devices.tools.ts
│ ├── users.tools.ts
│ ├── builds.tools.ts
│ └── categories.tools.ts
└── utils/
├── errors.ts # Error classes with redaction
└── validation.ts # Zod schemasRunning Locally
# Development mode with auto-reload
npm run dev
# Or run the built version
npm startContributing
Fork the repository
Create a feature branch:
git checkout -b feature/my-featureMake your changes and add tests
Run
npm testandnpm run lintSubmit a pull request
License
MIT License - see LICENSE for details.
Links
Available Tools
52 toolsadd_beta_testerB
Add a new beta tester to a beta group by email address.
| Name | Required | Description | Default |
|---|---|---|---|
| betaGroupId | Yes | The beta group ID to add the tester to | |
| Yes | Email address of the beta tester | ||
| firstName | No | First name of the beta tester (optional) | |
| lastName | No | Last name of the beta tester (optional) |
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 states 'Add' but does not disclose side effects like what happens if the tester already exists, error conditions, or state changes. For a mutation tool, this 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 front-loaded sentence with no wasted words. It efficiently conveys the essential 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?
Given no annotations and no output schema, the description should provide more context. It omits what a beta group is, input validation requirements, or the result of successful addition. Minimal completeness for a 4-parameter 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?
All parameters have descriptions in the schema (100% coverage), so the description adds minimal extra meaning. The phrase 'by email address' echoes the email parameter. 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 verb 'Add', the resource 'beta tester', and the method 'by email address'. It distinguishes from sibling tools like 'remove_beta_tester' and 'list_beta_testers'.
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. Does not mention prerequisites, such as whether the beta group must exist, or when to use remove_beta_tester instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_analytics_report_requestB
Create a new analytics report request for an app. Use ONGOING for continuous reports or ONE_TIME_SNAPSHOT for a single snapshot. Reports take time to generate after creation.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| accessType | Yes | ONGOING for continuous daily reports, ONE_TIME_SNAPSHOT for a single point-in-time report |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must bear the transparency burden. It discloses that reports take time to generate (async behavior). However, it does not mention authentication requirements, side effects, or what the response includes, so it is adequate but not thorough.
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 ('Create a new analytics report request'), followed by key parameter choices and behavioral note. No superfluous 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 simple creation tool with 2 params and no output schema, the description covers the operation, parameter selection, and a key behavioral note (async generation). It lacks mention of return values or permissions, but is largely sufficient given 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%, so baseline is 3. The description's parameter guidance ('Use ONGOING for continuous reports or ONE_TIME_SNAPSHOT for a single snapshot') largely echoes the schema descriptions, adding minimal new 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 clearly states the verb 'create' and resource 'analytics report request', and distinguishes between two report types. However, it does not explicitly differentiate from sibling tools like delete or get, though the name and context imply 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?
The description provides guidance on choosing between ONGOING and ONE_TIME_SNAPSHOT, but lacks guidance on when to use this tool versus alternative tools (e.g., get, list, delete) or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_app_versionB
Create a new App Store version for an app.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| platform | Yes | Platform for the version | |
| versionString | Yes | Version number (e.g., '1.0.0', '2.1') | |
| releaseType | No | Release type | |
| copyright | No | Copyright text for the version | |
| earliestReleaseDate | No | Earliest release date (ISO 8601 format) for SCHEDULED release type |
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 only states 'create' without disclosing side effects, error conditions, or expected outcomes (e.g., does it check for duplicates? what are required permissions?). Minimal behavioral context beyond the action verb.
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 with verb and object. 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?
Despite having 6 parameters (3 required) and no output schema, the description is extremely brief. Missing context about return value, error handling, constraints, or side effects. For a creation tool, more completeness is expected.
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 all parameters. The description adds no parameter-specific information beyond what is in the schema, 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?
Description clearly states it creates an App Store version, with verb and resource. Distinct from sibling tools like create_version_localization or get_app_version.
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 alternatives guidance. While the purpose is clear, there is no mention of prerequisites or when to choose this over related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bundle_idA
Register a new bundle ID in App Store Connect. The identifier must be unique and follow reverse-domain notation (e.g., com.example.app).
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | The bundle identifier (e.g., com.example.app) | |
| name | Yes | A name for the bundle ID | |
| platform | Yes | The platform for this bundle ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavioral traits. It states the action is to 'register' (a creation), but does not reveal side effects (e.g., whether registration affects existing resources, reversibility, or quotas). 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 two concise sentences with no wasted words. The first sentence front-loads the purpose, and the second provides a key parameter detail. It is appropriately sized for the tool's simplicity.
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 and no output schema, the description provides basic information but lacks completeness for a creation tool. It does not explain return values, error conditions, or constraints like maximum number of bundle IDs, which the agent may need to know 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?
The schema covers all three parameters with descriptions. The description adds meaningful context for the 'identifier' parameter by specifying reverse-domain notation and uniqueness, which goes beyond the schema. It does not add detail for 'name' or 'platform', but the schema is clear.
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 'Register' and the resource 'bundle ID' with the system 'App Store Connect'. It distinguishes from sibling tools like 'list_bundle_ids', 'update_bundle_id', and 'delete_bundle_id' by indicating a creation action.
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 key usage condition: the identifier must be unique and follow reverse-domain notation. However, it does not explicitly mention when to use this tool versus alternative creation tools like 'create_app_version' or 'add_beta_tester', nor does it exclude 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.
create_version_localizationA
Create a new localization for an App Store version. Add descriptions, keywords, and other metadata in a specific locale.
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes | The App Store version ID | |
| locale | Yes | Locale code (e.g., 'en-US', 'ja', 'zh-Hans') | |
| description | No | App description (max 4000 characters) | |
| keywords | No | Keywords for search (max 100 characters, comma-separated) | |
| whatsNew | No | What's new in this version (max 4000 characters) | |
| promotionalText | No | Promotional text (max 170 characters) | |
| marketingUrl | No | Marketing URL (HTTPS only) | |
| supportUrl | No | Support URL (HTTPS only) |
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 states it's a create operation but lacks details on prerequisites, validation, side effects, or uniqueness constraints.
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 action and subject are front-loaded, and every sentence 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?
Given the absence of an output schema and 8 parameters, the description is adequate but lacks details on return value, overwrite behavior, and relationship to sibling 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 the description adds minimal meaning beyond listing parameter types (descriptions, keywords, metadata). Baseline 3 is appropriate as it does not introduce new 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 'create' and the resource 'localization for an App Store version', distinguishing it from siblings like update_version_localization and delete_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 implies usage for creating a new localization but does not explicitly state when to use it versus alternatives like update_version_localization, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_analytics_report_requestA
Delete an analytics report request. This stops report generation and removes access to existing reports.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | The analytics report request ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It reveals the destructive behavior (stops generation, removes access), but doesn't specify irreversibility, required permissions, or side effects on related data. It covers the core impact adequately but not comprehensively.
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 convey the purpose and effect with no unnecessary words. The description is front-loaded and efficient, earning its place entirely.
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 required parameter, no output schema, no nested objects), the description is fairly complete. It explains what happens when the tool is used. Minor improvements could mention that the request must exist or the deletion is permanent, but overall it's sufficient.
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 'requestId' is described in the schema as 'The analytics report request ID to delete'. The tool description does not add any additional meaning beyond that. Since schema coverage is 100%, a 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 ('Delete an analytics report request') and the resource. It also explains the effect: 'stops report generation and removes access to existing reports.' This distinguishes it from sibling tools like create, get, list, and download.
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 versus alternatives. While the purpose is clear, it doesn't mention prerequisites (e.g., the request must exist) or caution against accidental deletion. It's adequate for a simple delete but lacks contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bundle_idA
Delete a bundle ID. Note: This cannot be undone and may affect apps using this bundle ID.
| Name | Required | Description | Default |
|---|---|---|---|
| bundleIdId | Yes | The bundle ID resource ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and effectively discloses that deletion is permanent and may affect connected apps. However, it does not mention required permissions or response format.
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 concise sentences with the action upfront and a critical warning appended. No unnecessary 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 simple one-parameter tool with no output schema, the description covers the essential context: action, irreversibility, and potential effects. Could mention prerequisites like admin access, but the core completeness is good.
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 the parameter fully (100% coverage). The description does not add any additional semantic information about the parameter 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 explicitly states 'Delete a bundle ID' with a specific verb and resource, clearly distinguishing it from sibling tools like create_bundle_id, update_bundle_id, get_bundle_id, and list_bundle_ids.
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 note about irreversibility and potential impact on apps provides important context for when to use the tool, but lacks explicit guidance on when not to use it or alternatives (e.g., disable instead of delete).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_version_localizationB
Delete a version localization. Cannot delete the primary locale.
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | The localization ID to delete |
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 mentions the inability to delete the primary locale but lacks details on side effects, permissions, 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 extremely concise, consisting of two short sentences that convey the purpose and a key limitation with no unnecessary 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 simple single-parameter delete tool, the description covers the basics but lacks completeness regarding reversibility, cascade effects, or required permissions. It is adequate but not thorough.
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 describes the parameter as 'the localization ID to delete'. The description adds one constraint ('Cannot delete the primary locale') which relates to the parameter value but does not significantly enhance understanding 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 verb (delete) and resource (version localization), and adds a distinguishing constraint (cannot delete primary locale). This effectively differentiates it from sibling tools like create, update, or get.
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 key limitation ('Cannot delete the primary locale') but does not offer explicit guidance on when to use this tool versus alternatives like update_version_localization or what prerequisites are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_analytics_report_segmentA
Download and parse an analytics report segment from its pre-signed URL. The segment data is gzip-compressed TSV. Returns parsed headers and rows (as key-value objects). Use list_analytics_report_segments to get the download URL first.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The pre-signed download URL from list_analytics_report_segments | |
| maxRows | No | Maximum number of data rows to return (1-1000, default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description shoulders full disclosure. It explains the gzip compression and TSV parsing, and that the output is parsed headers and rows. It does not cover error handling or authentication, but the core behavior is transparent.
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 efficiently convey purpose, format, usage guidance, and return value. No extraneous 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?
Despite no output schema, the description explains the return format (parsed headers and rows) and mentions compression. Lacks detail on edge cases, but is adequate for the tool's simplicity.
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 description adds minimal value beyond the schema. It does contextualize the URL parameter by stating its source, but does not add meaning beyond what the schema already provides for maxRows.
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 downloads and parses an analytics report segment from a pre-signed URL, specifies the format (gzip-compressed TSV), and distinguishes itself from sibling tools by referencing list_analytics_report_segments.
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 directs to use list_analytics_report_segments first to obtain the URL, providing clear context for usage. It does not cover when not to use or alternatives, but the guidance is sufficient for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analytics_report_requestC
Get details of a specific analytics report request.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | The analytics report request ID |
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 'Get details', which implies a read operation, but no information about response size, time, or prerequisites (like existence of requestId) is given. The description adds minimal 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 concise with a single sentence that directly states the tool's action. It is front-loaded and efficient, though it 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 (single parameter, no output schema), the description is minimally adequate. However, it lacks context about what 'details' includes, expected response format, or how this relates to sibling tools. For a simple retrieval, it passes but leaves 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?
The single parameter requestId is fully described in the schema (100% coverage). The description does not add any extra meaning or context about the parameter, 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 it retrieves details of a specific analytics report request. However, it does not differentiate from sibling tools like list_analytics_report_requests, which list requests, or get_analytics_report (not a sibling but similar). The purpose is clear but lacks distinction.
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. There is no indication of when to use this tool versus alternatives (e.g., list_analytics_report_requests when searching, or create_analytics_report_request when creating). Implicit usage is assumed from the name and parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appA
Get detailed information about a specific app by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID (numeric string) |
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 only says 'detailed information' without specifying what that includes, permissions, or side effects. For a read-only tool, it lacks 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?
The description is a single, clear sentence with no wasted words. It is front-loaded with the action and resource.
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 simple with one required parameter and no output schema. The description is adequate but lacks detail on what 'detailed information' encompasses, leaving some ambiguity for a 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 covers 100% of the parameter (appId) with a clear description. 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 states the tool gets detailed information about a specific app by its ID, using a specific verb and resource. It distinguishes from sibling tools like list_apps and get_app_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 description implies usage when needing details of one app by ID, but provides no explicit guidance on when to use vs alternatives 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.
get_app_availabilityB
Get app availability information, including which territories the app is available in.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It reveals only that it returns availability info including territories, but does not disclose whether it is a read operation, any permission requirements, or data freshness. Minimal 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?
A single sentence of 13 words that is front-loaded and efficient. Every word serves a purpose, 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?
For a simple read tool with one parameter and no output schema, the description covers the essential output (territories). It could mention if there are additional fields or limitations, but overall it is sufficiently 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% for the single parameter appId, which is adequately described. The description does not add significant meaning beyond the schema; it hints at the purpose but does not deepen understanding of 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 tool gets app availability information and specifies it includes territories. The verb 'Get' and resource are clear, but it does not explicitly differentiate from siblings like list_territories, which might be related.
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 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.
get_app_perf_metricsA
Get performance and power metrics for an app (e.g., launch time, memory, battery, hangs). Returns Xcode-style metrics data with values per device and percentile. Use this for app-level aggregate metrics across all builds.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| metricType | Yes | The type of performance metric to retrieve | |
| platform | No | Filter by platform (optional) | |
| deviceType | No | Filter by device type identifier (e.g., 'iPhone14,5' for iPhone 13). Optional. |
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 that the tool returns 'Xcode-style metrics data with values per device and percentile' but does not state whether the operation is read-only, requires authentication, or has any side effects. The safety and authorization profile is 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 two sentences long, front-loaded with the primary action and examples, and contains no redundant information. Every sentence serves a 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?
There is no output schema, so the description should explain return format details. While it mentions 'Xcode-style metrics data with values per device and percentile', it does not elaborate on pagination, interpretation of metrics, or possible error conditions. For a tool with 4 parameters, this is adequate but not thorough.
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 each parameter. The description adds value by explaining the overall scope ('app-level aggregate metrics across all builds'), which contextualizes the appId and metricType parameters. However, it does not elaborate on enum values or additional 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 clearly states the tool retrieves performance and power metrics for an app, listing specific metric types (launch time, memory, battery, hangs). It distinguishes from the sibling tool get_build_perf_metrics by emphasizing 'app-level aggregate metrics across all builds'.
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 recommends using this tool for 'app-level aggregate metrics across all builds', implying it is not for build-specific analysis. While it does not name the sibling tool get_build_perf_metrics directly, the context and sibling list provide clear differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_price_scheduleC
Get the price schedule for an app, including pricing information.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. However, it fails to mention any behavioral traits such as read-only nature, authorization requirements, or rate limits. The description essentially restates the name without adding useful 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?
The description is very concise with a single sentence. It front-loads the key action and resource. However, it could be better structured to include more detail 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?
For a simple read tool with one parameter, the description is minimally complete but lacks explanation of what the price schedule contains (e.g., tiers, currencies, dates). There is no output schema, so the description should clarify return values, but it only vaguely mentions 'pricing 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?
The input schema has 100% coverage (single parameter 'appId' with a clear description). According to the guidelines, baseline is 3 for high coverage. The description adds no additional parameter meaning, but the schema already provides sufficient information.
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 'price schedule for an app', and mentions 'pricing information' to clarify content. However, it does not distinguish this tool from similar siblings like 'list_app_price_points' or 'get_price_point_equalizations', 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 is provided on when to use this tool versus alternatives. For example, it doesn't explain when to use 'get_app_price_schedule' instead of 'list_app_price_points' or 'get_price_point_equalizations'. The description lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_versionA
Get detailed information about a specific app version.
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes | The App Store version ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states basic action without detailing behavior, permissions, 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?
Single sentence, efficient and to the point, but could be more structured with further details.
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?
Minimally adequate for a simple read operation with one parameter; lacks context on return format or relation to other 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%; the description adds no additional meaning beyond the schema field name 'versionId'.
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 'Get' and resource 'detailed information about a specific app version', clearly distinguishing from sibling tools like list_app_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?
No explicit guidance on when to use this tool vs alternatives; usage is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_buildB
Get details of a specific build.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | The build resource 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 such as authentication requirements, rate limits, or whether the operation is read-only. It simply states 'get details,' which is insufficient for a tool without annotation support.
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 short, but could be more informative. However, for its simplicity, it is 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 the tool's simplicity (1 parameter, no output schema), the description adequately states its purpose. However, it lacks any behavioral context, and with no annotations, it is 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?
The schema covers 100% of the parameter (buildId with description 'The build resource ID'), so the description adds no extra meaning beyond what the schema already 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 'Get details of a specific build' uses a specific verb ('get') and resource ('build details') and clearly distinguishes from sibling tools like 'get_build_perf_metrics' and 'list_builds'.
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., 'list_builds' or 'get_build_perf_metrics'). 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.
get_build_perf_metricsA
Get performance and power metrics for a specific build. Same metric types as get_app_perf_metrics but scoped to a single build. Useful for comparing performance between builds.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | The build resource ID | |
| metricType | Yes | The type of performance metric to retrieve | |
| platform | No | Filter by platform (optional) | |
| deviceType | No | Filter by device type identifier (e.g., 'iPhone14,5' for iPhone 13). Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits like idempotency, rate limits, or side effects. Given the lack of annotations, the description should provide more 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?
Two efficient sentences, front-loaded with the primary action, 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?
The description is complete given the schema covers parameters and there is no output schema to describe. Adequately explains the tool's purpose and scope.
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 parameters. The description adds minimal value beyond noting the metric types are same as sibling 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?
The description clearly states the tool gets performance and power metrics for a specific build, and distinguishes it from 'get_app_perf_metrics' by noting the scoping.
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 when to use this tool (for a single build) and mentions it is useful for comparing builds, but does not explicitly state 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.
get_bundle_idC
Get details of a specific bundle ID.
| Name | Required | Description | Default |
|---|---|---|---|
| bundleIdId | Yes | The bundle ID resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'get details' implying a read operation, but omits information about side effects, auth requirements, error behavior, or rate limits. This is minimal 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 sentence with no wasted words. However, it is very brief and could be structured to include more context 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 the simplicity (1 param, no output schema), the description is somewhat complete for a basic read tool. It lacks details about return format or error cases, which 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 description coverage is 100% for the single parameter. The description does not add meaning beyond the schema's 'The bundle ID resource ID'. 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 (get details) and resource (bundle ID). It distinguishes from sibling tools like create_bundle_id, delete_bundle_id, and list_bundle_ids. However, 'details' is vague and could be more specific.
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 list_bundle_ids, or any prerequisites such as ownership or permissions. The description lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deviceB
Get details of a specific registered device.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The device resource ID |
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 for behavioral disclosure. It only states 'get details' without mentioning read-only, idempotency, 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 a single, concise sentence that efficiently communicates the tool's purpose with no extraneous 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?
Given the simple one-parameter tool and absence of output schema, the description is minimally adequate but lacks information on return value structure, error handling, or scope of details returned. It does the bare minimum.
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 (deviceId as string) with coverage 100%. The description adds no additional meaning or context beyond the schema's label.
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), the resource (device), and specificity (a specific registered device). It effectively distinguishes from sibling tools like list_devices which lists all 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 list_devices or get_build. 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.
get_finance_reportA
Download and parse a finance report from App Store Connect. Returns financial report data as structured rows. Your vendor number can be found in App Store Connect under Settings > Agreements, Tax, and Banking. The regionCode is a 1-2 letter code representing the financial region (e.g., 'US' for United States, 'EU' for Europe, 'JP' for Japan, 'Z1' for rest of world). Report date must be in YYYY-MM format. Reports are typically available 30-45 days after the end of the fiscal month. Use FINANCIAL for revenue summary or FINANCE_DETAIL for line-item details.
| Name | Required | Description | Default |
|---|---|---|---|
| vendorNumber | Yes | Your vendor number (numeric string). Found in App Store Connect → Settings → Agreements, Tax, and Banking. | |
| regionCode | Yes | Financial region code (1-2 characters). Examples: 'US' (United States), 'EU' (Europe), 'JP' (Japan), 'AU' (Australia), 'Z1' (rest of world). | |
| reportDate | Yes | The fiscal month for the report in YYYY-MM format (e.g., '2024-01'). | |
| reportType | Yes | FINANCIAL for revenue summary by territory. FINANCE_DETAIL for line-item transaction details. | |
| maxRows | No | Maximum number of data rows to return (1-1000, default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses the availability delay (30-45 days) and the output format (structured rows). It does not cover authentication details or rate limits, but for a read-only operation the transparency is adequate.
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 concise at about 100 words, with no superfluous sentences. It front-loads the core purpose and then adds necessary context. It could be slightly more structured (e.g., using bullet points) but is clear 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 tool has 5 parameters (4 required) and no output schema, the description covers all key aspects: finding vendor number, region codes, date format, report type meanings, and availability delay. It hints at output as 'structured rows' but lacks specifics on columns, which is a minor 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?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining where to find the vendor number, providing region code examples, specifying the date format, and clarifying the difference between report types. This goes beyond the schema descriptions.
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 downloads and parses a finance report from App Store Connect, returning structured rows. It mentions specific report types and region codes, distinguishing it from siblings like get_sales_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?
The description provides explicit guidance on how to find the vendor number, the format for regionCode and reportDate, and when reports are available. It also clarifies which reportType to use for different needs (FINANCIAL vs FINANCE_DETAIL). However, it does not explicitly exclude alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_point_equalizationsA
Get Apple's equivalent price points in other territories for a given price point. This is the core Purchase Power Parity (PPP) data — shows what Apple considers equivalent pricing across countries. Use list_app_price_points first to get a price point ID.
| Name | Required | Description | Default |
|---|---|---|---|
| pricePointId | Yes | The price point ID (from list_app_price_points) | |
| territories | No | Filter to specific territories (3-letter codes, e.g., ['IND', 'BRA', 'TUR']) | |
| limit | No | Maximum number of equalizations to return (1-200) |
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 explains the tool returns 'equivalent price points' and 'PPP data', implying a read operation. However, it lacks details on error handling, rate limits, or whether the data is static or dynamic. The behavioral disclosure is adequate but 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?
The description consists of two concise sentences. The first states the function, and the second explains its significance (core PPP data) and a key usage hint. No unnecessary words are present.
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 has no output schema, so the description should outline return structure or example. It mentions 'equivalent price points' but does not describe the response format. For a retrieval tool, this is a notable gap. The description is somewhat complete given the simple purpose, but extra detail on output would improve 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?
The input schema has 100% description coverage for all parameters, so the schema already documents them well. The description does not add new meaning beyond mentioning the prerequisite for pricePointId. Baseline score of 3 is appropriate as the description adds little supplement.
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 gets Apple's equivalent price points (PPP data) for a given price point, with a specific verb 'Get' and resource 'equivalent price points in other territories'. It distinguishes itself from siblings like list_app_price_points (which provides IDs) and set_app_prices (which sets prices).
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 advises to use list_app_price_points first to obtain a price point ID. This gives clear prerequisite guidance. However, it does not provide when-not-to-use scenarios or comparisons with other tools beyond the prerequisite, missing some explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sales_reportA
Download and parse a sales report from App Store Connect. Returns tab-delimited report data as structured rows. Your vendor number can be found in App Store Connect under Settings > Agreements, Tax, and Banking. Valid report type and sub-type combinations: SALES + SUMMARY (daily/weekly/monthly/yearly), SUBSCRIPTION + SUMMARY (daily), SUBSCRIPTION_EVENT + SUMMARY (daily), SUBSCRIBER + DETAILED (daily), PRE_ORDER + SUMMARY (daily/weekly/monthly). Report date format varies by frequency: DAILY = YYYY-MM-DD, WEEKLY = YYYY-MM-DD (Sunday start), MONTHLY = YYYY-MM, YEARLY = YYYY.
| Name | Required | Description | Default |
|---|---|---|---|
| vendorNumber | Yes | Your vendor number (numeric string). Found in App Store Connect → Settings → Agreements, Tax, and Banking. | |
| reportType | Yes | The type of sales report to download. | |
| reportSubType | Yes | The sub-type of the report. SUMMARY is most common. DETAILED is for SUBSCRIBER reports. OPT_IN is for opt-in reports. | |
| frequency | Yes | Report frequency. Not all frequencies are valid for all report types. DAILY is the most commonly available. | |
| reportDate | Yes | The date for the report. Format depends on frequency: DAILY = YYYY-MM-DD, WEEKLY = YYYY-MM-DD (Sunday start), MONTHLY = YYYY-MM, YEARLY = YYYY. | |
| reportVersion | No | Optional report version string (e.g., '1_3'). Defaults to latest version. | |
| maxRows | No | Maximum number of data rows to return (1-1000, default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return format (tab-delimited structured rows), parameter constraints, and defaults. No annotations provided, so description carries full burden; missing details on network usage 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?
Single paragraph with front-loaded purpose, but dense and could benefit from structuring. No redundant sentences.
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?
Covers all parameter details, valid combinations, vendor location, and return format for a moderately complex tool. Well-rounded for agent 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?
With 100% schema coverage, baseline is 3. Description adds value by clarifying valid combinations, date formats, and vendor number location beyond schema descriptions.
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 'Download and parse a sales report from App Store Connect' with specific output format, distinguishing it from sibling tools like 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?
Provides detailed context on vendor number location, valid report type/sub-type combinations, and date formats. Lacks explicit when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Get details of a specific team user.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The user resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavior. It only states 'Get details' but does not mention permissions, rate limits, or what details are returned. It is minimally adequate but lacks depth.
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 unnecessary words. It is front-loaded with the action and resource.
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 should hint at the returned data structure. It does not, leaving the agent without expectation of the response format. For a simple GET, this is minimally sufficient.
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 covers the single parameter with a description ('The user resource ID'), so the description adds no new meaning. 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 'details of a specific team user', distinguishing it from sibling tools like list_users that return multiple users. It precisely communicates the tool's function.
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 list_users. Without context, the agent may not know the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_version_localizationB
Get detailed information about a specific version localization.
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | The 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 burden of behavioral disclosure. It states 'get detailed information' but does not specify authorization requirements, rate limits, or what exactly constitutes 'detailed information' (e.g., fields 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 concise sentence with 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 there is no output schema, the description should explain what information is returned (e.g., name, locale). It does not, leaving the agent without a clear picture of the tool's output. The single parameter is well-covered, but overall completeness is low.
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 a clear description ('The localization ID') for the only parameter. With 100% schema description coverage, the description adds no additional meaning beyond the schema, earning a 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 uses a specific verb 'Get' and resource 'version localization', clearly indicating the action and object. This distinguishes it from sibling tools like 'update_version_localization' or 'delete_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?
No guidance on when to use this tool versus alternatives, such as 'list_version_localizations' for multiple records or 'update_version_localization' for modifications. The description lacks context on usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analytics_report_instancesB
List report instances (dated snapshots) for an analytics report. Each instance represents data for a specific processing date. Can filter by granularity (DAILY, WEEKLY, MONTHLY) and processing date.
| Name | Required | Description | Default |
|---|---|---|---|
| reportId | Yes | The analytics report ID | |
| granularity | No | Filter by report granularity | |
| processingDate | No | Filter by processing date (e.g., '2024-01-15') | |
| limit | No | Maximum number of instances to return (1-200) |
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 explains that instances are dated snapshots but does not disclose behavioral traits like read-only nature, pagination behavior, 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?
Two sentences, front-loaded with the key action and resource, then filter capability. 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?
Given the tool is a simple list operation with 4 parameters and no output schema, the description covers the main functionality. However, it omits mention of pagination via the 'limit' parameter, which is a common use case.
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 context by stating that granularity and processing date are filterable, but this information is already present in the parameter descriptions.
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 'report instances (dated snapshots) for an analytics report'. It distinguishes the resource from other list tools like list_analytics_reports or list_analytics_report_segments, but does not explicitly differentiate from 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 (e.g., list_analytics_reports). The description mentions filtering options but does not provide context or exclusions for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analytics_report_requestsA
List all analytics report requests for an app. Shows whether each request is active or stopped due to inactivity.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| limit | No | Maximum number of report requests to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must convey behavior. It notes that the list includes status (active/stopped), which is helpful. However, it does not clarify that this is a read-only operation, nor does it mention pagination despite the limit 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?
The description is extremely concise, with two sentences that immediately convey the tool's purpose. No redundant or extraneous information is present.
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?
While the description states the status field is included, it omits details on pagination, response format, or ordering. Given the lack of an output schema, more information would be beneficial for a 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?
Schema coverage is 100%, with both parameters already described adequately in the input schema. The description adds no additional meaning beyond what the schema 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 clearly states it lists analytics report requests for an app and shows their activity status. This distinguishes it from sibling tools like create_analytics_report_request, get_analytics_report_request, and list_analytics_reports.
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 list_analytics_report_instances or list_analytics_report_segments. The description does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analytics_reportsA
List analytics reports available for a report request. Can filter by category (APP_STORE_ENGAGEMENT, COMMERCE, APP_USAGE, FRAMEWORKS_USAGE, PERFORMANCE).
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | The analytics report request ID | |
| category | No | Filter reports by category | |
| limit | No | Maximum number of reports to return (1-200) |
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 correctly identifies a read operation but does not disclose any additional behavioral traits such as pagination, rate limits, permissions, or side effects. The behavior is minimally transparent.
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: two sentences front-loading the main purpose and adding one filter detail. Every sentence adds value with no fluff.
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 three well-described parameters and no output schema, the description is largely complete. It explains the main action and filtering. Minor improvement could include clarifying the origin of requestId or the structure of returned reports.
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 all parameters. The description mentions the category filter and enum values, but these are already documented in the schema. No additional meaning beyond the schema is provided for requestId or limit.
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), the resource (analytics reports), and the context (available for a report request). It also mentions filtering by category with specific enum values, which distinguishes it from sibling tools like list_analytics_report_instances or list_analytics_report_requests.
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 (listing reports for a request with optional category filter) but does not explicitly state when to use this tool vs alternatives like list_analytics_report_instances or list_analytics_report_segments. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analytics_report_segmentsA
List downloadable segments for a report instance. Each segment contains a URL for downloading the report data, along with its checksum and size.
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | Yes | The analytics report instance ID | |
| limit | No | Maximum number of segments to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It mentions each segment contains a URL, checksum, and size, but does not disclose pagination, rate limits, or authentication needs. It is adequate 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?
Two sentences with no fluff. The first sentence states the purpose, the second adds key details about segments. Efficient and well-structured.
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 2 parameters, no output schema, and a straightforward list operation, the description covers the core functionality. However, it does not mention whether results are paginated (though limit implies it) or what happens when no segments exist.
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 (instanceId and limit) with 100% coverage. The description adds no additional meaning for the parameters beyond what the schema 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 specifies the action (list) and the resource (downloadable segments for a report instance) clearly. It also differentiates from sibling tools like list_analytics_report_instances and list_analytics_reports by focusing on segments.
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 does not explicitly state when to use this tool versus alternatives or provide exclusions. It implies usage when needing to list segments for downloading, but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_categoriesA
List all app categories available in the App Store. Can filter by platform.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of categories to return (1-200) | |
| platform | No | Filter by platform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses filtering capability and scope (App Store categories). Without annotations, description adequately conveys basic read behavior, though pagination or limits aren't 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?
Single sentence, no fluff, essential information front-loaded. Appropriate 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?
Covers basic functionality with filtering and scope. Lacks mention of return format or pagination, but for a list tool with simple schema, it's 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 description coverage is 100%, so parameters are well-documented. Description adds minimal extra value beyond restating filtering capability; serves as a summary.
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 action (list) and resource (app categories), with optional platform filter. Distinguishes from sibling list tools by specifying a unique resource type.
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 alternative tools mentioned. While purpose is clear, guidelines are absent, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_info_localizationsB
List all localizations for an app info. Returns app name, subtitle, and privacy policy info for each locale.
| Name | Required | Description | Default |
|---|---|---|---|
| appInfoId | Yes | The App Info ID (get this from list_app_infos) | |
| limit | No | Maximum number of localizations to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states 'List all localizations' but does not clarify if the result is paginated (the limit parameter suggests pagination but is not explained). No side effects or permissions are mentioned.
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 includes the core purpose and return information. It is concise and front-loaded, but could be slightly more structured (e.g., separating purpose from return values).
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 is present, so the description covers the return fields. However, it does not mention default limit behavior or pagination details. For a simple listing tool, this is minimally 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 parameters are documented. The description does not add extra meaning beyond the schema; it only restates the tool's purpose. A score of 3 is appropriate as the schema handles parameter documentation.
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 'localizations for an app info', and specifies the returned fields (app name, subtitle, privacy policy info). This distinguishes it from sibling tools like 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 (e.g., list_version_localizations). There is no mention of prerequisites beyond obtaining the appInfoId, which is implied in the parameter description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_infosA
List app info records for an app. Use this to get the appInfoId needed for localization operations.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| limit | No | Maximum number of results to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description indicates a read operation but does not elaborate on response structure or any constraints beyond the schema. Minimal 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?
Two concise sentences, no wasted words, front-loaded with verb and resource.
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 well-documented schema; description covers core purpose and usage context for localization workflow. Slight gap: no mention of response format, but acceptable given simplicity.
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, so description adds no extra meaning to parameters. 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?
Clearly states 'List app info records for an app' with verb and resource, and ties to getting appInfoId for localization, distinguishing it from siblings like list_app_info_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?
Explicitly tells when to use: when needing appInfoId for localization operations. Lacks explicit when-not-to-use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_price_pointsA
List available price points for an app. Each price point represents a possible price tier showing customer price and developer proceeds in local currency. Filter by territory to see prices for a specific country.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| territory | No | Filter by territory (3-letter code, e.g., USA, GBR, JPN) | |
| limit | No | Maximum number of price points to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral context. It discloses that each price point includes customer price and developer proceeds, but does not mention side effects, pagination behavior, or default limits. The description is adequate but not exhaustive.
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-loading the core purpose and adding one filtering hint. Every piece is necessary, and there is no redundancy or fluff.
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 full schema coverage and no output schema required, the description sufficiently covers the core functionality and value of price points. It lacks mention of default limit or pagination, but these are minor gaps given the tool's simplicity.
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 description adds minimal value beyond the schema. It reiterates the territory filter's purpose ('to see prices for a specific country') but provides no new syntactic or semantic details for any parameter, meeting the baseline 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?
The description explicitly states the verb 'List' and the resource 'available price points for an app', and distinguishes from siblings by focusing on price points, which is unique among sibling tools. It also clarifies the data representation (customer price, developer proceeds).
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 the territory filter ('to see prices for a specific country'), but does not explicitly contrast with related tools like get_app_price_schedule or set_app_prices. However, the context is clear enough for an agent to infer typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsA
List all apps in your App Store Connect account. Returns app IDs, names, bundle IDs, and SKUs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of apps to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes a safe read operation but does not mention pagination behavior or the effect of the limit parameter, which could confuse agents expecting an unfiltered 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?
Extremely concise with two clear sentences. Every word serves a purpose 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?
For a simple list tool with one parameter, the description adequately covers the tool's purpose and output fields. No output schema exists, but the return values are specified. Minor gap: no mention of pagination 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 single parameter 'limit' is fully documented in the schema with its range. The description adds no extra semantic 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 tool lists all apps in the App Store Connect account and specifies the returned fields (app IDs, names, bundle IDs, SKUs). It distinguishes itself from sibling list tools which target other resources.
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 guidance on when to use this tool versus alternatives. While sibling tools target different resources, explicit context about when to prefer this tool is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_app_versionsB
List all App Store versions for an app. Can filter by platform and version state.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| platform | No | Filter by platform (IOS, MAC_OS, TV_OS, VISION_OS) | |
| versionState | No | Filter by version state (e.g., PREPARE_FOR_SUBMISSION, READY_FOR_SALE) | |
| limit | No | Maximum number of versions to return (1-200) |
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 filtering capability but omits critical details like pagination behavior, output format, permissions, rate limits, or whether it returns all versions or only recent ones. This is minimal transparency for a listing 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 that immediately states the tool's purpose. While it lacks structured formatting, it is not verbose and front-loads the key action. Slightly hindered by missing details that could be added without excessive 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?
For a list tool with 4 parameters (1 required) and no output schema or annotations, the description should mention pagination, result limits, or default ordering. It only states filtering options, leaving the agent unaware of important behavior. This is inadequate for confident 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 100% as all parameters have descriptions. The description adds the word 'filter' but does not provide additional meaning beyond what the schema already conveys. Baseline score of 3 applies 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 clearly states the verb 'list' and the resource 'App Store versions for an app', and mentions optional filtering by platform and version state. This distinguishes it from siblings like get_app_version or create_app_version.
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 through the action 'List all App Store versions', but does not explicitly state when to use this tool versus alternatives (e.g., get_app_version for a single version). No exclusions or context about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_beta_groupsB
List all beta groups for an app. Returns group names, public link info, and settings.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| limit | No | Maximum number of groups to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lacks behavioral details such as read-only nature, error handling, or pagination. Only states 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?
Two sentences, front-loaded with action and outcome, no unnecessary 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?
Specifies return fields but lacks details on pagination, default limit, and error conditions. 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?
Schema already fully describes both parameters (appId and limit). Description adds no additional parameter semantics 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?
Clearly states the tool lists all beta groups for an app, specifying the returned data (group names, public link info, settings). Clearly distinguishes from sibling list tools by its specific resource.
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 limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_beta_testersA
List all beta testers in a specific beta group.
| Name | Required | Description | Default |
|---|---|---|---|
| betaGroupId | Yes | The beta group ID | |
| limit | No | Maximum number of testers to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It correctly implies read-only operation but omits details like whether the list is paginated (despite the limit parameter), permission requirements, or any side effects. The description is adequate but lacks depth.
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, clear sentence with no superfluous words. While it is efficient, it might be too brief, lacking explanatory depth for an agent. Still, it scores highly 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 simple nature of the tool (2 parameters, no output schema), the description is minimally adequate. It explains what the tool does but does not describe the response format, pagination behavior (despite the limit parameter), or how to obtain the betaGroupId. The large sibling list requires better differentiation.
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% parameter descriptions, so the description adds no additional semantic value beyond what is already in the schema. 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 action ('List'), the resource ('beta testers'), and the scope ('in a specific beta group'), making the tool's purpose unambiguous and easily distinguishable from sibling tools like add_beta_tester or 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?
No explicit guidance on when to use this tool versus alternatives. The description implicitly suggests it for listing testers in a group, but does not specify when not to use it or mention alternative tools like list_users for broader user lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_buildsB
List all builds for an app.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| limit | No | Maximum number of builds to return (1-200) |
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 'List all builds'. It does not disclose pagination, ordering, error behavior, or rate limits.
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 at 5 words. No wasted text, but 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 the tool's simplicity (2 params, no output schema), the bare description is minimally adequate for a simple list operation, but lacks context on default limit, sorting, or error handling.
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 extra 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 states the verb 'List' and resource 'builds', specifying the scope 'for an app'. This distinguishes it from siblings that list other entities like beta testers or 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 on when to use this tool versus alternatives. Does not mention prerequisites, filters, or when to prefer other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bundle_idsB
List all bundle IDs registered in App Store Connect. Can filter by platform.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of bundle IDs to return (1-200) | |
| platform | No | Filter by platform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It only mentions listing and filtering, omitting crucial details like pagination, authentication, rate limits, or behavior with no results.
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, directly stating the tool's core function and optional filtering. 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?
For a simple list tool with a fully described schema, the basic purpose is covered. However, missing behavioral context (e.g., pagination, result count) limits 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?
Input schema descriptions cover 100% of parameters. The description adds minimal value by rephrasing the platform filter but does not elaborate on the limit parameter. 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 verb 'List', the resource 'bundle IDs', and the scope 'registered in App Store Connect', distinguishing it from sibling list 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?
No guidance on when to use this tool versus alternatives like list_apps or create_bundle_id. Context signals and sibling tools are available, but the description does not help the agent choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devicesC
List all registered devices in App Store Connect. Can filter by platform and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of devices to return (1-200) | |
| platform | No | Filter by platform | |
| status | No | Filter by device status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry full transparency weight. It implies read-only behavior but does not disclose pagination details, default limits, or any side effects. The phrase 'list all' is ambiguous given the limit 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?
The description is two sentences, front-loads the core action ('List all registered devices'), and includes filtering capabilities. No redundant 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?
With no output schema and no annotations, the description is minimal. It lacks information on pagination, default limit, response format, and potential errors. More detail would be beneficial for a complete 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%, so all parameters are described in the schema. The description only echoes 'filter by platform and status', adding no new meaning. 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 lists devices and can filter by platform and status. It distinguishes from sibling list tools by specifying the resource (registered devices in App Store Connect). However, it lacks specificity about pagination or scope.
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 list_builds or list_apps. The description does not mention exclusions or context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diagnostic_logsA
List diagnostic logs for a specific diagnostic signature. Returns individual log entries for a given performance issue. Use list_diagnostic_signatures first to get a signature ID.
| Name | Required | Description | Default |
|---|---|---|---|
| signatureId | Yes | The diagnostic signature ID (from list_diagnostic_signatures) | |
| limit | No | Maximum number of logs to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are missing, so the description bears full responsibility. It states the tool returns 'individual log entries' and works for a 'performance issue', but does not disclose read-only nature, pagination behavior beyond the limit parameter, or any authorization 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 two sentences with no unnecessary words, front-loading the core action and prerequisite information 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 the simple two-parameter schema and no output schema, the description is mostly complete. It covers purpose, prerequisite, and core behavior, but lacks details on output format or edge cases like empty 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%, so baseline is 3. The description adds context for signatureId by explaining how to obtain it, but does not enrich limit beyond the schema's 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 clearly states it lists diagnostic logs for a specific diagnostic signature, with a clear verb ('list') and resource ('diagnostic logs'), and distinguishes from the sibling tool list_diagnostic_signatures by requiring a signature ID.
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 instructs to use list_diagnostic_signatures first to get the required signature ID, providing clear ordering and prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diagnostic_signaturesA
List power and performance diagnostic signatures for a build. Signatures represent recurring performance issues (disk writes, hangs, slow launches) grouped by call stack. Use list_diagnostic_logs with a signature ID to get detailed logs.
| Name | Required | Description | Default |
|---|---|---|---|
| buildId | Yes | The build resource ID | |
| diagnosticType | No | Filter by diagnostic type (optional) | |
| limit | No | Maximum number of signatures to return (1-200) |
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. It explains that signatures are grouped by call stack and represent recurring issues, which implies read-only behavior. However, it does not explicitly state the operation is read-only or mention any side effects, permissions, or safety considerations.
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 wasted words. The first sentence states the purpose and defines signatures; the second provides actionable guidance on using a sibling tool. Every sentence 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?
The description defines what signatures are, lists the types, and provides a next step. For a list tool with 3 params (all described) and no output schema, this covers essential context. It lacks mention of pagination or default limit but the schema handles constraints. Overall fairly 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 baseline is 3. The description adds context for the diagnosticType enum by listing the three types (disk writes, hangs, slow launches) that match the enum values. It does not add significant meaning to buildId or limit 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 tool lists 'power and performance diagnostic signatures for a build' and explains what signatures are (recurring performance issues grouped by call stack). It distinguishes from list_diagnostic_logs by mentioning signatures are grouped and logs provide detailed logs per signature.
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 directs use of list_diagnostic_logs with a signature ID to get detailed logs, providing an alternative for when detailed logs are needed. However, it does not explicitly state when not to use this tool or compare to other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_screenshotsB
List all screenshots in a screenshot set.
| Name | Required | Description | Default |
|---|---|---|---|
| screenshotSetId | Yes | The screenshot set ID | |
| limit | No | Maximum number of screenshots to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description only states it lists screenshots, implying a read operation but not explicitly declaring it as non-destructive or safe. No mention of authentication, rate limits, or pagination behavior beyond the limit 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 sentence that is front-loaded with the action and resource. Every word is necessary, with zero redundancy 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?
No output schema is provided, and the description does not explain what the response contains (e.g., screenshot IDs, URLs). For a listing tool, this is adequate but could benefit from brief output 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 100%, so the schema already describes both parameters. The description adds no additional meaning beyond the tool name, so a 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 'List all screenshots in a screenshot set' clearly identifies the action (list), the resource (screenshots), and the scope (in a screenshot set), distinguishing it from sibling tools like list_screenshot_sets or upload_screenshot.
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 prerequisites or exclusions. The description does not mention that a screenshot set must exist or that list_screenshot_sets should be used first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_screenshot_setsA
List all screenshot sets for a version localization. Each set represents a different display type (device size).
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | The version localization ID | |
| limit | No | Maximum number of sets to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. While it indicates a listing operation (presumably read-only), it does not mention pagination, safety guarantees, or any side effects. The transparency is insufficient for a 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 only two sentences, front-loaded with the main purpose, and contains no filler. 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?
Given the tool's low complexity (2 params, required one), no output schema, and no annotations, the description is mostly complete. It covers the resource and scope, though it could mention the return structure more explicitly.
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 does not add significant additional meaning beyond the schema's parameter descriptions, which already explain 'localizationId' and 'limit'.
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', the resource 'screenshot sets', and the scope 'for a version localization'. It also explains that each set represents a different display type, distinguishing it from sibling tools like 'list_screenshots'.
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 retrieving screenshot sets for a given localization but does not provide explicit guidance on when to use vs alternatives, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_territoriesA
List all App Store territories (countries/regions) with their currencies. Useful for understanding which markets are available for pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of territories to return (1-200) |
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 describes the output (territories with currencies) and implies a read-only operation, but does not disclose pagination behavior, rate limits, or any side effects. For a simple list tool, this is adequate but not thorough.
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 output, and the second provides a use case. Ideal length for a straightforward list 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?
For a tool with one optional parameter and no output schema, the description is sufficiently complete. It explains the returned data (territories and currencies) and a typical use case. However, it could mention the return format or that results are paginated (if applicable).
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 covers 100% of the single parameter (limit) with a clear description and constraints. The description adds no additional meaning beyond what the schema already provides, earning the baseline score 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?
Clearly states the tool lists App Store territories with their currencies. The use of 'all' slightly contradicts the optional limit parameter, but overall the verb and resource are specific. It distinguishes from sibling tools that deal with other entities like apps or builds.
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 a single use case ('understanding which markets are available for pricing') but does not explicitly guide when to use this tool versus alternatives like list_app_price_points or get_app_price_schedule. No exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersB
List all users in your App Store Connect team. Can filter by roles.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of users to return (1-200) | |
| roles | No | Filter by user roles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully informs behavioral traits. However, it only states the basic function without mentioning pagination (implied by the limit parameter), permissions, or output format. Critical details are missing for a tool that returns data.
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 with two short, front-loaded sentences that convey the core functionality without any 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?
Despite low complexity and full schema coverage, the lack of an output schema and annotations means the description should provide more context about the returned data and usage boundaries. It does not describe user fields or any limitations beyond the filter.
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%, meeting the baseline of 3. The description restates the role filter but does not add meaning beyond the schema's parameter descriptions.
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 'users' in the App Store Connect team, with an optional filter. It stands out from sibling list tools by specifying the exact resource.
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 context for use (listing users with optional role filter) but does not explicitly compare with alternatives like 'get_user' for single user retrieval or mention 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.
list_version_localizationsB
List all localizations for an App Store version. Returns description, keywords, what's new, and URLs for each locale.
| Name | Required | Description | Default |
|---|---|---|---|
| versionId | Yes | The App Store version ID | |
| limit | No | Maximum number of localizations to return (1-200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden but only states the basic read operation and output. No behavioral traits (e.g., auth needs, rate limits, side effects) are disclosed, but the tool is straightforward.
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 two sentences, efficient and front-loaded. Minor improvement could be structuring the return info as a list.
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 listing tool with no output schema, the description is adequate. It explains the return fields but lacks details on pagination or full 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?
Parameters are fully documented in the schema (100% coverage). Description adds no additional meaning beyond what the schema already provides for versionId and limit.
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 (list), resource (localizations for an App Store version), and output (description, keywords, what's new, URLs). It is specific and distinguishes from siblings like get_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?
Description does not provide when or when not to use this tool compared to siblings like get_version_localization. No contextual guidance 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.
remove_beta_testerB
Remove a beta tester from a beta group.
| Name | Required | Description | Default |
|---|---|---|---|
| betaGroupId | Yes | The beta group ID to remove the tester from | |
| betaTesterId | Yes | The beta tester ID to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only states 'remove', implying a destructive action, but lacks details on reversibility, permissions, 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 a single, efficient sentence with no extraneous content. However, it is slightly too minimal and could include more information 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?
For a simple mutation with two parameters and no output schema, the description is adequate but lacks details on idempotency, error handling, or prerequisites, making it insufficient 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?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no additional meaning beyond what the schema provides, resulting in a 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 action 'remove' and the resources 'beta tester' and 'beta group', making the purpose unmistakable. It effectively distinguishes from the sibling tool 'add_beta_tester'.
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 'add_beta_tester'. There is no mention of prerequisites or context for removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_app_pricesA
Set per-territory manual pricing for an app (Purchase Power Parity). WARNING: This replaces the entire price schedule — include ALL territory prices, not just changes. The base territory price must be included in manualPrices. Use list_app_price_points and get_price_point_equalizations to find price point IDs first.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The App Store Connect app ID | |
| baseTerritory | Yes | Base territory for pricing (3-letter code, e.g., USA) | |
| manualPrices | Yes | Array of per-territory price assignments. Must include the base territory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the critical destructive behavior (replacing entire schedule). Does not mention auth needs or error handling, but the main behavioral trait is covered.
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: purpose, critical warning, action guidance. Front-loaded with verb and resource. 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?
No output schema, but description doesn't explain return values or confirmation. However, the warning and usage guidance compensate. For a mutation tool, return info could be useful but not essential.
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%, but the description adds value by explaining the 'manualPrices' array must include the base territory and that pricePointId comes from other tools. The warning about including all territories provides context 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 it sets per-territory manual pricing for an app (Purchase Power Parity). It distinguishes from siblings like list_app_price_points and get_price_point_equalizations by mentioning them as prerequisites.
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 explicit warning that the entire price schedule is replaced, requiring all territories to be included. Also directs the agent to use list_app_price_points and get_price_point_equalizations beforehand for finding price point IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_info_localizationA
Update an app info localization. Use this to change app name, subtitle, or privacy policy URL for a locale.
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | The app info localization ID to update | |
| name | No | App name (max 30 characters) | |
| subtitle | No | App subtitle (max 30 characters) | |
| privacyPolicyUrl | No | Privacy policy URL (HTTPS only) | |
| privacyChoicesUrl | No | Privacy choices URL (HTTPS only) | |
| privacyPolicyText | No | Privacy policy text (for apps without a URL) |
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 indicates mutation ('Update') but does not disclose behavioral traits such as whether the operation is idempotent, requires specific permissions, or what happens if the localization does not exist. This lack of detail is a notable 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 with only two sentences. The first states the action, and the second provides immediate usage guidance. There is no redundant information, and every word serves a 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?
Given the tool has 6 parameters (1 required) and no output schema, the description is adequate but incomplete. It does not explain partial update semantics, validation rules (e.g., character limits), or what the response looks like. The core purpose is clear, but deeper context 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 the baseline is 3. The description mentions three key parameters (name, subtitle, privacyPolicyUrl) but omits privacyChoicesUrl and privacyPolicyText. It adds some context by highlighting the typical fields to update but does not go beyond the schema's own descriptions.
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', and specifies the exact fields that can be changed (app name, subtitle, privacy policy URL). It distinguishes itself from siblings like 'update_version_localization' by focusing on app-level 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 explicitly says 'Use this to change...' indicating the context for usage. It does not explicitly exclude scenarios or mention alternatives, but given the sibling tools, the usage is clear enough. A score of 4 reflects its clarity without exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_bundle_idB
Update a bundle ID's name. Note: The identifier cannot be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| bundleIdId | Yes | The bundle ID resource ID | |
| name | Yes | The new name for the bundle ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacking annotations, the description carries full responsibility. It discloses that the identifier cannot be changed, but omits side effects, required permissions, input validation behavior, or error conditions for a 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?
Two sentences, no redundant information. Every part earns its place, with the note front-loaded after the main action 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 no output schema, the description should clarify return values or confirmation. It does not. The tool is simple, but lacks context on success/error responses, rate limits, or permission requirements.
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 accurately describes both parameters. The description adds the note about immutable identifier, which is indirectly relevant to parameters, but does not enrich parameter meaning beyond the schema's 'bundleIdId' and 'name' descriptions.
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 a bundle ID's name, with a specific verb ('Update') and resource ('bundle ID'), and includes a critical note about the identifier being unchangeable, distinguishing it from create_bundle_id and delete_bundle_id among 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 explicit guidance on when to use this tool versus alternatives. While the note about immutable identifier implies when not to use it, there is no mention of prerequisites, typical use cases, or comparisons with other tools like create_bundle_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_version_localizationB
Update an existing version localization. Only provided fields will be updated.
| Name | Required | Description | Default |
|---|---|---|---|
| localizationId | Yes | The localization ID to update | |
| description | No | App description (max 4000 characters) | |
| keywords | No | Keywords for search (max 100 characters, comma-separated) | |
| whatsNew | No | What's new in this version (max 4000 characters) | |
| promotionalText | No | Promotional text (max 170 characters) | |
| marketingUrl | No | Marketing URL (HTTPS only) | |
| supportUrl | No | Support URL (HTTPS only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It only says 'Only provided fields will be updated', which indicates a partial update, but it does not mention whether fields are overwritten or merged, what authentication is needed, rate limits, or side effects. The description is insufficient for understanding the tool's 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?
The description is concise, consisting of two sentences that are front-loaded with the primary purpose. However, it could include more useful information 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 too minimal. It omits validation constraints, success/failure behavior, and any return value description. The description fails to provide a complete picture for an agent to use the tool effectively.
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 covers all 7 parameters with descriptions (100% coverage). The description adds the semantic 'Only provided fields will be updated', which hints at the operation being a PATCH. This provides marginal value beyond the schema, justifying 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 action ('Update') and the resource ('existing version localization'), and distinguishes from siblings like 'create_version_localization' and 'get_version_localization'. It also specifies that only provided fields will be updated, which clarifies the operation type.
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 does not provide any guidance on when to use this tool versus alternatives like creating or deleting localizations. There is no mention of prerequisites (e.g., existence of the version) or scenarios where this tool is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_screenshotB
Upload a new screenshot to a screenshot set. Provide the local file path, and this tool will handle the multi-step upload process.
| Name | Required | Description | Default |
|---|---|---|---|
| screenshotSetId | Yes | The screenshot set ID to upload to | |
| fileName | Yes | Name for the screenshot file | |
| fileSize | Yes | Size of the file in bytes | |
| filePath | Yes | Local path to the screenshot file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only mentions 'multi-step upload process' without details on authentication, side effects, or idempotency, leaving significant gaps.
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 that efficiently communicates the tool's purpose without unnecessary 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?
Despite no output schema, the description fails to explain return values, error conditions, or what constitutes success, leaving the agent underinformed for a multi-step upload.
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 does not add meaningful information beyond what the schema already provides for 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 verb 'Upload' and the resource 'screenshot to a screenshot set', distinguishing it from sibling tools like list_screenshots and list_screenshot_sets.
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 mentions providing a local file path and handling the multi-step process, giving a basic usage hint but lacks explicit when-not-to-use or 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.
52 tool updates
v1.1.0- First observed
add_beta_tester - First observed
create_analytics_report_request - First observed
create_app_version - First observed
create_bundle_id - First observed
create_version_localization - First observed
delete_analytics_report_request - First observed
delete_bundle_id - First observed
delete_version_localization - First observed
download_analytics_report_segment - First observed
get_analytics_report_request - First observed
get_app - First observed
get_app_availability - First observed
get_app_perf_metrics - First observed
get_app_price_schedule - First observed
get_app_version - First observed
get_build - First observed
get_build_perf_metrics - First observed
get_bundle_id - First observed
get_device - First observed
get_finance_report - First observed
get_price_point_equalizations - First observed
get_sales_report - First observed
get_user - First observed
get_version_localization - First observed
list_analytics_report_instances - First observed
list_analytics_report_requests - First observed
list_analytics_report_segments - First observed
list_analytics_reports - First observed
list_app_categories - First observed
list_app_info_localizations - First observed
list_app_infos - First observed
list_app_price_points - First observed
list_app_versions - First observed
list_apps - First observed
list_beta_groups - First observed
list_beta_testers - First observed
list_builds - First observed
list_bundle_ids - First observed
list_devices - First observed
list_diagnostic_logs - First observed
list_diagnostic_signatures - First observed
list_screenshot_sets - First observed
list_screenshots - First observed
list_territories - First observed
list_users - First observed
list_version_localizations - First observed
remove_beta_tester - First observed
set_app_prices - First observed
update_app_info_localization - First observed
update_bundle_id - First observed
update_version_localization - First observed
upload_screenshot
TDQS
Scored across 52 tools
Each tool targets a distinct resource and action, with clear naming that avoids overlap. Even tools like get_app_perf_metrics and get_build_perf_metrics are differentiated by scope (app-level vs build-level).
All tools follow a consistent verb_noun pattern with underscores, using predictable verbs like list_, get_, create_, delete_, update_, upload_. No mixing of cases or irregular patterns.
52 tools is a large number, but the App Store Connect platform has diverse functionality (analytics, beta, pricing, screenshots, diagnostics). The count is borderline heavy but each tool serves a specific, justified purpose.
The tool set covers core CRUD operations for apps, versions, localizations, builds, beta testing, devices, users, and various reports. Minor gaps include lack of submission/review management and in-app purchase handling, but the core workflows are well-supported.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Run App Store Connect from your IDE: pricing, listings, screenshots, releases, AI visibility.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for App Store Connect API with 208 tools across 25 workers. Manage apps, builds, TestFlight, in-app purchases, subscriptions, reviews, provisioning, screenshots, analytics, and more — directly from Claude, Cursor, VS Code, or any MCP client. Multi-account support, worker filtering, JWT auth.68MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server that connects Cursor, Claude Desktop, and other MCP clients to the official App Store Connect API—so you can manage iOS/macOS apps, TestFlight, in-app subscriptions, and store metadata via chat or automated tool calls.696513MIT
- AlicenseAqualityAmaintenanceAn opinionated MCP server for App Store Connect that provides 13 curated tools, slash-command workflows, and a Claude Skill to manage apps, reviews, sales, and pre-submission audits via natural language.41546MIT
- AlicenseBqualityCmaintenanceA Model Context Protocol server that wraps Apple's App Store Connect API v2, enabling management of apps, in-app purchases, subscriptions, TestFlight, product page experiments, and App Review submissions via natural language.451MIT