storekit-verify-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
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: webhook-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
Test and debug your AI agent's Web Bot Auth (RFC 9421) signature: is it valid, and what to fix?
Verify Bitcoin PSBTs, addresses, and BIP380 descriptors; earn or spend WorkSats L402 bearer credits.
Verify Seal AI decision receipts: signed evidence anyone can check, no account needed.
Verify Attest agreements, stamp codes, receipts, proofs and SHA-256 fingerprints, with no sign-in.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP 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.495 npm6Apache 2.0
- AlicenseAqualityCmaintenanceProvides timing-safe, replay-resistant webhook signature verification for Stripe, GitHub, Slack, Shopify, and Twilio, returning valid/invalid with precise failure reasons.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to validate SSL/TLS certificates, monitor expiration, verify certificate chains, assess security posture, and receive A-F security grades, with micropayment-protected access via x402.MIT
- AlicenseNot gradedqualityBmaintenanceEnables secure ingestion and validation of payment webhooks using HMAC-SHA256 signatures, replay tolerance, and atomic idempotency locking to prevent duplicate financial transactions. It provides deterministic ledger integrity and risk auditing for autonomous financial agents and payment rails.7MIT