# Playable Gift

> Turn a few lines about someone into a small video game made just for them. Free, about a minute.

- name: com.playablegift/playable-gift
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.playablegift%2Fplayable-gift
- tools: https://api.protogrid.dev/v1/servers/com.playablegift%2Fplayable-gift/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "playable-gift": {
      "type": "http",
      "url": "https://playablegift.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% +updated-7d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list carries no ttlMs, so clients re-fetch it

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,909 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- fail `stability.rug_pull`: 7 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 1,909 tokens to load them all
- tool set hash: f441054fad12af3b625cbfb24db56cc4
- tools last changed: 2026-10-14T08:46:37.898Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.playablegift/playable-gift.svg)](https://protogrid.dev/servers/com.playablegift/playable-gift)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-14 `export_gift` changed (description, inputSchema, annotations)
  - before: Export a draft as portable JSON with its complete self-contained game HTML, without the recipient's email address or private tokens. Pass revision to export one of the five kept revisions instead of the current one.
  - after: Returns a private draft as portable JSON containing its complete self-contained game HTML. The recipient's email address and private tokens are excluded. An optional revision number selects a retained revision instead of the current version.
- 2026-10-14 `get_gift_history` changed (description, annotations) **meaning changed**
  - before: Read the last five revisions of a draft, without game HTML. They include personal content, so keep them private. Use export_gift with a revision number to read one revision's game.
  - after: Returns the last five retained revisions of a private draft for the supplied management token. Revision metadata may contain the sender's personal content. Game HTML is excluded.
- 2026-10-14 `get_gift` changed (description, annotations) **meaning changed**
  - before: Read a draft saved with create_custom_game, with its current revision, preview link and status, using its private managementToken. The game's HTML is not included; use export_gift for it.
  - after: Returns a private draft's metadata, current revision, preview link and status for the supplied management token. Game HTML is excluded.
- 2026-10-14 `revise_custom_game` changed (description, inputSchema, annotations) **meaning changed**
  - before: Replace a draft saved with create_custom_game with a revised self-contained HTML game and details. Read the current HTML with export_gift, make the change in it, and pass expectedRevision so you don't overwrite another edit.
  - after: Replaces an existing private draft with supplied HTML and game details. Requires the draft's management token and current revision number. A stale expectedRevision is rejected to prevent overwriting another edit.
- 2026-10-14 `create_custom_game` changed (description, inputSchema, annotations) **meaning changed**
  - before: This is the advanced path, so use make_game unless the sender asks you to write the game yourself. It saves a complete self-contained HTML game you wrote as a free private draft, and returns a preview link (previewUrl) and a private managementToken. Build the gameplay around the sender's details, with inline CSS and JavaScript, embedded assets, keyboard and touch controls, a goal and a restart. The game can't make network requests or take payments. Generate a random 32-byte hex idempotencyKey and reuse it only to retry the same request. Keep the managementToken private.
  - after: Saves a supplied self-contained HTML game as a free private draft. Returns a preview URL and private management token. Accepted games have inline code and embedded assets, keyboard and touch controls, a goal and restart. Network requests, payments and personal-data collection are prohibited. Repeated requests with the same idempotency key return the existing draft.
- 2026-10-14 `get_gift_catalog` changed (description, annotations) **meaning changed**
  - before: Read the requirements and limits for saving a game you wrote yourself with create_custom_game. You don't need this for make_game.
  - after: Returns the supported formats, capabilities, requirements and limits for saving custom HTML games as private drafts.
- 2026-10-14 `get_made_game` changed (description, annotations) **meaning changed**
  - before: Check a game started with make_game. While it builds, this returns the stage and, once known, the title and cast. When state is complete, it returns shareUrl, the play link to give the sender so they can send it to the recipient, and manageUrl, a private link for the sender only. Never share manageUrl with anyone else.
  - after: Returns the current stage of a game generation job identified by its private idempotency key. A completed job includes the title, cast, recipient play link and sender management link. Management links grant private sender access.
- 2026-10-14 `make_game` changed (description, inputSchema, annotations) **meaning changed**
  - before: Make a small video game about one person with Playable Gift's game maker, from two or three specific things the sender told you about them, like habits or inside jokes. Ask the sender for the recipient's name and those details first if you don't have them. This returns at once while the game builds. Then call get_made_game with the same idempotencyKey every 10 seconds until state is complete, which takes about a minute. If the free games for assistants are used up today, the app may ask the sender to sign in to Playable Gift, and the game is then made on their account; otherwise make_game returns state handoff with a continueUrl, which you give to the sender. Don't open the continueUrl yourself or keep polling after a handoff. It's free within a small daily allowance, and it never charges anyone or sends a message.
  - after: Starts generation of a small browser game about one person from the sender's supplied habits or inside jokes. Returns immediately with build progress. Games are free within a daily allowance. When the assistant allowance runs out, returns an OAuth sign-in request or a handoff URL. It never charges anyone or sends messages.
- 2026-10-13 `make_game` changed (description)
  - before: Make a small video game about one person with Playable Gift's game maker, from two or three specific things the sender told you about them, like habits or inside jokes. Ask the sender for the recipient's name and those details first if you don't have them. This returns at once while the game builds. Then call get_made_game with the same idempotencyKey every 10 seconds until state is complete, which takes about a minute. It's free within a small daily allowance, and it never charges anyone or sends a message.
  - after: Make a small video game about one person with Playable Gift's game maker, from two or three specific things the sender told you about them, like habits or inside jokes. Ask the sender for the recipient's name and those details first if you don't have them. This returns at once while the game builds. Then call get_made_game with the same idempotencyKey every 10 seconds until state is complete, which takes about a minute. If the free games for assistants are used up today, the app may ask the sender to sign in to Playable Gift, and the game is then made on their account; otherwise make_game returns state handoff with a continueUrl, which you give to the sender. Don't open the continueUrl yourself or keep polling after a handoff. It's free within a small daily allowance, and it never charges anyone or sends a message.

Full history: https://api.protogrid.dev/v1/servers/com.playablegift%2Fplayable-gift/changes

## Remotes

- https://playablegift.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (8)

- `create_custom_game`: Saves a supplied self-contained HTML game as a free private draft. Returns a preview URL and private management token. Accepted games have inline code and embedded assets, keyboard and touch controls, a goal and restart. Network requests, payments and personal-data collection are prohibited. Repeated requests with the same idempotency key return the existing draft.
- `export_gift`: Returns a private draft as portable JSON containing its complete self-contained game HTML. The recipient's email address and private tokens are excluded. An optional revision number selects a retained revision instead of the current version.
- `get_gift`: Returns a private draft's metadata, current revision, preview link and status for the supplied management token. Game HTML is excluded.
- `get_gift_catalog`: Returns the supported formats, capabilities, requirements and limits for saving custom HTML games as private drafts.
- `get_gift_history`: Returns the last five retained revisions of a private draft for the supplied management token. Revision metadata may contain the sender's personal content. Game HTML is excluded.
- `get_made_game`: Returns the current stage of a game generation job identified by its private idempotency key. A completed job includes the title, cast, recipient play link and sender management link. Management links grant private sender access.
- `make_game`: Starts generation of a small browser game about one person from the sender's supplied habits or inside jokes. Returns immediately with build progress. Games are free within a daily allowance. When the assistant allowance runs out, returns an OAuth sign-in request or a handoff URL. It never charges anyone or sends messages.
- `revise_custom_game`: Replaces an existing private draft with supplied HTML and game details. Requires the draft's management token and current revision number. A stale expectedRevision is rejected to prevent overwriting another edit.
