# QueerCade

> A hand-curated catalog of video games with LGBTQ+ characters and stories, with game details from IGDB and curated lists written by people.

Every listed game has been reviewed by an editor. Game pages include release details, platforms, developers, store links and, where known, the LGBTQ+ characters in the game with a source for each.

## Pages

- [Home](https://queercade.mikedemo.dev/): Featured games and collections.
- [Discover](https://queercade.mikedemo.dev/discover): Search by game title or LGBTQ+ character name, and filter by genre, platform or theme.
- [Library](https://queercade.mikedemo.dev/library): Every approved game, A to Z.
- [Collections](https://queercade.mikedemo.dev/collections): Curated lists such as queer visual novels and cozy queer games.
- [Example game](https://queercade.mikedemo.dev/games/sayonara-wild-hearts): A typical game page.
- [About](https://queercade.mikedemo.dev/about): What QueerCade is and how games are chosen.

## Docs

- [Developers](https://queercade.mikedemo.dev/developers): How to use the free, read-only public API.
- [OpenAPI description](https://queercade.mikedemo.dev/openapi.json): Machine-readable API description.
- [Agent card](https://queercade.mikedemo.dev/.well-known/agent.json): Summary for AI agents.
- [MCP server](https://queercade.mikedemo.dev/api/public/mcp): Read-only Model Context Protocol endpoint (JSON-RPC 2.0 over HTTP POST).

## API

Base URL: https://queercade.mikedemo.dev/api/public/v1 — no key or sign-in needed, GET only, all origins allowed.

- `GET /games?q=&genre=&platform=&theme=&year=&limit=&offset=`: Search by title or LGBTQ+ character name. Returns `{ games, total, limit, offset, nextOffset }`.
- `GET /games/{slug}`: Full public details for one game.
- `GET /collections`: Every published collection.
- `GET /collections/{slug}`: One collection with its games in editorial order.
- `GET /facets`: The genre slugs, platform slugs and theme names the filters accept.

Paging: maximum 48 items per request; follow `nextOffset` until it is null.
Rate limit: about 120 requests per 60 seconds; a 429 response includes `Retry-After`.
Caching: successful responses may be cached for 5 minutes. Please cache rather than re-poll.
Errors: every failure returns `{ error: { code, message, status } }` with a stable code (`invalid_request`, `not_found`, `rate_limited`, `service_unavailable`).
Scope: only editor-approved, publicly visible content is returned. There are no write endpoints and no member data.

## Optional

- [Full catalog](https://queercade.mikedemo.dev/llms-full.txt): Every collection and game with links.
- [Sitemap](https://queercade.mikedemo.dev/sitemap.xml): All public pages.
- [Open source and credits](https://queercade.mikedemo.dev/licenses): Licenses and data sources.
