Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,331counted just now
teppi

Server definition

Hash
sha256:094e289c495e60ba242510e18eae8c15c837190caeed8c71b8aca49ef1c4f7a6
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": "ShipASO exposes read-only ASO data and the proof surfaces as tools. Tools audit, check ranks, find keyword gaps, and draft optimized copy — but NEVER publish. Pushing a change to the App Store is a human-approved step inside ShipASO; no tool here writes to the store. `propose_copy` returns a draft only.", "tools": [ { "description": "Read-only listing audit: prioritized findings (severity + impact) plus a summary, derived from the live public listing. Read-only — never edits or pushes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "type": "object" }, "name": "audit_app", "outputSchema": null }, { "description": "Read-only GOOGLE PLAY listing audit: screenshot grade, the 30/80/4000 title/short/long-description budget, target-term coverage in the long description (Play's keyword surface), a keyword-stuffing guard, prioritized findings + summary, and capability locks for surfaces a public read can't see. Takes a Play package id (com.foo.bar) or a play.google.com URL — NOT a free-text name (Play has no public name search). Play has NO keyword field. Reads public Play data only; never edits or pushes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "brand": { "description": "App brand name, so brand-burn in the short description is flagged", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "packageName": { "description": "Exact Play package id (skips resolution)", "type": "string" }, "query": { "description": "Google Play package id (com.foo.bar) or a play.google.com app URL", "type": "string" }, "targets": { "description": "Target search terms to measure long-description coverage for", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "name": "audit_play_app", "outputSchema": null }, { "description": "Read-only audit of YOUR OWN Google Play app via the official Play Developer API — full fidelity including the short description (which the public page can't show), with NO capability locks. Requires a configured Play service account (GOOGLE_PLAY_SERVICE_ACCOUNT). Reads only — it opens and DISCARDS a Play 'edit' and NEVER commits, so it can't publish. Owner-only; for a competitor use audit_play_app.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "brand": { "description": "App brand name, so short-description brand-burn is flagged", "type": "string" }, "language": { "description": "BCP-47 listing language, e.g. en-US", "type": "string" }, "packageName": { "description": "Your app's Play package id, e.g. com.foo.bar", "type": "string" }, "targets": { "description": "Target search terms to measure long-description coverage for", "items": { "type": "string" }, "type": "array" } }, "required": [ "packageName" ], "type": "object" }, "name": "audit_play_app_owner", "outputSchema": null }, { "description": "Read-only competitor diff: resolves the named competitors and reports their current listings, what changed vs. the last seen state, and a digest line. Read-only metadata comparison; no ranking-algorithm data is invented.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "competitors": { "description": "Competitor app names or bundle ids to compare against", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "required": [ "competitors" ], "type": "object" }, "name": "competitor_watch", "outputSchema": null }, { "description": "Read-only keyword opportunities: terms tracked competitors VISIBLY use that this app doesn't target and doesn't rank top-50 for, sorted by winnability. Inferred from competitor name/subtitle only — never their ranking algorithm.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "type": "object" }, "name": "keyword_gaps", "outputSchema": null }, { "description": "Read-only localization expansion recommendations (ROI-sorted locales to add) for one of YOUR connected apps, from its most recent App Store Connect run. A static, bundled heuristic over the locales already read — no live install data is fabricated. Empty until you've run an ASC-connected pass.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "appId": { "description": "Id of a connected app you own", "type": "string" } }, "required": [ "appId" ], "type": "object" }, "name": "localization_gaps", "outputSchema": null }, { "description": "Read-only ASO snapshot of any App Store app (grade, lead rank, top-10 count, sample). No account or store push — the optimized copy + push commands stay behind the human-approved loop. Works without a key.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "type": "object" }, "name": "preview_app", "outputSchema": null }, { "description": "Read-only, anonymized aggregate proof across all tracked apps (real rank-win numbers — no app names, no user data). This is the 'prove the rank moved' surface that closes the prepare → approve → push → prove loop. Works without a key.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "proof", "outputSchema": null }, { "description": "Returns a DRAFT optimized listing (name/subtitle/keywords/description) with validation for any app. THIS IS A DRAFT ONLY: it does NOT persist a proposal and does NOT push to the App Store. Publishing stays a human-approved action in ShipASO — an agent can draft and read; only a human approves and pushes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "type": "object" }, "name": "propose_copy", "outputSchema": null }, { "description": "Read-only organic rank check across the app's target keywords, plus winnability-ranked opportunities computed from those measured positions. Positions are live-measured, never fabricated.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "type": "object" }, "name": "rank_check", "outputSchema": null }, { "description": "Read-only screenshot scoring for the app's live store gallery (count, score, grade, levers to improve). Read-only — never uploads or pushes assets.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bundleId": { "description": "Exact bundle id (skips resolution)", "type": "string" }, "country": { "description": "ISO country storefront, e.g. US", "maxLength": 2, "minLength": 2, "type": "string" }, "query": { "description": "App name, App Store URL, numeric id, or bundle id", "type": "string" } }, "type": "object" }, "name": "screenshot_coverage", "outputSchema": null }, { "description": "Read-only head-to-head rank war room for one of YOUR connected apps: your tracked-keyword rank history vs. live competitor positions on those same keywords. Reads stored data + live competitor ranks; writes nothing.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "appId": { "description": "Id of a connected app you own", "type": "string" }, "competitors": { "description": "Competitor names to compare (max 4)", "items": { "type": "string" }, "type": "array" } }, "required": [ "appId" ], "type": "object" }, "name": "war_room", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:094e289c495e60ba242510e18eae8c15c837190caeed8c71b8aca49ef1c4f7a6 | sha256sum