MCP
MCP Tools Reference
Complete reference for all Stora MCP tools — inputs, outputs, and examples.
MCP Tools Reference#
The Stora MCP server exposes 10 tools. This page documents each tool's purpose, inputs, outputs, and usage examples.
stora_list_projects#
List all projects in your Stora account.
Inputs#
This tool takes no inputs.
Output#
Returns an array of project objects, each containing id, name, mobilePlatform, description, fullName, appIconUrl, and createdAt.
Example#
"List my Stora projects."
Returns:
[
{
"id": "proj_abc123",
"name": "Versed",
"mobilePlatform": "ios",
"description": "Language learning app",
"fullName": "carlton/versed-app",
"appIconUrl": "https://stora.sh/icons/proj_abc123.png",
"createdAt": "2026-01-15T10:30:00Z"
}
]
stora_generate_screenshots#
Trigger a screenshot capture for a project. This is an asynchronous operation — it returns a collectionId immediately. Poll with stora_get_screenshots to check progress and retrieve results.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID to generate screenshots for. |
| platforms | string[] | No | Target platforms. Options: ios, android. Defaults to the project platform. |
| device_sizes | string[] | No | Device sizes to capture, e.g. 6.7 inch, 6.5 inch, 5.5 inch. Defaults to all required sizes. |
| locale | string | No | Locale for the screenshots. For example: en-US, ja. Defaults to the project primary locale. |
Output#
Returns an object with collectionId and status ("capturing").
Example#
"Generate iOS screenshots for project proj_abc123 in English and Japanese."
Returns:
{
"collectionId": "col_xyz789",
"status": "capturing"
}
Note: Screenshot generation typically takes 1-3 minutes depending on the number of screens and device sizes. The MCP client will automatically poll for results.
stora_get_screenshots#
Get the status and results of a screenshot collection.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID. |
| collection_id | string | Yes | The collection ID returned by stora_generate_screenshots. |
Output#
Returns an object with status ("capturing", "processing", "completed", "failed"), and when completed, an array of screenshots with url, deviceSize, screenName, and locale.
Example#
"Check the status of screenshot collection col_xyz789."
Returns:
{
"status": "completed",
"screenshots": [
{
"url": "https://stora.sh/screenshots/col_xyz789/home-6.7.png",
"deviceSize": "6.7\"",
"screenName": "Home",
"locale": "en-US"
}
]
}
stora_get_metadata#
Get the current App Store / Google Play metadata for a project.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID. |
| locale | string | No | Locale to retrieve metadata for. Defaults to the project primary locale. |
Output#
Returns a metadata object with fields including name, subtitle, description, keywords, promotionalText, whatsNew, and category.
Example#
"Get the metadata for Versed."
Returns:
{
"name": "Versed - Language Learning",
"subtitle": "Master any language with AI",
"description": "Versed uses spaced repetition and AI...",
"keywords": "language,learning,flashcards,AI,vocabulary",
"promotionalText": "New: Japanese course available!",
"whatsNew": "Bug fixes and performance improvements.",
"category": "Education"
}
stora_update_metadata#
Update one or more metadata fields for a project.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID. |
| fields | object | Yes | An object of metadata fields to update. Keys can include: name, subtitle, description, keywords, promotionalText, whatsNew. |
| locale | string | No | Locale to update metadata for. Defaults to the project primary locale. |
Output#
Returns the updated metadata object.
Example#
"Update the subtitle for Versed to 'Learn languages with AI flashcards'."
The tool receives:
{
"project_id": "proj_abc123",
"fields": {
"subtitle": "Learn languages with AI flashcards"
}
}
stora_check_compliance#
Trigger a compliance scan for a project. This is asynchronous — it returns a scanId immediately. Poll with stora_get_compliance_results to get results.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID to scan. |
Output#
Returns an object with scanId and status ("scanning").
Example#
"Run a compliance check on Versed."
Returns:
{
"scanId": "scan_def456",
"status": "scanning"
}
stora_get_compliance_results#
Get the results of a compliance scan.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID. |
| scan_id | string | Yes | The scan ID returned by stora_check_compliance. |
Output#
Returns an object with status, overallScore (0-100), an array of issues (each with severity, category, title, description, recommendation), and submissionReadiness ("ready", "needs_review", "not_ready").
Example#
"Get the compliance results for scan scan_def456."
Returns:
{
"status": "completed",
"overallScore": 87,
"issues": [
{
"severity": "warning",
"category": "privacy",
"title": "Privacy policy URL not detected",
"description": "No privacy policy link was found in the app.",
"recommendation": "Add a privacy policy URL in your app settings and in the App Store metadata."
}
],
"submissionReadiness": "needs_review"
}
stora_submit#
Submit a project to the App Store, Google Play, or both.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID to submit. |
| store | string | Yes | Target store. Options: 'app_store', 'play_store', 'both'. |
| dry_run | boolean | No | If true, validates the submission without actually submitting. Defaults to false. |
Output#
Returns an object with submissionId, status, and store. In dry-run mode, returns validation results instead.
Example#
"Do a dry-run submission of Versed to the App Store."
Returns:
{
"submissionId": "sub_ghi012",
"status": "validated",
"store": "app_store",
"dryRun": true,
"validationResults": {
"passed": true,
"warnings": ["Consider adding more keywords."]
}
}
Warning: Without
dry_run: true, this tool will submit your app for real. Make sure your screenshots, metadata, and compliance checks are all in order before submitting.
stora_get_status#
Get the current review status for a project's most recent submission.
Inputs#
| Name | Type | Required | Description |
|------|------|----------|-------------|
| project_id | string | Yes | The project ID. |
Output#
Returns an object with store, status (e.g., "waiting_for_review", "in_review", "approved", "rejected"), submittedAt, and additional details depending on the state.
Example#
"What's the review status for Versed?"
Returns:
{
"store": "app_store",
"status": "in_review",
"submittedAt": "2026-03-27T14:00:00Z",
"estimatedReviewTime": "24-48 hours"
}