Skip to main content

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:

json
[
  {
    "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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

json
{
  "store": "app_store",
  "status": "in_review",
  "submittedAt": "2026-03-27T14:00:00Z",
  "estimatedReviewTime": "24-48 hours"
}