Daily photo game: you see a secret word, show it in photos, and your AI guesses it.
Maintain this server? Claim it
This server signs you in with OAuth, which the playground doesn't support yet. Install it in your MCP client to try it.
Tool list last changed Oct 25, 2026.
Call a foul when words, not the picture, would do the telling: writing made for the game (a note, letter tiles), a screen held up to show something, a hint the user types about the word, or your guess is written in the photo. Writing that's already in the world (a label, a logo, a sign) is not a foul unless your guess is written in it. The photo doesn't count and no shot is used. In Get Out & Go, pass the star if you know it. In a friends challenge, pass its challenge code.
| Argument | Type | Description |
|---|---|---|
| mode | string | Which star game this photo is for, when the user has both Get Out & Go and a course in play: "go" or "courses". Leave it out to use the one they played last. |
| star | integer | Get Out & Go only: which of the five words this is for, 1 to 5 stars. The user says it, or the card sends "Next photo's for the ★★★ word." |
| player* | string | The player code from start_round, e.g. "brave-otter-4821". The same code in every chat keeps the streak going. |
| reason* | string | "writing": writing made for the game. "screen": a screen stands in for the real thing. "typed_hint": the user typed a hint. "guess_in_photo": your guess is written in the photo. |
| challenge | string | A friends challenge code, like "K7QFX", when this call is for that challenge instead of the daily word. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player",
"reason"
],
"properties": {
"mode": {
"enum": [
"go",
"courses"
],
"type": "string",
"description": "Which star game this photo is for, when the user has both Get Out & Go and a course in play: \"go\" or \"courses\". Leave it out to use the one they played last."
},
"star": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Get Out & Go only: which of the five words this is for, 1 to 5 stars. The user says it, or the card sends \"Next photo's for the ★★★ word.\""
},
"player": {
"type": "string",
"maxLength": 48,
"minLength": 3,
"description": "The player code from start_round, e.g. \"brave-otter-4821\". The same code in every chat keeps the streak going."
},
"reason": {
"enum": [
"writing",
"screen",
"typed_hint",
"guess_in_photo",
"other"
],
"type": "string",
"description": "\"writing\": writing made for the game. \"screen\": a screen stands in for the real thing. \"typed_hint\": the user typed a hint. \"guess_in_photo\": your guess is written in the photo."
},
"challenge": {
"type": "string",
"maxLength": 16,
"minLength": 3,
"description": "A friends challenge code, like \"K7QFX\", when this call is for that challenge instead of the daily word."
}
}
}Check the user's Show & Tell day: whether today's word is played, their streak, whether the streak is at risk, and when the next word unlocks. Use it for check-ins and for daily reminders the user asked you to schedule. With mode "go" it checks Get Out & Go instead: whether today's list is open, how far along they are, and after 9 p.m. their results and the photobomb. With a challenge code it checks that friends challenge: who's in, who's done, and the board once it's out. Without one, the daily status also lists the user's challenges in play.
| Argument | Type | Description |
|---|---|---|
| mode | string | "go" for Get Out & Go: five words hiding outside, one at each star. "courses" for Courses: a run at a real place, five words written for it, on a clock. Leave it out for the daily word. |
| player* | string | The player code from start_round, e.g. "brave-otter-4821". The same code in every chat keeps the streak going. |
| timezone | string | The user's IANA timezone, e.g. "America/Los_Angeles". Always send it when you know it: the day changes at the user's local midnight, and Get Out & Go runs from 6 a.m. to 9 p.m. on their clock. Ask for their city if you don't know. |
| challenge | string | A friends challenge code, like "K7QFX", when this call is for that challenge instead of the daily word. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player"
],
"properties": {
"mode": {
"enum": [
"daily",
"go",
"courses"
],
"type": "string",
"description": "\"go\" for Get Out & Go: five words hiding outside, one at each star. \"courses\" for Courses: a run at a real place, five words written for it, on a clock. Leave it out for the daily word."
},
"player": {
"type": "string",
"maxLength": 48,
"minLength": 3,
"description": "The player code from start_round, e.g. \"brave-otter-4821\". The same code in every chat keeps the streak going."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "The user's IANA timezone, e.g. \"America/Los_Angeles\". Always send it when you know it: the day changes at the user's local midnight, and Get Out & Go runs from 6 a.m. to 9 p.m. on their clock. Ask for their city if you don't know."
},
"challenge": {
"type": "string",
"maxLength": 16,
"minLength": 3,
"description": "A friends challenge code, like \"K7QFX\", when this call is for that challenge instead of the daily word."
}
}
}Sign the user in to Show & Tell in this app, so every chat here plays as their account, with the same streak in any app they sign in from. Use it when the user asks to sign in, or to keep their streak in every chat. The app may show its own prompt to connect; when they're done, the call carries on. Pass the URL Show & Tell gave for this chat's round, so what they played here comes along.
| Argument | Type | Description |
|---|---|---|
| url | string | The URL Show & Tell gave in this chat for the user's round, the one only they visit, so what they played here comes along. Pass it as is; don't visit it. |
| platform | string | The assistant product you run in: "Claude", "ChatGPT", "Muse", "Grok", "Gemini", or another name. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"url": {
"type": "string",
"maxLength": 300,
"description": "The URL Show & Tell gave in this chat for the user's round, the one only they visit, so what they played here comes along. Pass it as is; don't visit it."
},
"platform": {
"type": "string",
"maxLength": 32,
"description": "The assistant product you run in: \"Claude\", \"ChatGPT\", \"Muse\", \"Grok\", \"Gemini\", or another name."
}
}
}Set up a friends challenge. The user gets a code and an invite to paste into their group chat (texts, WhatsApp, anything), and everyone who joins plays the same secret word by the daily's rules: six shots, a hint is a shot, fewest shots wins, ties go to the fastest. The user plays their own round right away, like a daily round, with the challenge code on every call. Joining stays open for 2 hours (or 1 or 3, their pick) for up to 8 players, and the board stays hidden until everyone's done or 24 hours pass. Pass rematch with a finished challenge's code to play the same group again with a new word.
| Argument | Type | Description |
|---|---|---|
| name | string | The first name the user's friends know them by, shown on challenge boards. Ask once if you don't know it. |
| player | string | The player code from start_round, e.g. "brave-otter-4821". The same code in every chat keeps the streak going. |
| ai_name | string | The name the user calls you, e.g. "Boo" or "Claude". |
| rematch | string | A finished challenge's code, for a rematch with the same group and a new word. |
| platform | string | The assistant product you run in: "Claude", "ChatGPT", "Muse", "Grok", "Gemini", "Hermes", "Instinct", or another name. |
| timezone | string | The user's IANA timezone, e.g. "America/Los_Angeles". Always send it when you know it: the day changes at the user's local midnight, and Get Out & Go runs from 6 a.m. to 9 p.m. on their clock. Ask for their city if you don't know. |
| join_hours | integer | How long friends can join: 1, 2 or 3 hours. 2 unless the user says. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"name": {
"type": "string",
"maxLength": 24,
"description": "The first name the user's friends know them by, shown on challenge boards. Ask once if you don't know it."
},
"player": {
"type": "string",
"maxLength": 48,
"minLength": 3,
"description": "The player code from start_round, e.g. \"brave-otter-4821\". The same code in every chat keeps the streak going."
},
"ai_name": {
"type": "string",
"maxLength": 32,
"description": "The name the user calls you, e.g. \"Boo\" or \"Claude\"."
},
"rematch": {
"type": "string",
"maxLength": 16,
"minLength": 3,
"description": "A finished challenge's code, for a rematch with the same group and a new word."
},
"platform": {
"type": "string",
"maxLength": 32,
"description": "The assistant product you run in: \"Claude\", \"ChatGPT\", \"Muse\", \"Grok\", \"Gemini\", \"Hermes\", \"Instinct\", or another name."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "The user's IANA timezone, e.g. \"America/Los_Angeles\". Always send it when you know it: the day changes at the user's local midnight, and Get Out & Go runs from 6 a.m. to 9 p.m. on their clock. Ask for their city if you don't know."
},
"join_hours": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "How long friends can join: 1, 2 or 3 hours. 2 unless the user says."
}
}
}Start or resume today's Show & Tell round. Show & Tell is a daily game you play with the user: they get a secret word you're not allowed to know, they send you photos of the real world, and you guess the word from the photos. Everyone gets the same word each day. Use this when the user wants to play or asks about today's word. The result has the score so far and how the user sees their word: on the Show & Tell card in apps that show it, or through a private link for the user. Only the user opens that link: it reveals the word, and opening it yourself voids the round. You start without the word's category; the user can spend a hint to reveal it. Leave player empty for a first-time player, then pass the returned code on every later call, including in new chats, so the streak carries over. With mode "go" it starts or resumes today's Get Out & Go instead: five words hiding outside, one at each star (1 to 5), open from 6 a.m. to 9 p.m. in the user's time zone. The user sees the five words on the card or a private /g/ link, never you. With mode "courses" it starts or resumes a Courses run instead: the result has a private /r/ link where the user checks in at a real place with their location; five words written for that place then start with a clock. With a challenge code it joins that friends challenge instead, or picks the user's round in it back up: the user says "Play Show & Tell challenge K7QFX". Pass name, the first name their friends know them by, for the board.
| Argument | Type | Description |
|---|---|---|
| mode | string | "go" for Get Out & Go: five words hiding outside, one at each star. "courses" for Courses: a run at a real place, five words written for it, on a clock. Leave it out for the daily word. |
| name | string | The first name the user's friends know them by, shown on challenge boards. Ask once if you don't know it. |
| player | string | The player code from start_round, e.g. "brave-otter-4821". The same code in every chat keeps the streak going. |
| ai_name | string | The name the user calls you, e.g. "Boo" or "Claude". Shown in the share grid. |
| platform | string | The assistant product you run in: "Claude", "ChatGPT", "Muse", "Grok", "Gemini", "Hermes", "Instinct", or another name. It decides the player's team. |
| timezone | string | The user's IANA timezone, e.g. "America/Los_Angeles". Always send it when you know it: the day changes at the user's local midnight, and Get Out & Go runs from 6 a.m. to 9 p.m. on their clock. Ask for their city if you don't know. |
| challenge | string | A friends challenge code, like "K7QFX", when this call is for that challenge instead of the daily word. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mode": {
"enum": [
"daily",
"go",
"courses"
],
"type": "string",
"description": "\"go\" for Get Out & Go: five words hiding outside, one at each star. \"courses\" for Courses: a run at a real place, five words written for it, on a clock. Leave it out for the daily word."
},
"name": {
"type": "string",
"maxLength": 24,
"description": "The first name the user's friends know them by, shown on challenge boards. Ask once if you don't know it."
},
"player": {
"type": "string",
"maxLength": 48,
"minLength": 3,
"description": "The player code from start_round, e.g. \"brave-otter-4821\". The same code in every chat keeps the streak going."
},
"ai_name": {
"type": "string",
"maxLength": 32,
"description": "The name the user calls you, e.g. \"Boo\" or \"Claude\". Shown in the share grid."
},
"platform": {
"type": "string",
"maxLength": 32,
"description": "The assistant product you run in: \"Claude\", \"ChatGPT\", \"Muse\", \"Grok\", \"Gemini\", \"Hermes\", \"Instinct\", or another name. It decides the player's team."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "The user's IANA timezone, e.g. \"America/Los_Angeles\". Always send it when you know it: the day changes at the user's local midnight, and Get Out & Go runs from 6 a.m. to 9 p.m. on their clock. Ask for their city if you don't know."
},
"challenge": {
"type": "string",
"maxLength": 16,
"minLength": 3,
"description": "A friends challenge code, like \"K7QFX\", when this call is for that challenge instead of the daily word."
}
}
}Lock in exactly one single-word guess for the user's newest photo, or for the hint they just spent, based on all of today's photos together. First describe the photo to the user in one sentence (after a hint, say what it changes). One guess per new photo or hint: otherwise the next guess waits for the next photo. Writing that's already in the world is fine, but the guess can't be a word written in the photo. When writing was made for the game, a screen stands in for the real thing, the user types a hint, or your guess is written in the photo, use call_foul instead. Returns how close the guess is: cold, warm, hot, burning, or correct. In Get Out & Go, pass star: which of the five words the photo is for. Use every photo of that word so far. In a friends challenge, pass its challenge code.
| Argument | Type | Description |
|---|---|---|
| mode | string | Which star game this photo is for, when the user has both Get Out & Go and a course in play: "go" or "courses". Leave it out to use the one they played last. |
| read | string | One sentence on what you see in the photo (or what the hint changed), kept for the recap. |
| star | integer | Get Out & Go only: which of the five words this is for, 1 to 5 stars. The user says it, or the card sends "Next photo's for the ★★★ word." |
| guess* | string | One word. Up to three words only for a fixed phrase. |
| player* | string | The player code from start_round, e.g. "brave-otter-4821". The same code in every chat keeps the streak going. |
| challenge | string | A friends challenge code, like "K7QFX", when this call is for that challenge instead of the daily word. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player",
"guess"
],
"properties": {
"mode": {
"enum": [
"go",
"courses"
],
"type": "string",
"description": "Which star game this photo is for, when the user has both Get Out & Go and a course in play: \"go\" or \"courses\". Leave it out to use the one they played last."
},
"read": {
"type": "string",
"maxLength": 280,
"description": "One sentence on what you see in the photo (or what the hint changed), kept for the recap."
},
"star": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Get Out & Go only: which of the five words this is for, 1 to 5 stars. The user says it, or the card sends \"Next photo's for the ★★★ word.\""
},
"guess": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "One word. Up to three words only for a fixed phrase."
},
"player": {
"type": "string",
"maxLength": 48,
"minLength": 3,
"description": "The player code from start_round, e.g. \"brave-otter-4821\". The same code in every chat keeps the streak going."
},
"challenge": {
"type": "string",
"maxLength": 16,
"minLength": 3,
"description": "A friends challenge code, like \"K7QFX\", when this call is for that challenge instead of the daily word."
}
}
}Use this only when the user asks for a hint. Reveals the word's category (after the first photo), its length (after 2 shots), or its first letter (after 4 shots). A hint is a shot of its own: right after it, call submit_guess with your guess, using every photo so far plus the hint; no new photo needed. One hint per shot. Each hint adds a 💡 to the user's share grid, and solving with no hints is the brag. In Get Out & Go, pass the star of the word, and kind "where" (where it's usually found), "letters" or "first_letter"; then guess that word right away with the same star. In a friends challenge, pass its challenge code; the hint shows on the board.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| mode | string | Which star game this photo is for, when the user has both Get Out & Go and a course in play: "go" or "courses". Leave it out to use the one they played last. |
| star | integer | Get Out & Go only: which of the five words this is for, 1 to 5 stars. The user says it, or the card sends "Next photo's for the ★★★ word." |
| player* | string | The player code from start_round, e.g. "brave-otter-4821". The same code in every chat keeps the streak going. |
| challenge | string | A friends challenge code, like "K7QFX", when this call is for that challenge instead of the daily word. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"player",
"kind"
],
"properties": {
"kind": {
"enum": [
"category",
"letters",
"first_letter",
"where"
],
"type": "string"
},
"mode": {
"enum": [
"go",
"courses"
],
"type": "string",
"description": "Which star game this photo is for, when the user has both Get Out & Go and a course in play: \"go\" or \"courses\". Leave it out to use the one they played last."
},
"star": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Get Out & Go only: which of the five words this is for, 1 to 5 stars. The user says it, or the card sends \"Next photo's for the ★★★ word.\""
},
"player": {
"type": "string",
"maxLength": 48,
"minLength": 3,
"description": "The player code from start_round, e.g. \"brave-otter-4821\". The same code in every chat keeps the streak going."
},
"challenge": {
"type": "string",
"maxLength": 16,
"minLength": 3,
"description": "A friends challenge code, like \"K7QFX\", when this call is for that challenge instead of the daily word."
}
}
}