Skip to main content
Glama
SardorbekR

App Store Connect MCP Server

by SardorbekR

App Store Connect MCP Server

npm version License: MIT Node.js Version

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 install -g asc-mcp

Using npx

npx asc-mcp

From Source

git clone https://github.com/SardorbekR/appstore-connect-mcp.git
cd appstore-connect-mcp
npm install
npm run build

Configuration

Prerequisites: Get Your Apple API Credentials

  1. Sign in to App Store Connect

  2. Go to Users and AccessIntegrationsApp Store Connect API

  3. Click Generate API Key (or use existing)

  4. Select appropriate role (Admin or App Manager recommended)

  5. Download the .p8 file - you can only download it once!

  6. Note your Key ID (shown in the keys list)

  7. Note your Issuer ID (shown at the top of the page)

Environment Variables

Variable

Required

Description

APP_STORE_CONNECT_KEY_ID

Yes

Your API Key ID (e.g., ABC123DEFG)

APP_STORE_CONNECT_ISSUER_ID

Yes

Your Issuer ID (UUID format)

APP_STORE_CONNECT_P8_PATH

Yes*

Path to your .p8 private key file

APP_STORE_CONNECT_P8_CONTENT

Yes*

Raw content of .p8 key (alternative to path)

*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_apps

List all apps in your account

limit? (number, 1-200)

get_app

Get details of a specific app

appId (string, required)

Versions

Tool

Description

Parameters

list_app_versions

List all versions for an app

appId, platform?, versionState?, limit?

get_app_version

Get version details

versionId

create_app_version

Create a new app version

appId, platform, versionString, releaseType?

Version Localizations

Tool

Description

Parameters

list_version_localizations

List localizations for a version

versionId, limit?

get_version_localization

Get localization details

localizationId

create_version_localization

Add a new locale

versionId, locale, description?, keywords?, whatsNew?

update_version_localization

Update localization

localizationId, description?, keywords?, whatsNew?, promotionalText?

delete_version_localization

Remove a locale

localizationId

App Info Localizations

Tool

Description

Parameters

list_app_infos

List app info records

appId, limit?

list_app_info_localizations

List name/subtitle localizations

appInfoId, limit?

update_app_info_localization

Update app name, subtitle

localizationId, name?, subtitle?, privacyPolicyUrl?

Beta Testing (TestFlight)

Tool

Description

Parameters

list_beta_groups

List beta groups for an app

appId, limit?

list_beta_testers

List testers in a group

betaGroupId, limit?

add_beta_tester

Add a tester to a group

betaGroupId, email, firstName?, lastName?

remove_beta_tester

Remove a tester from a group

betaGroupId, betaTesterId

Screenshots

Tool

Description

Parameters

list_screenshot_sets

List screenshot sets

localizationId, limit?

list_screenshots

List screenshots in a set

screenshotSetId, limit?

upload_screenshot

Upload a new screenshot

screenshotSetId, fileName, fileSize, filePath

Bundle IDs

Tool

Description

Parameters

list_bundle_ids

List all bundle IDs

limit?, platform?

get_bundle_id

Get bundle ID details

bundleIdId

create_bundle_id

Register a new bundle ID

identifier, name, platform

update_bundle_id

Update bundle ID name

bundleIdId, name

delete_bundle_id

Delete a bundle ID

bundleIdId

Devices

Tool

Description

Parameters

list_devices

List registered devices

limit?, platform?, status?

get_device

Get device details

deviceId

Users

Tool

Description

Parameters

list_users

List team users

limit?, roles?

get_user

Get user details

userId

Builds

Tool

Description

Parameters

list_builds

List builds for an app

appId, limit?

get_build

Get build details

buildId

Categories & Pricing

Tool

Description

Parameters

list_app_categories

List app categories

limit?, platform?

get_app_price_schedule

Get app pricing info

appId

get_app_availability

Get app territory availability

appId

Pricing (PPP)

Tool

Description

Parameters

list_territories

List all territories with currencies

limit?

list_app_price_points

List available price tiers for an app

appId, territory?, limit?

get_price_point_equalizations

Get PPP equivalent prices across countries

pricePointId, territories?, limit?

set_app_prices

Set per-territory manual pricing (replaces entire schedule)

appId, baseTerritory, manualPrices

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_review is rejected for a missing screenshot.

Tool

Description

Parameters

list_in_app_purchases

List an app's in-app purchases, optionally by type

appId, inAppPurchaseType?, limit?

get_in_app_purchase

Get a single in-app purchase's details and state

inAppPurchaseId

create_in_app_purchase

Create an IAP (defaults to NON_CONSUMABLE / lifetime)

appId, name, productId, inAppPurchaseType?, familySharable?, reviewNote?

update_in_app_purchase

Update name, Family Sharing, or review note (productId/type immutable)

inAppPurchaseId, name?, familySharable?, reviewNote?

delete_in_app_purchase

Delete an in-app purchase

inAppPurchaseId

list_in_app_purchase_localizations

List localized names/descriptions

inAppPurchaseId, limit?

create_in_app_purchase_localization

Add a localized display name (+ description)

inAppPurchaseId, locale, name, description?

update_in_app_purchase_localization

Update a localization

localizationId, name?, description?

delete_in_app_purchase_localization

Delete a localization

localizationId

list_in_app_purchase_price_points

List price points (customer price & proceeds)

inAppPurchaseId, territory?, limit?, offset?

get_in_app_purchase_price_point_equalizations

Apple's PPP-equivalent price points for a base price point

pricePointId, territories?, limit?

set_in_app_purchase_price

Set pricing (replaces schedule; one base territory to auto-equalize, or full PPP list)

inAppPurchaseId, baseTerritory, manualPrices

list_in_app_purchase_prices

Read current per-territory prices (manual; optional automatic)

inAppPurchaseId, territory?, includeAutomatic?, limit?

get_in_app_purchase_availability

Get territory availability

inAppPurchaseId

set_in_app_purchase_availability

Set territory availability

inAppPurchaseId, availableInNewTerritories, territories?

submit_in_app_purchase_for_review

Submit the IAP to App Review (independent of an app version)

inAppPurchaseId

Analytics Reports

Tool

Description

Parameters

create_analytics_report_request

Request an analytics report (ongoing or one-time snapshot)

appId, accessType

list_analytics_report_requests

List analytics report requests for an app

appId

get_analytics_report_request

Get an analytics report request

requestId

delete_analytics_report_request

Delete an analytics report request

requestId

list_analytics_reports

List reports available within a request

requestId

list_analytics_report_instances

List instances (by date) of a report

reportId

list_analytics_report_segments

List downloadable segments of a report instance

instanceId

download_analytics_report_segment

Download a report segment

url

Sales & Finance

Tool

Description

Parameters

get_sales_report

Download a sales/trends report

vendorNumber, reportType, reportSubType, frequency, reportDate

get_finance_report

Download a financial report

vendorNumber, regionCode, reportDate, reportType

Performance & Diagnostics

Tool

Description

Parameters

get_app_perf_metrics

Get an app's power & performance metrics

appId, metricType

get_build_perf_metrics

Get a build's performance metrics

buildId, metricType

list_diagnostic_signatures

List diagnostic signatures for a build

buildId

list_diagnostic_logs

List diagnostic logs for a signature

signatureId

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:

  1. Find the app using list_apps

  2. Get the version using list_app_versions

  3. Find the English localization using list_version_localizations

  4. Update 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:

  1. Find the app and beta group using list_beta_groups

  2. Add 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:

  1. Find the $9.99 price point using list_app_price_points

  2. Get equivalent prices using get_price_point_equalizations

  3. Show 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:

  1. Create a non-consumable IAP with create_in_app_purchase

  2. Add a display name with create_in_app_purchase_localization

  3. Find the $99.99 tier with list_in_app_purchase_price_points, then PPP equivalents with get_in_app_purchase_price_point_equalizations

  4. Apply per-territory pricing with set_in_app_purchase_price and open availability with set_in_app_purchase_availability

  5. Confirm 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

  1. Never commit credentials - Use environment variables or a secrets manager

  2. Restrict API key permissions - Use minimal required role (App Manager for most operations)

  3. Rotate keys periodically - Generate new API keys and revoke old ones

  4. Secure your .p8 file - Set file permissions to 600 (owner read/write only)

chmod 600 /path/to/AuthKey.p8

Troubleshooting

"Configuration error: APP_STORE_CONNECT_KEY_ID environment variable is required"

Ensure all required environment variables are set:

  • APP_STORE_CONNECT_KEY_ID

  • APP_STORE_CONNECT_ISSUER_ID

  • APP_STORE_CONNECT_P8_PATH or APP_STORE_CONNECT_P8_CONTENT

"Failed to read private key"

  1. Verify the path in APP_STORE_CONNECT_P8_PATH is correct and absolute

  2. Check file permissions: ls -la /path/to/AuthKey.p8

  3. Ensure the file is a valid .p8 from Apple (starts with -----BEGIN PRIVATE KEY-----)

"Authentication failed"

This usually means:

  1. The API key was revoked in App Store Connect

  2. The Key ID or Issuer ID doesn't match the .p8 file

  3. 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:

  1. Wait for the indicated retry time

  2. Batch your operations when possible

  3. The server automatically retries with exponential backoff

Tools Not Appearing in Claude

  1. Verify the server is running: check Claude Desktop logs

  2. Ensure the config file path is correct for your OS

  3. 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 typecheck

Project 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 schemas

Running Locally

# Development mode with auto-reload
npm run dev

# Or run the built version
npm start

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/my-feature

  3. Make your changes and add tests

  4. Run npm test and npm run lint

  5. Submit a pull request

License

MIT License - see LICENSE for details.

Available Tools

52 tools
add_beta_testerB

Add a new beta tester to a beta group by email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
betaGroupIdYesThe beta group ID to add the tester to
emailYesEmail address of the beta tester
firstNameNoFirst name of the beta tester (optional)
lastNameNoLast name of the beta tester (optional)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
accessTypeYesONGOING for continuous daily reports, ONE_TIME_SNAPSHOT for a single point-in-time report

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
platformYesPlatform for the version
versionStringYesVersion number (e.g., '1.0.0', '2.1')
releaseTypeNoRelease type
copyrightNoCopyright text for the version
earliestReleaseDateNoEarliest release date (ISO 8601 format) for SCHEDULED release type

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesThe bundle identifier (e.g., com.example.app)
nameYesA name for the bundle ID
platformYesThe platform for this bundle ID

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionIdYesThe App Store version ID
localeYesLocale code (e.g., 'en-US', 'ja', 'zh-Hans')
descriptionNoApp description (max 4000 characters)
keywordsNoKeywords for search (max 100 characters, comma-separated)
whatsNewNoWhat's new in this version (max 4000 characters)
promotionalTextNoPromotional text (max 170 characters)
marketingUrlNoMarketing URL (HTTPS only)
supportUrlNoSupport URL (HTTPS only)

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdYesThe analytics report request ID to delete

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdIdYesThe bundle ID resource ID to delete

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localizationIdYesThe localization ID to delete

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe pre-signed download URL from list_analytics_report_segments
maxRowsNoMaximum number of data rows to return (1-1000, default 100)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdYesThe analytics report request ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID (numeric string)

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
metricTypeYesThe type of performance metric to retrieve
platformNoFilter by platform (optional)
deviceTypeNoFilter by device type identifier (e.g., 'iPhone14,5' for iPhone 13). Optional.

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID

TDQS

C2.7/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionIdYesThe App Store version ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesThe build resource ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesThe build resource ID
metricTypeYesThe type of performance metric to retrieve
platformNoFilter by platform (optional)
deviceTypeNoFilter by device type identifier (e.g., 'iPhone14,5' for iPhone 13). Optional.

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdIdYesThe bundle ID resource ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device resource ID

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorNumberYesYour vendor number (numeric string). Found in App Store Connect → Settings → Agreements, Tax, and Banking.
regionCodeYesFinancial region code (1-2 characters). Examples: 'US' (United States), 'EU' (Europe), 'JP' (Japan), 'AU' (Australia), 'Z1' (rest of world).
reportDateYesThe fiscal month for the report in YYYY-MM format (e.g., '2024-01').
reportTypeYesFINANCIAL for revenue summary by territory. FINANCE_DETAIL for line-item transaction details.
maxRowsNoMaximum number of data rows to return (1-1000, default 100).

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pricePointIdYesThe price point ID (from list_app_price_points)
territoriesNoFilter to specific territories (3-letter codes, e.g., ['IND', 'BRA', 'TUR'])
limitNoMaximum number of equalizations to return (1-200)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorNumberYesYour vendor number (numeric string). Found in App Store Connect → Settings → Agreements, Tax, and Banking.
reportTypeYesThe type of sales report to download.
reportSubTypeYesThe sub-type of the report. SUMMARY is most common. DETAILED is for SUBSCRIBER reports. OPT_IN is for opt-in reports.
frequencyYesReport frequency. Not all frequencies are valid for all report types. DAILY is the most commonly available.
reportDateYesThe date for the report. Format depends on frequency: DAILY = YYYY-MM-DD, WEEKLY = YYYY-MM-DD (Sunday start), MONTHLY = YYYY-MM, YEARLY = YYYY.
reportVersionNoOptional report version string (e.g., '1_3'). Defaults to latest version.
maxRowsNoMaximum number of data rows to return (1-1000, default 100).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe user resource ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localizationIdYesThe localization ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportIdYesThe analytics report ID
granularityNoFilter by report granularity
processingDateNoFilter by processing date (e.g., '2024-01-15')
limitNoMaximum number of instances to return (1-200)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
limitNoMaximum number of report requests to return (1-200)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdYesThe analytics report request ID
categoryNoFilter reports by category
limitNoMaximum number of reports to return (1-200)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesThe analytics report instance ID
limitNoMaximum number of segments to return (1-200)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of categories to return (1-200)
platformNoFilter by platform

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appInfoIdYesThe App Info ID (get this from list_app_infos)
limitNoMaximum number of localizations to return (1-200)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
limitNoMaximum number of results to return (1-200)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
territoryNoFilter by territory (3-letter code, e.g., USA, GBR, JPN)
limitNoMaximum number of price points to return (1-200)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of apps to return (1-200)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
platformNoFilter by platform (IOS, MAC_OS, TV_OS, VISION_OS)
versionStateNoFilter by version state (e.g., PREPARE_FOR_SUBMISSION, READY_FOR_SALE)
limitNoMaximum number of versions to return (1-200)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
limitNoMaximum number of groups to return (1-200)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
betaGroupIdYesThe beta group ID
limitNoMaximum number of testers to return (1-200)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
limitNoMaximum number of builds to return (1-200)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of bundle IDs to return (1-200)
platformNoFilter by platform

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of devices to return (1-200)
platformNoFilter by platform
statusNoFilter by device status

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
signatureIdYesThe diagnostic signature ID (from list_diagnostic_signatures)
limitNoMaximum number of logs to return (1-200)

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildIdYesThe build resource ID
diagnosticTypeNoFilter by diagnostic type (optional)
limitNoMaximum number of signatures to return (1-200)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
screenshotSetIdYesThe screenshot set ID
limitNoMaximum number of screenshots to return (1-200)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
localizationIdYesThe version localization ID
limitNoMaximum number of sets to return (1-200)

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of territories to return (1-200)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of users to return (1-200)
rolesNoFilter by user roles

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionIdYesThe App Store version ID
limitNoMaximum number of localizations to return (1-200)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
betaGroupIdYesThe beta group ID to remove the tester from
betaTesterIdYesThe beta tester ID to remove

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe App Store Connect app ID
baseTerritoryYesBase territory for pricing (3-letter code, e.g., USA)
manualPricesYesArray of per-territory price assignments. Must include the base territory.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localizationIdYesThe app info localization ID to update
nameNoApp name (max 30 characters)
subtitleNoApp subtitle (max 30 characters)
privacyPolicyUrlNoPrivacy policy URL (HTTPS only)
privacyChoicesUrlNoPrivacy choices URL (HTTPS only)
privacyPolicyTextNoPrivacy policy text (for apps without a URL)

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleIdIdYesThe bundle ID resource ID
nameYesThe new name for the bundle ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localizationIdYesThe localization ID to update
descriptionNoApp description (max 4000 characters)
keywordsNoKeywords for search (max 100 characters, comma-separated)
whatsNewNoWhat's new in this version (max 4000 characters)
promotionalTextNoPromotional text (max 170 characters)
marketingUrlNoMarketing URL (HTTPS only)
supportUrlNoSupport URL (HTTPS only)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
screenshotSetIdYesThe screenshot set ID to upload to
fileNameYesName for the screenshot file
fileSizeYesSize of the file in bytes
filePathYesLocal path to the screenshot file

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 52 tool updatesv1.1.0
    • First observedadd_beta_tester
    • First observedcreate_analytics_report_request
    • First observedcreate_app_version
    • First observedcreate_bundle_id
    • First observedcreate_version_localization
    • First observeddelete_analytics_report_request
    • First observeddelete_bundle_id
    • First observeddelete_version_localization
    • First observeddownload_analytics_report_segment
    • First observedget_analytics_report_request
    • First observedget_app
    • First observedget_app_availability
    • First observedget_app_perf_metrics
    • First observedget_app_price_schedule
    • First observedget_app_version
    • First observedget_build
    • First observedget_build_perf_metrics
    • First observedget_bundle_id
    • First observedget_device
    • First observedget_finance_report
    • First observedget_price_point_equalizations
    • First observedget_sales_report
    • First observedget_user
    • First observedget_version_localization
    • First observedlist_analytics_report_instances
    • First observedlist_analytics_report_requests
    • First observedlist_analytics_report_segments
    • First observedlist_analytics_reports
    • First observedlist_app_categories
    • First observedlist_app_info_localizations
    • First observedlist_app_infos
    • First observedlist_app_price_points
    • First observedlist_app_versions
    • First observedlist_apps
    • First observedlist_beta_groups
    • First observedlist_beta_testers
    • First observedlist_builds
    • First observedlist_bundle_ids
    • First observedlist_devices
    • First observedlist_diagnostic_logs
    • First observedlist_diagnostic_signatures
    • First observedlist_screenshot_sets
    • First observedlist_screenshots
    • First observedlist_territories
    • First observedlist_users
    • First observedlist_version_localizations
    • First observedremove_beta_tester
    • First observedset_app_prices
    • First observedupdate_app_info_localization
    • First observedupdate_bundle_id
    • First observedupdate_version_localization
    • First observedupload_screenshot

TDQS

A3.5/5.0

Scored across 52 tools

Disambiguation5/5

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).

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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.
    68
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A 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.
    69
    65
    13
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An 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.
    41
    546
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A 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.
    45
    1
    MIT