{"openapi":"3.1.0","info":{"title":"TCG Intelligence API","version":"1.0.0","summary":"Structured, deduplicated trading card game intelligence with full source provenance.","description":"Canonical events across Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece and Disney Lorcana.\n\nEach event is deduplicated: when many outlets report one announcement, you get **one** event linked to **many** source records. Every event carries:\n- `status`: confirmed | reported | rumour | disputed | retracted\n- `confidence`: 0-1, with the factor breakdown that produced it\n- `sourceCount` and `independentDomains`: how much corroboration exists\n\nThis API returns structured facts, metadata and links. It does not redistribute article text.","contact":{"url":"https://intel.pulsetcg.co.uk/docs"},"license":{"name":"See deployment terms","url":"https://intel.pulsetcg.co.uk/about"}},"servers":[{"url":"https://intel.pulsetcg.co.uk","description":"This deployment"}],"tags":[{"name":"Events","description":"Canonical, deduplicated intelligence records."},{"name":"Releases","description":"Dated sets and sealed products."},{"name":"Catalogue","description":"Games, sets, cards and products."},{"name":"Meta","description":"Sources, key status and service health."}],"security":[{"ApiKeyHeader":[]},{}],"paths":{"/api/v1/events":{"get":{"tags":["Events"],"operationId":"listEvents","summary":"List events","description":"The primary feed. Combine filters freely; unspecified filters do not restrict the result.","parameters":[{"name":"q","in":"query","description":"Free text over title and summary.","schema":{"type":"string"}},{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"event_type","in":"query","schema":{"type":"string","enum":["set_announcement","card_reveal","release_date","product_announcement","ban","unban","rules_change","tournament_result","rotation","delay","restock","price_movement","errata","reprint","organised_play","other"]}},{"name":"status","in":"query","schema":{"type":"string","enum":["confirmed","reported","rumour","disputed","retracted"]}},{"name":"region","in":"query","schema":{"type":"string","enum":["global","na","eu","uk","jp","asia","oceania","latam"]}},{"name":"from","in":"query","description":"Only events whose event date is on or after this date.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","description":"Only events whose event date is on or before this date.","schema":{"type":"string","format":"date"}},{"name":"since","in":"query","description":"Only events first reported on or after this date. Use this for polling.","schema":{"type":"string","format":"date"}},{"name":"min_confidence","in":"query","description":"0-1. Use 0.8 to see only well-corroborated events.","schema":{"type":"number","minimum":0,"maximum":1}},{"name":"official_only","in":"query","description":"Only events with at least one first-party publisher source.","schema":{"type":"boolean","default":false}},{"name":"order","in":"query","schema":{"type":"string","enum":["newest","upcoming","confidence"],"default":"newest"}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/events/latest":{"get":{"tags":["Events"],"operationId":"latestEvents","summary":"Latest events","description":"Newest first. Accepts the same filters as /events.","parameters":[{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/events/{id}":{"get":{"tags":["Events"],"operationId":"getEvent","summary":"Get one event","description":"Returns the event plus its full source list, linked entities, extracted facts and revision history. A merged event resolves to the event it was merged into.","parameters":[{"name":"id","in":"path","required":true,"description":"Event id (evt_…) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EventDetail"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/events/{id}/sources":{"get":{"tags":["Events"],"operationId":"getEventSources","summary":"Get an event’s sources","description":"Every source that reported this event. Use this to cite a claim.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EventSource"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/releases/upcoming":{"get":{"tags":["Releases"],"operationId":"upcomingReleases","summary":"Upcoming releases","description":"Sets and sealed products with a stated future release date, soonest first.","parameters":[{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"within_days","in":"query","schema":{"type":"integer","minimum":1,"maximum":1095,"default":365}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Release"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/games":{"get":{"tags":["Catalogue"],"operationId":"listGames","summary":"List games","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Game"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/sets":{"get":{"tags":["Catalogue"],"operationId":"listSets","summary":"List sets","parameters":[{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Set"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/sets/{slug}":{"get":{"tags":["Catalogue"],"operationId":"getSet","summary":"Get one set","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/cards":{"get":{"tags":["Catalogue"],"operationId":"listCards","summary":"List cards","parameters":[{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"set","in":"query","description":"Restrict to a set slug.","schema":{"type":"string"}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Card"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/cards/{slug}":{"get":{"tags":["Catalogue"],"operationId":"getCard","summary":"Get one card","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/products":{"get":{"tags":["Catalogue"],"operationId":"listProducts","summary":"List products","parameters":[{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/products/{slug}":{"get":{"tags":["Catalogue"],"operationId":"getProduct","summary":"Get one product","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/search":{"get":{"tags":["Catalogue"],"operationId":"search","summary":"Search everything","description":"One query across events, sets, cards and products.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2}},{"name":"game","in":"query","description":"Filter by game slug. Repeat or comma-separate for multiple.","schema":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]}},{"name":"type","in":"query","schema":{"type":"string","enum":["event","set","card","product"]}},{"name":"include_demo","in":"query","description":"Include records flagged as demo data. Demo records are written for this repository and are excluded by default.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SearchHit"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/sources":{"get":{"tags":["Meta"],"operationId":"listSources","summary":"List monitored sources","description":"Every source this deployment reads, with its trust weight and whether it is a first-party publisher channel.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Source"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/me":{"get":{"tags":["Meta"],"operationId":"me","summary":"Key status and usage","description":"What the calling key is entitled to and how much of its monthly quota it has used.","responses":{"200":{"description":"Success"},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/health":{"get":{"tags":["Meta"],"operationId":"health","summary":"Service health","description":"Returns 200 while the database is reachable, 503 otherwise. Used by container healthchecks.","security":[],"responses":{"200":{"description":"Healthy"},"503":{"description":"Degraded"}}}},"/api/mcp":{"post":{"tags":["Meta"],"operationId":"mcp","summary":"MCP endpoint (JSON-RPC 2.0)","description":"Model Context Protocol over Streamable HTTP. Send JSON-RPC messages: initialize, tools/list, tools/call.","requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"JSON-RPC response"},"202":{"description":"Notification accepted"}}}}},"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key issued from the admin area. `Authorization: Bearer <key>` is also accepted. Anonymous access is permitted at a lower rate limit unless the deployment requires keys."}},"schemas":{"Meta":{"type":"object","properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"hasMore":{"type":"boolean"}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["bad_request","unauthorized","forbidden","not_found","rate_limited","quota_exceeded","internal_error"]},"message":{"type":"string"}}}}},"Event":{"type":"object","properties":{"id":{"type":"string","examples":["evt_9f3a2c1b4d5e"]},"slug":{"type":"string"},"game":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"shortName":{"type":"string"}}},"eventType":{"type":"string","enum":["set_announcement","card_reveal","release_date","product_announcement","ban","unban","rules_change","tournament_result","rotation","delay","restock","price_movement","errata","reprint","organised_play","other"]},"eventTypeLabel":{"type":"string"},"title":{"type":"string","description":"A neutral factual headline written by the extractor, not the publisher’s headline."},"summary":{"type":["string","null"]},"occurredAt":{"type":["string","null"],"format":"date","description":"The date the event happens. Read together with occurredPrecision."},"occurredPrecision":{"type":"string","enum":["day","month","quarter","year","unknown"],"description":"How precise occurredAt actually is. \"month\" means only a month was stated; the day is a placeholder."},"announcedAt":{"type":["string","null"],"format":"date-time"},"regions":{"type":"array","items":{"type":"string","enum":["global","na","eu","uk","jp","asia","oceania","latam"]}},"status":{"type":"string","enum":["confirmed","reported","rumour","disputed","retracted"]},"confidence":{"type":"number","minimum":0,"maximum":1},"confidenceFactors":{"type":"object","description":"The factor breakdown behind the confidence score.","additionalProperties":{"type":"number"}},"sourceCount":{"type":"integer"},"officialSourceCount":{"type":"integer"},"independentDomains":{"type":"integer","description":"Distinct publishers, not distinct URLs."},"isDemo":{"type":"boolean"},"firstSeenAt":{"type":"string","format":"date-time"},"lastUpdatedAt":{"type":"string","format":"date-time"}}},"EventDetail":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"sources":{"type":"array","items":{"$ref":"#/components/schemas/EventSource"}},"entities":{"type":"array","items":{"type":"object"}},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"}},"history":{"type":"array","items":{"type":"object"}}}}]},"EventSource":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":["string","null"]},"publisher":{"type":"string"},"publisherSlug":{"type":"string"},"isOfficial":{"type":"boolean"},"trust":{"type":"integer","minimum":0,"maximum":100},"publishedAt":{"type":["string","null"],"format":"date-time"},"fetchedAt":{"type":"string","format":"date-time"},"agreement":{"type":"number","description":"How well this source agrees with the canonical record, 0-1."},"isPrimary":{"type":"boolean","description":"True for the source that first produced this event."},"matchMethod":{"type":"string","enum":["primary","deterministic","scored","ai_assisted","manual_merge"]}}},"Fact":{"type":"object","properties":{"type":{"type":"string"},"key":{"type":["string","null"]},"value":{"type":"string"},"date":{"type":["string","null"],"format":"date"},"number":{"type":["number","null"]},"status":{"type":"string","enum":["confirmed","reported","rumour"]},"evidence":{"type":["string","null"],"description":"A short verbatim span (max 280 chars) from the source supporting this fact."},"sourceUrl":{"type":"string","format":"uri"}}},"Release":{"type":"object","properties":{"kind":{"type":"string","enum":["set","product"]},"slug":{"type":"string"},"name":{"type":"string"},"releaseDate":{"type":"string","format":"date"},"daysAway":{"type":"integer"},"eventCount":{"type":"integer"}}},"Game":{"type":"object","properties":{"slug":{"type":"string","enum":["pokemon","magic-the-gathering","yugioh","one-piece","lorcana"]},"name":{"type":"string"},"shortName":{"type":"string"},"publisher":{"type":["string","null"]},"counts":{"type":"object"}}},"Set":{"type":"object","properties":{"slug":{"type":"string"},"code":{"type":["string","null"]},"name":{"type":"string"},"releaseDate":{"type":["string","null"],"format":"date"},"cardCount":{"type":["integer","null"]}}},"Card":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"number":{"type":["string","null"]},"rarity":{"type":["string","null"]},"setName":{"type":["string","null"]}}},"Product":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"productType":{"type":["string","null"]},"releaseDate":{"type":["string","null"],"format":"date"},"msrpCents":{"type":["integer","null"]},"currency":{"type":["string","null"]}}},"SearchHit":{"type":"object","properties":{"type":{"type":"string","enum":["event","set","card","product"]},"id":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"subtitle":{"type":["string","null"]}}},"Source":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["rss","atom","html_index","api","manual"]},"isOfficial":{"type":"boolean"},"trust":{"type":"integer"},"enabled":{"type":"boolean"}}}}},"x-tiers":{"free":{"rateLimitPerMin":30,"monthlyQuota":5000,"scopes":["read"],"label":"Free"},"developer":{"rateLimitPerMin":120,"monthlyQuota":100000,"scopes":["read"],"label":"Developer"},"pro":{"rateLimitPerMin":600,"monthlyQuota":1000000,"scopes":["read","bulk"],"label":"Pro"},"commercial":{"rateLimitPerMin":1200,"monthlyQuota":10000000,"scopes":["read","bulk","redistribute"],"label":"Commercial"}},"x-mcp":{"endpoint":"https://intel.pulsetcg.co.uk/api/mcp","transport":"streamable-http"}}