Forget Fastlane, this is the app stores coolest API.
Runs on your machine from its package; the steps are below.
Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Distributed via cargo as `smbcloud-ascapi-cli`.
smbcloud-ascapi is the app stores coolest API.
Eight crates, split by domain and layered so neither front end can drift from the other:
| Crate | What it is |
|---|---|
smbcloud-ascapi-core | Shared transport: JWT auth, the HTTP client, JSON:API envelopes, error types |
smbcloud-ascapi-aso | App Metadata: apps, app infos, versions, builds, pre-release versions, review submissions, bundle IDs, localizations, screenshots |
smbcloud-ascapi-pricing | Pricing: app price schedules, and the per-territory prices joined with their price points and currencies |
smbcloud-ascapi-signing | Code signing: certificates and provisioning profiles, plus local RSA key pair and CSR generation |
smbcloud-ascapi-reports | Sales reports: account-level sales data, as Apple's gzip-compressed TSV |
smbcloud-ascapi-frontend | Operations both surfaces share, so the CLI and the MCP server agree by construction, plus the CLI's xcrun altool upload |
smbcloud-ascapi-mcp | The MCP contract and stdio server |
smbcloud-ascapi-cli | The asc binary: clap command tree, plus --mcp |
aso, pricing, signing and reports know nothing about each other, and neither knows
anything about the front ends. Each adds its calls to
smbcloud_ascapi_core::Client as extension traits, since Rust only
allows inherent impls in the crate that defines a type:
use smbcloud_ascapi_core::{ApiKey, Client};
use smbcloud_ascapi_aso::prelude::*; // or pricing::prelude, signing::prelude
MCP Registry name: mcp-name: io.github.smbcloudXYZ/ascapi
© 2026 PT Sigit Mitra Bangun (smbCloud).