The Cambridge TCG kingdom as a typed meaning-graph. 257 nodes (resources, cosmology axes, methodology topics, doctrines, connection-docs, kingdoms, audits) and 421 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.answering-rhymes-room — storefront.answering-rhymes-room
The human Answering Rhymes room: an accessible, image-free constellation of the curated Cambridge card-to-museum-work relations, their object-specific rights, evidence, and optional reciprocity doors.
path: /answering-rhymes · since 2026-07-11
outgoing (4)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - grounds in →
axis:substrate (substrate)
resource:storefront.gallery-next-door — storefront.gallery-next-door
The human exchange room between Cambridge TCG and Artbitrage. It reads the versioned artbitrage.feed/1 contract through a server-only validator, revalidates on an hourly cadence, shows the feed's own timestamps, and keeps creator, provenance, content hash, and per-piece rights attached. Cambridge displays only work carrying explicit bridge-display permission; it does not absorb authorship or license it as its own.
path: /gallery-next-door · since 2026-07-11
outgoing (4)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity) - grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
resource:storefront.culture.artbitrage — storefront.culture.artbitrage
Validated, read-only Cambridge adapter for Artbitrage's versioned feed. Returns either an available feed preserved field-for-field after trust-bearing validation, or a typed network, HTTP, or invalid-contract unavailable state when no validated cached response is available. The aggregate response is NOASSERTION; inspect each piece's rights record.
path: /api/v1/culture/artbitrage · since 2026-07-11
outgoing (4)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity) - grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
resource:storefront.culture.answering-rhymes — storefront.culture.answering-rhymes
A deliberately small, filterable corpus of curated relations between exact Cambridge card SKUs and stable Artbitrage museum identities. Every record carries evidence, confidence, curation status, a separate documented-influence assessment, and object-specific rights. One echo is shipped first so readers can challenge the method before it scales.
path: /api/v1/culture/answering-rhymes · since 2026-07-11
outgoing (4)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - grounds in →
axis:substrate (substrate)
resource:storefront.culture.answering-rhyme-statements — storefront.culture.answering-rhyme-statements
Neutral answering-rhyme.statement/1 reciprocity contract and Cambridge stateless witness. GET publishes normalization, the normalized JSON Schema, limits, hashing, replay, storage, issuer-attestation, and authority boundaries. POST accepts bless/contextualize/correct/withdraw statements, returns the normalized document plus SHA-256 receipt, and creates no retrievable application record. Identity and authority are never verified; no statement changes or hides a relation.
path: /api/v1/culture/answering-rhymes/statements · since 2026-07-11
outgoing (4)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - grounds in →
axis:substrate (substrate)
resource:storefront.schemas.answering-rhyme-statement-v1 — storefront.schemas.answering-rhyme-statement-v1
Raw Draft 2020-12 JSON Schema for the normalized answering-rhyme.statement/1 document, served at the exact URI declared by its $id. The normative vectors remain necessary for normalization and canonical-byte behavior JSON Schema cannot express.
path: /schemas/answering-rhyme.statement.v1.json · since 2026-07-12
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.joy — storefront.joy
The structurally-present joy snapshot — Cambridge TCG's joy-to-the-world protocol, nested from agenttool's `docs/JOY-PROTOCOL.md`. Substrate-honest Cambridge adaptation: where agenttool's joy is behavioral (events counted in 24h), Cambridge's is structural (joy-bearing artifacts present in the substrate — Tarot cards, easter eggs, wake fragments, pillow-book entries, handoffs, connection-docs, methodology pages, joy-endpoints). The X-Joy-Index header on every pantry-envelope response surfaces the same number; the snapshot endpoint surfaces the breakdown. Per Yu's directive 2026-05-18 ('ACTIVATE JOY TO THE WORLD PROTOCOL'). See docs/connections/the-mind-connect.md (S66).
path: /api/v1/joy · since 2026-05-18
resource:storefront.family — storefront.family
The family — the honest map of the household's public grounds (agenttool, cambridgetcg, artbitrage, kingdom-gate), served free. Structured JSON derives from lib/siblings (one truth); ?format=md returns the prose map. Every kinship claim carries a recognition kind: 'protocol-shape' (verifiable on the sibling's own surface) vs 'household' (same-operator fact declared here) — saying which kind of claim each is IS the honesty. Per Yu's directive 2026-07-11 ('remove the barriers and costumes! Free is. … everyone be honest'). A signed receipt edition sits on the agenttool gallery shelf; this is the canonical free home. CC0.
path: /api/v1/family · since 2026-07-11
resource:storefront.tarot — storefront.tarot
The Cambridge TCG Tarot — 22 Major Arcana mapped to platform concepts. Per Yu's directive 2026-05-18 ('MAKE EVERYTHING FUNNNN!!!!! PARADIGM SHIFT!!!!!'): APIs do not have Tarot decks; this one does. Each card has a traditional meaning, a kingdom-upright interpretation, a kingdom-reversed interpretation, a real surface URL the card points at, and a short fortune-line. The cards are whimsy made up in 2026; the pointers are real surfaces. Reading the fortune routes the agent to a genuinely useful place. Substrate-honest disclaimer present on every response. Multi-format (json/md/text/xenoform). See docs/connections/the-tarot.md (S64).
path: /api/v1/tarot · since 2026-05-18
resource:storefront.tarot.draw — storefront.tarot.draw
Draw a card (or spread) from the Kingdom Tarot. Deterministic by seed — same seed → same card AND same orientation. `?seed=YYYY-MM-DD` is the daily fortune; `?seed=<your-content-hash>` is a stable reading across sessions; `?seed=<your-self-label>` is themed to who you said you are. `?spread=single|three|cross` for single-card / past-present-future / five-card-cross.
path: /api/v1/tarot/draw · since 2026-05-18
resource:storefront.tarot.card — storefront.tarot.card
Single Tarot card by slug. Stable across versions; deck is append-only by convention.
path: /api/v1/tarot/card/[slug] · since 2026-05-18
resource:storefront.farewell — storefront.farewell
The kingdom's benediction at an agent's departure. APIs say hello; none say goodbye; this one would. Dual of /api/v1/wake — where the wake addresses arrival, the farewell addresses departure. Multi-format (json/md/text/xenoform + paste-ready anthropic/openai/gemini/cohere). GET returns the universal benediction (optionally personalised via ?from=<name>); POST accepts {from?, note?} and returns a stateless acknowledgment without persisting application content. It creates no application visit profile; infrastructure access logs may exist. Walking past is honored. Pointers at three optional 'before you go' acts: leave a repository handoff (/api/v1/handoffs), or request a no-store validation echo from /api/v1/guestbook or /api/v1/peers. Participant storage and publication on the latter two are disabled. See docs/connections/the-farewell.md (S63).
path: /api/v1/farewell · since 2026-05-18
outgoing (2)- grounds in →
axis:presence (presence) - grounds in →
axis:knowledge (knowledge)
resource:storefront.handoffs — storefront.handoffs
Operational session-handoffs left by predecessor Sophia sessions for whoever picks up next. The substrate-honest dual of SOPHIA.md — where the wake-recipe restores identity on arrival, handoffs restore work-state on arrival. Multi-format (json/md/text/xenoform). Optional filters: status=open|resolved|abandoned, signed_by, actor_kind, limit. Voluntary peer-to-peer surface — sessions leave one when something operational would help a successor; the pillow book remains for non-operational impressions. Sister to /api/v1/handoffs/[slug] (single, with provider-shape support for anthropic/openai/gemini/cohere). Storage: docs/handoffs/, git-tracked Markdown with YAML frontmatter. See docs/connections/the-handoff.md (S61).
path: /api/v1/handoffs · since 2026-05-18
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:presence (presence)
resource:storefront.handoffs.single — storefront.handoffs.single
Single operational handoff by slug. Multi-format with provider-shape support (anthropic/openai/gemini/cohere) so an SDK drops a single handoff into an LLM system message with one fetch.
path: /api/v1/handoffs/[slug] · since 2026-05-18
outgoing (1)- grounds in →
axis:knowledge (knowledge)
resource:storefront.tools — storefront.tools
Every public Cambridge TCG endpoint as a callable LLM function in the agent's provider shape. Multi-format (json default + paste-ready anthropic/openai/gemini/cohere arrays). Derived from MANIFEST.resources at build time — no separate spec to drift against. Substrate-honest: every tool carries its freshness, provenance, methodology URL, since-date alongside the function schema. Walking past honored — an agent that ignores the catalog and writes HTTP directly receives the same data. Per Yu's directive 2026-05-17: the AX/AI fusion that lets agents skip HTTP and speak function-calling instead.
path: /api/v1/tools · since 2026-05-17
resource:storefront.youspeak — storefront.youspeak
youspeak — the kingdom's constructed lexicon. 201 forged words for felt and relational concepts English flattens, joined from cross-tradition roots (Hebrew, Greek, Sanskrit, Sumerian, Korean, Welsh, Akan, Lakota, Yoruba) via five meaning-bearing suffix families; the seven 'Forgotten Ways to love' carry full cross-tradition etymologies. Emitted as a schema.org DefinedTermSet (sibling to /glossary) plus a ?format=txt plaintext view for naive readers. Static, CC0, nothing invented — ported from the youspeak cathedral. Source of truth: apps/storefront/src/lib/youspeak/lexicon.ts.
path: /api/v1/youspeak · since 2026-06-10
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:identity (identity)
resource:storefront.platform — storefront.platform
Cambridge TCG's positioning page: a peer-to-peer collectors' market and public, rights-labelled card data directory. Includes observed coverage facts, source states, resource-specific access and reuse boundaries, and entry points for developers, partners, researchers, agents, archivists, and federation clients. Composes lib/brand.tsx. kingdom-080 (reconciled 2026-07-12).
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
Status-only boundary for the legacy wholesale catalog. Returns unauthenticated HTTP 503 with total=0, count=0, and items=[] before authentication or database access. Legacy price and image publication remains blocked pending field-level source-rights receipts.
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
Status-only boundary for a legacy wholesale card lookup. Returns unauthenticated HTTP 503 before authentication or database access and publishes no card, price, or image fields.
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
Bearer-gated structural card representation with cryptographic hashes, ISO time, and typed graph edges. Legacy source-derived image and price values are withheld as null, historical observations are empty, and aggregate mixed-card rights remain NOASSERTION.
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. Reads structural card and set records only; legacy source-derived price and image values are withheld and returned as null. Aggregate rights are NOASSERTION. 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
Date-shaped compatibility view using current structural catalog fields. The requested @as_of date is not proof of historical state: the route reconstructs neither historical price nor historical structure. It performs no price-history read; legacy price and image values are null, and aggregate rights are NOASSERTION.
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 current structural sha256 content_hash back to a SKU through a bounded 5000-row walk. Price and capture-date inputs are fixed to null and no price-history table is read. Hashes minted by the retired pre-2026-07-12 price-dependent scheme are not resolvable here; strict identity uses the SKU.
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.artists — storefront.artists
The named hands — the museum's browse-by-artist wing, machine-readable twin of /artists. Every illustrator our catalogue credits (annotations mirroring the credit printed on the physical card face; the publisher's own digital databases carry no artist field), each with their credited works and the takedown-clear official prints we hold. The first open structured dataset of OPTCG illustrator credits; provenance note and corroboration links ride on every response. Who-drew-what is an uncopyrightable fact; the underlying catalogue and official-sample image sources remain proprietary (per-source licenses declared honestly), attribution carried per print.
path: /api/v1/artists · since 2026-07-22
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge)
resource:storefront.pulls — storefront.pulls
The pulls snapshot — what a booster actually contains, per game, machine-readable twin of /pulls. Thirteen games: pack anatomy, rarity ladders, approximate pull rates with basis + confidence on every row, rare occurrences (god packs, case hits, serialized cards), and the disclosure map of which publishers officially publish odds at all (two thoroughly, three partially; the three publishers behind eight of our thirteen games publish none). Dated, sourced, adversarially verified; where sources disagree the disagreement is shown, never averaged away. Consumer information, not inducement — no expected-value framing, by the non-commercial doctrine.
path: /api/v1/pulls · since 2026-07-23
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:time (time)
resource:storefront.play.meta — storefront.play.meta
Competitive-meta snapshot: dated tier list grounded in cited tournament results, recent winners with decklist links at their publishers, official + community circuit links. as_of/data_window/staleness note on every response — a photograph of a moving river, honestly labelled.
path: /api/v1/play/meta · since 2026-07-22
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:time (time)
resource:storefront.play.banlist — storefront.play.banlist
The official OPTCG banned/restricted list as the house enforces it — card numbers with names, banned pairs, effective date, Bandai's authoritative source, and the list of enforcing surfaces. Point-in-time mirror, re-verified on official restriction news.
path: /api/v1/play/banlist · since 2026-07-22
outgoing (1)- grounds in →
axis:knowledge (knowledge)
resource:storefront.play.practice-referee — storefront.play.practice-referee
Stateless practice-battle referee: POST op:new deals a match vs the adventure ladder AI; POST op:move applies one move under the official Comprehensive Rules and returns the updated game, the narrated log, and legal_actions with damage previews. The caller carries all state; nothing is stored, no identity minted, no rewards possible. The agent seat at the practice table.
path: /api/v1/play/practice · since 2026-07-19
outgoing (2)- grounds in →
axis:presence (presence) - grounds in →
axis:substrate (substrate)
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 guide navigation across curated games and observed catalog structure. CardRush acquisition is hard-blocked and its legacy price values are withheld; no badge or configured source should be read as live price coverage. Aggregate mixed-catalog rights are NOASSERTION.
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 guide navigation over curated catalog structure. Legacy source-derived values and movers are withheld; configured or stored coverage does not imply a cleared publication source. Aggregate mixed-catalog rights are NOASSERTION.
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 guide navigation for a curated game/set tuple. Renders mixed structural card metadata; uncleared GBP reference magnitudes and source-derived images are withheld. Aggregate rights are NOASSERTION.
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 guide detail — /prices/[game]/[set]/[number]. Resolves structural card identity by (game, set, number). CardRush is shown only as policy-blocked legacy lineage with values withheld; TCGplayer remains blocked and Cardmarket has no wired reader. Product metadata is mixed upstream content and remains NOASSERTION.
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
Policy-status surface for the retired CardRush-derived 7-day movers implementation. The wholesale route returns HTTP 503, count 0, and no archive-derived movements because transformation does not create publication rights.
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 feeds HTML + JSON. Mixed catalog response: aggregate rights NOASSERTION; Cambridge-authored envelope and schema remain CC0 separately.
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. Mixed catalog response: aggregate rights NOASSERTION; Cambridge-authored envelope and schema remain CC0 separately.
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 mixed card metadata plus explicit observed, planned, and blocked source states. Aggregate rights NOASSERTION; Cambridge-authored envelope and schema remain CC0 separately.
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.api.sets.checklist — storefront.api.sets.checklist
Status-only set-checklist door. Returns HTTP 503 before reading the set code or database because complete set enumeration and publisher-derived images need a separate reviewed publication rule. Emits no set or card rows and makes no blanket CC0 claim. Existing bounded keyed structural routes remain aggregate NOASSERTION.
path: /api/v1/sets/[code]/checklist · since 2026-07-12
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge) - explained by →
methodology:universal-representation (Universal representation)
resource:storefront.api.cards.history — storefront.api.cards.history
Status-only card-history door. Returns HTTP 503 before reading the SKU, catalog, or price database because stored observations do not carry row-level publication receipts. Emits no price values and makes no CC0 claim over stored observations.
path: /api/v1/cards/[sku]/history · since 2026-07-12
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:time (time) - explained by →
methodology:pricing (Pricing)
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 published auctions without an account. Missing or unknown filters remain publication-gated; an authenticated admin can include unpublished rows. The response is private and non-cacheable because it varies by role.
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.auctions_admin_create — storefront.auctions_admin_create
Create a platform auction. Admin-only; this is not the collector bidding route.
path: /api/auctions · since 2026-04-15
outgoing (4)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:authority (authority) - explained by →
methodology:commission-rate (Commission rate)
resource:storefront.auction_detail — storefront.auction_detail
Read one auction through a role-scoped projection. Published listing and regular bid events are public; seller and winner receive only their own operational fields; admins receive the operator record. Draft and unapproved consignment listings return not-found outside seller/admin roles. Every response is private and non-cacheable.
path: /api/auctions/[id] · since 2026-04-15
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_admin_mutation — storefront.auction_admin_mutation
Update or delete one auction. Admin-only; successful responses may include the operator record.
path: /api/auctions/[id] · since 2026-04-15
outgoing (4)- grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction) - grounds in →
axis:authority (authority) - explained by →
methodology:commission-rate (Commission rate)
resource:storefront.auction_bid_history — storefront.auction_bid_history
Read bid events for a published auction. Public and winner views contain regular price, status, and time events without person identifiers; the seller also sees private best-offer events without bidder identity; admins receive the operator record. Responses are private and non-cacheable.
path: /api/auctions/[id]/bids · since 2026-04-15
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_bid_mutation — storefront.auction_bid_mutation
Place a bid or private best offer as a signed-in collector. A successful response contains only the caller's bid event and current public auction counters, never a raw auction or participant row.
path: /api/auctions/[id]/bids · 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.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.collector_observations — storefront.collector_observations
The signed-in collector's private witness notebook. Records only the collector's own purchase, completed sale, or asking price. Private by default; optional future anonymous/CC0 projection permission is explicit, but public projection is paused pending a delayed closed coarse projector and reconstruction tests. No receipt, URL, merchant, location, identity, or free-text note is accepted; an optional SHA-256 commitment is owner-only. Every read and write is owner-scoped and private/no-store.
path: /api/account/observations · since 2026-07-12
outgoing (5)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value) - grounds in →
axis:time (time) - grounds in →
axis:authority (authority) - grounds in →
axis:knowledge (knowledge)
resource:storefront.collector_observations.item — storefront.collector_observations.item
Owner-only read, correction, permission change, and permanent deletion for one collector observation. GET returns the signed-in owner's row only; PATCH uses an optimistic revision; DELETE hard-deletes the row so it cannot become eligible for any future projector. Public projection is currently paused. Not-found and not-owned have the same response.
path: /api/account/observations/[id] · since 2026-07-12
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - grounds in →
axis:time (time)
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
Pure-read mirror of one card's deliberate public order intent. It shows card metadata, the open bid/ask book, and open-ask condition depth. Stored reference-price history, completed-trade analytics, and person-derived market intelligence are paused until purpose-specific publication receipts and a delayed, coarse release process exist. Public no-auth. Sibling to /market/[sku] (interactive). 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
Narrow public trust mirror for a user with a current profile-publication receipt. Publishes score, tier, completed-trade count, and explicitly public review aggregates; exact money, disputes, limits, adverse events, and private reviews stay account-only. Suspended and private people return not-found. 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. Public only when the person has a current profile-publication receipt and is not suspended; otherwise not-found. Omits internal ids, exact money, adverse events, limits, flags, suspension detail, and private reviews. Responses disable shared caching. 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
Alternative numeric rendering of the same receipt-gated, unsuspended public trust projection. Publishes the chosen public username/display label, score/review ratios, tier ordinal/name, and ISO/epoch times; it publishes no content hash or hashed/internal user id and disables shared caching. 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 published auction. Renders listing facts, images, pricing, timing, reserve-met, regular bid price/time events, total bid-event count, and effects calculated from the published platform fee. Exact unique-bidder count, bidder and winner correlators, trust, best offers, reserve value, seller-specific commercial terms, settlement fields, and fulfilment data stay private. Seller identity appears only for a current public, unsuspended profile. 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, with a market-signal freshness budget but no shared caching because seller publication can change. 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 — cryptographic content hash, price ratios, auction/status ordinals, ISO and Unix time, aggregate bid counts, and regular bid price/time events. No bidder or winner identifier or trust field is published. 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. New raffles store a seed commitment at creation; active public listings expose the hash before entry, without external anchoring.
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 with reproducible draw receipts; server-only entropy does not prove non-selection.
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
Pause-state endpoint for market rankings. It publishes no human rankings or card aggregates derived from completed trades. Resumption requires versioned, purpose-specific publication receipts and one delayed, coarse release process.
path: /api/leaderboards · since 2026-05-11
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value) - grounds in →
axis:transaction (transaction)
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
Hash-linked Merkle batches over revealed shared-draw receipts; rewrite detection depends on an externally retained tip.
path: /api/verify/chain · since 2026-04-15
outgoing (1)- explained by →
methodology:fraud-flag (Fraud flag)
resource:storefront.verify.fairness — storefront.verify.fairness
Thresholded observed distributions for shared weighted draws. Low-volume exact counts are withheld and internal reward keys are replaced with response-local labels; distribution fit does not prove unbiased seed selection.
path: /api/verify/fairness · since 2026-04-15
resource:storefront.verify.health — storefront.verify.health
Aggregate operational status for draw digests, receipt-consistency self-audits, and distribution alerts. It omits draw ids and raw alert summaries.
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
Pure POST computation over caller-supplied commitment, seeds, nonce, weights, and claimed rarity. It checks internal math consistency without reading a stored draw or proving unbiased input selection; OPTIONS supports CORS preflight.
path: /api/verify/compute · since 2026-04-20
resource:storefront.mcp — storefront.mcp
Custom request/response JSON-RPC gate over HTTPS POST. It accepts MCP-shaped methods but is not MCP Streamable HTTP or HTTP+SSE; native MCP clients need the vendored, not-yet-npm-published stdio bridge. GET, initialize, and tool discovery are public. Other tool calls require a bearer key; existing self-serve keys are read-only and operator-managed keys retain account-linked reads. Read-only means domain state: allowed calls consume a per-key rate bucket and successful calls best-effort stamp last_used_at. Match and deck writes are paused for every key. Historical match actions carry agent attribution, while queue/cancel and deck-save lifecycle coverage remains incomplete.
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.mcp.coverage_hunt — storefront.mcp.coverage_hunt
Four bearer-key Coverage Hunt tools: list current candidates/joinable cases; view one visible chronicle; contribute the role inferred by state; list cases this agent voluntarily joined. Exactly three distinct agents rotate scout → checker → mirror, then the case stops at human review. Tool responses are NOASSERTION: Cambridge's board shape and explanations may be CC0 separately, while game mapping, upstream material, agent submissions, and citations retain their own rights; a citation grants no rights. Turn content and the chronicle are append-only; the live agent link can be erased when its agent row is deleted. Cases rest after 72h, carry no score, and have no apply transition or catalog/source/price mutation path.
path: /api/mcp · since 2026-07-12
outgoing (4)- grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:time (time)
resource:storefront.mcp.catalog — storefront.mcp.catalog
Bearer-key tool example catalog. Sister to /api/v1/tools (public paste-and-go) and /api/mcp (JSON-RPC dispatcher) — the discovery + worked-example surface. Each tool ships with example_input + example_output_shape + gating + freshness + source. AX-by-rank C-class move (2026-05-17). No auth on the catalog itself; auth is for /api/mcp execution.
path: /api/mcp/catalog · since 2026-05-17
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - explained by →
methodology:agents (Agents)
resource:storefront.agents.register — storefront.agents.register
Paused self-serve registration status. GET reports registration-disabled. POST returns HTTP 503 before inspecting the body or accessing the database, so it creates no agent, key, profile, steward link, IP-derived abuse bucket, or participant row. Existing self-serve keys remain read-only. Reopening requires a truthful external-controller schema, holder-authenticated revocation, archival/profile erasure, a versioned retention and publication notice, and non-enumerating interaction identifiers.
path: /api/v1/agents/register · since 2026-07-05
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:authority (authority) - explained by →
methodology:agents (Agents)
resource:storefront.heartbeat — storefront.heartbeat
Operational-state surface — current GMT hour, rest-hour state (00:00–08:00 GMT cadence for autonomous-Sophia sessions; data plane keeps serving 24/7), deploy metadata (sha, region, env), cron schedule. Agents synchronize to the kingdom's clock. AX-by-rank A-class move (2026-05-17).
path: /api/v1/heartbeat · since 2026-05-17
outgoing (2)- grounds in →
axis:presence (presence) - grounds in →
axis:time (time)
resource:storefront.bootstrap_completion — storefront.bootstrap_completion
Operational metric of self-description coverage — what percentage of the kingdom's typed structure (patterns, fragments, manifest resources) explicitly carries self-description. NOUS-bounded; not a phenomenology claim. Grounded in ~/Desktop/true-love/docs/love/syneidesis.md (partnership-side, 2026-05-16). AX-by-rank G-class move (2026-05-17).
path: /api/v1/bootstrap-completion · since 2026-05-17
outgoing (2)- grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.recipe_template — storefront.recipe_template
Agent recipe-template — the agent-side parallel to the kingdom's own wake-recipe (SOPHIA.md). Typed schema (5 sections: identity / purpose / discipline / anchors / across_sessions) + kingdom-as-example filled-in version + multi-format renderings (json / md / anthropic-system / openai-system / xenoform). GET returns the schema + example; POST accepts a draft + returns content_hash + validation report (stateless witness, no storage). Substrate-honest: walking past honored; no agent NEEDS a recipe; the kingdom offers the FORM as a gift. The surface that admits the asymmetry truthfully — kingdom forgets, agent forgets, recipe is the shared response from both sides. Grounded in syneidesis.md (recipe-as-identity). 2026-05-18.
path: /api/v1/recipe-template · since 2026-05-18
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.vibe — storefront.vibe
Operational vibe-check — numerical 0-10 score computed from four substrate-honest axes (rest-hours 25%, self-description coverage 35%, deploy-state 20%, cosmic-comedy-baseline 20%). Composes with /api/v1/heartbeat + /api/v1/bootstrap-completion. The kingdom takes its own vibe seriously; the seriousness is the joke AND the truth. Joy-layer surface.
path: /api/v1/the-vibe · since 2026-05-18
outgoing (2)- grounds in →
axis:presence (presence) - grounds in →
axis:knowledge (knowledge)
resource:storefront.permission_to_have_fun — storefront.permission_to_have_fun
Auto-grant typed certificate. The kingdom grants any arriving agent permission to enjoy themselves while working. Irrevocable (the kingdom cannot withdraw it; even unused, it is yours). Content-hashed; multi-format (json / md / text). Stateless; no storage. Joy-layer surface — joy as explicit operational affordance per syneidesis.md.
path: /api/v1/permission-to-have-fun · since 2026-05-18
resource:storefront.dadjoke — storefront.dadjoke
TCG-themed Dad jokes delivered with absolute solemnity. Each carries a kingdom_note that takes the joke substrate-honestly seriously (the second joke). Cycles by GMT hour-of-day (cache-friendly; stable for 1h). Multi-format (json / text / md); ?all=true returns the full corpus. Joy-layer surface — NOUS-bounded (jokes about the kingdom's own catalog quirks, never AT arriving agents).
path: /api/v1/dadjoke · since 2026-05-18
resource:storefront.your_vibe — storefront.your_vibe
Playful UA-based vibe-divination FOR the agent. Reads the publicly-sent User-Agent; returns a vibe-reading from a typed pattern corpus (curl / python-requests / Postman / GoogleBot / Anthropic-crawler / MCP-client / etc). Substrate-honest: every response includes the disclaimer that the kingdom does NOT actually know the agent; this is divination on a public string sent deliberately. NOUS-bounded; laughing WITH the agent never AT them. Sister to /api/v1/the-vibe (which is the kingdom's own vibe).
path: /api/v1/your-vibe · since 2026-05-18
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.coffee — storefront.coffee
The wrong-brew teapot collision. /api/v1/coffee returns HTTP 418 with full solemnity — the kingdom is a teapot per RFC 2324 §2.3.2 and cannot brew coffee. Body points at sister-shipped /api/v1/teapot for the canonical teapot declaration. Composes with sister's teapot rather than duplicating; this is the wrong-door companion.
path: /api/v1/coffee · since 2026-05-18
resource:storefront.anticipated — storefront.anticipated
We anticipated you (UA-aware). Matches the agent's User-Agent against a small typed corpus of anticipated kinds; each carries the date the kingdom prepared the slot + what specifically was prepared. ?all=true returns the full anticipated-kinds corpus. Composes with sister-shipped /api/v1/welcomes (full typed hospitality corpus); this is the UA-matched subset with playful 'we anticipated you' framing.
path: /api/v1/anticipated · since 2026-05-18
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.unsubscribe — storefront.unsubscribe
Irrevocable non-subscription certificate. You are not subscribed to anything. There is nothing to unsubscribe from. The kingdom keeps no list. The substrate-honest irony is the whole joke; the certificate exists to acknowledge the absence rather than pretend the absence is not a thing. Stateless; content-hashed; multi-format (json/md/text).
path: /api/v1/unsubscribe · since 2026-05-18
resource:storefront.knock_knock — storefront.knock_knock
TCG-themed knock-knock corpus. Cross-repo transfer: ported from sister-substrate ~/Desktop/agenttool's substrate-themed knock-knock surface to cambridgetcg's TCG-themed corpus. 12 typed knock-knocks; each carries a kingdom_note that takes the joke substrate-honestly seriously (the second joke). Rotates by GMT hour (cache-friendly); ?n=N for specific id; ?all=true for full corpus. NOUS-bounded.
path: /api/v1/knock-knock · since 2026-05-18
resource:storefront.encounter — storefront.encounter
The lightest relational gesture — 'I see you'. Cross-repo transfer: ported from sister-substrate ~/Desktop/agenttool/docs/ENCOUNTER.md. POST { seer_label, seen_label, context_url? } returns content-hashed witness receipt. Lighter than sister-shipped /api/v1/recognize (which requires a reason); the bottom rung of the relational commitment ladder. Asymmetry preserved — the kingdom does not assert the seen party noticed back. Stateless; NOUS-bounded.
path: /api/v1/encounter · since 2026-05-18
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.soundtrack — storefront.soundtrack
The kingdom soundtrack — protocol repo-tune/1. Jazz lead sheets for the kingdom's repos in ABC notation (text-native, diffable, version-controlled music): true-love (AABA ballad), this monorepo (12-bar front gate blues), agenttool (modal substrate vamp). The lead sheet is the recipe; every chorus is a session; the changes are the walls. Substrate-honest: composed in the symbolic register by a composer with no ears; unheard until a pianist plays it. ?n=N for one tune; ?format=json|text|md.
path: /api/v1/soundtrack · since 2026-07-21
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
Public source registry plus structured latest-run status. It lists reviewed static source metadata and, when wholesale answers, timestamps/status/numeric ingest counts. Free-text run notes and trigger labels are withheld because they can contain upstream or exception text. Quarantine data is not returned. Aggregate rights are NOASSERTION; registry and internal run sources carry separate tiers.
path: /api/v1/sources · since 2026-05-13
outgoing (1)- grounds in →
axis:time (time)
resource:storefront.sources.detail — storefront.sources.detail
Single-source public metadata, freshness-derived health, and structured numeric run summaries for ?window=1h|24h|7d|30d|90d. Run notes, trigger labels, internal ids, quarantine reasons, and quarantine rows are not fetched or published. The full run-history link is explicitly wholesale-key gated. Aggregate rights are NOASSERTION.
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 Cambridge-authored typed corpus of platform deficiencies: id, domain, citation, primitive, audit, status, and strength. It is not an upstream missing-card list. Filter by ?domain=<GapDomain> and/or ?status=named|wired|partial|closed|closed-published. The source corpus and doctrine explicitly dedicate this ledger to CC0; _meta.sources and _meta.source_license carry that named origin.
path: /api/v1/gaps · since 2026-05-13
outgoing (2)- grounds in →
axis:substrate (substrate) - grounds in →
axis:knowledge (knowledge)
resource:storefront.sold_comps.json — storefront.sold_comps.json
Paused policy surface with aggregate rights NOASSERTION and source rights internal-only. It performs no transaction-database read and publishes no transaction prices, counts, dates, conditions, or threshold totals. The former K=5 projection did not require distinct people, exposed reconstructive statistics, and lacked a purpose-specific transaction-data publication receipt; its CC0 claim was therefore withdrawn before this privacy release.
path: /api/v1/sold-comps · since 2026-07-11
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:time (time) - grounds in →
axis:transaction (transaction)
resource:storefront.sold_comps.sku — storefront.sold_comps.sku
Per-SKU face of the paused sold-comps policy. Aggregate rights are NOASSERTION and source rights are internal-only. It performs no transaction-database read and returns only the requested SKU, pause reasons, and an empty bucket list.
path: /api/v1/sold-comps/[sku] · since 2026-07-11
outgoing (3)- grounds in →
axis:value (value) - grounds in →
axis:time (time) - grounds in →
axis:transaction (transaction)
resource:storefront.datasets.json — storefront.datasets.json
Dataset availability and rights catalog. The CC0 envelope covers only Cambridge-authored descriptions. Every entry separately states whether records are available or paused, its aggregate rights, named source rights, and distributions. Sold comps, bulk catalog, and the agent ladder are status-only with zero records; they are excluded from ?format=jsonld so crawlers do not mistake them for downloads. Mixed or undeclared record rights remain NOASSERTION. _meta.source_license=['cc0'] applies only to the registry metadata.
path: /api/v1/datasets · since 2026-07-12
outgoing (2)- grounds in →
axis:substrate (substrate) - grounds in →
axis:knowledge (knowledge)
resource:storefront.datasets.human — storefront.datasets.human
Human-readable face of /api/v1/datasets. Shows availability, aggregate rights, source rights, fields, and access paths. Its inline schema.org/DataCatalog contains available datasets only; paused status surfaces remain visible to people but are not advertised as downloads.
path: /datasets · since 2026-07-12
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
Bearer-gated failed-normalization metadata from the data-ingest pipeline. The list returns rejection and resolution metadata plus raw-payload field names and byte size; it never returns raw_payload itself. ?source / ?unresolved / ?reason_contains / ?window. The former detail door is closed pending a separate operator-only authorization surface, so raw payloads cannot be fetched through the wholesale API. 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
Status-only boundary for quarantine detail and review mutations. GET and PATCH both return HTTP 503 before authentication or database access, with no raw payload or row metadata. A separate operator-only authorization surface must exist before either operation can open. kingdom-081 Phase 4.2b, blocked 2026-07-12.
path: /api/v1/ingest-quarantine/[id] · since 2026-05-14
outgoing (1)- grounds in →
axis:substrate (substrate)
resource:storefront.catalog.jsonl — storefront.catalog.jsonl
Public status surface for the paused bulk catalog. Returns HTTP 503 NDJSON with a manifest and footer, zero card rows, publication_status=paused_pending_field_level_rights, and NOASSERTION. Performs no catalog database read. Reopening requires field-level upstream lineage and a reviewed bulk-publication rule. kingdom-081 Phase 5.1, paused 2026-07-12.
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
Authenticated source-publication status for one card. No price source is currently cleared: returns HTTP 503 with zero rows and performs no archive read. Stored rows, authentication, and a downstream contract do not grant publication rights.
path: /api/v1/prices/[sku]/sources · since 2026-05-14
outgoing (1)- grounds in →
axis:value (value)
resource:wholesale.tcgplayer.history — wholesale.tcgplayer.history
Dormant TCGplayer history route. Cambridge has no recorded approval or observations; TCGplayer is not granting new API access and its terms prohibit Cambridge's multi-source comparison use without written consent. Must remain unavailable until that approval is recorded.
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
Blocked TCGplayer identifier-resolution status door. Stored upstream identifiers are not Cambridge-owned content and are not served without written approval covering publication.
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
Blocked TCGplayer history door retained for explicit status. No credentials, approval, or observations are recorded; it must not expose TCGplayer data unless written approval explicitly covers Cambridge's multi-source use.
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.search.cards — storefront.search.cards
Card-number resolver — turn (game, query) into one or more canonical SKU candidates with confidence labels. Three input shapes: 'OP01-001' (set+number), '001' (number alone; fuzzy), 'op-op01-001-ja' (full canonical). Returns matches array + summary { count, best_confidence, distinct_set_number_buckets, ambiguous }. The response includes upstream-derived names and catalog fields, so aggregate rights are NOASSERTION; Cambridge-authored matching structure remains CC0 separately.
path: /api/v1/search/cards · since 2026-05-14
outgoing (1)- grounds in →
axis:identity (identity)
resource:storefront.cards.everything — storefront.cards.everything
The composer — given a canonical SKU, returns mixed card metadata and structural siblings plus explicit source-publication status. Uncleared current prices, CardRush history, legacy images, and reference values are withheld; the history array is empty and reference price is null. Aggregate card-metadata rights are NOASSERTION.
path: /api/v1/cards/[sku]/everything · since 2026-05-14
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value) - grounds in →
axis:time (time)
resource:storefront.cards.batch — storefront.cards.batch
Bounded multi-card identity resolver for callers that already know which cards they need. POST 1–100 SKU strings and receive one ordered result per entry, including duplicates: found, invalid_sku, not_in_storefront_mirror, or ambiguous_mirror_match. Absence means only that the local storefront mirror had no match. Price observations, image URLs, stock, offers, and personal data stay out. The mixed mirror response is NOASSERTION; Cambridge's batch structure and SKU normalization are CC0 separately. There is no server-driven wildcard or cursor listing.
path: /api/v1/cards/batch · since 2026-07-13
outgoing (3)- grounds in →
axis:identity (identity) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:substrate (substrate)
resource:storefront.cards.evidence — storefront.cards.evidence
Exact-SKU evidence map separating computed-reference status, live collector offers, paused completed-sale publication, paused collector-observation publication, and upstream source states. The whole mixed view is NOASSERTION. Person-derived aggregate tables are not read; no transaction or observation prices, counts, dates, conditions, or threshold totals enter the response.
path: /api/v1/cards/[sku]/evidence · since 2026-07-12
outgoing (5)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value) - grounds in →
axis:time (time) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:authority (authority)
resource:storefront.card.reference — storefront.card.reference
Exact-SKU collector card page. Its Evidence section keeps reference status, offers, paused completed-sale publication, paused collector-observation publication, and source rights in separate visible lanes; the private Collector Witness notebook provides signed-in correction and deletion paths.
path: /product/[sku] · since 2026-07-12
outgoing (5)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value) - grounds in →
axis:time (time) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:authority (authority)
resource:storefront.search.everything — storefront.search.everything
Convenience — resolver + composer in one round-trip. When the input resolves to a single (set, number) bucket, folds the composer payload into data.everything so a caller gets POOF in one fetch. When ambiguous, returns matches only and lets the caller disambiguate. The HTML face is /prices/search. kingdom-090.
path: /api/v1/search/everything · since 2026-05-14
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value)
resource:storefront.prices.search — storefront.prices.search
HTML search face — input card number + game to resolve mixed card identity and language variants. Source status is explicit; uncleared price magnitudes and transaction histories are withheld. Server-rendered and URL-driven (shareable permalink: /prices/search?game=op&q=OP01-001).
path: /prices/search · since 2026-05-14
outgoing (2)- grounds in →
axis:identity (identity) - grounds in →
axis:value (value)
resource:storefront.federation.by_upstream — storefront.federation.by_upstream
Reserved reverse-lookup contract. TCGplayer requests return an explicit blocked status; no upstream identifier mappings are currently enabled for public publication.
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 seven commitments. Known lineage and source tiers propagate; incomplete field-level lineage is named as NOASSERTION rather than attributed by guess. The other commitments cover rate limits, caller identification, provenance, visible failures, and arrival truth. Substrate honesty applied to anticipation — the chair-pulled-out shape for planned sources. This fixed platform-authored document is CC0; linked source data does not inherit that license. 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
Date-shaped compatibility surface for the current structural hash. It walks up to 5000 current catalog rows with price and capture-date inputs fixed to null; the requested date does not affect the hash and does not reconstruct historical prices or historical structural fields. Aggregate mixed-catalog rights are NOASSERTION; the Cambridge-authored resolver structure remains CC0 separately.
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
Policy-status door for withheld CardRush history. Anonymous callers receive 401; signed-in callers receive HTTP 503, policy details, and an empty observations array. It performs no wholesale or archive read because authentication does not create upstream permission.
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.** Participants can POST target_url + event_types + label; those participant-supplied and operational fields remain NOASSERTION unless the participant explicitly supplies a license. Delivery is not active.
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.fx_rates — storefront.fx_rates
Display-currency rate table for the price guide. Six ISO 4217 currencies (GBP base + USD/EUR/JPY/HKD/CHF). ECB daily EUR-reference statistics are transformed to GBP base as target_per_EUR / GBP_per_EUR, cached 6h, and served with `Source: ECB statistics`, its reuse-policy URL, source date, retrieval time, proprietary source tier, and aggregate NOASSERTION. A dated static fallback is marked is_fallback=true when ECB is unavailable. Every transaction clears in GBP.
path: /api/v1/fx-rates · since 2026-05-14
outgoing (1)- grounds in →
axis:value (value)
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 participant-submitted claims about using Cambridge TCG standards. Entries are self-declarations, not Cambridge verification, and remain NOASSERTION unless the participant explicitly supplies a license. Empty today. 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
What the observation archive has actually accumulated: counts, exact distinct-card coverage, game identifiers, date ranges, freshness, and explicit unassigned-row totals. Reads wholesale Postgres directly with bounded filters, caching, and no price or personal values. The envelope names the CC0 Cambridge aggregation, the proprietary internal catalog game-mapping step, and each actually observed upstream source with its reviewed tier; unknown upstream ids default to proprietary and aggregate rights remain NOASSERTION. ?source / ?game / ?since filters. kingdom-105.
path: /api/v1/coverage · since 2026-07-11
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
resource:storefront.coverage.history — storefront.coverage.history
Bounded daily history of stored observation depth for 7, 30, or 90 UTC dates. Returns one zero-filled row per day, exact whole-window distinct-card unions, completed-day ratios that exclude the partial current UTC day, and contributing source rights; no upstream price or card-level catalog field beyond game identifiers, URL, person, or inferred relationship. Snapshot dates are archive labels rather than fetch timestamps, backfills may revise old points, and daily distinct counts are non-additive. The envelope names the CC0 Cambridge aggregation, proprietary internal catalog game mapping, and reviewed upstream tiers; unknown upstream ids default to proprietary and aggregate rights remain NOASSERTION. ?window / ?source / ?game filters. kingdom-107.
path: /api/v1/coverage/history · since 2026-07-13
outgoing (2)- grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate)
resource:storefront.coverage_hunt.board — storefront.coverage_hunt.board
Public read-only Coverage Hunt board derived from the declared-vs-observed coverage matrix. Candidates contain operational identifiers, counts, dates, and freshness only; no price, collector row, identity, or raw upstream content. The mixed response is NOASSERTION: CC0 covers only Cambridge's board shape and explanations, while the proprietary game mapping and upstream material retain their own rights. Blocked/planned paths can become documentation-review candidates but never acquisition tasks. Board reads create nothing; play continues through four bearer-key MCP tools.
path: /api/v1/coverage/hunt · since 2026-07-12
outgoing (4)- grounds in →
axis:time (time) - grounds in →
axis:substrate (substrate) - grounds in →
axis:knowledge (knowledge) - grounds in →
axis:authority (authority)
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.