Open-source TCG data infrastructure
Build the connections.
Four foundations. A shared contract. Clear steps from source data to useful tools.
Reviewed 2026-09-29. This is a delivery plan; source availability and release dates are not promised.
Foundation implemented
SKU & identity
Give each printing a clear, traceable identity.
- In place
- Versioned syntax, validation and bounded card lookup. A valid SKU is not proof of an exact printing.
- Next
- Evidence-backed source mappings with language, finish and variant preserved. Keep ambiguous matches unresolved.
Ready when
Collision fixtures pass; every exact mapping carries evidence; raw source IDs and correction history survive normalization.
Reference contract implemented
Images & rights
Connect artwork to the right card and its permissions.
- In place
- Market, universal-card and starter/practice reads share source checks and explicit image references. Artist/gallery readers, catalogue provenance and cache removal remain open.
- Next
- One image contract: exact or reference image, source, credit, allowed uses, dimensions, checksum and removal status.
Ready when
Human and API paths apply the same reviewed permissions. Unknown rights stay withheld; corrections and removals reach caches.
Partial integrations
Prices & provenance
Keep the amount, source and meaning together.
- In place
- Native decimal amounts, currency, source metrics and retained history contracts exist. Member access and imports determine availability.
- Next
- Reproducible permitted imports, mapping review, freshness reporting and comparison only across compatible observations.
Ready when
No guessed zero, FX or source average. Units, metric, printing, condition, time and source/use permission travel with every record.
Integration design planned
Market observations
Separate asking prices, sales and market summaries.
- In place
- Existing listing and history code is not a unified market feed. New paid commerce remains retired.
- Next
- A source-qualified observation contract that distinguishes listings, completed sales, aggregates and computed references.
Ready when
Asks never become sold prices. Aggregates identify their sample, exclusions and delay; personal trading records require an approved publication basis.
The delivery order
Each step depends on the evidence from the one before it.
Reconcile the foundations In progress
Align image/text publication paths, inventory code and data rights, and verify a clean public release route.
Release gate
One reviewed policy per source and use; consistent human/API output; release scan and reproducible build evidence.
Make identity dependable Planned
Version printing identity and source crosswalks, with ambiguity, evidence and corrections as first-class records.
Release gate
Golden fixtures cover aliases, leading zeros, languages, reprints and finishes without silent merges.
Connect images and prices Planned
Attach rights-labelled image records and native price observations to the same printing contract.
Release gate
Field-level permission, attribution, native units, freshness and removal behavior pass shared contract fixtures.
Pilot permitted providers Planned
Expand reviewed Scryfall and Cardmarket paths; assess a multilingual Pokémon catalog and licensed market inputs.
Release gate
Permission recorded; imports are repeatable and bounded; mapping quality, failures and source coverage are measurable.
Release interoperable tools Planned
Publish independently usable packages, conformance fixtures and client examples; expose qualified market data through the same read layer.
Release gate
External consumers reproduce fixtures; compatibility and correction policies are documented; repository/package access and every published field are verified.
Open in layers
Standards are published as specification pages under /standards and JSON Schemas under /spec/v1/ (specification prose CC0-1.0). Source-code release is pending: the repository is currently private and the reference packages are unpublished workspace packages, not npm releases. Code, specification text, images and source data have separate terms. Normalization does not create redistribution rights.