App Publisher MCP
Supports publishing to the Apple App Store via fastlane, including generating metadata, validating against App Store requirements, and configuring App Store Connect API.
Generates fastlane configuration files for iOS and Android, including Appfile, Fastfile, and metadata for streamlined app store publishing.
Integrates with Google AdMob for managing apps, ad units, and generating React Native ad components, with OAuth authentication.
Integrates with Google Gemini AI for generating app icons, splash screens, and store screenshots from natural language descriptions.
Provides tools for managing Google Play Store listings, uploading images, managing release tracks, and publishing Android apps via fastlane.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@App Publisher MCPGenerate an app icon for a meditation app with a lotus flower"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
App Publisher MCP
An MCP (Model Context Protocol) server built for vibe coders - generate app icons with AI, auto-resize for iOS/Android, and publish to app stores, all from your AI coding assistant.
Stop wasting time on Figma for app icons or manually resizing images for every screen density. Just describe what you want, and let AI handle the rest.
What It Does
Tool | Description |
| Generate app icons using Google Gemini AI |
| Auto-resize to all iOS & Android required sizes |
| Generate splash screen designs with AI |
| Generate app store screenshot mockups |
| Generate fastlane config with copyright, review info, and precheck settings |
| Write store listing content directly to fastlane metadata files |
| Validate metadata against App Store requirements (length limits, required fields) |
| Publish to App Store via fastlane |
| Publish to Google Play via fastlane |
| Auto-generate store metadata + iOS age rating guide + App Privacy guide (4 languages) |
| Step-by-step publishing guide (iOS 12 steps / Android 7 steps) |
| Set your Gemini API key |
| Choose AI model (speed vs quality) |
| Check current configuration |
Maestro UI Testing & Store Screenshots
Tool | Description |
| Install and configure Maestro CLI for mobile UI testing |
| Capture screenshot from running iOS Simulator / Android Emulator |
| Run UI test flows with natural language steps |
| Run Maestro flows from raw YAML |
| Create professional store screenshots with AI-generated headlines + device frames |
| Check Maestro installation and running devices |
Google Play Store
Tool | Description |
| Configure Google Play API with service account JSON key (file path or inline data) |
| Check Play Store API configuration and service account status |
| Full Android publishing setup: copy key, create Appfile/Fastfile, metadata structure |
| Verify service account has API access to a specific app |
| Get comprehensive app info: all listings + all release tracks |
| Get store listing(s) - all languages or a specific language |
| Update title, short description, full description for a language |
| List release tracks with version codes, status, release notes |
| List uploaded screenshots/images for a language and type |
| Upload screenshot, icon, or feature graphic (PNG/JPEG/WebP) |
| Delete all images of a specific type for a language |
AdMob Integration
Tool | Description |
| Set up Google AdMob OAuth credentials and get authorization URL |
| Complete OAuth flow by exchanging authorization code for tokens |
| List all apps registered in your AdMob account |
| Create a new app in AdMob (link to store or manual) * |
| List existing ad units (optionally filter by app) |
| Create a new ad unit (Banner, Interstitial, Rewarded, App Open, Native) * |
| Generate React Native ad components and configuration for your project |
| Check AdMob OAuth configuration and authentication status |
* Limited Access:
admob_create_appandadmob_create_ad_unituse the AdMob API v1beta create methods, which have restricted access by Google. Most accounts will receive a 403 Permission Denied error. To use these, you must request access from your Google account manager. As an alternative, create apps and ad units directly in the AdMob console, then useadmob_list_apps,admob_list_ad_units, andadmob_integrateto generate integration code for your project.
Related MCP server: MCP Image Server
Quick Start
1. Install in Claude Code
claude mcp add app-publisher -- npx @seungmanchoi/app-publisher-mcpOr with environment variables:
claude mcp add app-publisher \
-e GEMINI_API_KEY=your_api_key_here \
-e GEMINI_MODEL=gemini-2.5-flash-image \
-- npx @seungmanchoi/app-publisher-mcp2. Manual Configuration
Add to your Claude Code MCP config (~/.claude.json):
{
"mcpServers": {
"app-publisher": {
"command": "npx",
"args": ["@seungmanchoi/app-publisher-mcp"],
"env": {
"GEMINI_API_KEY": "your_api_key_here",
"GEMINI_MODEL": "gemini-2.5-flash-image"
}
}
}
}3. Restart Claude Code
After adding the MCP server, restart Claude Code to connect.
Getting Your API Keys
Google Gemini API Key (Required)
The Gemini API key is needed for AI image generation (icons, splash screens, screenshots).
Step-by-Step
Go to Google AI Studio
Sign in with your Google account
Click "Create API key"
Select a Google Cloud project (or create a new one)
Copy the generated API key (starts with
AIza...)
Set the API Key
Option A: Environment variable (recommended)
claude mcp add app-publisher \
-e GEMINI_API_KEY=AIzaSy... \
-- npx @seungmanchoi/app-publisher-mcpOption B: Runtime configuration
Once the MCP is connected, use the configure_api_key tool:
"Set my Gemini API key to AIzaSy..."
Option C: Config file
The key is stored in ~/.app-publisher/config.json and persists across sessions.
Pricing
Model | Price per Image | Speed | Quality |
| ~$0.039 | 3-5 sec | Standard |
| ~$0.035 (4K: ~$0.24) | 10-15 sec | Best |
Google provides a free tier with generous limits for development. Check Google AI pricing for current rates.
Google AdMob OAuth Credentials (For Ad Management)
Required for creating and managing ad units via the AdMob API.
Step-by-Step
Go to Google Cloud Console
Create a new project or select an existing one
Enable the AdMob API:
Go to APIs & Services > Library
Search for "AdMob API"
Click Enable
Create OAuth 2.0 credentials:
Go to APIs & Services > Credentials
Click "Create Credentials" > "OAuth client ID"
Application type: Desktop app
Name it (e.g., "app-publisher-mcp")
Click Create
Copy the Client ID and Client Secret
Note: If prompted, configure the OAuth consent screen first (External type is fine for personal use). Add the scopes
admob.monetizationandadmob.readonly.
Set Up AdMob in MCP
1. "Configure AdMob with client ID xxx and secret yyy"
→ Stores credentials and returns an authorization URL
2. Open the URL in your browser and sign in with your Google account
→ Grant access and copy the authorization code
3. "Authenticate AdMob with code xxxx"
→ Exchanges code for tokens (stored in ~/.app-publisher/config.json)
4. "List my AdMob apps"
→ Verify connection worksWhere to Get AdMob Account
Go to Google AdMob
Sign in with your Google account
Accept the terms of service
Create your first app or link an existing one
Important: AdMob credentials are stored locally in
~/.app-publisher/config.json. The refresh token is used to automatically renew access tokens.
Apple App Store Connect (For iOS Publishing)
Required only if you want to publish to the App Store.
Step-by-Step
Go to App Store Connect
Sign in with your Apple Developer account ($99/year membership required)
Go to Users and Access > Integrations > App Store Connect API
Click "Generate API Key"
Give it a name (e.g., "app-publisher-mcp")
Select "Admin" role
Download the
.p8private key file (you can only download it once!)Note down:
Key ID (e.g.,
ABC1234567)Issuer ID (shown at the top of the page)
Using API Key in Fastlane
Place the .p8 file in your project (e.g., fastlane/keys/) and add the API key block to your Fastfile:
api_key = app_store_connect_api_key(
key_id: "ABC1234567",
issuer_id: "your-issuer-id-here",
key_filepath: File.join(Dir.pwd, "keys", "AuthKey_ABC1234567.p8"),
in_house: false
)
platform :ios do
lane :release do
deliver(
api_key: api_key,
# ... other options
)
end
endTip: Add
fastlane/keys/*.p8to.gitignoreto avoid committing the private key. The.p8file can be deleted from Downloads after copying to your project.
Where to Get Apple Developer Account
Go to Apple Developer Program
Click "Enroll"
Sign in with your Apple ID
Pay $99/year membership fee
Wait for approval (usually 24-48 hours)
Google Play Console (For Android Publishing)
Required only if you want to publish to Google Play.
Step 1: Create a Google Cloud Service Account
Go to Google Cloud Console
Create a new project or select an existing one
Enable the Google Play Android Developer API:
Go to APIs & Services > Library
Search for "Google Play Android Developer API"
Click Enable
Create a Service Account:
Go to IAM & Admin > Service Accounts
Click "Create Service Account"
Name:
Play Store Deploy(or any name)ID:
play-store-deployDescription:
Service account for Google Play Store publishing via fastlaneSkip role assignment (not needed, permissions are set in Play Console)
Create a JSON key:
Click the service account > Keys tab > Add Key > Create new key > JSON
Download the JSON key file
Note the service account email (e.g.,
play-store-deploy@project-id.iam.gserviceaccount.com)
Step 2: Grant Access in Google Play Console
Important: The "API access" menu may not be visible in some accounts. Use the "Users and permissions" method instead.
Method A: Via API Access (if available)
Go to Google Play Console > Settings > API access
Link your Google Cloud project
Grant access to the service account
Method B: Via Users and Permissions (recommended)
Go to Google Play Console > Users and permissions
Click "Invite new users"
Enter the service account email from Step 1
Set permissions:
Release management (manage production, testing tracks)
Edit store listing (update metadata, screenshots)
Click "Invite user"
Note: It may take up to 24 hours for permissions to fully propagate.
Step 3: Configure in MCP
Option A: File path (key file stays on disk)
"Configure Play Store with JSON key at ~/Downloads/my-service-account.json for project ~/works/my-app"This validates the key, copies it to fastlane/keys/, updates Appfile, and adds to .gitignore.
Option B: Inline JSON (store in config, delete original file)
"Configure Play Store with inline JSON key data: { ... }"The JSON content is stored in ~/.app-publisher/config.json. You can safely delete the original key file after configuration. When deploying to a project, the key is written from config to fastlane/keys/.
Option C: Using playstore_setup_key tool
"Set up Play Store publishing for ~/works/my-app with JSON key ~/Downloads/my-key.json and package name com.example.myapp"This creates the full fastlane Android setup including metadata directory structure.
Option C: Manual setup
Place the JSON key file in your project (e.g., fastlane/keys/) and reference it in Appfile:
# fastlane/Appfile
json_key_file("fastlane/keys/play-store-service-account.json")
package_name("com.example.myapp")Then use fastlane supply to upload:
# Upload to production
fastlane android release aab:"path/to/app.aab"
# Upload to internal testing
fastlane android internal aab:"path/to/app.aab"
# Upload metadata only
fastlane android metadataTip: Add
fastlane/keys/*.jsonto.gitignoreto avoid committing the service account key.
Where to Get Google Play Developer Account
Sign in with your Google account
Pay $25 one-time registration fee
Complete developer profile
Verify identity (may take a few days)
Fastlane (For Store Publishing)
Required for setup_fastlane, publish_ios, publish_android, populate_metadata, and validate_metadata tools.
# macOS (recommended)
brew install fastlane
# or via Ruby
gem install fastlaneNote: Age ratings and App Privacy settings must be configured directly in App Store Connect — fastlane does not support uploading these. Use the
generate_store_listingtool to get a step-by-step guide for these settings.
Usage Examples
Generate an App Icon
"Generate an app icon for a meditation app - a lotus flower with calm blue and purple gradient"
The AI will create a professional app icon and save it to ~/app-publisher-assets/.
Resize for All Platforms
"Resize the icon at ~/app-publisher-assets/icon_xxx.png for both iOS and Android"
This generates:
iOS: 15 sizes (20px ~ 1024px) + Xcode
Contents.jsonAndroid: 6 sizes (mdpi ~ xxxhdpi) + Play Store 512x512
Generate Store Screenshots
"Generate a screenshot mockup for a fitness app showing a workout dashboard with progress charts"
Set Up Fastlane
"Set up fastlane for my project at ~/myapp with bundle ID com.example.myapp"
You can also provide review contact info and copyright:
"Set up fastlane for ~/myapp with bundle ID com.example.myapp, app name 'My App', copyright '2026 John Doe', review contact email john@example.com"
This creates:
fastlane/Fastfile- Build and deploy lanes with:Auto-set copyright with current year
app_review_informationblock (preventsNo datacrash on new apps)precheck_include_in_app_purchases: false(for API key auth)skip_app_version_update: truefor metadata-only uploads
fastlane/Appfile- App configurationfastlane/metadata/- Store listing metadata structure (10 files per locale)
Populate Metadata
After generating store listing content, write it directly to fastlane metadata files:
"Populate fastlane metadata for ~/myapp with en-US name 'My App', description 'A great app...', and ko name '내 앱'"
This writes content to fastlane/metadata/{locale}/{field}.txt files. Supported fields: name, subtitle, description, keywords, promotional_text, release_notes, privacy_url, support_url, marketing_url, copyright.
Validate Metadata
Check your metadata against App Store requirements before uploading:
"Validate fastlane metadata for ~/myapp"
Checks:
Subtitle: max 30 characters
Keywords: max 100 characters
Required files:
name.txt,description.txt,privacy_url.txt,support_url.txtCopyright: must include current year
Generate Store Listing Metadata
"Generate store listing metadata for my project at ~/myapp"
Analyzes your project (package.json, app.json, README.md, CLAUDE.md, docs/) and generates:
iOS (App Store Connect):
App name, subtitle, description, keywords
Category recommendation
Privacy policy content
Review notes for App Review team
iOS Age Rating 7-Step Guide - Auto-detects app capabilities (ads, UGC, chat, web access, gambling, health content, violence, etc.) and generates complete answers for all 7 steps of the App Store Connect age rating questionnaire
App Privacy Data Guide - Auto-detects data collection based on dependencies (AdMob, analytics, auth, IAP, etc.) and generates complete answers for the App Store Connect "Trust & Safety > App Privacy" questionnaire, including data types, usage purposes, identity linkage, and tracking status
Android (Google Play Console):
App title, short/full description
Category recommendation
Content rating guide
Privacy policy content
4 Languages Supported:
Korean (ko), English (en), Japanese (ja), Chinese Simplified (zh)
You can specify platform and language:
"Generate iOS store listing in Korean for ~/myapp" "Generate store listing in Japanese for ~/myapp" "Generate store listing in Chinese for ~/myapp"
Get Publishing Guide
"Show me the iOS publishing guide for my project at ~/myapp"
Returns a detailed step-by-step guide customized with your project info:
iOS: 12 steps (Developer account → TestFlight)
Android: 7 steps (Play Console → Release management)
Auto-detects framework (Expo, React Native, Flutter, Native)
Includes actual build commands for your framework
Maestro UI Testing
Maestro is a mobile UI testing framework that lets you automate interactions with your app on simulators and emulators.
Setup
"Set up Maestro for UI testing"
This will check Java 17+ and install Maestro CLI automatically.
Take a Screenshot
"Take a screenshot of my running app"
Captures the current screen from the running iOS Simulator or Android Emulator.
Run UI Test Flow
"Run a UI flow on com.myapp: launch the app, tap on 'Login', input 'test@email.com' into the email field, take a screenshot"
Converts natural language steps into a Maestro flow and executes it. Available actions: launchApp, tapOn, inputText, swipe, scroll, assertVisible, takeScreenshot, back, home, and more.
Create Store Marketing Screenshots
"Create a store screenshot with headline 'Your Photos, Perfectly Protected' using the screenshot at ~/screenshot.png for both iOS and Android"
Or auto-capture from the running simulator:
"Create a store screenshot with headline 'Track Your Habits' for iOS"
This:
Captures a screenshot from the simulator (or uses the provided image)
Uses Gemini AI to composite the screenshot with a headline and device frame
Resizes to exact store dimensions for each platform
iOS Store Sizes:
Device | Dimensions |
iPhone 6.7" (required) | 1284 x 2778 |
iPhone 6.5" (required) | 1242 x 2688 |
iPhone 5.5" | 1242 x 2208 |
iPad 12.9" | 2048 x 2732 |
Android Store Sizes:
Device | Dimensions |
Phone (required) | 1080 x 1920 |
Tablet 7" | 1200 x 1920 |
Tablet 10" | 1920 x 1200 |
You can customize background color, text color, and select specific device sizes:
"Create a store screenshot with headline 'Beautiful Design' on black background with white text, for iPhone 6.7 and Phone only"
AdMob Integration
Set Up AdMob
"Configure AdMob with client ID 123456.apps.googleusercontent.com and secret GOCSPX-xxx"
This stores your OAuth credentials and provides an authorization URL. Visit the URL, sign in, and copy the auth code.
"Authenticate AdMob with code 4/0AY0e-xxx"
Create Ad Units
"List my AdMob apps"
"Create a banner ad unit named 'Home Banner' for app ca-app-pub-xxxxx~yyyyy"
"Create a rewarded ad unit named 'Level Complete' for app ca-app-pub-xxxxx~yyyyy"
Supported formats: BANNER, INTERSTITIAL, REWARDED, REWARDED_INTERSTITIAL, APP_OPEN, NATIVE
Generate Integration Code
"Integrate AdMob into my project at ~/myapp with the ad units I just created"
This generates:
Ad components in
src/features/ads/(Banner, Interstitial, Rewarded, AppOpen)Test ID support — automatically uses test ads in
__DEV__modeapp.json configuration for
react-native-google-mobile-adsATT (App Tracking Transparency) setup instructions for iOS
Each generated component is ready to use:
import { AdHomeBanner } from '@features/ads';
// In your screen
<AdHomeBanner />Complete AdMob Workflow
1. "Configure AdMob with client ID and secret"
2. Visit auth URL → Copy code
3. "Authenticate AdMob with code xxxx"
4. "List my AdMob apps"
5. "Create a banner ad unit for my app"
6. "Integrate AdMob into my project at ~/myapp"
7. Import and use the generated componentsPublish to Stores
"Publish my iOS app to the App Store. Project is at ~/myapp"
"Publish my Android app to the internal testing track"
Generated Icon Sizes
iOS (15 icons + Contents.json)
Usage | Sizes |
Notification | 20@2x (40px), 20@3x (60px) |
Settings | 29@2x (58px), 29@3x (87px) |
Spotlight | 40@2x (80px), 40@3x (120px) |
App | 60@2x (120px), 60@3x (180px) |
iPad | 20, 29, 40, 76, 76@2x (152px), 83.5@2x (167px) |
App Store | 1024x1024 |
The generated Contents.json is fully compatible with Xcode - just drag the AppIcon.appiconset folder into your asset catalog.
Android (6 icons)
Density | Size | Folder |
mdpi | 48x48 | mipmap-mdpi |
hdpi | 72x72 | mipmap-hdpi |
xhdpi | 96x96 | mipmap-xhdpi |
xxhdpi | 144x144 | mipmap-xxhdpi |
xxxhdpi | 192x192 | mipmap-xxxhdpi |
Play Store | 512x512 | - |
AI Model Selection
Model | Best For | Speed | Quality |
| Rapid prototyping, iteration | Fast (3-5s) | Good |
| Final assets, 4K output | Slower (10-15s) | Best |
Set your preferred model:
"Set the model to gemini-3-pro-image-preview"
Or use environment variable:
GEMINI_MODEL=gemini-3-pro-image-previewConfiguration Priority
Settings are resolved in this order (highest priority first):
Per-request parameter -
modelparameter in tool callsEnvironment variable -
GEMINI_API_KEY,GEMINI_MODELConfig file -
~/.app-publisher/config.jsonDefault -
gemini-2.5-flash-image
Vibe Coding Workflow
This MCP is designed for the vibe coding workflow - build your app with AI, then ship it:
1. Build your app with Claude Code
2. "Generate an icon for my app" → AI creates the icon
3. "Resize it for iOS and Android" → All sizes generated
4. "Set up AdMob and create ad units" → Monetization ready
5. "Integrate AdMob into my project" → Ad components generated
6. "Set up Maestro and take a screenshot of my app" → Live app capture
7. "Create store screenshots with headline 'Your App, Reimagined'" → Marketing-ready images
8. "Generate store listing for my project" → All metadata ready
9. "Set up fastlane for my project" → Fastlane configured with review info & copyright
10. "Populate fastlane metadata" → Store listing written to metadata files
11. "Validate metadata" → Check before uploading
12. "Show me the iOS publishing guide" → Step-by-step instructions
13. "Publish to App Store" → App goes to storesNo design skills needed. No Figma. No manual resizing. Just vibe and ship.
Troubleshooting
"Gemini API key not configured"
Set your API key using one of the methods described in Getting Your API Keys.
"This model only supports text output"
The model you're using doesn't support image generation. Switch to gemini-2.5-flash-image or gemini-3-pro-image-preview.
"fastlane is not installed"
Install fastlane: brew install fastlane (macOS) or gem install fastlane (Ruby).
Icon looks wrong at small sizes
Try a simpler icon design. Complex designs don't work well at 20x20 or 29x29 pixels. Use bold shapes and minimal detail.
"Maestro not available"
Maestro requires Java 17+. Install Java first, then run the setup_maestro tool:
brew install openjdk@17"No running simulator or emulator"
Start an iOS Simulator or Android Emulator before using Maestro tools:
# iOS
open -a Simulator
# Android
emulator -avd <avd_name>"AdMob not authenticated"
Run configure_admob with your OAuth client ID and secret, then complete the auth flow with admob_auth. Credentials are stored in ~/.app-publisher/config.json.
"AdMob API error (403)" on create operations
The AdMob API v1beta create methods (accounts.apps.create, accounts.adUnits.create) have limited access. According to Google's documentation: "This method has limited access. If you see a 403 permission denied error, please reach out to your account manager for access." Listing and reading operations work normally. Create apps and ad units in the AdMob console instead, then use MCP tools to list and integrate them.
"AdMob API error (403)" on read operations
Ensure:
The AdMob API is enabled in your Google Cloud project
Your OAuth consent screen has the required scopes (
admob.monetization,admob.readonly)Your AdMob account is active at admob.google.com
MCP not connecting
Restart Claude Code after adding the MCP server
Check the server config in
~/.claude.jsonVerify Node.js is installed:
node --version
Development
git clone https://github.com/seungmanchoi/app-publisher-mcp.git
cd app-publisher-mcp
npm install
npm run build
npm run lintLicense
MIT
Available Tools
39 toolsadmob_authA
Complete AdMob OAuth authentication by exchanging the authorization code for access tokens. Run configure_admob first to get the auth URL.
| Name | Required | Description | Default |
|---|---|---|---|
| authCode | Yes | Authorization code from Google OAuth consent screen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses the core exchange behavior but lacks details on error handling, token storage, or rate limits. Adequate for a straightforward OAuth step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no superfluous information. Front-loaded with the action, efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, description covers the essential steps and outcome (exchange for access tokens). Could mention token storage for continuity, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ('authCode') with schema description coverage at 100%. Tool description adds no extra meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (exchanging authorization code for access tokens) and identifies the resource (AdMob OAuth authentication). Distinguishes from sibling 'configure_admob' by naming it as prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit sequential guidance ('Run configure_admob first'), indicating when this tool should be used. No exclusions or alternatives mentioned, 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.
admob_create_ad_unitB
Create a new ad unit in your AdMob account. Supported formats: BANNER, INTERSTITIAL, REWARDED, REWARDED_INTERSTITIAL, APP_OPEN, NATIVE.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | AdMob App ID to create the ad unit for (e.g., ca-app-pub-xxxxx~yyyyy) | |
| displayName | Yes | Display name for the ad unit (e.g., "Home Banner", "Level Complete Interstitial") | |
| adFormat | Yes | Ad format type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions creation and supported formats but omits crucial details like authentication requirements (e.g., via `admob_auth`), side effects, or if the creation is immediate. This leaves the agent uninformed about necessary preconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, efficiently conveying the core purpose and format options without redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, so the description should explain return values (e.g., the created ad unit object). It does not. Additionally, with three required parameters, it doesn't mention that they are all required or the specific format for appId, though the schema covers this. The description is incomplete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all three parameters (100% coverage). The description adds a list of supported formats that matches the enum, but does not add significant new meaning beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new ad unit') and the resource ('AdMob account'), and lists supported formats, which distinguishes it from sibling tools like `admob_list_ad_units` and `admob_create_app`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (need an existing app ID) but does not explicitly state when to use it versus alternatives, such as requiring an existing app from `admob_create_app` or listing apps first. 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.
admob_create_appA
Create a new app in your AdMob account. You can link it to an existing App Store / Play Store app, or create it manually with a display name.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | App platform: IOS or ANDROID | |
| displayName | Yes | Display name for the app (e.g., "My Awesome App") | |
| appStoreId | No | App Store ID (iOS) or Package Name (Android) to link. If omitted, creates an unlinked manual app. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses creation behavior and linking flexibility but lacks details on permissions, rate limits, or side effects (e.g., if app already exists). Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no waste. The purpose is front-loaded, and each sentence contributes essential information about creation and linking options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with 3 parameters and no output schema, the description is adequate. It explains purpose and modes. Could benefit from mentioning return value (e.g., app ID), but not required for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds value by explaining the two modes (link vs. manual), which goes beyond the schema's 'if omitted' note. Baseline 3 increased to 4 for helpful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new app in your AdMob account' with a specific verb and resource. It distinguishes two modes (link to existing store app or manual) and is unique among siblings (no other 'create app' tool).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides use cases: linking to an existing app or manual creation. It implies context but does not explicitly state when to avoid this tool or mention alternatives like admob_list_apps for existing apps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admob_integrateB
Generate AdMob integration code for a React Native / Expo project. Creates ad components (Banner, Interstitial, Rewarded, AppOpen) with test ID support and installs required dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the app project directory | |
| platform | No | Target platform (default: both) | |
| iosAppId | No | AdMob iOS App ID (e.g., ca-app-pub-xxxxx~yyyyy) | |
| androidAppId | No | AdMob Android App ID (e.g., ca-app-pub-xxxxx~yyyyy) | |
| adUnits | No | Ad units to generate code for. If omitted, generates sample Banner + Interstitial. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description implies code generation and dependency installation, which are behavioral traits, but does not detail side effects like file modifications or permission requirements. Adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action. No superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 5 parameters, description provides core functionality but lacks details on generated file structure, error handling, or test ID implementation. Adequate for basic understanding but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description adds context about React Native/Expo and test IDs, but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool generates AdMob integration code for React Native/Expo, creating specific ad components and installing dependencies. It is distinct from sibling tools like admob_auth and admob_create_ad_unit, though it could explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, prerequisites, or when not to use it. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admob_list_ad_unitsA
List ad units in your AdMob account. Optionally filter by app ID.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | Filter ad units by AdMob App ID (e.g., ca-app-pub-xxxxx~yyyyy) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool lists ad units, implying a read operation, but does not explicitly confirm safety, pagination behavior, or any side effects. The description is not misleading but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action. No redundant or extraneous information. Every word is purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description is nearly complete. It covers the main purpose and the filter. It could mention that the operation is safe/read-only, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter. The description adds a meaningful example format for app ID (e.g., ca-app-pub-xxxxx~yyyyy), which aids an agent in formatting the parameter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (list), the resource (ad units), and the scope (your AdMob account). It also mentions optional filtering by app ID, and distinguishes from sibling tools like admob_create_ad_unit and admob_list_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use by listing ad units, but does not explicitly state when to use versus alternatives, nor does it provide exclusions or follow-up actions. The optional filter is mentioned but context is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admob_list_appsB
List all apps registered in your AdMob account. Requires AdMob authentication.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states 'List all apps' implying a read-only operation with no side effects, which is accurate. However, it does not disclose any potential latency, rate limits, or whether the list is paginated, which would be useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, with no redundant information. It is front-loaded with the main action and follows with a requirement. One sentence could be trimmed if 'Requires AdMob authentication' were implied by context, but it's acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters and no output schema, the description is minimally complete. However, it could be more useful by explicitly comparing to sibling tools or mentioning the scope ('all apps') and any authentication nuance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the schema coverage is 100%. The description adds no further details about parameters beyond what the schema provides, but since there are none, it is adequate. A higher score would require clarifying that no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'all apps registered in your AdMob account'. However, it does not differentiate from the sibling tool 'admob_list_ad_units' which also lists entities, missing a chance to clarify that this tool lists apps specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Requires AdMob authentication' as a prerequisite, which is helpful. However, it provides no guidance on when to use this tool versus alternatives (e.g., using 'admob_list_ad_units' for ad units), and no conditions for 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.
admob_statusB
Check AdMob OAuth configuration and authentication status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only mentions checking status, without describing whether it modifies state, requires specific permissions, or what the output format is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is minimal. It lacks information about return values, expected use cases, and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0 parameters, so schema coverage is 100%. The description does not need to add parameter details; baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb ('Check') and the resource ('AdMob OAuth configuration and authentication status'), distinguishing it from sibling tools like admob_auth and get_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as admob_auth or get_status. The sibling list is extensive, but the description fails to provide context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_admobA
Set up Google AdMob OAuth credentials for ad unit management. After configuration, an authorization URL will be provided to complete the OAuth flow.
| Name | Required | Description | Default |
|---|---|---|---|
| clientId | Yes | Google OAuth 2.0 Client ID (from Google Cloud Console) | |
| clientSecret | Yes | Google OAuth 2.0 Client Secret |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description discloses the outcome (authorization URL) but does not mention side effects, required permissions, or error conditions. For a simple configuration tool, it covers the key behavior but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each carrying essential information. No redundant or extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (2 params, no output schema), the description covers the purpose and outcome. Could mention prerequisites like a Google Cloud project, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add much. It restates that clientId and clientSecret come from Google Cloud Console, but adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set up'), resource ('Google AdMob OAuth credentials'), and purpose ('for ad unit management'). It distinguishes from sibling tools like admob_auth which likely handles the subsequent OAuth flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for initial setup but does not explicitly state when to use versus alternatives like admob_auth. The mention of an authorization URL suggests a follow-up step, but no direct guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_api_keyA
Set or update the Gemini API key for AI image generation. The key is stored locally and persists across sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | Your Google Gemini API key (get one at https://aistudio.google.com/apikey) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses local storage and persistence, but lacks details like overwrite behavior, validation, or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and resource, and contains no unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple configuration tool with one parameter and no output schema, the description adequately covers purpose, scope, and persistence. Minor gaps exist like missing validation info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal extra value beyond the schema's parameter description; it mentions the key's purpose (AI image generation) but does not elaborate on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (set/update) and resource (Gemini API key for AI image generation), with additional context about persistence. It distinguishes itself from sibling configuration tools like configure_admob or configure_playstore.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to set/update Gemini API key) but provides no explicit guidance on alternatives or when not to use. Sibling tools exist but no comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_modelA
Set the default Gemini model for image generation. Persists across sessions. Recommended: gemini-2.5-flash-image (fast), gemini-3-pro-image-preview (best quality).
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Gemini model ID (e.g., gemini-2.5-flash-image, gemini-3-pro-image-preview) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions persistence and model recommendations but does not disclose validation, side effects, or error handling for invalid inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences. Every word serves a purpose with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool with one parameter, description is sufficiently complete. Mentions persistence and recommendations. Could optionally state default model, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds value by recommending specific model IDs and their trade-offs (fast vs quality), beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool sets the default Gemini model for image generation, with persistence across sessions. This is specific and distinct from sibling tools like configure_admob or configure_api_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Recommends specific models but lacks guidance on when to use this tool vs alternatives or when not to use it. Context is implied for a configuration tool but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_playstoreA
Configure Google Play Store API access. Provide either a file path (jsonKeyPath) or the JSON content directly (jsonKeyData). The inline method stores the key in ~/.app-publisher/config.json so you can delete the original file.
| Name | Required | Description | Default |
|---|---|---|---|
| jsonKeyPath | No | Path to the Google Play service account JSON key file | |
| jsonKeyData | No | Inline JSON content of the service account key (stored in config, no file needed) | |
| projectDir | No | Optional project directory to write the key into fastlane/keys/ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description discloses that the inline method stores the key in a config file and suggests deleting the original, which is useful behavioral context. However, it does not mention preconditions, overwriting behavior, or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. First sentence states purpose, second adds usage detail and behavioral note. Information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters and no output schema, the description covers the key aspects: parameter alternatives, storage behavior, and optional project directory. It could mention return values or verification, but it is reasonably complete for a configuration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaning by explaining that jsonKeyPath and jsonKeyData are alternatives, and that jsonKeyData is stored inline in a config file, which exceeds the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it configures Google Play Store API access, specifying two methods (file path or inline JSON). It is specific but does not explicitly distinguish from sibling tools like 'playstore_setup_key'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on the two parameter options but lacks explicit context on when to use this tool versus alternatives or when not to use it. No comparisons with siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_iconA
Generate an app icon using AI. Creates a square icon suitable for mobile app stores. Returns the generated image and saves it to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the app icon to generate (e.g., "a minimalist camera icon with blue gradient") | |
| model | No | Optional Gemini model override for this request | |
| outputDir | No | Optional output directory (default: ~/app-publisher-assets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns the image and saves it to disk, but omits details about overwrite behavior, API costs, auth requirements, or output format specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with clear action and outcome, no redundant text. Information is front-loaded and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generative AI tool with no output schema, the description covers purpose and storage but lacks details on return format, image dimensions, potential failures, or side effects beyond saving to disk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description adds little beyond the schema (e.g., 'square' format, store suitability). It does not explain how model or outputDir affect behavior substantively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an AI-powered app icon, specifies it is square and for mobile app stores, and distinguishes from sibling tools like generate_screenshot or generate_splash by focusing on icons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for mobile app store icons but does not explicitly state when to use this tool vs alternatives like generate_screenshot or resize_icons, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_screenshotC
Generate an app store screenshot mockup using AI. Creates realistic app screenshots for store listings.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the screenshot to generate (e.g., "a fitness tracking dashboard showing workout stats") | |
| model | No | Optional Gemini model override for this request | |
| outputDir | No | Optional output directory (default: ~/app-publisher-assets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It only states it creates realistic screenshots; missing key traits like output format, resolution, cost, or that it should not be used for actual app UI testing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences are concise, but the second sentence is nearly redundant ('Creates realistic app screenshots'). Could combine or replace with more useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and many sibling tools, the description lacks details about output (e.g., image file type, recommended use). Incomplete for guiding an agent on proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds no extra meaning beyond the schema, so baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly uses the verb 'Generate' and resource 'app store screenshot mockup', indicating its purpose. It distinguishes from siblings like 'generate_icon' and 'generate_splash' by focusing on screenshots, but could be more specific about being AI-generated mockups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'maestro_store_screenshot' (real screenshots) or 'generate_store_listing' (text). Lacks when-not or explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_splashB
Generate a splash screen (launch screen) design using AI. Creates a professional app launch screen image.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the splash screen to generate | |
| model | No | Optional Gemini model override for this request | |
| outputDir | No | Optional output directory (default: ~/app-publisher-assets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'using AI' and 'professional' but omits details like cost, synchronicity, error handling, or output nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with the main action. Appropriate length for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema; does not describe return value (path, URL, data). No mention of size, format, or error handling. Incomplete for an image generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond schema descriptions; it does not explain prompt format, model override options, or output directory defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (generate), the resource (splash screen), and the result (image). It distinguishes from siblings like generate_icon and generate_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives or any prerequisites. No context differentiation from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_store_listingA
Analyze a project directory and generate complete store listing content (app name, description, keywords, privacy policy, etc.) for iOS App Store and/or Google Play Store.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the project directory to analyze | |
| platform | No | Target platform: ios, android, or both (default: both) | |
| language | No | Output language: ko (Korean), en (English), ja (Japanese), or zh (Chinese). Default: ko |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions generation but does not disclose whether it modifies files, creates new files, or only returns content. The behavior regarding side effects or return format is unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 22 words, front-loaded with the key action and resource, and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description adequately introduces the purpose but lacks detail on return format or expected behavior (e.g., whether content is returned or written). Completeness is acceptable but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions. The tool description does not add extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('analyze a project directory and generate complete store listing content') and specifies the target resources (iOS App Store and/or Google Play Store). It is specific and distinguishes from sibling tools like generate_icon or generate_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for generating initial listing content but does not explicitly state when to use it versus alternatives like populate_metadata or validate_metadata. No when-not or context for existing listings is provided, leaving implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publishing_guideA
Get a comprehensive step-by-step guide for publishing an app to the iOS App Store or Google Play Store. Customized based on project info if projectDir is provided.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Target platform: ios or android | |
| projectDir | No | Optional path to project directory for customized guide with actual bundle ID, app name, etc. | |
| framework | No | App framework (auto-detected if projectDir is given). Options: expo, react-native, flutter, native |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It states the output is a guide but does not disclose whether it is read-only, if it accesses external systems, or any side effects. More transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with purpose. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description sufficiently communicates output as a step-by-step guide. Parameters well explained. Could mention output format but broadly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. Addition of customization via projectDir and auto-detection of framework adds meaningful value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'get' and resource 'guide' for publishing an app. It distinguishes from sibling action-oriented tools like publish_android or playstore_update_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context for customization via projectDir, but no explicit when-not-to-use or alternatives among siblings. Sibling list includes many tools for actual publishing, but guidance on when to choose this guide over actions is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusB
Check the current configuration status including API key, model, fastlane installation, and generated assets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It implies read-only but does not state whether the tool requires authentication, makes network calls, or has side effects. The list of what is checked is helpful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, but could be slightly more structured. Still efficient and front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should clarify what the status output contains or its structure. The list of checked items is a start, but lacks behavioral details like speed or side effects. For a zero-parameter tool, it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with zero parameters. The description adds meaning by enumerating what is checked (API key, model, fastlane installation, generated assets), which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb 'Check' and resource 'current configuration status', listing concrete items (API key, model, etc.). This distinguishes it from sibling tools like admob_status or maestro_status which check specific components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this general status tool versus the many specific sibling status tools (e.g., admob_status, maestro_status). The agent receives no when/when-not or alternative information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maestro_run_flowA
Run a UI test flow on a simulator/emulator using Maestro. Accepts structured steps that are converted to a Maestro flow YAML. Use takeScreenshot steps to capture screenshots during the flow. Returns all captured screenshots as images.
Available actions: launchApp, stopApp, clearState, tapOn, tapOnPoint, longPressOn, doubleTapOn, inputText, eraseText, swipe, scroll, scrollUntilVisible, back, home, pressKey, hideKeyboard, takeScreenshot, assertVisible, assertNotVisible, waitForAnimationToEnd, wait, openLink, copyTextFrom, pasteText, runScript
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App bundle identifier (e.g., com.calcvault.app) | |
| steps | Yes | Array of flow steps to execute sequentially | |
| outputDir | No | Output directory for flow results and screenshots |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description discloses that it returns captured screenshots but fails to mention any side effects, clean-up, or device state changes. For a test execution tool, more behavioral transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two clear paragraphs: the first explains functionality and output, the second lists actions. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Returns are described (screenshots as images), but there is no mention of error handling, step limits, or device prerequisites. Given no output schema, the description adequately covers main use but lacks some depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value beyond the schema by enumerating all available actions (e.g., tapOn, inputText) which are not fully listed in the schema's action property. This helps the agent understand valid action values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a UI test flow, distinguishes from sibling 'maestro_run_yaml' by specifying it accepts structured steps, and lists available actions. The verb 'run' and resource 'UI test flow' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for programmatic step creation but does not explicitly state when to use this tool vs alternatives like maestro_run_yaml or maestro_screenshot. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maestro_run_yamlA
Run a Maestro flow from raw YAML content. For advanced users who want full control over the flow definition. Returns all captured screenshots as images.
| Name | Required | Description | Default |
|---|---|---|---|
| yaml | Yes | Complete Maestro flow YAML content | |
| outputDir | No | Output directory for flow results and screenshots |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Returns all captured screenshots as images' but omits behavioral details like side effects on device state, permission requirements, error handling, or destructive potential. For a tool that runs flows, such transparency is lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second adds audience and output. No fluff, every word earns its place. Front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters and no output schema. Description covers primary function and output (screenshots), but lacks information about error handling, success conditions, whether it waits for flow completion, or prerequisites like Maestro setup (sibling setup_maestro exists). Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema: 'Complete Maestro flow YAML content' and 'Output directory for flow results and screenshots' essentially repeat the schema descriptions. No additional context about parameter constraints or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Run a Maestro flow from raw YAML content', specifying the action (run) and resource (Maestro flow from YAML). The phrase 'For advanced users' distinguishes it from simpler alternatives like maestro_run_flow, which likely runs pre-saved flows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'For advanced users who want full control', implying it's for a specific audience but does not explicitly name alternatives or provide when-to-use vs when-not-to-use guidance. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maestro_screenshotA
Take a screenshot of the currently running app on iOS Simulator or Android Emulator using Maestro. Returns the screenshot image. Requires Maestro CLI and a running simulator/emulator.
| Name | Required | Description | Default |
|---|---|---|---|
| outputDir | No | Output directory for screenshots (default: ~/app-publisher-assets/maestro) | |
| filename | No | Screenshot filename without extension (default: screenshot_<timestamp>) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly states the tool returns a screenshot image and requires a running simulator, which implies non-destructive behavior. It could mention that it doesn't modify state, but the description is sufficient for a simple read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and every sentence adds value. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple screenshot tool with no output schema, the description is adequate. It covers the purpose, prerequisites, and return type. It could detail supported image formats, but that is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema for the parameters. It does not explain the purpose of outputDir or filename beyond their defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Take a screenshot'), the target resource ('currently running app on iOS Simulator or Android Emulator'), and the tool (Maestro). It distinguishes from sibling tools like maestro_run_flow and maestro_status by specifying the exact output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists prerequisites ('Requires Maestro CLI and a running simulator/emulator'), which helps agents know when it's usable. However, it does not provide guidance on when to use this tool over alternatives like maestro_store_screenshot or generate_screenshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maestro_statusA
Check Maestro installation status, version, and list running iOS Simulators and Android Emulators.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a read-only operation ('Check' and 'list'), but does not explicitly state behavioral traits like non-destructive nature or permissions required. The disclosure is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that conveys the essential purpose without redundancy or excess. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no output schema, and no annotations, the description sufficiently covers the tool's functionality. It could mention return format or side effects, but given the simplicity, it's nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline is 4. The description adds value by explaining what the tool does beyond the empty schema, confirming its purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and clearly identifies the resources (Maestro installation status, version, running iOS Simulators, Android Emulators). It distinguishes the tool from siblings like 'maestro_run_flow' or 'setup_maestro' by focusing on status and listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking installation status and listing emulators, but no explicit when-to-use or when-not-to-use guidance is given. Alternatives like 'setup_maestro' exist for installation, but this is not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maestro_store_screenshotA
Create professional app store marketing screenshots with headline text and device-framed app screenshot. Uses Gemini AI to composite the image, then resizes to exact iOS/Android store dimensions. Can auto-capture screenshot from running simulator via Maestro, or accept an existing screenshot path.
| Name | Required | Description | Default |
|---|---|---|---|
| headline | Yes | Marketing headline text to display above the app screenshot (e.g., "Your Photos, Perfectly Protected") | |
| screenshotPath | No | Path to existing screenshot image. If not provided, automatically captures from running simulator via Maestro. | |
| platform | No | Target platform for store screenshots (default: both) | |
| backgroundColor | No | Background color hex code (default: #FFFFFF) | |
| textColor | No | Headline text color hex code (default: #000000) | |
| devices | No | Specific device sizes to generate. Options: iPhone_6.7, iPhone_6.5, iPhone_5.5, iPad_12.9, Phone, Tablet_7, Tablet_10. Default: required sizes only. | |
| model | No | Optional Gemini model override | |
| outputDir | No | Output directory for store screenshots (default: ~/app-publisher-assets/maestro/store_<timestamp>) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It explains the core behavior (compositing with Gemini, resizing to store dimensions) and the two input modes. However, it does not disclose potential side effects like file overwriting, rate limits, or authorization requirements. The description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and then detail capabilities. Every word earns its place; no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, no annotations), the description covers the main workflow and options. It lacks explicit description of return values (e.g., file paths created), but the outputDir parameter implies saved files. Overall, it is mostly complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that screenshotPath is optional and auto-captures if omitted, and that devices defaults to 'required sizes only.' This enriches understanding beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create professional app store marketing screenshots with headline text and device-framed app screenshot.' It specifies the action (create), resource (marketing screenshots), and method (using Gemini AI, resizing). This distinguishes it from siblings like maestro_screenshot (simple capture) and generate_screenshot (generic generation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions two usage modes: auto-capture from simulator or accept an existing screenshot path. This gives context for when to use each mode, but it does not explicitly state when to use this tool over alternatives (e.g., when needing store-specific formatting vs. a plain screenshot).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_delete_imagesA
Delete all images of a specific type for a language. Use before re-uploading screenshots to replace them.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name | |
| language | Yes | BCP-47 language code (e.g., en-US, ko-KR) | |
| imageType | Yes | Image type to delete all images for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It correctly identifies the tool as destructive but lacks details on permanence, error conditions, or required permissions. Adequate for a simple delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with action and purpose. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and lack of output schema, the description is mostly complete. It could mention that deletion is irreversible, but it adequately covers the primary use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and descriptions are clear. The description adds context by tying parameters to the action, but does not provide additional semantics beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (delete all images), resource (specific type for a language), and context (before re-uploading screenshots). Distinguishes from sibling tools like playstore_upload_image and playstore_list_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage context: 'Use before re-uploading screenshots to replace them.' Provides a clear when-to-use scenario, though it does not explicitly mention when not to use or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_get_app_infoB
Get comprehensive app information from Google Play Console including all store listings (title, descriptions per language) and release tracks (production, beta, alpha, internal) with version codes and status.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name (e.g., com.example.myapp) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description states 'get' (read operation) but fails to disclose authentication requirements, error scenarios (e.g., invalid package name), or whether it triggers any side effects. For a tool with zero annotation coverage, more behavioral context is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, front-loaded with main action. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description provides a good overview of what data is returned. Could be slightly improved by noting the response format or structure, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (packageName). The description does not add extra semantics beyond the schema's own description. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'get' and resource 'comprehensive app information', clearly enumerating included data (store listings per language, release tracks with version codes/status). It implicitly distinguishes from sibling tools like playstore_get_listing and playstore_get_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like playstore_get_listing. The description implies it's a comprehensive fetch, but does not specify when one would prefer a more targeted tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_get_listingA
Get store listing(s) for an app. If language is specified, returns the full listing for that language. Otherwise returns all listings with titles and short descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name | |
| language | No | BCP-47 language code (e.g., en-US, ko-KR). If omitted, returns all listings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains behavior with and without language parameter but omits potential side effects, permissions, or rate limits. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the main purpose and then clarify conditional behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return values. It does so partially ('full listing' vs 'titles and short descriptions') but lacks detail on structure of the listing. Adequate for a simple tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes both parameters (100% coverage). Description adds behavioral context: language is optional and affects output richness. This adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get store listing(s) for an app' with specific verb and resource. It distinguishes the two modes (with and without language) and differentiates from sibling tools like playstore_update_listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like playstore_get_app_info. No exclusion criteria or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_get_tracksA
List all release tracks for an app with version codes, release status, and release notes. Tracks include: production, beta, alpha, internal.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses what the tool returns (tracks with version codes, status, notes) but does not mention safety (read-only), error behavior, or authentication needs. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no fluff. The first sentence clearly states the action and output, the second lists example tracks. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately covers the purpose and output. It lacks details on pagination or empty results, but overall is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'packageName' described as 'Android package name'. The tool description adds no extra semantic detail about the parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all release tracks for an app' and specifies the output includes version codes, release status, and release notes. It distinguishes itself from siblings by explicitly focusing on tracks, not general app info or listings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching track details but does not explicitly state when to use this tool versus alternatives like 'playstore_get_app_info'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_list_imagesB
List uploaded images/screenshots for an app. Image types: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name | |
| language | Yes | BCP-47 language code (e.g., en-US, ko-KR) | |
| imageType | Yes | Image type: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must fully disclose behavior. It only states 'list' but fails to describe return format (e.g., URLs, metadata), potential limitations, or authentication requirements. Leaves significant gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences: first states purpose, second lists image types. No redundant or extraneous content. Efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists; description should explain what is returned (e.g., list of URLs, metadata). It does not address this, nor does it mention pagination or scope of results. Incomplete for an agent to rely on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described adequately. The description lists image types, which duplicates schema info, but adds no further semantic enrichment. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'List uploaded images/screenshots' and the resource 'for an app', with explicit enumeration of image types. Distinguishes itself from sibling tools like 'playstore_upload_image' and 'playstore_delete_images'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as 'playstore_upload_image' or 'playstore_delete_images'. Does not provide context or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_setup_keyA
Set up Google Play Store publishing for a project. Copies the service account JSON key, creates/updates fastlane Appfile and Fastfile for Android, and creates the metadata directory structure with locale folders.
| Name | Required | Description | Default |
|---|---|---|---|
| jsonKeyPath | Yes | Path to the Google Play service account JSON key file | |
| projectDir | Yes | Path to the app project directory | |
| packageName | No | Android package name (e.g., com.example.myapp) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that files are created or updated (implying potential overwrite) and directories are created, but does not specify if the operation is reversible, what permissions are needed, or what happens if files already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the main purpose, the second lists key actions. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main actions but lacks return value information (no output schema) and does not clarify how this tool differs from similar siblings like setup_fastlane or configure_playstore. It also doesn't specify the role of the optional packageName parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal context beyond schema (e.g., packageName used for metadata directory), but does not explain each parameter's format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets up Google Play Store publishing by copying a service account key, creating/updating Fastlane files, and creating metadata directory structure. It distinguishes from siblings like playstore_get_app_info which are about reading data, not setup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage during initial Play Store setup but provides no explicit guidance on when to use this tool vs alternatives like setup_fastlane or configure_playstore. No when-not or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_statusA
Check Google Play Store API configuration status. Shows service account details and validates the JSON key file.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It accurately describes the tool as performing a read-only check that displays service account details and validates a key file. No hidden side effects or destructive actions are indicated, though it could explicitly state it does not modify anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main action ('Check Google Play Store API configuration status') and adds two specific details. It is maximally concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status check tool, the description covers the core functionality: verifying configuration, displaying service account details, and validating the key. It is sufficiently complete given the tool's simplicity, though a note about expected output or error handling would enhance it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema description coverage is 100% (zero parameters). The description does not need to add param information since none exist. Baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks Google Play Store API configuration status, showing service account details and validating the JSON key file. This distinguishes it from sibling status tools like admob_status or get_status by specifying the resource (Play Store API) and specific actions (shows, validates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for verifying Play Store API setup, but it lacks explicit guidance on when to use versus alternatives like admob_status or get_status. No exclusions or prerequisites are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_update_listingA
Update store listing metadata for a specific language. Can update title (max 50 chars), short description (max 80 chars), and/or full description (max 4000 chars). Changes are committed immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name | |
| language | Yes | BCP-47 language code (e.g., en-US, ko-KR) | |
| title | No | App title (max 50 characters) | |
| shortDescription | No | Short description (max 80 characters) | |
| fullDescription | No | Full description (max 4000 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses immediate commitment of changes, which is useful. No annotations provided, so the description carries the burden. However, it does not mention authentication needs, rate limits, or whether it overwrites existing data. Character limits are good but not sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences with no filler. Every piece of information is relevant and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with no output schema, the description covers the key aspects: purpose, fields, limits, and immediacy. However, it could mention response behavior or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and includes character limits for each parameter. The description adds 'Changes are committed immediately' but otherwise repeats schema info. Minimal added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates store listing metadata (title, short description, full description) for a specific language, with character limits. This distinguishes it from sibling tools like playstore_get_listing (read) and playstore_delete_images (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites, no mention of required setup (e.g., signed APK). The description lacks context for proper selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playstore_upload_imageB
Upload an image (screenshot, icon, feature graphic, etc.) to Google Play Store listing. Supported formats: PNG, JPEG, WebP. Changes are committed immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name | |
| language | Yes | BCP-47 language code (e.g., en-US, ko-KR) | |
| imageType | Yes | Image type: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, icon, featureGraphic, tvBanner | |
| imagePath | Yes | Path to the image file to upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It mentions 'Changes are committed immediately,' which is a key trait, but lacks details on side effects (e.g., overwrites?), authentication needs, rate limits, or error handling. Insufficient for a mutation tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences with no redundancy. Front-loads the main action and includes key additional details (formats, immediacy) without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fairly complete for a simple upload tool, but lacks explanation of the 'language' parameter's role for images (screenshots are language-specific) and does not mention that the image file must be accessible via the given path. With no output schema, more context on expected behavior would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented. Description adds minimal value: it mentions supported image formats (PNG, JPEG, WebP) not in schema, but does not provide context beyond the schema for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Upload an image') and target resource ('to Google Play Store listing'), with specific examples (screenshot, icon, feature graphic) and supported formats. It effectively distinguishes from siblings like playstore_delete_images and playstore_list_images by focusing on the upload action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., generate_icon, generate_screenshot for creation; playstore_update_listing for other content). Does not mention prerequisites (e.g., image must exist at path) 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.
playstore_verify_accessA
Verify that the service account has API access to a specific app on Google Play. Tests by creating and deleting an edit session.
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name (e.g., com.example.myapp) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals the tool tests by creating and deleting an edit session, indicating a non-destructive diagnostic action. However, it doesn't mention required permissions or potential side effects beyond the session manipulation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter diagnostic tool with no output schema, the description provides the core action and verification method. However, it could be more complete by specifying what the agent should expect on success/failure (e.g., a boolean response).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema description for packageName is adequate. The tool description doesn't add meaning beyond the schema, so a baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: verifying API access for the service account on a specific Google Play app. The verb 'verify' and resource 'API access' are specific, and it distinguishes from sibling tools like playstore_get_app_info or playstore_setup_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking API access before performing other Play Store operations, but it lacks explicit guidance on when to use this tool versus alternatives (e.g., playstore_status) 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.
populate_metadataA
Populate fastlane metadata directory with locale-specific content. Creates all required .txt files (name, subtitle, description, keywords, etc.) for each locale. Use this after generate_store_listing to write content directly to fastlane metadata files.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the app project directory (must contain fastlane/ directory) | |
| locales | Yes | Map of locale code to metadata content. Example: {"en-US": {"name": "My App", ...}, "ko": {"name": "내 앱", ...}} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states the tool creates files and writes content, implying mutation. However, it does not disclose whether it overwrites existing files, what happens if the directory doesn't exist, or any error conditions. More detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the purpose, the second provides usage guidance. No unnecessary words. Front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 2 required parameters (with full schema descriptions), no output schema, and no annotations, the description is largely complete. It explains the tool's function and sequence. It could mention overwrite behavior or error cases, but overall it provides sufficient context for the AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The description adds minimal extra meaning beyond restating that it creates files for each locale. Since schema coverage is high, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('populate', 'creates') and clearly identifies the resource ('fastlane metadata directory with locale-specific content') and the output ('.txt files' for each locale). It distinguishes itself from sibling tool 'generate_store_listing' by stating this tool writes content to files, while the other generates content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this after generate_store_listing to write content directly to fastlane metadata files,' providing a clear when-to-use and an alternative (generate_store_listing for generation, this for writing). This guides the AI agent on sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_androidA
Publish the app to Google Play Store using fastlane supply. Requires fastlane to be installed and configured.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the app project directory (must contain fastlane/ directory) | |
| aabPath | No | Path to the AAB (Android App Bundle) file to upload | |
| track | No | Release track: internal, alpha, beta, production (default: production) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the dependency on fastlane but does not mention potential side effects (e.g., overwriting existing releases), required permissions, rate limits, or success/failure outcomes. This is minimal disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and free of redundancy. However, it could be slightly more structured (e.g., separating purpose and prerequisites). No filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema and annotations, the description should provide more context about the publishing process, potential outcomes, and error states. The current one-liner is insufficient for a tool that triggers a real-world action like publishing to the Play Store.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the input schema, so schema coverage is 100%. The description adds no extra semantic value beyond what the schema provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Publish the app to Google Play Store using fastlane supply', which clearly identifies the action (publish), the target resource (app to Google Play Store), and the method (fastlane supply). It is distinct from sibling tools like publish_ios and other Play Store management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite ('Requires fastlane to be installed and configured'), but does not specify when to use this tool over alternatives like playstore_get_tracks or the other Play Store tools. The context is clear but exclusions are lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_iosA
Publish the app to the iOS App Store using fastlane deliver. Requires fastlane to be installed and configured.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the app project directory (must contain fastlane/ directory) | |
| ipaPath | No | Path to the IPA file to upload | |
| submitForReview | No | Whether to submit for Apple review after upload (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action but does not disclose side effects, authentication needs, or what happens to existing builds. The behavioral impact is insufficiently described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, every word adds value. Front-loaded with the main purpose and prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of publishing to the App Store, the description lacks details on return values, error handling, and side effects. No output schema and no annotations; the description is too brief to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by specifying that projectDir must contain a fastlane/ directory, which is not in the schema description, raising the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Publish' and the resource 'iOS App Store' and specifies the method 'fastlane deliver'. It distinguishes from sibling tools like publish_android.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (fastlane installed and configured) but lacks explicit guidance on when to use this tool versus 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.
resize_iconsA
Resize an icon image to all required sizes for iOS and/or Android platforms. Generates Xcode-compatible Contents.json for iOS. Source image should be at least 1024x1024.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | Yes | Path to the source icon image (square, at least 1024x1024 recommended) | |
| outputDir | Yes | Output directory for resized icons | |
| platforms | No | Target platforms (default: both ios and android) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that it generates Contents.json for iOS, but does not mention behavior around overwriting, error handling, or naming conventions. Adequate but could be more detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three parameters and no output schema, the description covers the main purpose and a key requirement. Missing details about output structure, but overall sufficient for a non-complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the three parameters. The description adds no additional parameter-level meaning beyond what the schema provides, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: resizing icon images to required sizes for iOS and/or Android, including generating Contents.json for iOS. It uses specific verbs and resources, and distinguishes from sibling tools like generate_icon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key prerequisite (source image at least 1024x1024) and mentions Xcode compatibility, implying usage in iOS development contexts. However, it does not explicitly state when not to use or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_fastlaneB
Generate fastlane configuration files (Fastfile, Appfile, metadata structure) for automated iOS/Android app publishing. Includes: copyright auto-set, app_review_information, precheck_include_in_app_purchases: false, skip_app_version_update for metadata lane.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the app project directory | |
| appIdentifier | Yes | App bundle identifier (e.g., com.example.myapp) | |
| appName | Yes | App display name | |
| teamId | No | Apple Developer Team ID (for iOS) | |
| itunesConnectTeamId | No | App Store Connect Team ID (for iOS, if different from teamId) | |
| jsonKeyFile | No | Path to Google Play Console JSON key file (for Android) | |
| packageName | No | Android package name (if different from appIdentifier) | |
| copyright | No | Copyright text (default: "{year} {appName}") | |
| reviewContactEmail | No | App Review contact email address | |
| reviewContactFirstName | No | App Review contact first name | |
| reviewContactLastName | No | App Review contact last name | |
| reviewContactPhone | No | App Review contact phone number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions some defaults (copyright auto-set, app_review_information, etc.) but does not warn about potential overwrites of existing files, permission requirements, or side effects. For a file generation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and structured as a single sentence followed by a bulleted list of includes. Every part adds value without redundancy. It is easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters and no output schema, the description covers the main output files and some defaults. However, it lacks details on error handling, prerequisites (e.g., fastlane must be installed), or the exact structure created. For a complex setup tool, more context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters. The description adds some value by mentioning defaults (e.g., copyright auto-set, precheck_include_in_app_purchases: false) that are not in the schema, but it does not explain each parameter's role or provide examples. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates fastlane configuration files for automated app publishing, specifying key files (Fastfile, Appfile, metadata structure). It identifies the target platforms (iOS/Android) and the general purpose. However, it does not explicitly differentiate from sibling tools like populate_metadata or generate_store_listing, but the purpose is still specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or conditions. It lacks 'use this when...' or 'not for...' statements. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_maestroA
Install and configure Maestro CLI for mobile UI testing automation. Checks Java 17+ requirement and installs Maestro if not present. Run this first before using other maestro_* tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It mentions checking Java and installing Maestro, but lacks details on system modifications, network access, or potential side effects. Minimal but acceptable for a setup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and include key details (Java check, installation, usage order). Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters or output schema, the description adequately explains the tool's purpose and prerequisites. Could mention error handling or Java version check failure, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in the schema, so baseline is 4. The description adds no parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool installs and configures Maestro CLI for mobile UI testing, with specific actions like checking Java 17+ and installing if missing. This distinguishes it from sibling tools like maestro_run_flow or maestro_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to run this first before other maestro_* tools, providing clear usage context. No explicit when-not-to-use, but the prerequisite nature makes the guidance effective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_metadataA
Validate fastlane metadata files for App Store requirements. Checks: subtitle <= 30 chars, keywords <= 100 chars, required files present (name, description, privacy_url, support_url), copyright includes current year.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Path to the app project directory (must contain fastlane/metadata/ directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description reveals key behavioral traits: it checks specific constraints (subtitle length, keyword length, required files, copyright year). This adds context beyond the schema, though it doesn't explicitly state whether the tool is read-only or modifies anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences with the first stating purpose and the second listing checks. No redundant information, effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the validation checks but lacks information about return values or error handling. Since no output schema is provided, the agent is left guessing the output format. For a simple tool, this gap reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (only one parameter described). The description's parameter info ('must contain fastlane/metadata/ directory') matches the schema's description, so no additional meaning is provided. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: validating fastlane metadata files against App Store requirements. It uses a specific verb ('validate') and resource ('fastlane metadata files for App Store'), and distinguishes itself from siblings like 'populate_metadata' by focusing on validation rather than generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage during App Store preparation but does not explicitly state when to use this tool versus alternatives like 'populate_metadata' or 'publish_ios'. No direct guidance on when not to use it is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, grouped by domain (admob, playstore, maestro, etc.) with unique verbs and nouns. Overlapping actions like maestro_run_flow and maestro_run_yaml are differentiated by input type, and descriptions clarify any potential confusion.
Tool names consistently follow a <domain>_<verb>_<noun> pattern, all lowercase with underscores. Configure, generate, and setup groups also maintain consistent prefixes. No mixing of conventions like camelCase or different verb styles.
With 39 tools, the server exceeds the recommended range for coherence. While the domain scope (publishing, ads, testing) justifies many tools, the sheer number risks overwhelming agents and suggests possible over-fragmentation.
The tool set covers the full publishing lifecycle: configuration, asset generation, store listing management, testing, metadata population, and publishing for both platforms. Minor gaps exist for iOS-specific store management (no direct appstore_list_images or appstore_update_listing) but core workflows are supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
Official MCP server for Lovable, the AI-powered full-stack app builder.
MCP server for NanoBanana AI image generation and editing
MCP server for Flux AI image generation
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAI-powered SVG icon generation MCP server. Generate production-ready SVG icons from text descriptions with customizable styles, sizes, and themes.446MIT
- AlicenseNot gradedqualityCmaintenanceA TypeScript-based MCP server for generating custom images and icons using AI (GPT Image 1), supporting .png, .svg, and .ico formats, and designed for seamless integration with Vibe Coding.174MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to generate and edit professional web assets using OpenRouter's Nano Banana Pro image generation model, with support for asset packs, brand consistency, and advanced image editing.
- AlicenseNot gradedqualityDmaintenanceMCP server that bridges design and code by generating UI components, layouts, and themes from text prompts using v0.dev, with features like code refactoring and accessibility auditing.171MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/seungmanchoi/app-publisher-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server