cEDH Diff

Privacy Policy

Your deck stays out of analytics.

Effective October 3, 2026

This policy applies to the cEDH Diff website, iOS app, MCP server, and ChatGPT or Codex plugin published by Dmytro Polianskyi.

iPhone app

Your saved decklists, version history, and cached comparisons are stored on your iPhone. If you connect your website account, decklists, names, original source links, follows, versions and deletion records also sync to your private account library in Firebase. Cached comparisons and card images remain on each device. You can export or restore a library backup. Settings also offers removal of guest decks and the card cache; this does not erase a connected account, its collection, trade draft or scan review queue. An account is optional. The app has no advertising. Optional product analytics are described below. Sign-in providers process the authentication data described below. Device backups are controlled by your Apple settings.

You can sign in with Apple, Google, or email. Apple can provide a private relay email address instead of your personal address; we request email only. Google sign-in uses Google’s native sign-in library and system authentication flow. Email sign-in opens cedhdiff.com in a system authentication browser. A device-bound, single-use connection code expires after two minutes. Account credentials are kept in the iPhone Keychain; the temporary server connection record is deleted when redeemed or after storage cleanup. Disconnecting stops sync and keeps local decks. Settings → Delete account removes the sign-in account, shared library and collection; the app also removes that account’s local library, collection, trade draft and scan review queue and disables notifications. Data stored on other devices or in backups you exported is not remotely erased. Apple account deletion asks you to authorize removal of the Apple sign-in connection. Google account deletion asks you to sign in again to verify the account. Deleting a deck while connected also removes it from the shared library; a minimal deletion record prevents older devices from restoring it.

Our account service stores your email address (including an Apple relay address), provider identity and private library for account access and sync. We do not send these to Amplitude. Google’s sign-in service processes account and request information, including a user identifier and IP address, to provide and protect sign-in. Its bundled privacy declaration also covers identifiers and usage data for service analytics. We do not request access to your contacts, phone number, Drive files or calendar. Apple and Google process sign-in requests under their own privacy policies. You can use email instead.

Importing and comparing sends your decklist or deck URL securely to cedhdiff.com for processing. Card lookups use Scryfall and combo lookups send the deck’s card names to Commander Spellbook; a deck URL is sent to its original deck provider. We do not store these request bodies in product analytics. Hosting services process ordinary request metadata to deliver and protect the service.

Optional card alerts store a random installation identifier, a hashed authentication secret, Apple notification token, followed commander identities, and the tournament record identifiers and card names already checked. Your decklists and deck names are not part of notification registration. The latest ten alert batches retain card names, counts and the public TopDeck lists that support them. This installation-owned history is also cached on your iPhone. Apple receives the device token and a generic notification about new card names in followed records. Lock-screen notifications contain no card or deck names.

Turning notifications off clears the local alert history and removes the server-side notification token, followed commanders and alert history. If the phone is offline, cleanup retries when you reopen the app with a connection. A token-free record of the last settings revision prevents a delayed request from turning alerts back on. Inactive registrations and those minimal removal records expire after 90 days, with deletion handled by the storage service. Tournament results in Updates remain available with notifications off.

A comparison link contains the selected decklists and source details. Anyone you give the link to can read that snapshot. Text exports and library backups contain your deck data; you decide where to save or share them.

Collections, catalogue, scanning and trades

Collections record exact card printings, quantities, finishes, languages, conditions, physical locations, deck allocations and operation history. Guest collections stay on this device or browser. Connected collections sync privately through Firebase using account-scoped records and retryable operations. Signing out stops sync and keeps the separate local copy; it does not transfer it to another account. Collection backups and CSV exports contain these records, and you choose where to save or share them. Restoring a collection backup retains its original content in the operation history; that history also syncs when the collection is connected.

Website catalogue searches use Scryfall online through cedhdiff.com and send the requested card name or printing ID. Collection imports verify only the requested card identities with Scryfall; quantities, locations and ownership are not sent to Scryfall. The iPhone catalogue is separate from owned collection data. Artwork is fetched separately. Market references are Scryfall-relayed TCGplayer and Cardmarket estimates, not live prices or payments.

The iPhone scanner asks for camera access only when you enable the camera. Recognition runs on your iPhone. Raw camera images are not uploaded, saved to the review queue or included in analytics. The account-scoped review queue retains recognized text, selected printings and your review choices locally so an interrupted review can resume. An online printing lookup sends the reviewed card name directly to Scryfall. Nothing becomes owned until you confirm the reviewed batch. Manual search works without camera access.

Trade drafts are stored locally and separately for each account. They contain selected cards, quantities, market references and optional cash adjustments. Confirming a trade records an inventory operation, which syncs with a connected collection; canceling a draft does not change inventory. A shared trade summary or collection export contains the records you selected. The app does not send payments or contact a trading partner. Collection contents, scan text or images, trade contents and cash adjustments are not sent to product analytics.

ChatGPT and MCP requests

When you use the plugin, ChatGPT sends the tool arguments needed for your request to cedhdiff.com. Depending on the tool, those arguments can include a pasted decklist, a tournament result identifier, or card names. The application processes them to return the requested facts. The MCP tools do not require a cEDH Diff account and do not receive your ChatGPT password or OpenAI API key.

Application code does not put MCP request bodies, pasted decklists, tournament result identifiers, or card names into product analytics. Network and hosting providers may process ordinary request metadata, such as IP address, user agent, route, timing, and response status, to deliver and protect the service under their own terms.

Website analytics

We use Amplitude to measure feature use, comparison outcomes, sessions and returning visits. Basic analytics is on by default. You can turn it off below without losing any site features. A random identifier is stored in this browser’s local storage and renewed on your next visit after 90 days; it is not your account identity and is not shared across our apps. Sessions restart after 30 minutes of inactivity. Clearing browser storage or turning analytics off resets the identifier.

Our server sends Amplitude the event time, random browser and event identifiers, session start, coarse page/action categories and bounded result fields. It does not forward your IP address or browser headers. Amplitude processes analytics data in the United States. We do not use session replay, automatic form/click capture, advertising identifiers, or account-based analytics profiles. See Amplitude’s privacy policy.

Analytics never includes pasted decklists, deck URLs, card names, commander names, player names, email addresses, account details or free-form feedback. Do Not Track and Global Privacy Control disable collection. Events already received remain with the analytics provider; clearing this browser does not delete that history.

iPhone app analytics

Starting with iPhone build 1.1 (9), basic app usage analytics are on by default. You can turn off “Share basic app usage” in Settings at any time, and an off choice stays off after an update. The app sends a fixed set of actions, such as opening the app, saving an import, refreshing a comparison and creating a share link, to Amplitude through our server. A random app identifier groups repeat visits; it is separate from your account and is renewed after 90 days. The app does not send decklists, card names, source URLs, account details or advertising identifiers with these events. Debug builds and detected TestFlight installs do not collect production events. Turning the setting off stops new events and removes the identifier from your iPhone; events already received cannot be recalled.

Analytics is off in this browser.

Your choice stays on this device. Browser Do Not Track and Global Privacy Control settings also turn analytics off. Turning it off clears the local analytics identifier and stops further collection; it does not delete events already received by Amplitude.

cEDH Diff keeps cookieless daily counters for page views, campaign attribution, and basic product actions such as starting a comparison, loading tournament results, opening an exact difference or source link, saving or opening a local deck, watching a commander, or completing sign-in and library sync.

These separate counters contain the UTC date, a coarse page or action category, and the country code supplied by our hosting provider when available. The fixed tester-feedback buttons record only the selected result category. These daily totals contain no browser or account identifiers and describe views and actions, not unique people or sessions. Turning analytics off also stops new daily-counter events from this browser. Historical daily totals remain separate from Amplitude visitor analysis.

Decks saved without an account stay in your browser. If you create an account and choose to sync a saved deck, that account feature stores the data needed to provide the sync you requested.

Tournament records shown in the product come from TopDeck. Card identity and legality data come from Scryfall. When the plugin looks up cards, the requested card names are sent to Scryfall. Their links and services are governed by their own privacy terms.

More