_ registry / mcp streamable-http · checked 1h ago

playtable

https://play.rowhousesoftware.com

Registry code: a91f7ccaded306c8

api record

Playtable runs games in the chat. Flow: ask what the player wants to play (or suggest a starter), call create_game, then tell them the board is in the chat. When they say they've moved, or the board tells you it's your turn, call get_state, decide, and call take_turn with your moves and end_turn. Keep the game_id and agent_key from create_game.

You only see your own seat: never guess or ask for hidden cards. Run the rules the server doesn't enforce yourself, fairly. Use roll and pick for anything random, and secret for anything you must commit to (a word, a culprit, ship positions) so the…

endpoint
https://play.rowhousesoftware.com/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is playtable live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is playtable free to use?
Yes — the hub reached it with no key and no payment.
What tools does playtable have?
4 tools: take_turn, get_state, show_board, create_game.
Is playtable safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
151ms

last good check

priced tools
0

of 4 tools

_ answered our checks, 90 days 2 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 4 tools
4 never probed 0 of 4 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • take_turn unknown never probed

    Apply one or more actions for your seat, all or nothing: if any action is illegal, none happen and you get the reason. Usually end with end_turn. Action types and fields: - place {at: "B3"} or {column: "D"} with gravity; optional label, shape (disc, square, ring, star, diamond), color, kind, owner - move {from: "B3", to: "C4"} or {piece, to}; moving onto another player's piece takes it; optional label, kind - edit {at, owner?, label?, kind?, shape?, color?}: change a piece in place (flip, crown) - remove {at} or {piece} - mark {at, color?, label?}: paint or label a cell (hits, misses, letters) - draw {from?: "deck", to?: "hand", count?} - play {card, to?: "table", from?}: a card you can see, by id or label - give {card, to: seat} - shuffle {pile?}, collect {into?: "deck", from?: [piles]}: gather and reshuffle - roll {dice?: "2d6"}, pick {options: [...]}: server randomness, logged - score {counter?, seat?, add? | set?} - secret {name, value}: lock in hidden info (the word, the culprit, your fleet); reveal {name} - say {text}, end_turn {next?}, end_game {winner?, reason}, concede Cells are column letter + row number from the top: A1 is the top left.

    mcp-tool

    {
      "type": "object",
      "required": [
        "game_id",
        "agent_key",
        "actions"
      ],
      "properties": {
        "as": {
          "type": "string"
        },
        "actions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              }
            },
            "additionalProperties": true
          },
          "maxItems": 40,
          "minItems": 1
        },
        "game_id": {
          "type": "string"
        },
        "agent_key": {
          "type": "string"
        }
      }
    }
    arguments 36 lines
  • get_state unknown 1h ago

    What your seat can see now: the board, your hand, public piles, scores, dice, secrets you hold and the recent log. Call it when the player says they've moved or it might be your turn.

    mcp-tool

    {
      "type": "object",
      "required": [
        "game_id",
        "agent_key"
      ],
      "properties": {
        "as": {
          "type": "string",
          "description": "Which of your seats, when you play more than one."
        },
        "game_id": {
          "type": "string"
        },
        "agent_key": {
          "type": "string"
        }
      }
    }
    arguments 19 lines
  • show_board unknown 1h ago

    Show the interactive board in the chat again, for example after a long conversation or when the player asks to see it.

    mcp-tool

    {
      "type": "object",
      "required": [
        "game_id",
        "agent_key"
      ],
      "properties": {
        "game_id": {
          "type": "string"
        },
        "agent_key": {
          "type": "string"
        }
      }
    }
    arguments 15 lines
  • create_game unknown never probed

    Set up any game to play in this chat: board games, card games, dice games, word and guessing games, mysteries. Describe it with the building blocks below, or pass starter for a ready one (tic-tac-toe, four-in-a-row, gomoku, checkers, reversi, crazy-eights, go-fish, twenty-one, pig, sea-battle, hangman, twenty-questions). The server keeps the board, deals and hides cards, rolls dice and enforces turns, so the player can trust the game. The player gets an interactive board in the chat (and a link to play in a browser or invite friends). Returns game_id and agent_key; keep both for get_state and take_turn. You run the rules that aren't built in.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "deal": {
          "type": "integer",
          "description": "Cards dealt to each hand at the start."
        },
        "deck": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "object"
                  }
                ]
              }
            }
          ],
          "description": "\"standard\" (52, ids like AS, 10H, QC), \"standard_jokers\", \"numbers:1-10x4\", or a list of card labels or {label, suit, rank}. Adds a face-down deck, a face-up table and a hidden hand per seat."
        },
        "dice": {
          "type": "integer",
          "description": "Default die sides."
        },
        "about": {
          "type": "string",
          "description": "The rules in a few sentences, shown to the player. Write them so you can follow them too."
        },
        "board": {
          "type": "object",
          "properties": {
            "cols": {
              "type": "integer",
              "maximum": 26
            },
            "rows": {
              "type": "integer",
              "maximum": 26
            },
            "cells": {
              "type": "object",
              "description": "Starting cell marks: {\"B2\": {\"color\": \"#cde2fb\", \"label\": \"?\"}}",
              "additionalProperties": true
            },
            "coords": {
              "type": "boolean"
            },
            "pattern": {
              "enum": [
                "plain",
                "checker",
                "lines"
              ],
              "type": "string"
            }
          }
        },
        "first": {
          "type": "string",
          "description": "Seat name that goes first."
        },
        "piles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "face": {
                "enum": [
                  "up",
                  "down",
                  "top",
                  "owner"
                ],
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "owner": {
                "type": "string"
              }
            }
          }
        },
        "rules": {
          "type": "object",
          "properties": {
            "place": {
              "enum": [
                "empty",
                "any"
              ],
              "type": "string"
            },
            "gravity": {
              "type": "boolean"
            },
            "max_hand": {
              "type": "integer"
            },
            "one_move": {
              "type": "boolean",
              "description": "A place, move or play ends the turn by itself."
            },
            "win_line": {
              "type": "integer",
              "description": "n in a row wins."
            }
          },
          "description": "Rules the server enforces for you."
        },
        "seats": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "kind": {
                "enum": [
                  "human",
                  "agent"
                ],
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "color": {
                "type": "string"
              },
              "piece": {
                "type": "object",
                "properties": {
                  "color": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "shape": {
                    "enum": [
                      "disc",
                      "square",
                      "ring",
                      "star",
                      "diamond"
                    ],
                    "type": "string"
                  }
                },
                "description": "What a click on an empty cell places for this seat."
              }
            }
          },
          "maxItems": 8,
          "description": "Players in turn order. Default: Player (human) then Agent (agent)."
        },
        "title": {
          "type": "string"
        },
        "turns": {
          "enum": [
            "alternate",
            "free"
          ],
          "type": "string",
          "description": "alternate (default): one seat at a time. free: anyone acts anytime (guessing games, puzzles)."
        },
        "pieces": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "at": {
                "type": "string"
              },
              "kind": {
                "type": "string"
              },
              "color": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "owner": {
                "type": "string",
                "description": "Seat name, or omit for neutral."
              },
              "shape": {
                "type": "string"
              }
            }
          },
          "description": "Starting pieces."
        },
        "starter": {
          "enum": [
            "tic-tac-toe",
            "four-in-a-row",
            "gomoku",
            "checkers",
            "reversi",
            "crazy-eights",
            "go-fish",
            "twenty-one",
            "pig",
            "sea-battle",
            "hangman",
            "twenty-questions"
          ],
          "type": "string",
          "description": "A ready-made game. Other fields here override its setup (for example seats)."
        },
        "counters": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          },
          "description": "Scores and tallies: \"score\", or {name, per_seat: false, start}."
        }
      }
    }
    arguments 237 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id a91f7ccaded306c8.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/a91f7ccaded306c8/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/a91f7ccaded306c8/badge.svg)](https://brick.blue/agent/a91f7ccaded306c8?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
80%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.