storekit-verify-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@storekit-verify-mcpVerify this App Store webhook body and tell me if it's authentic."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
storekit-verify-mcp
Decode and cryptographically verify Apple App Store Server Notifications V2 — as an MCP server and a CLI.
Apple delivers subscription webhooks (SUBSCRIBED, DID_RENEW, EXPIRED, REFUND, …) as signed JWS payloads. Verifying them properly means checking the ES256 signature, walking a 3-certificate chain to a pinned Apple root, checking Apple's policy OIDs, and doing it again for the nested transaction and renewal payloads. Most servers either skip verification entirely or trust a decode. This tool does it right, and explains what each notification means while it's at it.
I built this logic for Talli, my live App Store app, where server-side webhook verification drives subscription entitlements. This is that experience packaged as a standalone tool.
What it checks
✅ ES256 signature of the outer
signedPayloadand the nestedsignedTransactionInfo/signedRenewalInfo✅ Full x5c chain: leaf → intermediate → root, each link's signature verified
✅ Root pinned to Apple Root CA – G3 (bundled, SHA-256 fingerprint documented in source)
✅ Apple's policy OIDs on the leaf (receipt signing) and intermediate (WWDR)
✅ Certificate validity windows at the payload's
signedDate✅ Optional
bundleIdandenvironment(Sandbox/Production) assertions
Related MCP server: meok-attestation-verify
MCP server
Add to Claude Code:
claude mcp add storekit-verify -- npx -y github:tranzen21/storekit-verify-mcpOr any MCP client:
{
"mcpServers": {
"storekit-verify": {
"command": "npx",
"args": ["-y", "github:tranzen21/storekit-verify-mcp"]
}
}
}Tools
Tool | What it does |
| Full cryptographic verification → |
| Decode without verification (inspect payloads fast) |
| Decode a single signed transaction/renewal JWS |
| What a |
Ask your agent things like "verify this webhook body and tell me if I should revoke entitlement" — it can decode, verify, and explain in one pass.
CLI
# Verify a webhook body (file or stdin). Exit code 0 = valid.
npx github:tranzen21/storekit-verify-mcp storekit-verify verify webhook.json \
--bundle-id com.example.app --environment Production
# Decode without verification
storekit-verify decode webhook.json
# What does DID_FAIL_TO_RENEW / GRACE_PERIOD mean?
storekit-verify explain DID_FAIL_TO_RENEW GRACE_PERIODLibrary
import { verifyNotification } from "storekit-verify-mcp";
const result = await verifyNotification(requestBody, {
expectedBundleId: "com.example.app",
expectedEnvironment: "Production",
});
if (!result.valid) throw new Error(result.errors.join("; "));
// result.decoded.payload.notificationType, result.decoded.transactionInfo, ...Development
npm install
npm run fixtures # generates a test CA chain (openssl) + signed sample payloads
npm test # builds + runs node:test suiteThe test suite covers: valid chain verification, root-pin rejection, mismatched-key signatures, tampered payloads, bundle/environment mismatches, expired certificates, and malformed input.
Notes
Requires Node 20+.
No network calls at runtime: the Apple root is bundled; verification is fully offline.
Not affiliated with or endorsed by Apple. For the official server library, see apple/app-store-server-library-node — this project exists to make the same verification available to MCP agents and as a zero-setup CLI.
License
MIT © Marcquin Taylor
This server cannot be deployed
Maintenance
Related MCP Connectors
Verify Seal AI decision receipts: signed evidence anyone can check, no account needed.
PaymentOracle — ES256K-signed receipts for x402 payments on USDC+EURC (Base) and XRP+RLUSD (XRPL).
Generates deterministic webhook HMAC-SHA256 fixtures and optionally verifies a supplied signature...
Post-quantum, tamper-evident receipts for agent actions. Ed25519 + ML-DSA-65, offline verify.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for offline verification of signed artifacts — receipts, manifests, and audit bundles. MIT licensed, works without accounts or API calls. Tools: self_test, verify_receipt, verify_bundle, explain_artifact.453 npm5Apache 2.0
- AlicenseNot gradedqualityCmaintenanceVerifies MEOK AI Labs compliance attestations (DORA, NIS2, CRA, EU AI Act, etc.) using HMAC-SHA256. Enables piping a signed certificate on stdin to get VALID/INVALID output.1MIT
- AlicenseAqualityCmaintenanceProvides timing-safe, replay-resistant webhook signature verification for Stripe, GitHub, Slack, Shopify, and Twilio, returning valid/invalid with precise failure reasons.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables read-only verification of Foster Rx certificates against the public Ed25519 trust anchor, returning verdicts such as verified, signature_invalid, not_found, or tool_fault, and also allows retrieval of certificate records and trust anchor material.-