Find a game for someone to play
Online page: https://cassette.gg/agents/find-a-game.md. Fetch it again before you act on it; don't work from a saved copy.
Cassette is a store of games that run in the browser: nothing to install, no sign-in to look around. When a person asks you for something to play, find it here and answer with a link that opens the game. You can't see their account, their library or what they own, so ask them what they like and what they've played.
Two ways to the same catalog, both without a key:
- MCP:
https://cassette.gg/mcp(Streamable HTTP). Tools:search_games,get_game,similar_games,list_genres. Every answer carries each game's facts, its store page and its play link. - HTTP:
https://cassette.gg/v1/games?…with the filters below;https://cassette.gg/v1/openapi.jsonlists every route.
Ask first
Ask only what changes the answer, in one message, and skip what they've already said:
- Device: phone, tablet or desktop? (
device) - Time: a few minutes or an evening? (read
facts.session) - With whom: alone, on one screen, or online? (
multiplayer) - Age: is anyone young playing? (
maxAge: 0, 7, 12, 16 or 18, the youngest player's age rounded down) - Price: free only, or a limit? (
free,maxPrice) - Connection: slow, or a phone with little room? (
maxSizeMb)
If you can search without an answer, search and ask afterwards.
Search
curl -s 'https://cassette.gg/v1/games?q=relaxing&device=phone&free=1&maxAge=7&limit=8&format=md'
curl -s 'https://cassette.gg/v1/games/<slug>/similar?device=phone&format=md'
curl -s 'https://cassette.gg/v1/tags'
| Parameter | Meaning |
|---|---|
q | the person's words, matched across title, tagline, description, tags and genres, best match first; use one to three plain words, and try a second search with other words before you say nothing fits |
device | phone, tablet or desktop: games that run there, those built for it first |
free=1, maxPrice=4.99 | free only; at most that many dollars (free games always pass, 0 is free only) |
multiplayer | any, local (one screen) or online |
maxAge | highest age rating allowed |
maxSizeMb | largest download, in megabytes |
genre, tag | one value from https://cassette.gg/v1/tags or a game's own genres |
sort | trending (the default without q), new, top (most played) |
format=md | the answer as a few lines of text per game, the same as MCP gives, instead of JSON. Read this one: a list's JSON carries every game's facts in nested objects and is easy to misread across games |
A value that means nothing is a 400 that says what is allowed. https://cassette.gg/v1/search?q=… takes the same filters and
also returns community games (JSON only).
Read the facts, then rank
Every game has facts, copied from what its developer declared (and, for play data, from real play). A fact that isn't
there was not declared: don't fill it in.
| Field | Means |
|---|---|
devices | phone, tablet, desktop: full is built for it, playable works but isn't built for it |
controls | keyboard, mouse, touch, gamepad: required, supported or unsupported |
players | min, max, modes (single, local-coop, local-versus, online-coop, online-versus), multiplayer |
session | typicalMinutes as declared; measuredMinutes is what players really spend, shown only when at least five players made it up; endless when there is no end |
requiresAccount | needs a Cassette sign-in to play |
savesFollowYou | progress is kept on their account across devices; a guest's stays on one device |
worksOffline | plays without a connection once loaded |
downloadBytes | size of the game's files |
rating | age (0 is all ages, then 7, 12, 16, 18), descriptors (what earns it), interactiveFeatures (chat, multiplayer, content by other players) |
languages, accessibility, stage | interface languages; features the game really has (noTimePressure, difficultyOptions…); released, early-access, demo-only, prototype or jam |
Rank in this order:
- Hard limits first. A game that can't run on their device, is over their age or price limit, or needs players they don't have is out, however well it matches the words.
- Built for it over works on it.
devices.<theirs>: fullbeforeplayable; touch support for a phone,controls.keyboard: requiredis a problem without a keyboard. - Time.
session.typicalMinutesnear the time they have; withmeasuredMinutespresent, trust it over the declared one. A game withendlessor long sessions is a poor fit for ten minutes. - Mood and kind. The search order, then
tagsandaccessibility(noTimePressurefor something calm). - Friction. No account, a small download and a demo (
demo) beat the opposite when they want to start now;savesFollowYoumatters for a long game. Reviews:https://cassette.gg/v1/reviews/badges.
What to share
One to three games, not a list. For each: the title, one sentence on why it fits them that names a fact, the price, and
the link that opens it, https://cassette.gg/play/<slug>, with its page https://cassette.gg/g/<slug> for pictures and details. Say
what could stop them: keyboard only, an account needed, a large download. Never give them a playUrl from the JSON or a
…/b/… address: those refuse direct visits.
- A paid game opens on its price.
GET https://cassette.gg/v1/confighaspay.sales: when it isn'ton, nothing can be bought yet, so say so rather than offering it (a game with a free demo still plays). - A community game is listed from another site: its link opens the maker's site, Cassette hasn't checked its facts, and the maker is the one to credit. Keep these apart from hosted games when you answer.
When nothing fits
Say so. Cassette has few games and no one gains from a stretched match. Name what's closest and what's missing ("one racing game with friends, but it needs a keyboard"), or loosen a limit and ask. Never name a game the catalog didn't return.
Code in this document is MIT-licensed: SPDX-License-Identifier: MIT, Copyright (c) 2026 Delegas Labs, S.L. Copy and
adapt it freely.