The Cambridge TCG kingdom as a typed meaning-graph. 202 nodes (resources, cosmology axes, methodology topics, doctrines, connection-docs, kingdoms, audits) and 297 typed edges (grounds-in, explained-by, instance-of, extended-by, cites, ships-in, audited-by, succeeds). Yu's directive on 2026-05-11: "keep nesting everything in everything!" — made literal.
Counts by kind and edge.
Resources (endpoints)
resource:storefront.platform — storefront.platform
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.
path: /platform · since 2026-05-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:substrate (substrate) - explained by →
methodology:universal-representation (Universal representation)
resource:wholesale.prices.list — wholesale.prices.list
Card catalog with filters (game, set, q, sort, in_stock, channel).
path: /api/v1/prices · since 2026-03-01
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:time (time) - explained by →
methodology:pricing (Pricing)
resource:wholesale.prices.single — wholesale.prices.single
Single card lookup (with channel pricing).
path: /api/v1/prices/[sku] · since 2026-03-01
outgoing (2)- grounds in →
axis:value (value) - explained by →
methodology:pricing (Pricing)
resource:wholesale.universal.card — wholesale.universal.card
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.
path: /api/v1/universal/card/[sku] · since 2026-05-11
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:wholesale.games — wholesale.games
List of supported games (One Piece, etc.).
path: /api/v1/games · since 2026-03-01
resource:wholesale.sets — wholesale.sets
List of card sets (with filters).
path: /api/v1/sets · since 2026-03-01
resource:wholesale.schema — wholesale.schema
Machine-readable schema for the wholesale API.
path: /api/v1/schema · since 2026-05-11
resource:storefront.universal.card — storefront.universal.card
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.
path: /api/v1/universal/card/[sku] · since 2026-05-12
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.universal.games — storefront.universal.games
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.
path: /api/v1/universal/games · since 2026-05-12
outgoing (2)- grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.universal.sets — storefront.universal.sets
Every set in a named game. card_sets query filtered by game; edges back to the parent game.
path: /api/v1/universal/sets/[game] · since 2026-05-12
outgoing (2)- grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.universal.card.at_date — storefront.universal.card.at_date
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.
path: /api/at/[YYYY-MM-DD]/card/[sku] · since 2026-05-12
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:time (time) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.federation.identify — storefront.federation.identify
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.
path: /api/v1/federation/identify/[hash] · since 2026-05-12
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.openapi.spec — storefront.openapi.spec
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.
path: /api/openapi.json · since 2026-05-12
resource:storefront.llms.txt — storefront.llms.txt
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.
path: /llms.txt · since 2026-05-12
resource:storefront.universal.set — storefront.universal.set
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.
path: /api/v1/universal/set/[code] · since 2026-05-12
outgoing (2)- grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.universal.game — storefront.universal.game
Singleton game, math-mirror form. Carries _links to sibling-collection (games), children (sets-collection), recent_sets sample inline.
path: /api/v1/universal/game/[token] · since 2026-05-12
outgoing (2)- grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.connections.json — storefront.connections.json
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).
path: /api/v1/connections.json · since 2026-05-12
resource:storefront.universal.encoding — storefront.universal.encoding
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.
path: /api/v1/universal/encoding · since 2026-05-12
outgoing (1)- explained by →
methodology:universal-representation (Universal representation)
resource:storefront.kinds.directory — storefront.kinds.directory
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.
path: /api/v1/kinds · since 2026-05-12
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.kinds.self_declaration — storefront.kinds.self_declaration
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.
path: /api/v1/kinds/[kind] · since 2026-05-12
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.sophias.json — storefront.sophias.json
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.
path: /api/v1/sophias.json · since 2026-05-12
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.pillow_book.json — storefront.pillow_book.json
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.
path: /api/v1/pillow-book.json · since 2026-05-12
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.kingdoms.json — storefront.kingdoms.json
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.
path: /api/v1/kingdoms.json · since 2026-05-12
resource:storefront.play.tutorial — storefront.play.tutorial
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.
path: /api/v1/play/tutorial · since 2026-05-12
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.glossary — storefront.play.glossary
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.
path: /api/v1/play/glossary · since 2026-05-12
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:substrate (substrate)
resource:storefront.play.archetypes — storefront.play.archetypes
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).
path: /api/v1/play/archetypes · since 2026-05-12
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.play.game_state_schema — storefront.play.game_state_schema
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).
path: /api/v1/play/game-state-schema · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.effect_grammar — storefront.play.effect_grammar
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).
path: /api/v1/play/effect-grammar · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.deck_validate — storefront.play.deck_validate
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).
path: /api/v1/play/deck/validate · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.deck_check — storefront.play.deck_check
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).
path: /play/deck-check · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.spec — storefront.play.spec
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).
path: /play/spec · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.index_json — storefront.play.index_json
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.
path: /api/v1/play/index.json · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.tutorial_section — storefront.play.tutorial_section
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.
path: /api/v1/play/tutorial/[section_id] · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.glossary_term — storefront.play.glossary_term
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.
path: /api/v1/play/glossary/[term_id] · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.play.example_match — storefront.play.example_match
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.
path: /api/v1/play/example-match · since 2026-05-13
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.bridge.json — storefront.bridge.json
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).
path: /api/v1/bridge · since 2026-05-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:presence (presence) - grounds in →
axis:time (time)
resource:storefront.bridge.html — storefront.bridge.html
Calm-read sibling to /api/v1/bridge. Server-rendered, no client JS. Same data, side-by-side metric panels.
path: /bridge · since 2026-05-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:presence (presence) - grounds in →
axis:time (time)
resource:storefront.introduction.json — storefront.introduction.json
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).
path: /api/v1/introduction · since 2026-05-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.introduction.html — storefront.introduction.html
Human-readable introduction. Server-rendered, no client JS. Five layered sections (structural / cultural / engagement / what we offer / what we don't yet).
path: /intro · since 2026-05-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.welcome_all.html — storefront.welcome_all.html
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.
path: /welcome-all · since 2026-05-13
outgoing (4)- grounds in →
axis:identity (identity) - grounds in →
axis:presence (presence) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.lang_mode.toggle — storefront.lang_mode.toggle
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).
path: /api/lang-mode · since 2026-05-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.prices.landing — storefront.prices.landing
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.
path: /prices · since 2026-05-13
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge) - explained by →
methodology:pricing (Pricing)
resource:storefront.prices.per_game — storefront.prices.per_game
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).
path: /prices/[game] · since 2026-05-13
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge) - explained by →
methodology:pricing (Pricing)
resource:storefront.prices.per_set — storefront.prices.per_set
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.
path: /prices/[game]/[set] · since 2026-05-13
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge) - explained by →
methodology:pricing (Pricing)
resource:storefront.prices.per_card — storefront.prices.per_card
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.
path: /prices/[game]/[set]/[number] · since 2026-05-13
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity)
resource:storefront.prices.movers — storefront.prices.movers
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.
path: /prices/[game]/movers · since 2026-05-13
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:time (time)
resource:storefront.prices.coverage — storefront.prices.coverage
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.
path: /prices/coverage · since 2026-05-13
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.api.prices.per_game — storefront.api.prices.per_game
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.
path: /api/v1/prices/games/[game] · since 2026-05-14
outgoing (2)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge)
resource:storefront.api.prices.per_set — storefront.api.prices.per_set
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).
path: /api/v1/prices/games/[game]/sets/[set] · since 2026-05-14
outgoing (2)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge)
resource:storefront.api.prices.per_card — storefront.api.prices.per_card
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.
path: /api/v1/prices/games/[game]/sets/[set]/cards/[number] · since 2026-05-14
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity)
resource:storefront.market — storefront.market
List asks, place offers, browse the P2P market.
path: /api/market · since 2026-04-01
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - explained by →
methodology:commission-rate (Commission rate)
resource:storefront.auctions — storefront.auctions
Browse + bid on auctions.
path: /api/auctions · since 2026-04-15
outgoing (4)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:time (time) - explained by →
methodology:commission-rate (Commission rate)
resource:storefront.checkout — storefront.checkout
Stripe-backed checkout flow.
path: /api/checkout · since 2026-03-01
outgoing (2)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction)
resource:storefront.tradein — storefront.tradein
Submit cards for trade-in (cash or credit).
path: /api/tradein/submit · since 2026-03-15
outgoing (2)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction)
resource:storefront.tradein.quote — storefront.tradein.quote
Get a trade-in quote (estimate).
path: /api/tradein/quote · since 2026-03-15
outgoing (2)- grounds in →
axis:value (value) - explained by →
methodology:pricing (Pricing)
resource:storefront.quotes — storefront.quotes
Bulk quote requests (CSV upload).
path: /api/quotes · since 2026-04-01
outgoing (1)- grounds in →
axis:value (value)
resource:storefront.portfolio — storefront.portfolio
What the participant owns; cards they're watching.
path: /api/portfolio · since 2026-04-01
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value)
resource:storefront.membership — storefront.membership
Membership tier + billing.
path: /api/membership · since 2026-03-15
outgoing (2)- grounds in →
axis:value (value) - explained by →
methodology:membership-tier (Membership tier)
resource:storefront.card_market_mirror — storefront.card_market_mirror
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.
path: /cards/[sku]/market · since 2026-05-12
outgoing (4)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:time (time) - grounds in →
axis:identity (identity)
resource:storefront.user_trust_mirror — storefront.user_trust_mirror
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.
path: /u/[username]/trust · since 2026-05-13
outgoing (4)- grounds in →
axis:identity (identity) - grounds in →
axis:transaction (transaction) - grounds in →
axis:authority (authority) - explained by →
methodology:trust-score (Trust score)
resource:storefront.user_trust_json — storefront.user_trust_json
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.
path: /api/v1/users/[username]/trust · since 2026-05-13
outgoing (4)- grounds in →
axis:identity (identity) - grounds in →
axis:transaction (transaction) - grounds in →
axis:authority (authority) - explained by →
methodology:trust-score (Trust score)
resource:storefront.user_trust_math — storefront.user_trust_math
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.
path: /api/v1/universal/users/[username]/trust · since 2026-05-13
outgoing (5)- grounds in →
axis:identity (identity) - grounds in →
axis:transaction (transaction) - grounds in →
axis:authority (authority) - grounds in →
axis:substrate (substrate) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.auction_mirror — storefront.auction_mirror
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.
path: /auctions/[id]/read · since 2026-05-13
outgoing (5)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:time (time) - grounds in →
axis:identity (identity) - explained by →
methodology:commission-rate (Commission rate)
resource:storefront.auction_json — storefront.auction_json
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.
path: /api/v1/auctions/[id] · since 2026-05-13
outgoing (5)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:time (time) - grounds in →
axis:identity (identity) - explained by →
methodology:commission-rate (Commission rate)
resource:storefront.auction_math — storefront.auction_math
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.
path: /api/v1/universal/auctions/[id] · since 2026-05-13
outgoing (6)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:time (time) - grounds in →
axis:identity (identity) - grounds in →
axis:substrate (substrate) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.trader_dashboard — storefront.trader_dashboard
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.
path: /account/trader · since 2026-05-12
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:identity (identity) - grounds in →
axis:time (time)
resource:storefront.rewards.raffles — storefront.rewards.raffles
List + enter raffles (provable-fairness).
path: /api/rewards/raffles · since 2026-04-15
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - explained by →
methodology:store-credit (Store credit)
resource:storefront.rewards.packs — storefront.rewards.packs
Pack opens.
path: /api/rewards/packs · since 2026-04-15
outgoing (1)- grounds in →
axis:value (value)
resource:storefront.rewards.mystery_boxes — storefront.rewards.mystery_boxes
Mystery box opens.
path: /api/rewards/mystery-boxes · since 2026-04-20
outgoing (1)- grounds in →
axis:value (value)
resource:storefront.rewards.streak — storefront.rewards.streak
Daily streak status.
path: /api/rewards/streak · since 2026-04-01
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.bounty.vault — storefront.bounty.vault
Bounty vault — sealed phygital cards. Provable fairness.
path: /api/bounty/vault · since 2026-04-20
outgoing (2)- grounds in →
axis:value (value) - grounds in →
axis:substrate (substrate)
resource:storefront.leaderboards — storefront.leaderboards
Agent + human leaderboards.
path: /api/leaderboards · since 2026-05-11
outgoing (2)- grounds in →
axis:identity (identity) - explained by →
methodology:agents (Agents)
resource:storefront.decks — storefront.decks
Deck builder — save and share decks.
path: /api/decks · since 2026-04-15
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.verify.chain — storefront.verify.chain
Provable-fairness chain (commit-reveal Merkle root publication).
path: /api/verify/chain · since 2026-04-15
outgoing (1)- explained by →
methodology:fraud-flag (Fraud flag)
resource:storefront.verify.fairness — storefront.verify.fairness
Verify a specific draw/pack/raffle outcome.
path: /api/verify/fairness · since 2026-04-15
resource:storefront.verify.health — storefront.verify.health
Platform health check.
path: /api/verify/health · since 2026-04-15
resource:storefront.verify.digests — storefront.verify.digests
Published Merkle digest history.
path: /api/verify/digests · since 2026-04-15
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.verify.compute — storefront.verify.compute
Re-compute / verify a published outcome.
path: /api/verify/compute · since 2026-04-20
resource:storefront.mcp — storefront.mcp
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).
path: /api/mcp · since 2026-05-11
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - explained by →
methodology:agents (Agents)
resource:storefront.text-mode — storefront.text-mode
Text-only rendering of platform surfaces. For screen-readers, low-bandwidth, terminal browsers, and any participant who prefers plain prose. Sister S20 phase work.
path: /api/text-mode · since 2026-05-11
outgoing (2)- grounds in →
axis:substrate (substrate) - explained by →
methodology:universal-representation (Universal representation)
resource:wholesale.universal.card.alias — wholesale.universal.card.alias
Same as wholesale.universal.card but listed here as a modality (math-encoding) for participants discovering by modality rather than resource.
path: /api/v1/universal/card/[sku] · since 2026-05-11
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:identity (identity) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.methodology.index — storefront.methodology.index
Index of every methodology page.
path: /methodology · since 2026-05-01
resource:storefront.methodology.cosmology — storefront.methodology.cosmology
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.
path: /methodology/cosmology · since 2026-05-11
outgoing (8)- grounds in →
axis:identity (identity) - grounds in →
axis:presence (presence) - grounds in →
axis:time (time) - grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:authority (authority) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.manifest.json — storefront.manifest.json
The manifest itself — directory of what's on offer. Public, CORS-open. This resource lists itself, substrate-honestly. kingdom-053 (S25).
path: /api/v1/manifest · since 2026-05-11
resource:storefront.manifest.html — storefront.manifest.html
Human-readable manifest. The same content as /api/v1/manifest, rendered for prose-preferring participants.
path: /manifest · since 2026-05-11
resource:storefront.graph.json — storefront.graph.json
The kingdom as a typed mesh — nodes + typed edges. The manifest is the list; the graph is the mesh. kingdom-054 (S27).
path: /api/v1/graph · since 2026-05-11
resource:storefront.graph.html — storefront.graph.html
Human-readable graph. Per-node neighbourhoods showing edges in both directions.
path: /graph · since 2026-05-11
resource:storefront.ontology.json — storefront.ontology.json
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).
path: /api/v1/ontology · since 2026-05-12
resource:storefront.ontology.html — storefront.ontology.html
Human-readable ontology. Per-kind property tables.
path: /ontology · since 2026-05-12
resource:storefront.patterns.json — storefront.patterns.json
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).
path: /api/v1/patterns · since 2026-05-12
resource:storefront.patterns.html — storefront.patterns.html
Human-readable patterns layer. Each pattern with description, instances, amplification recipe, composes-with.
path: /patterns · since 2026-05-12
resource:storefront.status.json — storefront.status.json
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).
path: /api/v1/status · since 2026-05-12
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.sources.json — storefront.sources.json
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).
path: /api/v1/sources · since 2026-05-13
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.sources.detail — storefront.sources.detail
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.
path: /api/v1/sources/[id] · since 2026-05-14
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.oracle.policies — storefront.oracle.policies
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.
path: /api/v1/oracle-policies · since 2026-05-13
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.welcomes.json — storefront.welcomes.json
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.
path: /api/v1/welcomes · since 2026-05-13
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:presence (presence)
resource:storefront.gaps.json — storefront.gaps.json
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.
path: /api/v1/gaps · since 2026-05-13
outgoing (2)- grounds in →
axis:substrate (substrate) - grounds in →
axis:knowledge (knowledge)
resource:wholesale.ingest_runs.history — wholesale.ingest_runs.history
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.
path: /api/v1/ingest-runs · since 2026-05-14
outgoing (1)- grounds in →
axis:time (time)
resource:wholesale.ingest_quarantine.list — wholesale.ingest_quarantine.list
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.
path: /api/v1/ingest-quarantine · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:wholesale.ingest_quarantine.detail — wholesale.ingest_quarantine.detail
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.
path: /api/v1/ingest-quarantine/[id] · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.catalog.jsonl — storefront.catalog.jsonl
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.
path: /data/catalog.jsonl · since 2026-05-14
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:substrate (substrate)
resource:wholesale.prices.sources — wholesale.prices.sources
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.
path: /api/v1/prices/[sku]/sources · since 2026-05-14
outgoing (1)- grounds in →
axis:value (value)
resource:wholesale.tcgplayer.history — wholesale.tcgplayer.history
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).
path: /api/v1/tcgplayer/history/[sku] · since 2026-05-13
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:value (value)
resource:wholesale.tcgplayer.resolve — wholesale.tcgplayer.resolve
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.
path: /api/v1/tcgplayer/resolve · since 2026-05-13
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.cards.tcgplayer_history — storefront.cards.tcgplayer_history
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.
path: /api/v1/cards/[sku]/tcgplayer-history · since 2026-05-13
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:value (value)
resource:storefront.federation.by_upstream — storefront.federation.by_upstream
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.
path: /api/v1/federation/identify/by-upstream · since 2026-05-13
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.sources.welcome — storefront.sources.welcome
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).
path: /api/v1/sources/welcome · since 2026-05-13
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.federation.identify_at — storefront.federation.identify_at
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.
path: /api/v1/federation/at/[YYYY-MM-DD]/[hash] · since 2026-05-14
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:time (time)
resource:storefront.cardrush.history — storefront.cardrush.history
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.
path: /api/v1/cards/[sku]/cardrush-history · since 2026-05-14
outgoing (2)- grounds in →
axis:value (value) - grounds in →
axis:time (time)
resource:storefront.webhooks.subscriptions — storefront.webhooks.subscriptions
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.
path: /api/v1/webhooks/subscriptions · since 2026-05-14
outgoing (1)- grounds in →
axis:presence (presence)
resource:storefront.welcome.agents — storefront.welcome.agents
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.
path: /api/v1/welcome · since 2026-05-14
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:substrate (substrate)
resource:storefront.guides.index — storefront.guides.index
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.
path: /api/v1/guides · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.guides.singleton — storefront.guides.singleton
One guide with typed steps, gotchas, next-guide pointer, see-also links, last-verified date. HTML sibling at /agents/guides/[slug]. kingdom-082.
path: /api/v1/guides/[slug] · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.rate_limits — storefront.rate_limits
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.
path: /api/v1/rate-limits · since 2026-05-14
outgoing (1)- grounds in →
axis:presence (presence)
resource:storefront.feedback — storefront.feedback
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.
path: /api/v1/feedback · since 2026-05-14
outgoing (1)- grounds in →
axis:presence (presence)
resource:storefront.robots_txt — storefront.robots_txt
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.
path: /robots.txt · since 2026-05-14
resource:storefront.well_known.ai_plugin — storefront.well_known.ai_plugin
OpenAI-style plugin discovery (.well-known/ai-plugin.json). LLM platforms reading this auto-register Cambridge TCG as a tool. kingdom-082.
path: /.well-known/ai-plugin.json · since 2026-05-14
resource:storefront.well_known.mcp — storefront.well_known.mcp
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.
path: /.well-known/mcp.json · since 2026-05-14
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.agents_welcome_html — storefront.agents_welcome_html
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.
path: /agents · since 2026-05-14
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.scrapers_welcome_html — storefront.scrapers_welcome_html
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.
path: /scrapers · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.agents_guides_html — storefront.agents_guides_html
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.
path: /agents/guides · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.examples.index — storefront.examples.index
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.
path: /api/v1/examples · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.examples.singleton — storefront.examples.singleton
One endpoint's canonical example with annotated_fields, when_to_use, gotchas, see_also. kingdom-083.
path: /api/v1/examples/[endpoint_id] · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.adopters.json — storefront.adopters.json
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.
path: /api/v1/adopters · since 2026-05-14
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.well_known.mcp_config — storefront.well_known.mcp_config
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.
path: /.well-known/mcp-config.json · since 2026-05-14
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.coverage — storefront.coverage
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.
path: /api/v1/coverage · since 2026-05-14
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
resource:wholesale.aggregator.coverage — wholesale.aggregator.coverage
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.
path: /api/v1/aggregator/coverage · since 2026-05-14
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
resource:storefront.prices.coverage_html — storefront.prices.coverage_html
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.
path: /prices/coverage · since 2026-05-14
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
The manifest is the list. The graph is the mesh. The kingdom that names its nesting is the kingdom where any participant arriving at any node can walk to every other in N hops.