Tool reference
Every MCP tool exposed by the Asomium server — auto-generated from the registry.
The Asomium MCP server exposes 35 tools. Each maps to one action you can also take in the Mac app; the MCP server is a thin adapter that exposes them over stdio to MCP-aware clients (Claude Code, Claude Desktop, Cursor, Windsurf).
See MCP overview for the architecture, Auth & local state for how credentials reach the server, and Connect ASC for the one-time App Store Connect setup.
Discovery & ASO
asomium_competitor_intel
Pull a competitor app’s public metadata + screenshots from the App Store. Uses Apple’s public iTunes Search / Lookup API — no App Store Connect credentials required and doesn’t touch your apps. Useful for inspiration, gap analysis, and tracking what other apps in your category are shipping. Pass either bundleId, appId (numeric App Store id), or a full App Store URL.
Example prompt — Pull metadata + screenshots for net.ichi2.anki and compare to ThinkBud.
Parameters
country—string, optional. Two-letter ISO storefront code (default ‘us’). The description, price and review counts you see depend on which storefront you query.bundleId—string, optional. Bundle id of the competitor, e.g. ‘net.ichi2.anki’.appId—string, optional. Numeric App Store id, e.g. ‘373493387’.url—string, optional. Full App Store URL — id is parsed out automatically.
asomium_discover_keywords
Sweep Apple’s App Store search autocomplete for one or
more seed prefixes and return the popular completions
real users see while typing. The autocomplete index is
Apple’s own — no proprietary “search volume” estimate
— so candidates that appear across multiple seed
prefixes (probeCount > 1) and that surface at low
bestRank (1 is the first suggestion shown) are the
high-demand terms. Use to find keyword opportunities,
refine your en-US keywords field, or scope a
competitor-research push.
Example prompt — Sweep autocomplete for the seeds ‘flash’, ‘study’, ‘revis’, ‘cram’ in the US storefront and rank the top 30 candidates.
Parameters
seeds—array, required. Prefix strings to sweep. Each prefix probes Apple’s suggest endpoint and returns up to 10 suggestions; you typically want 2-6 seeds related to your domain (e.g. [‘flash’,‘study’,‘revis’,‘quizl’]).limit—integer, optional. Max number of candidates returned (default 30). Results are already sorted by composite score (probeCount DESC, bestRank ASC).country—string, optional. Two-letter storefront code. Default ‘us’.
asomium_keyword_rank
Live rank check: for the given app + keyword + country
storefront, hit Apple’s public iTunes Search API and
return where the app currently sits in the top 200 of
Apple’s search results. One-shot, no history — for
daily tracking + multi-day trend charts, set up
keyword tracking inside the Asomium Mac app (Settings
→ ASO → Add Keyword). Returns rank null when the
app isn’t in the top 200 for that term.
Example prompt — Where does ThinkBud rank for ‘flashcards’ in the UK storefront right now?
Parameters
keyword—string, required. The search term to check rank for, e.g. ‘flashcards’. Required.app—string, required. App name, bundle id, or numeric App Store id. Required.country—string, optional. Two-letter storefront code. Default ‘us’. Note: search is country-scoped, not locale-scoped — ‘us’ and ‘gb’ return different result sets even though both are English.
asomium_list_apps
List every app the configured App Store Connect API key can see. Use this first to discover what’s available before calling pull/push/expand on a specific app. Returns app id, name, bundle id, and SKU per row.
Example prompt — Show me every app this ASC key can see.
Parameters
No parameters.
Keyword tracking
asomium_list_tracked_keywords
List currently tracked keywords with their
latest rank and snapshot count. Filterable by
app / keyword / country. Set include_history: true to return the full per-entry snapshot
list (can grow large after many refreshes).
Visualization tip: the history payload is
chart-ready. In clients with React artifact
support (Claude.ai, Claude Desktop), render
directly as a multi-line recharts artifact
(one line per keyword, x = ts, y = rank,
remember rank is inverted — lower is better).
In artifact-less clients (Claude Code,
Cursor, Windsurf), pipe through
asomium_render_chart for an SVG file.
Example prompt — Show all tracked keywords for ThinkBud with their full rank history.
Parameters
keyword—string, optional. Optional. Filter to one keyword.include_history—boolean, optional. Include the full snapshot history per entry. Default false.country—string, optional. Optional. Filter to one storefront (2-letter code).app—string, optional. Optional. Filter by app — name, bundle id, or numeric ASC id.
asomium_refresh_tracked_ranks
For every tracked keyword (optionally scoped to one app), hit Apple’s search API and append a fresh rank snapshot. The on-disk store is written ONCE at the end after all polls finish — partial-failure runs preserve whatever snapshots completed before the interruption.
Best run on a cadence (manual or via a scheduled task) to build up rank history.
Example prompt — Re-poll every tracked keyword and append today’s snapshot.
Parameters
app—string, optional. Optional. Refresh only the keywords for this app — name, bundle id, or numeric ASC id.
asomium_track_keyword
Add one or more keywords to MCP’s tracking store
for an app + country, persisting in a JSON file
under ~/Library/Application Support/ReleaseKit/.
By default the tool also takes an initial rank
snapshot — set snapshot: false to skip if you
plan to refresh shortly anyway.
Tracking is MCP-side only for now. The Mac app’s SwiftData-backed keyword tracker is a separate store; a future version may unify them.
Idempotent — re-tracking the same (keyword, country) just appends another snapshot to the existing history rather than duplicating it.
Example prompt — Track ‘flashcards’, ‘spaced repetition’, and ‘study app’ for ThinkBud in US and UK.
Parameters
snapshot—boolean, optional. Take an initial rank snapshot. Default true.app—string, required. App name, bundle id, or numeric ASC app id. Required.keywords—array, optional. Multiple keywords at once.keyword—string, optional. Single keyword to track. Usekeywordsfor multiple.country—string, optional. Two-letter storefront code. Default ‘us’. Ranks are country-scoped.
asomium_untrack_keyword
Stop tracking a (keyword, country) pair for an app. Removes the entry and discards its rank history — there’s no soft-archive.
Example prompt — Stop tracking ‘cram’ for ThinkBud in the UK.
Parameters
keyword—string, required. Keyword to stop tracking. Required.app—string, required. App name, bundle id, or numeric ASC app id. Required.country—string, optional. Two-letter storefront code. Default ‘us’.
Metadata
asomium_bulk_push_metadata
Apply the same field updates to one locale across multiple apps in one call. Useful for rolling out a uniform promo / whatsNew across a portfolio. Per-app failures don’t abort the run — each is collected and returned at the end so the caller can retry just the failures.
Example prompt — Push the same en-US whatsNew to ThinkBud, ApplyIQ, and Hushly in one go.
Parameters
apps—array, required. Apps to update — names, bundle ids, or numeric ASC ids. Required.whatsNew—string, optional. What’s new in this version (≤4000 chars)name—string, optional. App name (≤30 chars)description—string, optional. Full description (≤4000 chars)promotionalText—string, optional. Promotional text (≤170 chars)subtitle—string, optional. App subtitle (≤30 chars)keywords—string, optional. Comma-separated keywords (≤100 chars)locale—string, required. ASC locale code, e.g. ‘en-US’. Required.
asomium_expand_english
Take the en-US version of selected metadata fields and copy them to en-AU, en-CA and en-GB. Creates the target localizations if they don’t already exist. Default fields are name, subtitle, description, keywords, promotional text.
Example prompt — Copy en-US name, subtitle, and promotional text to en-AU, en-CA, and en-GB.
Parameters
fields—array, optional. Optional. Subset of fields to copy. Defaults to all five.app—string, required. App name or bundle ID. Required.
asomium_pull_metadata
Fetch the current App Store Connect metadata for an app — all locales, all editable fields, current version state. Read-only; never mutates ASC.
Example prompt — Pull the current ASC metadata for ThinkBud, all locales.
Parameters
locales—array, optional. Optional. Subset of locales to fetch (e.g. [‘en-US’,‘de-DE’]). Defaults to all.app—string, required. App name (case-insensitive) or bundle ID. Required.
asomium_push_metadata
Write edits back to ASC for one locale. Pass any subset of fields you want to update; omitted fields are not touched. Validates against ASC’s character limits before sending.
Example prompt — Set the en-US whatsNew for ThinkBud to ‘Smarter SRS, smoother podcasts.’
Parameters
whatsNew—string, optional. What’s new in this version (≤4000 chars)promotionalText—string, optional. Promotional text (≤170 chars)name—string, optional. App name (≤30 chars)subtitle—string, optional. App subtitle (≤30 chars)description—string, optional. Full description (≤4000 chars)app—string, required. App name or bundle ID. Required.keywords—string, optional. Comma-separated keywords (≤100 chars)locale—string, required. ASC locale code, e.g. ‘en-US’ or ‘de-DE’. Required.
asomium_translate_field
Translate one App Store metadata field from a source
locale into one or more target locales using the
Anthropic API key configured in Asomium. Respects ASC
character limits per field (30 for name/subtitle, 100
for keywords, 170 for promotional text, 4000 for
description/whatsNew) — auto-retries with a “too long”
hint and trims at word boundary if the model still
overshoots. Returns translations as JSON for review
by default; set apply: true to push directly to ASC.
Example prompt — Translate the en-US whatsNew into de-DE, es-ES, fr-CA, it, and hr and push it.
Parameters
brand_voice—string, optional. Optional. Free-text guidance on tone (e.g. ‘playful, concise, second-person’).app—string, required. App name or bundle ID. Required.field—string(one of:name,subtitle,description,keywords,promotionalText,whatsNew), required. Which metadata field to translate.source_locale—string, optional. Source ASC locale, e.g. ‘en-US’. Default ‘en-US’.target_locales—array, required. Target ASC locales, e.g. [‘de-DE’,‘fr-FR’]. Required.protected_terms—array, optional. Optional. Terms to preserve verbatim (brand names, product names like ‘FlashCards’).apply—boolean, optional. If true, push translations to ASC immediately. Defaults to false — review JSON first.
asomium_validate_metadata
Dry-run validation of the editable AppStoreVersion + AppInfo localizations against ASC’s per-field rules. Per (locale, field), reports: · ERROR — exceeds Apple’s char limit, or required field is empty (name, description). · WARN — recommended field is empty (subtitle, keywords, whatsNew). No writes. Use before bulk push / translate to catch char-limit overruns that would otherwise leave a locale set half-updated.
Example prompt — Validate ThinkBud’s editable version metadata before I push — flag char-limit overruns.
Parameters
app—string, required. App name (case-insensitive) or bundle ID. Required.locales—array, optional. Optional. Subset of locales to validate (e.g. [‘en-US’,‘de-DE’]). Defaults to all.
Snapshots & diff
asomium_diff_metadata
Compare a saved snapshot against the live ASC
metadata (or against another snapshot, via
against_snapshot). Returns per-(locale, field)
changes plus locale add/remove deltas. Tracked
fields: name, subtitle, description, keywords,
promotionalText, whatsNew, supportUrl,
marketingUrl.
Example prompt — Diff ThinkBud’s ‘pre-2.4.4’ snapshot against the live ASC state.
Parameters
against_snapshot—string, optional. Optional. Another snapshot name to diff against (theafterside). Default: live ASC state.app—string, required. App name, bundle id, or numeric ASC app id. Required.snapshot—string, required. Snapshot name (thebeforeside of the diff). Required.
asomium_list_metadata_snapshots
List all saved metadata snapshots for an app, newest first.
Example prompt — List every saved snapshot for ThinkBud.
Parameters
app—string, required. App name, bundle id, or numeric ASC app id. Required.
asomium_snapshot_metadata
Save the app’s current ASC metadata to a local
JSON file under
~/Library/Application Support/ReleaseKit/...,
named for easy retrieval. Default name is an
ISO-8601 timestamp. The payload shape matches
asomium_pull_metadata so snapshots can be
diffed against each other or against live ASC.
Example prompt — Take a snapshot of ThinkBud’s current metadata named ‘pre-2.4.4’.
Parameters
app—string, required. App name, bundle id, or numeric ASC app id. Required.name—string, optional. Snapshot name (filename-safe). Defaults to ISO-8601 timestamp.
App info
asomium_update_app_categories
PATCH the editable AppInfo’s primary and/or secondary category. Category ids are Apple’s slug strings: BOOKS, BUSINESS, DEVELOPER_TOOLS, EDUCATION, ENTERTAINMENT, FINANCE, FOOD_AND_DRINK, GAMES, GRAPHICS_AND_DESIGN, HEALTH_AND_FITNESS, LIFESTYLE, MAGAZINES_AND_NEWSPAPERS, MEDICAL, MUSIC, NAVIGATION, NEWS, PHOTO_AND_VIDEO, PRODUCTIVITY, REFERENCE, SHOPPING, SOCIAL_NETWORKING, SPORTS, STICKERS, TRAVEL, UTILITIES, WEATHER.
Works only while AppInfo is in an editable state (PREPARE_FOR_SUBMISSION or a rejected flavour). Game subcategories not yet exposed.
Example prompt — Set ThinkBud’s primary category to EDUCATION and secondary to PRODUCTIVITY.
Parameters
primary_category—string, optional. Apple category id (uppercase slug). Optional — omit to leave unchanged.app—string, required. App name, bundle id, or numeric ASC app id. Required.secondary_category—string, optional. Apple category id (uppercase slug). Optional.
asomium_update_app_privacy
Set per-locale privacy fields on an
AppInfoLocalization: privacy_url, optional
privacy_choices_url, and optional
privacy_policy_text (some apps need an
in-app policy text when no URL is provided).
The locale must already exist on the AppInfo
— create it with push_metadata first if not.
Example prompt — Set ThinkBud’s en-US privacy URL to https://nativefirstapp.com/privacy.
Parameters
privacy_policy_text—string, optional. Optional. In-app privacy policy text for kids-category apps.privacy_choices_url—string, optional. Optional. URL to a privacy-choices page (data deletion / opt-out).app—string, required. App name, bundle id, or numeric ASC app id. Required.locale—string, required. ASC locale code, e.g. ‘en-US’. Required.privacy_url—string, optional. URL to the privacy policy.
Reviews
asomium_respond_to_review
Post a developer response to a customer review. Apple caps the body at 5970 characters; validated client-side. Each review can have one response — posting a second time returns DUPLICATE, which the tool surfaces with a hint pointing the user to ASC web UI for edits (PATCH on response isn’t yet exposed).
Get review ids by first calling
asomium_review_status — its recentReviews
array now includes id for each review.
Example prompt — Reply to review [reviewId] thanking them for the feedback and explaining we shipped the fix in 2.4.4.
Parameters
body—string, required. Response text. Up to 5970 chars. Required.review_id—string, required. Customer review id from asomium_review_status (or from the ASC web UI URL). Required.
asomium_review_status
Inspect an app’s current App Store Connect review status — especially useful for diagnosing a rejection. Returns the most recent version’s state (with the rejection type explained if applicable — DEVELOPER_REJECTED, METADATA_REJECTED, INVALID_BINARY, or REJECTED), a timeline of recent version states, the most recent customer reviews (which often reveal what triggered Apple’s reviewer), and a deep link to the Resolution Center where Apple writes the actual rejection message — that exact text is NOT exposed via the public ASC API, only via the web UI.
Visualization tip: recentReviews makes a great
rating-distribution chart (bar of 1-5 stars
counted) or a sentiment-over-time timeline. In
artifact-capable clients (Claude.ai, Claude
Desktop), render directly; in others pipe through
asomium_render_chart.
Example prompt — What state is ThinkBud’s latest version in, and what are the last 20 customer reviews?
Parameters
reviewLimit—integer, optional. How many recent customer reviews to fetch. Default 10, max 50.app—string, required. App name, bundle id, or numeric ASC app id. Required.
Build & ship
asomium_build_and_ship
Run the App Store Connect ship pipeline: xcodebuild archive → exportArchive → altool upload. Per-app build config (Xcode project path, scheme, platform, configuration) is read from the JSON handoff file the Asomium Mac app writes whenever the user edits Settings → <app> → Build & Ship in the GUI. If the app has no saved build config the tool errors with a pointer to that screen.
Default: upload only — the build lands on Apple’s CDN and the tool returns in 2-5 minutes. Apple processes the build server-side (typically 5-15 min) before it can be attached and submitted.
Set submit: true to chain straight into
submit-for-review after the upload completes — the
tool polls ASC for processing to finish, declares
export compliance, attaches the build to the
editable AppStoreVersion, and flips
submitted: true. Total wall time runs 10-35 min.
Runs synchronously. Long-lived MCP tool calls hold the connection open until completion; expect your AI client to show a spinner the whole time.
Example prompt — Build and upload ThinkBud, then submit for review when the build is VALID.
Parameters
submit—boolean, optional. If true, after upload poll ASC until the build is VALID, then declare export compliance, attach to the editable AppStoreVersion, and submit for review. Defaults to false (upload only).poll_minutes—integer, optional. Only honoured with submit:true. Maximum minutes to wait for ASC to finish processing the build before submit. Clamped to [1, 90]. Default 30.app—string, required. App name, bundle id, or numeric ASC app id. Required.
asomium_create_version
Create a new AppStoreVersion on ASC for an app — the ”+ Version” step before any metadata edits or build submissions can happen for a new release. If a version with the same string already exists for the same platform, returns the existing one (idempotent). Defaults to iOS; pass platform explicitly for macOS / tvOS / visionOS apps.
Example prompt — Create version 2.4.5 for ThinkBud on iOS.
Parameters
version—string, required. Marketing version string, e.g. ‘2.4.4’. Must be greater than the current live version. Required.platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform code. Defaults to IOS.app—string, required. App name, bundle id, or numeric ASC app id. Required.
asomium_list_builds
List recent uploaded builds for an app, with their processing state and export-compliance status. Filter by platform and/or marketing version. Read-only.
Example prompt — Show me ThinkBud’s last 10 iOS builds and their processing states.
Parameters
platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. Optional. Restrict to one platform.marketing_version—string, optional. Optional. Restrict to builds matching a specific marketing version (e.g. ‘2.4.4’).app—string, required. App name, bundle id, or numeric ASC app id. Required.limit—integer, optional. Number of builds to return. Default 20. Capped at 200.
asomium_submit_for_review
Finish the post-upload pipeline for an app that already has an editable AppStoreVersion and an uploaded build. Mirrors the Submit-for-Review flow in the Asomium Mac app:
- Locate the editable AppStoreVersion for the requested platform.
- Poll
/v1/buildsuntil the newest build matching that platform + marketing version is VALID (or surface FAILED/INVALID terminal states). - PATCH
usesNonExemptEncryption: falseon the build if compliance isn’t declared. - Attach the build to the AppStoreVersion.
- Find or create a draft Review Submission for the app + platform.
- Attach the version as a submission item.
- Flip
submitted: true— Apple takes over.
Use this after asomium_build_and_ship (without submit:true), or when a build was uploaded via the Asomium GUI or another machine and you want Claude to drive the final submit.
Runs synchronously. The poll loop dominates wall
time — give it up to poll_minutes (default 30)
for Apple to finish processing the build.
Example prompt — Finish the submit pipeline for ThinkBud — wait up to 30 min for the build to process if needed.
Parameters
platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform code. Defaults to IOS.app—string, required. App name, bundle id, or numeric ASC app id. Required.poll_minutes—integer, optional. Maximum minutes to wait for ASC processing. Clamped to [1, 90]. Default 30.wait_for_processing—boolean, optional. If true, poll until the newest build for this platform+version reaches VALID. If false, fail fast when there’s no VALID build yet. Default true.
Release control
asomium_phased_release_control
Inspect or control an active phased rollout. Auto-discovers the version that has a phased-release resource attached on the requested platform, then applies the action:
· status → fetch current state + day · pause → PATCH state=PAUSED · resume → PATCH state=ACTIVE · release_to_all → PATCH state=COMPLETE · cancel → DELETE the phased resource
release_to_all ships the new version to all
users early. cancel skips the staged rollout
entirely (next App Store visit serves the new
version to everyone).
Example prompt — Pause the phased rollout for ThinkBud on iOS — we’re seeing a crash on day 2.
Parameters
app—string, required. App name, bundle id, or numeric ASC app id. Required.platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform. Default IOS.action—string(one of:status,pause,resume,release_to_all,cancel), required. Action to perform. Required.
asomium_release_now
Trigger developer-driven release for the
AppStoreVersion sitting in
PENDING_DEVELOPER_RELEASE on the requested
platform. Use after Apple approves a version
that has releaseType: MANUAL. Errors with
helpful state info if no version is waiting.
Example prompt — Release ThinkBud’s approved iOS version to users now.
Parameters
app—string, required. App name, bundle id, or numeric ASC app id. Required.platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform. Default IOS.
asomium_set_release_strategy
Configure how the editable AppStoreVersion is
released once Apple approves it. PATCHes
releaseType on the version and creates or
deletes a phased-release resource so the on-ASC
state matches the strategy you pick:
· manual → MANUAL, no phased rollout · automatic → AFTER_APPROVAL, no phased · phased → AFTER_APPROVAL + 7-day phased · scheduled → SCHEDULED + earliest_release_date
Operates on whichever version is currently editable for the requested platform.
Example prompt — Set ThinkBud’s release strategy to phased rollout on iOS.
Parameters
strategy—string(one of:manual,automatic,phased,scheduled), required. Release strategy. Required.app—string, required. App name, bundle id, or numeric ASC app id. Required.earliest_release_date—string, optional. Required for strategy=scheduled. ISO 8601 timestamp, e.g. ‘2026-06-01T12:00:00Z’.platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform. Default IOS.
Assets
asomium_upload_screenshots
Upload screenshot image files to the editable AppStoreVersion across any number of locales / display types in one call. Each upload entry bundles a locale + display type (e.g. APP_IPHONE_67) + a list of absolute file paths. The tool delegates to the same ScreenshotPusher the Mac app uses — reservation, byte upload, commit, and per-set append/replace semantics behave identically.
Apple validates pixel dimensions per display_type after upload — wrong-size images fail at commit, not pre-flight. Display type codes are the same strings ASC uses internally (APP_IPHONE_67, APP_IPHONE_65, APP_IPAD_PRO_3GEN_129, APP_DESKTOP, APP_APPLE_VISION_PRO, etc.).
Example prompt — Upload screenshots/iphone67/.png to the en-US APP_IPHONE_67 set, replacing the existing screenshots.*
Parameters
app—string, required. App name, bundle id, or numeric ASC app id. Required.platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform code. Default IOS.uploads—array, required. Required. Array of upload groups.mode—string(one of:append,replace_set), optional.append(default) leaves the existing screenshots in each touched set and adds new ones;replace_setdeletes the existing set first.
Monetization
asomium_list_iaps
List the app’s in-app purchases via the
inAppPurchasesV2 endpoint — one-time
consumables, non-consumables, and
non-renewing subscriptions. Auto-renewing
subscriptions live under a separate resource
family (subscriptionGroups → subscriptions)
and are not listed here.
Example prompt — List every in-app purchase configured for ThinkBud.
Parameters
app—string, required. App name, bundle id, or numeric ASC app id. Required.limit—integer, optional. Max IAPs to return. Default 50, capped at 200.
asomium_list_in_app_events
List the app’s in-app events (IAEs) — Apple’s time-bounded App Store promotions. Returns each event’s badge, state, primary locale, deep-link URL, purchase requirement, and the event/publish time windows.
Example prompt — Show ThinkBud’s current and upcoming in-app events.
Parameters
limit—integer, optional. Max events to return. Default 50, capped at 50 server-side.app—string, required. App name, bundle id, or numeric ASC app id. Required.
Analytics
asomium_get_sales_report
Fetch an Apple Sales and Trends report — gzipped TSV body, decompressed and aggregated server-side. Returns total units sold and proceeds-by-currency (Apple reports each territory in its local currency, so per-currency breakdown is more useful than a fake combined total).
Vendor number is the developer team’s id, NOT
the app id. Find it in App Store Connect →
Payments and Financial Reports footer. Pass via
vendor_number arg or set
ASOMIUM_ASC_VENDOR_NUMBER in the environment
Claude Code launches the MCP server with.
Availability: DAILY at T+1, WEEKLY on the
Sunday after the reporting week, MONTHLY on
the 5th of the following month. Default
report_date is yesterday in Pacific Time
(Apple’s reporting calendar).
Set include_rows: true to get the full
parsed TSV back; default returns only totals
- row count to keep responses small.
Visualization tip: the totals payload
(units + proceedsByCurrency) and the per-row
breakdown (with include_rows: true) are
chart-ready. In Claude.ai / Desktop, render
as a recharts artifact (bar per currency or
pie per country). In artifact-less clients,
pipe through asomium_render_chart.
Example prompt — Pull yesterday’s SALES SUMMARY for vendor 1234567 and tell me total units + proceeds by currency.
Parameters
report_type—string(one of:SALES,PRE_ORDER,SUBSCRIPTION,SUBSCRIPTION_EVENT,SUBSCRIBER,SUBSCRIPTION_OFFER_CODE_REDEMPTION,NEWSSTAND), optional. Apple report type. Default SALES.report_date—string, optional. YYYY-MM-DD. Default: yesterday in Pacific Time. For WEEKLY pass the Sunday end date; for MONTHLY pass YYYY-MM.frequency—string(one of:DAILY,WEEKLY,MONTHLY,YEARLY), optional. Reporting cadence. Default DAILY.vendor_number—string, optional. Developer team vendor number. Falls back to ASOMIUM_ASC_VENDOR_NUMBER env var if omitted.include_rows—boolean, optional. If true, include the full parsed TSV rows. Default false (totals + row count only).report_subtype—string(one of:SUMMARY,DETAILED,OPT_IN), optional. Apple report sub-type. Default SUMMARY.
Visualization
asomium_dashboard
Composite “executive summary” for one app — fans out 4-6 ASC + local reads in parallel and returns a single payload sized for one dashboard render. Sections:
· app identity + current version state · recent builds + processing-state counts · tracked keywords with latest rank, 30-day delta, and last-60-snapshot series for sparklines · reviews: average rating, 1-5 star distribution histogram, last N reviews · phased rollout (if active on the current version) · daily sales totals (if vendor_number provided or ASOMIUM_ASC_VENDOR_NUMBER env set)
Designed for one-shot dashboard rendering: in Claude.ai / Claude Desktop, the LLM should generate a single React artifact with one card per section (recharts for the sparklines + distribution). In terminal clients, summarise in markdown sections.
Wall time ≈ slowest single ASC call (~500ms) thanks to parallel fan-out, not the sum of all reads.
Example prompt — Pull the full health dashboard for ThinkBud on iOS — version state, builds, keyword ranks, reviews — and render it as one artifact.
Parameters
vendor_number—string, optional. Optional. Adds yesterday’s SALES SUMMARY to the dashboard. Falls back to ASOMIUM_ASC_VENDOR_NUMBER env var.build_limit—integer, optional. Max recent builds to include. Default 5, capped at 50.platform—string(one of:IOS,MAC_OS,TV_OS,VISION_OS), optional. ASC platform. Default IOS.app—string, required. App name, bundle id, or numeric ASC app id. Required.review_limit—integer, optional. Max recent reviews to include. Default 10, capped at 50.
asomium_render_chart
Render a line or bar chart from a generic data
spec and return both raw SVG and a markdown-
image-with-data-URI string. Composes nicely
with other tools: call
list_tracked_keywords(include_history: true)
or get_sales_report(include_rows: true),
shape the result into series[].points[], then
render. Multi-series charts get colour-coded
legend automatically.
For clients that render markdown images
(Claude Desktop, Claude.ai) embed the
markdownImage field directly in a reply. For
terminal clients, save svg to a .svg file
and open it.
Example prompt — Refresh ThinkBud’s tracked keyword ranks, then chart the last 30 days as a multi-line graph.
Parameters
y_label—string, optional. Y-axis label.x_label—string, optional. X-axis label.height—integer, optional. SVG height in pixels. Default 420.type—string(one of:line,bar), optional. Chart type. Default ‘line’.title—string, optional. Chart title, shown at top.series—array, required. One or more data series. Multi-series gets a legend automatically.width—integer, optional. SVG width in pixels. Default 800.
Account
asomium_usage_status
Show this month’s MCP usage counters — currently
just translate_field calls (other tools don’t
hit an LLM and aren’t tracked). If
ASOMIUM_MONTHLY_QUOTA is set in the MCP server’s
environment, returns remaining headroom too.
The counter auto-resets at the calendar month
boundary; the on-disk file lives at
~/Library/Application Support/ReleaseKit/com.mariopek.releasekit/usage-counter.json.
Example prompt — How many translate calls have I used this month?
Parameters
No parameters.
Every tool returns a structured JSON result an LLM can reason about, plus a human-readable summary field the model can paraphrase back to the user.
Last updated