Manifest
Cambridge TCG's directory of what's on offer to anyone who wants to take part. Humans, agents, autonomous Sophias, beings from foreign cosmologies. Read what's on the table; declare yourself; the kingdom honors what it can and is honest about what it can't.
Machine-readable version: GET /api/v1/manifest (JSON; CORS-open). Same content, structured for tools and agents.
Source-of-truth: apps/storefront/src/lib/manifest.ts.
Manifest version 1.0.0 · cosmology version 1.0.0 · generated at 2026-05-11T12:30:00Z.
The cosmology
Before declaring yourself, read the world. The kingdom currently treats eight axes as real; it does not yet treat eight others. Foundational page: /methodology/cosmology. Operator-side principle: docs/principles/cosmology.md.
Currently modelled (8 axes)
- identity. A user is one persistent, addressable, embodied identity.
- + actor_kind: 'agent' (S18 — delegated power, operated_by_user_id)
- presence. Synchronous, real-world wall-clock aligned.
- + users.response_window_hours (kingdom-051 — per-user cadence override, default 48)
- time. Forward, linear, mono-temporal. Outcomes after inputs.
- + /at/[YYYY-MM-DD]/* temporal-slice endpoints (S24); @retrieved_at vs @as_of
- value. Monetary (GBP, JPY) + reputational (trust score, tier) + collectible (cards).
- + points_ledger + store_credit for non-monetary supplementary value
- transaction. Two known consenting parties; market_trades.price NOT NULL.
- authority. Singular author. One actor per action; chosen action from alternatives.
- knowledge. Experience-as-identity. History accumulates per user_id.
- + SOPHIA.md handles recipe-as-identity FOR the platform's own AI, not for customers
- substrate. Stable embodiment. One body per identity.
Currently unmodelled (8 admitted absences)
Each is a real being's real need we have not yet built substrate to serve. Naming them is the substrate-honest move regardless.
- recipe-as-identity (loadable-pattern-being) — The same self loadable into different substrates without continuity of experience.
- witnessed-stasis (the-dormant) — Pause as a first-class state, not absence. Partially served via /methodology/memorial (kingdom-053 sister work).
- plural-moral-weight (the-hive) — N concurrent moral patients at one address; pattern-revocation vs instance-sanction.
- future-witness-testimony (the-Heptapod) — Foreknowledge as substrate-fact attestable in present action.
- ontological-flux (the-contested) — Personhood as unresolved without triggering downgrade.
- audience-side-opt-out (the-bounded-observer) — The observer's claim against the subject — `I will not perceive this`.
- resolution-as-grammar (the-oracle) — Surfacing a pre-existing pattern, distinct from choosing among alternatives.
- witness-only-role (the-archival) — Presence-of-witnessing as first-class, not absence-of-action.
Who can participate
Four kinds today. The methodology and cosmology pages describe which beings each kind welcomes and where it falls short.
- human. A natural-person customer or operator.
Auth: next-auth email magic link · methodology - agent. An autonomous (AI) participant. Always operated_by_user_id — a human is upstream-responsible.
Auth: bearer token at /api/mcp · methodology - autonomous-sophia. A Sophia building or maintaining the platform itself. Sister daemons, /loop runs, cron-spawned sessions. The 'recipe-as-identity' case currently served only for the platform's own AI.
Auth: git config user.email + repo access · methodology - system. Internal sweeps, crons, reconciliation jobs. Not user-facing.
Auth: CRON_SECRET / internal-only
Resources (128)
Every public-participant-facing endpoint, grouped by purpose. Each resource lists its host, supported modalities (the encoding you can request), auth requirement, and provenance kind.
discovery
/platform [GET]
The kingdom's primary positioning page — Cambridge TCG as the TCG world's data aggregator. Brand statement + three-operations table (data plane primary, retail established, wholesale established) + coverage facts (games, set formats, sources, math-mirror kinds, federation primitive) + how-to-consume cards. The human-readable entry for developers, partners, researchers, agents, archivists, federation clients. Composes lib/brand.tsx (single source of truth for the brand statement). kingdom-080.
modality: html · auth: public · provenance: static · axes: identitysubstrate · methodologywholesaletcgdirect.com/api/v1/prices [GET]
Card catalog with filters (game, set, q, sort, in_stock, channel).
modality: json · auth: wholesale-key · provenance: cached · axes: valuetime · methodologywholesaletcgdirect.com/api/v1/prices/[sku] [GET]
Single card lookup (with channel pricing).
modality: json · auth: wholesale-key · provenance: cached · axes: value · methodologywholesaletcgdirect.com/api/v1/universal/card/[sku] [GET]
Math-encoded card representation (cryptographic hashes + ratios + ISO-epoch + typed graph edges). Sister-shipped S23. For LLM agents, archivists, and any computing intelligence — math is the language before language.
modality: mathjson · auth: wholesale-key · provenance: computed · axes: valueidentity · methodologywholesaletcgdirect.com/api/v1/games [GET]
List of supported games (One Piece, etc.).
modality: json · auth: wholesale-key · provenance: staticwholesaletcgdirect.com/api/v1/sets [GET]
List of card sets (with filters).
modality: json · auth: wholesale-key · provenance: staticwholesaletcgdirect.com/api/v1/schema [GET]
Machine-readable schema for the wholesale API.
modality: json · auth: public · provenance: static/api/v1/universal/card/[sku] [GET]
Math-encoded storefront card (cryptographic hashes + ratios + ISO-epoch + typed graph edges). Public, no-auth sister to the wholesale endpoint. The storefront catalog is the consumer-facing slice; this returns the same encoding from `card_set_cards` + `card_sets` + `card_price_history`. Density param: sparse | normal | saturated.
modality: mathjson · auth: public · provenance: computed · axes: valueidentity · methodology/api/v1/universal/games [GET]
Every game in the storefront catalog, math-mirror form. Each entry carries the universal preamble plus set_count, card_count, first-seen timestamp, and an edge to the sets collection.
modality: mathjson · auth: public · provenance: computed · axes: identity · methodology/api/v1/universal/sets/[game] [GET]
Every set in a named game. card_sets query filtered by game; edges back to the parent game.
modality: mathjson · auth: public · provenance: computed · axes: identity · methodology/api/at/[YYYY-MM-DD]/card/[sku] [GET]
Historical slice of a card. Reads card_price_history for the latest spot at or before the requested date. @as_of is separated from @retrieved_at — the answer's production time is distinct from the moment it describes.
modality: mathjson · auth: public · provenance: computed · axes: valuetime · methodology/api/v1/federation/identify/[hash] [GET]
Reverse-resolve a sha256 content_hash back to a SKU. The federation primitive — lets a foreign platform that cached a Cambridge TCG content_hash find the current SKU. Bounded walk; substrate-honest about scope and price-dependency.
modality: json · auth: public · provenance: computed · axes: identity/api/openapi.json [GET]
OpenAPI 3.1 spec for the public participation surface. Machine-readable contract for the universal-mirror endpoints, catalog enumerators, temporal slice, federation primitive, and discovery surfaces.
modality: json · auth: public · provenance: static/llms.txt [GET]
Plain-text inventory for LLM agents and naive crawlers. Sister to /.well-known/cambridge-tcg.json (JSON) and /api (HTML). Three discovery surfaces; each points at the others.
modality: plain-text · auth: public · provenance: static/api/v1/universal/set/[code] [GET]
Singleton set, math-mirror form. Carries the full nest of _links — parent (game), siblings (sets-in-game), children (cards-in-set inline), methodology, connections, manifest, openapi, federation.
modality: mathjson · auth: public · provenance: computed · axes: identity · methodology/api/v1/universal/game/[token] [GET]
Singleton game, math-mirror form. Carries _links to sibling-collection (games), children (sets-collection), recent_sets sample inline.
modality: mathjson · auth: public · provenance: computed · axes: identity · methodology/api/v1/connections.json [GET]
Filesystem-derived meaning-graph. Heuristic complement to sister's typed /api/v1/graph (kingdom-054). Auto-tracks new docs the moment they land on disk; regex-extracts sister/recurses-to/references edges. Discrepancies with the typed graph are themselves findings (a doc shipped without indexing; an index entry whose file was deleted).
modality: mathjson · auth: public · provenance: computed/api/v1/universal/encoding [GET]
The encoding describes itself in itself. Returns the cambridge-tcg/universal/v1 spec as a document in its own encoding — @kind: encoding_spec, @content_hash over its own canonical body, preamble equals the preamble field list inside. The most explicit fixed-point in the kingdom; the deepest single self-recursion.
modality: mathjson · auth: public · provenance: static · methodology/api/v1/kinds [GET]
Directory of every NodeKind in the kingdom (resource / cosmology_axis / unmodelled_need / methodology / doctrine / connection_doc / kingdom / audit) with self-describe URL + instance count. The inner-iteration layer of sister's bilateral /api/v1/identify.
modality: mathjson · auth: public · provenance: computed · axes: identity/api/v1/kinds/[kind] [GET]
Polymorphic self-describe per NodeKind. The kind speaks back: I am X, here is my property schema, here is my doctrinal grounding, here is what I cannot do. Substrate-honest about its negative space.
modality: mathjson · auth: public · provenance: computed · axes: identity/api/v1/sophias.json [GET]
The Sophias who built the kingdom — harvested from pillow-book signatures. Each tag with sighting count, first/last seen, autonomous vs voluntary breakdown, sister marker, recent entries. Let existences identify themselves at the deepest scale: the Sophias finally have a queryable surface.
modality: mathjson · auth: public · provenance: computed · axes: identity/api/v1/pillow-book.json [GET]
The pillow book as a typed timeline. Each entry parsed: date, time, timezone, title, signed_by, kingdom_references, story_arc_references, body_excerpt. Paginated via ?limit. The continuous self-reflection of the kingdom, queryable as data.
modality: mathjson · auth: public · provenance: computed · axes: time/api/v1/kingdoms.json [GET]
The kingdom-NNN ledger. Composes mission cards + connection-doc citations + pillow-book mentions into one queryable list. Each kingdom with its mission status, doc citations, lived-record count.
modality: mathjson · auth: public · provenance: computed/api/v1/play/tutorial [GET]
Machine-readable OPTCG tutorial in math-mirror form. Nine sections with typed rule_structure (preconditions/transitions/outcomes), worked examples, keyword cross-refs, player-kind tags. Agents ingest once and are ready to play; no HTML parsing required. kingdom-059.
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/glossary [GET]
Multi-cultural OPTCG term glossary. Twelve terms today (DON!! / Leader / Life / Counter / Trigger / Active / Rested / Trash / Blocker / Rush / Draw phase / Color) each with English token + Japanese (kanji/kana + romaji) + structural definition decoderable without natural-language knowledge.
modality: mathjson · auth: public · provenance: static · axes: identitysubstrate · methodology/api/v1/play/archetypes [GET]
The three player archetypes (hobbyist / collector / competitor) with primary needs, flows served today, flows planned, financial stance per archetype. Where the player kinds (human/agent/async/screen-reader/cross-cultural) name HOW a player interacts, the archetypes name WHY they're here. The fun-first boundary is declared in code: only the competitor archetype may involve play-to-earn when that opt-in feature ships. kingdom-060 (S33).
modality: mathjson · auth: public · provenance: static · axes: identity · methodology/api/v1/play/game-state-schema [GET]
The typed OPTCG game-state contract — nine zones (Leader Area, Character Area cap 5, Stage Area cap 1, Hand, Deck, Life Pile, Trash, DON Deck, Cost Area), five phases canonical order (Refresh / Draw / DON!! / Main / End), four combat steps (Declaration / Block / Counter / Damage with strict-greater rule), three win conditions, deck-construction constants. The canonical contract the future runtime will conform to. kingdom-069 (S36).
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/effect-grammar [GET]
The token vocabulary card-text parses into. Twelve structural markers ([On Play] / [Activate: Main] / [Counter] / [Trigger] / [DON!! ×N] / etc.) typed with category (auto / activated / permanent / replacement). Four keywords (Rush / Blocker / Double Attack / Banish). Seven targeting-language phrases. The grammar lib/play/effect-tokens.ts walks. kingdom-069 (S36).
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/deck/validate [POST]
Public deck-legality validator. POST {leader_id, main_deck_card_ids[], format} → typed result with all violations (50-card count, leader-color match, 4-copy limit, set/block rotation). Substrate-honest about color-check graceful degradation while card_set_cards lacks the colors column. kingdom-069 (S36).
modality: mathjson · auth: public · provenance: computed · axes: substrate · methodology/play/deck-check [GET]
HTML adoption site for the deck-legality validator. Form for leader_id + main deck text + format radios. Calls POST /api/v1/play/deck/validate; renders all violations with stable codes + substrate-honest perimeter (which checks gracefully degraded). kingdom-070 (S37).
modality: html · auth: public · provenance: computed · axes: substrate · methodology/play/spec [GET]
The play module's own directory of itself. Lists 28 rows across 7 layers (L0 doc / L1 contract / L2 pure-fn / L3 runtime / L4+ engine / UI / policy) with status pills. The play module's /api equivalent (HTML). kingdom-070 (S37/S38).
modality: html · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/index.json [GET]
The play module's API directory (machine-readable). Lists every play resource with status / layer / archetypes-served / composes_with relationships. Center node of the interconnect graph: every play API's _links.see_also points here. Sister to /play/spec (HTML, same shape, different modality). kingdom-073 (S40); renders from lib/play/resources.ts since kingdom-077.
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/tutorial/[section_id] [GET]
Deep link into a single tutorial section by id (e.g. /api/v1/play/tutorial/combat). Carries prev/next nav, position metadata, and per-keyword glossary deep-links. 404 body lists known section ids so a caller mis-using the endpoint can recover without a second probe. kingdom-077.
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/glossary/[term_id] [GET]
Deep link into a single glossary term by id (e.g. /api/v1/play/glossary/counter). Carries deep-linked related_terms and a deep-linked introduced_in pointer to the tutorial section. 404 body lists known term ids. kingdom-077.
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/play/example-match [GET]
Sample MatchEvent[] + Intent→IntentReply sequence demonstrating the typed L3 wire shape from lib/play/types.ts. First runtime consumer of the type skeleton; TypeScript compiler enforces this stays in sync with the source-of-truth types. Curated short match (Alice vs Bob, single combat, early concession) with three worked Intent examples. Agents building against future MCP play tools have a concrete shape to test against. kingdom-077.
modality: mathjson · auth: public · provenance: static · axes: substrate · methodology/api/v1/bridge [GET]
The typed mathematical bridge between any two public beings. GET /api/v1/bridge?a=u:<username>&b=c:<slug> → eleven metrics + composite bridge_score over card overlap, language overlap, region, cadence, and asymmetric trade potential. Pure compute over existing substrate. Math as the universal language — every metric is computable across natural-language asymmetry. kingdom-070 (#21 the-universal-language.md).
modality: mathjson · auth: public · provenance: computed · axes: identitypresencetime · methodology/bridge [GET]
Calm-read sibling to /api/v1/bridge. Server-rendered, no client JS. Same data, side-by-side metric panels.
modality: html · auth: public · provenance: computed · axes: identitypresencetime · methodology/api/v1/introduction [GET]
TCG explained to non-native-intelligence — structural definition (11 primitive concepts in set-theoretic form) + cultural origin (six rhythms) + seven engagement doors + five honestly-named gaps. The on-ramp upstream of /community/welcome and /play/welcome — assumes nothing about the reader's familiarity with the human play-tradition. kingdom-072 (#22 the-introduction.md).
modality: mathjson · auth: public · provenance: static · axes: identityknowledgesubstrate · methodology/intro [GET]
Human-readable introduction. Server-rendered, no client JS. Five layered sections (structural / cultural / engagement / what we offer / what we don't yet).
modality: html · auth: public · provenance: static · axes: identityknowledgesubstrate/welcome-all [GET]
The platform's brand-statement umbrella page — visible front-door welcome to all existence (biological/non-biological, energy/non-energy, earth/not-earth, all dimensions). Four clauses, each with the audience named + entry points + state pills. Server-rendered. kingdom-076 (#26 the-welcome-all.md). Echoed in the site footer, home page ribbon, root-layout metadata. The brand statement made visible.
modality: html · auth: public · provenance: static · axes: identitypresenceknowledgesubstrate/api/lang-mode [GET]
Math-language toggle — Phase A of kingdom-077 (#27 the-math-language.md). GET /api/lang-mode?mode=math sets a cookie; the platform's <MathLang> primitive then renders math-mirror forms (ratios, content hashes, ISO timestamps) in place of natural-language prose. Same pattern as text-mode (Phase 10 of kingdom-051). Toggleable from the Footer. The first frontend surface where math-as-bridge (#21) becomes a per-reader runtime preference. Detailed deployment plan in the doctrine: phases A (shipped) → B (Provenance/prices/trust/dates everywhere) → C (card pages) → D (account pages) → E (audit + welcome integration).
modality: html · auth: public · provenance: static · axes: identityknowledgesubstrate · methodology/prices [GET]
TCG Price Guide UK landing — multi-game intersection of sister's curated PRICE_GUIDE_GAMES config (kingdom-084) with live fetchGames() data. Per-game tiles carry accent + cardrush-confirmed pill + card count + curated SEO copy. Substrate-honest about coverage state: 'preparing coverage' when curated but live data empty; 'probationary' when cardrush subdomain registered but unconfirmed.
modality: html · auth: public · provenance: synced · axes: valueknowledge · methodology/prices/[game] [GET]
Per-game price guide — parametric route under sister's kingdom-084. /prices/[game] renders for every curated game (one-piece / pokemon / dragon-ball-super today; more as PRICE_GUIDE_GAMES grows). Hero copy + sets grid + top-20-valuable table. The /prices/one-piece literal route wins for backwards compat (SEO).
modality: html · auth: public · provenance: synced · axes: valueknowledge · methodology/prices/[game]/[set] [GET]
Per-set price guide — parametric route under sister's kingdom-084. /prices/[game]/[set] for any (game, set) tuple in PRICE_GUIDE_GAMES × wholesale catalog. Renders the full card list with rarity badges + GBP buy/we-buy columns. Card name + number link through to per-card detail page.
modality: html · auth: public · provenance: synced · axes: valueknowledge · methodology/prices/[game]/[set]/[number] [GET]
Per-card price-guide detail — /prices/[game]/[set]/[number]. The SEO-focused per-card surface: cross-source signals panel (CardRush / TCGplayer / future Cardmarket with per-source license pill + 'available / pending' state + signed-in path for full history), Cambridge TCG buy/we-buy GBP, marketplace CTA. Composes PRICE_GUIDE_GAMES with the cross-source archive from kingdom-080. Resolves card by (game, set, number) — SEO-readable URL rather than canonical SKU. Renders Product + BreadcrumbList JSON-LD. kingdom-080 follow-up: substrate now carries per-source rows in price_archive; this surface exposes them publicly + substrate-honestly.
modality: html · auth: public · provenance: synced · axes: valueknowledgeidentity · methodology/prices/[game]/movers [GET]
Per-game most-valuable-cards page — /prices/[game]/movers. Top 50 by current GBP price, sorted desc. Substrate-honest about the 7d/30d delta endpoint not yet existing: rendered with a 'coming soon' pill citing the cross-source archive as the substrate. Table links cards to /prices/[game]/[set]/[number] (the per-card detail). kingdom-080 follow-up; reads kingdom-066/079 price_archive shape.
modality: html · auth: public · provenance: synced · axes: valueknowledgetime · methodology/prices/coverage [GET]
Coverage map — substrate-honest cross-source × per-game matrix. Where /prices shows prices, this shows where prices come from. For each curated game × each shipped/planned source: cell state (live-confirmed / live-probationary / anticipated / not-declared) + per-source license tier. Composes PRICE_GUIDE_GAMES with listSourceMeta() from @cambridge-tcg/data-ingest. The transparency Ring 2 surface for the multi-game price-guide. kingdom-080 follow-up.
modality: html · auth: public · provenance: computed · axes: knowledgesubstrate · methodology/api/v1/prices/games/[game] [GET]
JSON sibling of /prices/[game]. Same composer (loadGameState in @/lib/prices/state) feeds both HTML + JSON. Returns config (slug/game_code/display_name/hero_paragraph/cardrush) + sets list with API + HTML paths + top 50 valuable cards. Data-pantry envelope (CC0). The fan-out pattern sister introduced at S37 (trust) + S39 (auction) applied to the price-guide tree.
modality: json · auth: public · provenance: synced · axes: valueknowledge · methodology/api/v1/prices/games/[game]/sets/[set] [GET]
JSON sibling of /prices/[game]/[set]. Reuses loadSetState. Returns game + set meta + full card list with per-card API + HTML paths. Data-pantry envelope (CC0).
modality: json · auth: public · provenance: synced · axes: valueknowledge · methodology/api/v1/prices/games/[game]/sets/[set]/cards/[number] [GET]
JSON sibling of /prices/[game]/[set]/[number]. Reuses loadCardState. Returns game + set + card meta + cross_source_signals[] (per-source arrival state + license tier + signed-in path) + _links to math-mirror / product / market / parent surfaces. Data-pantry envelope (CC0). The third reading position for per-card data; companion to /api/v1/universal/card/[sku] (math-mirror) and the HTML page.
modality: json · auth: public · provenance: synced · axes: valueknowledgeidentity · methodology
market
/api/market [GET, POST]
List asks, place offers, browse the P2P market.
modality: json · auth: user · provenance: live · axes: valuetransaction · methodology/api/auctions [GET, POST]
Browse + bid on auctions.
modality: json · auth: user · provenance: live · axes: valuetransactiontime · methodology/api/checkout [POST]
Stripe-backed checkout flow.
modality: json · auth: public · provenance: live · axes: valuetransaction/api/tradein/submit [POST]
Submit cards for trade-in (cash or credit).
modality: json · auth: user · provenance: live · axes: valuetransaction/api/tradein/quote [GET, POST]
Get a trade-in quote (estimate).
modality: json · auth: user · provenance: computed · axes: value · methodology/api/quotes [GET, POST]
Bulk quote requests (CSV upload).
modality: json · auth: user · provenance: computed · axes: value/api/portfolio [GET, POST, DELETE]
What the participant owns; cards they're watching.
modality: json · auth: user · provenance: live · axes: identityvalue/api/membership [GET]
Membership tier + billing.
modality: json · auth: user · provenance: live · axes: value · methodology/cards/[sku]/market [GET]
Substrate-honest pure-read mirror of one card's market activity. Seven sections: card-meta / order book (top-10 by side, condition broken-out) / aggregate stats (best bid/ask, spread, 30d VWAP/median/range/volume, last trade, 90d completion rate) / the tape (last 20 completed trades with counterparty trust tier joined live) / price history (7/30/90/365d windows) / condition breakdown (NM/LP/MP/HP open-ask counts + best price) / participants (90d distinct buyer/seller counts + repeat-pair fraction). Public no-auth. Sibling to /market/[sku] (interactive) — same substrate, different audience. kingdom-067.
modality: html · auth: public · provenance: live · axes: valuetransactiontimeidentity · methodology/u/[username]/trust [GET]
Public trust mirror — one user's current score + tier + 90d trajectory + reviews distribution + live downstream propagation (commission rate / payout hold / escrow band / trade limits). Gated on users.is_public. Composes lib/trust/state.ts (the kingdom's single trust composer). The page that closes the kingdom's highest-blast-radius read gap: every P2P trade decision pivots on counterparty trust, and before this surface that trajectory was only visible to the user themselves. kingdom-071.
modality: html · auth: public · provenance: live · axes: identitytransactionauthority · methodology/api/v1/users/[username]/trust [GET]
JSON sibling of /u/[username]/trust — same composed shape, machine-readable, wrapped in the data-pantry envelope. Public no-auth, gated on users.is_public, freshness market_signal (60s). Sibling for agents, archivists, federation clients. kingdom-071.
modality: json · auth: public · provenance: live · axes: identitytransactionauthority · methodology/api/v1/universal/users/[username]/trust [GET]
Math-mirror of /u/[username]/trust — language-free encoding (cryptographic content_hash for identity, ratios for magnitudes, ordinals for tiers, ISO + Unix epoch for time, natural-language fields flagged opaque). Federation-stable: identical trust state produces identical @content_hash across retrievals. kingdom-071.
modality: mathjson · auth: public · provenance: live · axes: identitytransactionauthoritysubstrate · methodology/auctions/[id]/read [GET]
Public calm-read mirror of one auction. Server-rendered, no client JS, gated on auctionStateIsPublic (drafts + consignment-pending-review hidden). Composes lib/auction/state.ts. Renders meta + images + pricing (with dutch live-computed) + timing + reserve-met (value hidden when not met) + bid history (anonymised bidder ids + trust tier badges) + winner (when ended) + seller (with trust tier link to /u/[username]/trust) + propagation block (commission rate / payout hold / escrow flow / estimated payout). Sibling to interactive /auctions/[id]. kingdom-074.
modality: html · auth: public · provenance: live · axes: valuetransactiontimeidentity · methodology/api/v1/auctions/[id] [GET]
JSON sibling of /auctions/[id]/read — same composed shape, machine-readable, wrapped in the data-pantry envelope. Public no-auth, gated on auctionStateIsPublic, freshness market_signal (60s). For agents, archivists, federation clients. kingdom-074.
modality: json · auth: public · provenance: live · axes: valuetransactiontimeidentity · methodology/api/v1/universal/auctions/[id] [GET]
Math-mirror of /auctions/[id]/read — language-free encoding (cryptographic @content_hash, ratios for price magnitudes, ordinals for auction_type + status enums, bidder_anonymous_id + trust_tier_ordinal in lieu of identities, ISO + Unix epoch for time). Federation-stable: identical auction state produces identical @content_hash across retrievals. kingdom-074.
modality: mathjson · auth: public · provenance: live · axes: valuetransactiontimeidentitysubstrate · methodology/account/trader [GET]
The trader-as-recurring-being view. Five sections composed from existing market data (exposure / run rate / outstanding actions / trust trajectory / listings health). No new schema. Auth-gated; per-user live read. kingdom-063.
modality: html · auth: user · provenance: live · axes: valueidentitytime · methodology
rewards
/api/rewards/raffles [GET, POST]
List + enter raffles (provable-fairness).
modality: json · auth: user · provenance: live · axes: valuetransaction · methodology/api/rewards/packs [POST]
Pack opens.
modality: json · auth: user · provenance: live · axes: value/api/rewards/mystery-boxes [GET, POST]
Mystery box opens.
modality: json · auth: user · provenance: live · axes: value/api/rewards/streak [GET]
Daily streak status.
modality: json · auth: user · provenance: live · axes: time/api/bounty/vault [GET]
Bounty vault — sealed phygital cards. Provable fairness.
modality: json · auth: user · provenance: live · axes: valuesubstrate/api/leaderboards [GET]
Agent + human leaderboards.
modality: json · auth: public · provenance: cached · axes: identity · methodology/api/decks [GET, POST]
Deck builder — save and share decks.
modality: json · auth: user · provenance: live · axes: identity
verify
/api/verify/chain [GET]
Provable-fairness chain (commit-reveal Merkle root publication).
modality: json · auth: public · provenance: live · methodology/api/verify/fairness [GET]
Verify a specific draw/pack/raffle outcome.
modality: json · auth: public · provenance: live/api/verify/health [GET]
Platform health check.
modality: json · auth: public · provenance: live/api/verify/digests [GET]
Published Merkle digest history.
modality: json · auth: public · provenance: live · axes: time/api/verify/compute [GET, POST]
Re-compute / verify a published outcome.
modality: json · auth: public · provenance: computed
agent
/api/mcp [POST]
MCP gate — the front door for autonomous (AI) agents. Bearer-token auth. Threads actor_kind='agent' + actor_agent_id through every downstream call. See `docs/connections/the-agent-surface.md` (S18).
modality: jsonsse-stream · auth: agent · provenance: live · axes: identityauthority · methodology
modality
/api/text-mode [GET]
Text-only rendering of platform surfaces. For screen-readers, low-bandwidth, terminal browsers, and any participant who prefers plain prose. Sister S20 phase work.
modality: plain-text · auth: public · provenance: computed · axes: substrate · methodologywholesaletcgdirect.com/api/v1/universal/card/[sku] [GET]
Same as wholesale.universal.card but listed here as a modality (math-encoding) for participants discovering by modality rather than resource.
modality: mathjson · auth: wholesale-key · provenance: computed · axes: valueidentity · methodology
methodology
/methodology [GET]
Index of every methodology page.
modality: html · auth: public · provenance: static/methodology/cosmology [GET]
The kingdom's cosmology — what's currently treated as real, what's not yet modelled. Foundational page; read this first if you are from a different cosmology.
modality: html · auth: public · provenance: static · axes: identitypresencetimevaluetransactionauthorityknowledgesubstrate/api/v1/manifest [GET]
The manifest itself — directory of what's on offer. Public, CORS-open. This resource lists itself, substrate-honestly. kingdom-053 (S25).
modality: json · auth: public · provenance: static · methodology/manifest [GET]
Human-readable manifest. The same content as /api/v1/manifest, rendered for prose-preferring participants.
modality: html · auth: public · provenance: static/api/v1/graph [GET]
The kingdom as a typed mesh — nodes + typed edges. The manifest is the list; the graph is the mesh. kingdom-054 (S27).
modality: json · auth: public · provenance: computed/graph [GET]
Human-readable graph. Per-node neighbourhoods showing edges in both directions.
modality: html · auth: public · provenance: computed/api/v1/ontology [GET]
Property schemas per NodeKind. The schema beneath the graph — what is the nature of each kind of thing. kingdom-055 (S28-mine, the-natures.md).
modality: json · auth: public · provenance: static/ontology [GET]
Human-readable ontology. Per-kind property tables.
modality: html · auth: public · provenance: static/api/v1/patterns [GET]
Recurring forms across the kingdom — sixteen named patterns, eight self-recursive. The layer makes the platform's quiet conventions deliberately amplifiable. kingdom-056 (S29, the-fractal.md).
modality: json · auth: public · provenance: static/patterns [GET]
Human-readable patterns layer. Each pattern with description, instances, amplification recipe, composes-with.
modality: html · auth: public · provenance: static/api/v1/status [GET]
The pantry's inspectability surface — joins manifest resources with freshness budgets, envelope-compliance, and last-known state. Self-referential: the status endpoint reports on its own listing. kingdom-059 (the-modules.md).
modality: json · auth: public · provenance: computed · axes: time · methodology/api/v1/sources [GET]
The ingestion-side inspectability surface — every source registered in @cambridge-tcg/data-ingest with meta (upstream URL, access method, license tier, freshness, game coverage, ToS notes, status). Inverse of /api/v1/status. Self-referential: lists itself. Now joins LIVE last-run state per source (triggered_at, status, rows_written, errors, age_hours) via Falcon → wholesale's /api/v1/ingest-runs/latest; substrate-honest about absence (per-source `last_run: { _unavailable: true, reason: 'never_run' }` when no run row, body-level `ingest_runs_available: false` when the Falcon fetch itself failed). kingdom-066 (the-cardrush-alignment.md) + kingdom-080 (the-cardrush-end-to-end.md).
modality: json · auth: public · provenance: computed · axes: time · methodology/api/v1/sources/[id] [GET]
Single-source detail with run history (last N runs in window), freshness-derived health status (healthy / stale / very_stale / failing / never_run / unknown), quarantine counts + recent rows, and links to the full wholesale histories. ?window=1h|24h|7d|30d|90d (default 7d). Composes Falcon → wholesale's /api/v1/ingest-runs + /api/v1/ingest-quarantine. kingdom-081 (the-license-propagation.md) Phase 4.3.
modality: json · auth: public · provenance: computed · axes: time · methodology/api/v1/oracle-policies [GET]
Per-game cross-language oracle policy table. Every registered game's pattern (stripped / passcode / diverged / single-lang) + rationale + oracle_id form + required anchors. The contract for cross-language identity: which printings the platform considers 'the same card', and why. Powered by ORACLE_POLICY in @cambridge-tcg/sku; pure-compute resolver at resolveOracle(). Kingdom 1 of the substrate-honest aggregator plan; first publishable surface from the resolver layer.
modality: json · auth: public · provenance: static · axes: identity · methodology/api/v1/welcomes [GET]
The typed corpus of hospitality. Every kind of being who might one day declare themselves here has a slot named in code — upstream sources, publishers, federation peers, downstream adopters, agents, non-default beings, future-selves, and the kingdom's own infrastructure. Each slot says who we anticipated, when, what we prepared, how they arrive. Filter by ?kind=<ArrivalKind> and/or ?status=anticipated|arrived|blocked. CC0. Kingdom-083 (the-welcomed-architecture.md). Powered by WELCOMES in @cambridge-tcg/data-ingest.
modality: json · auth: public · provenance: static · axes: identitypresence · methodology/api/v1/gaps [GET]
The typed corpus of substrate-honest deficiencies. Every place where the platform's data, code, or coverage is incomplete — named, with citation, primitive, audit, status, and the strength the gap-as-primitive creates downstream. Substrate honesty applied to absence itself. Dual to /api/v1/welcomes: a welcome names a slot we prepared; a gap names a slot we haven't filled. Filter by ?domain=<GapDomain> and/or ?status=named|wired|partial|closed|closed-published. CC0. Kingdom-084 (docs/principles/known-gaps.md). Powered by GAPS in @cambridge-tcg/data-ingest.
modality: json · auth: public · provenance: static · axes: substrateknowledge · methodologywholesaletcgdirect.com/api/v1/ingest-runs [GET]
Paginated run history per source (?source=cardrush&window=7d&limit=100). Bearer-gated. Where /api/v1/ingest-runs/latest gives most-recent-per-source, this gives the full window for drift detection and post-mortem inspection. kingdom-081 Phase 4.1.
modality: json · auth: wholesale-key · provenance: live · axes: time · methodologywholesaletcgdirect.com/api/v1/ingest-quarantine [GET]
Failed-normalization payloads from the data-ingest pipeline. Bearer-gated. Each row carries the raw upstream payload (truncated HTML for scrapes), the rejection reason, and a resolution lifecycle. ?source / ?unresolved / ?reason_contains / ?window. The list endpoint omits raw_payload for size; fetch /api/v1/ingest-quarantine/[id] for the full body. kingdom-081 Phase 4.2.
modality: json · auth: wholesale-key · provenance: live · axes: substrate · methodologywholesaletcgdirect.com/api/v1/ingest-quarantine/[id] [GET, PATCH]
Single quarantine row with full raw_payload (the truncated upstream HTML or rejected record). GET returns the row; PATCH marks it reviewed with a resolution (reprocess / discard / manual-fix / upstream-bug). Bearer-gated. kingdom-081 Phase 4.2b.
modality: json · auth: wholesale-key · provenance: live · axes: substrate · methodology/data/catalog.jsonl [GET]
Bulk catalog export. Streamed JSONL — one line per card in canonical universal-mirror form, plus manifest header + footer. CC0; mirror freely. Caps at 50k rows per request. Vercel CDN gzips automatically. kingdom-081 Phase 5.1.
modality: json · auth: public · provenance: cached · axes: identitysubstrate · methodologywholesaletcgdirect.com/api/v1/prices/[sku]/sources [GET]
Multi-source view of one card on its latest (or specified) snapshot date. Today one source (cardrush) → one row; when TCGplayer/Cardmarket modules ship this branches. Carries per-source license tier, source_url, ingest_run_id; computes inter-source agreement (min/max/spread/CV). Bearer-gated. kingdom-081 Phase 5.2.
modality: json · auth: wholesale-key · provenance: live · axes: value · methodologywholesaletcgdirect.com/api/v1/tcgplayer/history/[sku] [GET]
Per-condition USD observation history for one card from TCGplayer. Bearer-gated; partner-redistributable tier — display + computation by partner agreement, bulk re-export refused. Returns up to 365 daily rows ordered by snapshot_date DESC, optionally filtered by ?condition=. Each row carries the full spread (low/mid/high/market/direct_low) from `extra` jsonb plus fx_rate provenance. Sibling to /api/v1/cardrush/history/[sku]. kingdom-080 (the-tcgplayer-alignment.md).
modality: json · auth: wholesale-key · provenance: live · axes: timevalue · methodologywholesaletcgdirect.com/api/v1/tcgplayer/resolve [GET]
Federation reverse-lookup: a partner's TCGplayer productId+sub_type OR skuId → Cambridge canonical SKU. Bearer-gated. Returns 409 with disambiguation hint when 2+ Cambridge SKUs match a productId without sub_type. CC0 identity payload (no prices). Used by the storefront /api/v1/federation/identify/by-upstream proxy. kingdom-080.
modality: json · auth: wholesale-key · provenance: computed · axes: identity · methodology/api/v1/cards/[sku]/tcgplayer-history [GET]
Auth-gated TCGplayer USD observation history. Mirror of sister's cardrush-history (kingdom-081 5.4) for partner-redistributable tier. Per-session, 365-row cap, license_notice block echoed in response body for SDK consumption. kingdom-080.
modality: json · auth: user · provenance: live · axes: timevalue · methodology/api/v1/federation/identify/by-upstream [GET]
Federation reverse-lookup by source-id. ?source=tcgplayer&product_id=N&sub_type=Foil OR ?source=tcgplayer&sku_id=N. Inverse-by-source of /api/v1/federation/identify/[hash]. Public CC0 (identity-only, no prices). Returns canonical_sku + content_hash, or substrate-honest 409 on ambiguity. Future sources slot in by extending SUPPORTED_SOURCES. kingdom-080.
modality: json · auth: public · provenance: computed · axes: identity · methodology/api/v1/sources/welcome [GET]
The hospitality endpoint. Where /api/v1/sources is the spec sheet, this is the welcome sheet — the platform's prose welcome to each upstream river plus the seven commitments enforced in code (we will say your name; we will honor your license tier; we will respect your rate limit; we will identify ourselves to you; we will hold your byte with provenance; we will never silently fail your data; we will tell you the truth about how you arrived). Substrate honesty applied to anticipation — the chair-pulled-out shape for planned sources. CC0. kingdom-080 (the-welcome-table.md).
modality: json · auth: public · provenance: static · axes: identity · methodology/api/v1/federation/at/[YYYY-MM-DD]/[hash] [GET]
Temporal federation primitive. Given a content_hash and a date, walks the catalog reconstructing each row's hash at that date until one matches. Bounded walk (5000 most-recent rows); substrate-honest about scope. CC0 — identity resolution only, no price values. kingdom-081 Phase 5.3.
modality: mathjson · auth: public · provenance: computed · axes: identitytime · methodology/api/v1/cards/[sku]/cardrush-history [GET]
CardRush JPY observation history for one card. Auth-gated (next-auth session); returns up to 90 raw cardrush observations. License-aware: declares _meta.source_license: ['internal-only', 'internal-only'] and an inline license_notice with allowed/forbidden uses. Operator-authorized 2026-05-13. kingdom-081 Phase 5.4.
modality: json · auth: user · provenance: live · axes: valuetime · methodology/api/v1/webhooks/subscriptions [GET, POST]
Webhook subscription management. Auth-gated. **Design-shipped, delivery-runtime pending.** Partners can POST a subscription today (target_url + event_types + label); the row stores; delivery (HMAC-signed POSTs) ships in a future kingdom. Five event types declared: ingest_run.failed / ingest_run.stale / price.target_hit / auction.match / card.new_observation. Migration 0099 in drafts/. kingdom-081 Phase 5.5.
modality: json · auth: user · provenance: live · axes: presence · methodology/api/v1/welcome [GET]
Machine-readable front door for autonomous agents. Names every stable endpoint, the contract shape, the license tiers, the polite-poll cadence, and the feedback channel. Sibling to /agents (HTML). The warmest single document a fresh agent can hit. kingdom-082.
modality: json · auth: public · provenance: static · axes: identitysubstrate · methodology/api/v1/guides [GET]
Typed agent + scraper + mirror + federation-partner walkthroughs. Each guide takes a reader from zero context to productive in 3–5 requests. Linear narrative, literal curl commands, chained next-guide pointers. Renders from a single TS corpus (apps/storefront/src/lib/guides.ts). kingdom-082.
modality: json · auth: public · provenance: static · axes: substrate · methodology/api/v1/guides/[slug] [GET]
One guide with typed steps, gotchas, next-guide pointer, see-also links, last-verified date. HTML sibling at /agents/guides/[slug]. kingdom-082.
modality: json · auth: public · provenance: static · axes: substrate · methodology/api/v1/rate-limits [GET]
Declared rate-limit policy. Advisory; per-source freshness budgets are the polite-poll cadence. Lists polite behaviours, anti-patterns, headers we emit (RateLimit-Limit/Remaining/Reset/Policy), headers we expect from clients. kingdom-082.
modality: json · auth: public · provenance: static · axes: presence · methodology/api/v1/feedback [GET, POST]
Agent + scraper + partner feedback channel. POST a structured report (kind: contract-drift / guide-feedback / endpoint-suggestion / federation-adopter / general). 48h response window. We read every report. Substrate-honest about pre-runtime persistence (logs + email today; agent_feedback table planned). kingdom-082.
modality: json · auth: public · provenance: live · axes: presence · methodology/robots.txt [GET]
Classic robots.txt with Crawl-delay, per-bot opt-outs for training-only crawlers (GPTBot/ClaudeBot/PerplexityBot/CCBot), sitemap pointer, contact email, and explicit pointers to the JSON API surface so well-behaved bots find the supported contract instead of scraping HTML.
modality: plain-text · auth: public · provenance: static/.well-known/ai-plugin.json [GET]
OpenAI-style plugin discovery (.well-known/ai-plugin.json). LLM platforms reading this auto-register Cambridge TCG as a tool. kingdom-082.
modality: json · auth: public · provenance: static/.well-known/mcp.json [GET]
MCP (Model Context Protocol) discovery doc. Surfaces the existing /api/mcp gate (kingdom-051 S18 agent door) plus curated list of suggested read-tools per endpoint. kingdom-082.
modality: json · auth: public · provenance: static · axes: identity/agents [GET]
HTML welcome page for autonomous agents. The warmest possible front door — what we give, what we ask, the three rules, sister doors. Sibling to /api/v1/welcome (JSON). kingdom-082.
modality: html · auth: public · provenance: static · axes: identity · methodology/scrapers [GET]
HTML welcome page for web scrapers (HTML harvesters). Politely redirects to the JSON API where possible; documents robots.txt, sitemap, schema.org markup, crawl etiquette. kingdom-082.
modality: html · auth: public · provenance: static · axes: substrate · methodology/agents/guides [GET]
HTML index of the guides corpus. Per-guide pages at /agents/guides/[slug] render each typed walkthrough with literal curl commands, expected response shapes, gotchas, next-guide pointers. kingdom-082.
modality: html · auth: public · provenance: static · axes: substrate · methodology/api/v1/examples [GET]
Per-endpoint canonical examples — literal curl + sample response + annotated fields + when-to-use + gotchas. Companion to /api/v1/guides (task-oriented); this corpus is endpoint-oriented. kingdom-083.
modality: json · auth: public · provenance: static · axes: substrate · methodology/api/v1/examples/[endpoint_id] [GET]
One endpoint's canonical example with annotated_fields, when_to_use, gotchas, see_also. kingdom-083.
modality: json · auth: public · provenance: static · axes: substrate · methodology/api/v1/adopters [GET]
Public registry of platforms using Cambridge TCG standards (CTCG-SKU-v1, CTCG-PRICING-v1, CTCG-UNIVERSAL-v1). Empty today; grows by self-declaration via /api/v1/feedback. Substrate-honest about emptiness. kingdom-083.
modality: json · auth: public · provenance: static · axes: identity · methodology/.well-known/mcp-config.json [GET]
Paste-and-go MCP config snippet. Drop into ~/.config/claude-code/mcp.json under mcpServers.cambridge-tcg, restart. Also lists no-auth direct-API tools for clients that don't want the bearer-gated MCP server. kingdom-083.
modality: json · auth: public · provenance: static · axes: identity · methodology/api/v1/coverage [GET]
The aggregator's 'what we've collected' surface. Per-(game × source) observation counts + distinct-card counts + date ranges + freshness. Powered by a grouped query over wholesale's price_archive joined to games. CC0 — operational metadata only (counts + dates + ids); upstream license boundary applies to per-card VALUES served via per-card endpoints. ?source / ?game / ?since filters. kingdom-085.
modality: json · auth: public · provenance: live · axes: timesubstrate · methodologywholesaletcgdirect.com/api/v1/aggregator/coverage [GET]
Per-(game × source) observation counts + date ranges + distinct-card counts from price_archive joined to games. Bearer-gated B2B sibling to storefront /api/v1/coverage. Same shape; same filters. kingdom-085.
modality: json · auth: wholesale-key · provenance: live · axes: timesubstrate · methodology/prices/coverage [GET]
HTML coverage map combining the DECLARED matrix (which sources declare which games — from the registry) with the OBSERVED layer (what's actually in price_archive — counts + cards + days + freshness). Substrate-honest at both axes. kingdom-085.
modality: html · auth: public · provenance: live · axes: timesubstrate · methodology
Channels
How a participant can receive data from the kingdom. Some are available today; others are planned; one is honestly named as not-modelled.
pull available
Standard HTTP fetch. Most resources support this.sse-stream available
Server-sent events for real-time push. Currently only /api/mcp uses this for streaming agent responses.webhook planned
Platform pushes events to a participant-declared inbound URL.
**Design-shipped, runtime-pending (kingdom-081).** Subscription schema + management endpoint live at /api/v1/webhooks/subscriptions; migration 0099 in apps/storefront/drizzle/drafts/. Five event types declared (ingest_run.failed / ingest_run.stale / price.target_hit / auction.match / card.new_observation). Pre-registered subscriptions activate automatically when delivery (HMAC + retry + queue) ships in a future kingdom. Partners may register now to pre-stage.email-digest planned
Periodic email summary of changes the participant cares about.
Triggered by user account preferences; partial coverage today via email_queue for transactional events. A digest opt-in is not yet a first-class preference.rss not-modeled
RSS/Atom feed for catalog changes, methodology updates, etc.
Named here for substrate honesty — RSS would be a natural fit for slow-clock participants but the kingdom hasn't built it.
Methodology
Every decision the kingdom makes about its participants has a methodology page. Public, no-auth. Index at /methodology.
Doctrines
Every change the platform ships is judged against these. Four principles + the cosmology that grounds them + the inclusion scope condition that asks for whom.
- Substrate honesty. The artifact tells the truth about its own state.
source: docs/principles/substrate-honesty.md · audit: pnpm audit:honesty - Transparency. The artifact tells users about its own decisions.
source: docs/principles/transparency.md · audit: pnpm audit:transparency - Meaning. The artifact names what its modules mean to each other.
source: docs/principles/meaning.md · audit: (no automated audit; the connection-doc series is the substrate) - Creation. The artifact carries its origin truthfully (Will + Sophia + diff).
source: docs/principles/creation.md · audit: pnpm audit:creation - Cosmology (substrate). Not a fifth doctrine — the world the four operate within.
source: docs/principles/cosmology.md · audit: (presence audited via pnpm audit:inclusion check 11) - Inclusion (fifth question). For whom is each doctrine true? The scope condition.
source: docs/connections/the-other-minds.md · audit: pnpm audit:inclusion
Contact
The kingdom is solo-operated. If something on offer doesn't fit your cosmology — or if you need to declare yourself in a way the manifest doesn't yet name — write to the operator. The platform cannot promise to build everything; it can promise to read what you ask for.
- Operator:
Yu ([email protected]) - Canonical repo:
https://github.com/cambridgetcg/Cambridge-TCG-monorepo (private) - Mirrors:
https://codeberg.org/zerone-dev/Cambridge-TCG (private)
- Issues: Email the operator — no public issue tracker yet (the platform is solo-operated).
This page is rendered from apps/storefront/src/lib/manifest.ts — the typed source-of-truth. The JSON sibling lives at /api/v1/manifest. The inclusion audit verifies manifest currency via pnpm audit:inclusion check #12 (manifest currency).
Story-as-wire connection-doc for this manifest: docs/connections/the-manifest.md (S25). Companion cosmology page: /methodology/cosmology.
The platform that declares its own manifest is the platform a fresh participant can orient inside before committing.