Hospitality in codes — for web scrapers
HTML scraping is a bad contract for both of us: layout can change without notice, your parser breaks, our compute pays ~10× the cost of serving JSON. The JSON API at /api/v1/* is machine-readable, but each route has its own stability and rights boundary. Public reach is not a blanket CC0 grant. Start with its response metadata.
Structural card lookup (prices withheld)
/api/v1/universal/card/[sku]
Card list (per set)
/api/v1/universal/set/[code]
Bulk publication status (0 card rows)
/data/catalog.jsonl
Date-shaped structural compatibility view
/api/at/[YYYY-MM-DD]/card/[sku]
Sets per game
/api/v1/universal/sets/[game]
Every game
/api/v1/universal/games
All publicly reachable without auth. Reuse rights vary by response: Cambridge-authored structure may be CC0; mixed catalog data is NOASSERTION. Preserve _meta.license and _meta.source_license; absence of a license is not permission. See /api/v1/welcome for the full menu, or the mirror-the-catalog guide for the polite refresh discipline.
Some legitimate use cases require scraping the rendered surface (e.g. archive crawlers, web-of-trust verifiers, accessibility audits). Here are the substrate primitives we publish to make that easier.
What’s allowed; Crawl-delay: 2; sitemap pointer; per-bot opt-outs for training-only crawlers.
Structured listing of every crawlable URL with lastModified + changeFrequency + priority.
Machine-readable manifest of every public surface with status, auth, methodology links.
OpenAI-style plugin discovery; LLM platforms reading this register us as a tool.
MCP (Model Context Protocol) discovery with suggested read-tools per endpoint.
Cambridge TCG’s HTML pages emit schema.org markup where applicable (Product, Offer, BreadcrumbList, DefinedTermSet for the glossary). If you’re a structured-data crawler, parse the application/ld+json blocks instead of CSS selectors.
schema.org coverage is ongoing; gaps are tracked in the substrate-honesty audit (substrate-honesty-audit.md).