Gamechalk Score Keeper

Scoreboard & game scores

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,983Tokens (tool definitions)
~5.1 KBTypical response size
Moderate attention impact (1.55% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "score-keeper": {
      "url": "https://score-keeper.zovo.one/mcp"
    }
  }
}

Remote endpoints

https://score-keeper.zovo.one/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢show_scoreboard(mode, target, players, scores)

Use this when the user wants a live scoreboard: "keep score for me and Anna", "scoreboard for game night with 4 players", "add 12 points to Anna". Pass mode highest (default), lowest, or target with a positive target score. Scores stay in the open widget only; no online multiplayer. Shows a widget with one row per player, +N/-N buttons (use Smaller step and Bigger step to change the step), undo and history for the last 20 score changes with round numbers, and running totals. Pass the initial player names (2-12); totals start at 0 unless you pass initial scores. Do not use it to score dice sheets or darts legs — use score_dice_sheet or score_darts_leg for those.

Input Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "description": "Win mode, e.g. lowest for a penalty game, highest (default), or target for first to a target score.",
      "type": "string",
      "enum": [
        "highest",
        "lowest",
        "target"
      ]
    },
    "target": {
      "description": "Required target for target mode, e.g. 100. Ignored for highest/lowest modes.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "players": {
      "minItems": 2,
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 30
      },
      "description": "Player names in seating order, e.g. [\"Anna\", \"Ben\"]. 2-12 players."
    },
    "scores": {
      "description": "Optional starting totals, same order and length as players. Default 0, e.g. [25,0].",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    }
  },
  "required": [
    "players"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "highest",
        "lowest",
        "target"
      ]
    },
    "target": {
      "type": "number"
    },
    "players": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "score": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "score"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "mode",
    "players"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢score_dice_sheet(play_order, sheet)

Use this when the user wants a five-dice score sheet scored: "score my sheet, full house [5,5,5,2,2]", "what did I score for chance [3,4,4,5,6]", "tally my dice game". Pass each played category with its 5 dice, and null (or omit) for skipped categories. Returns the category scores, the upper-section total, the 35-point upper bonus when the upper total reaches 63, five-of-a-kind bonuses (100 per repeat after the first 50; provide play_order for chronology, otherwise listed category order is assumed), the grand total, and a CSV of the sheet. It does not choose categories for you and is not for board games — use show_scoreboard for plain point totals.

Input Schema

{
  "type": "object",
  "properties": {
    "play_order": {
      "description": "Played categories in chronological order, e.g. [five_of_a_kind, chance]. Include each played category once. If omitted, assumes the listed category order (ones through chance) for repeat bonuses.",
      "maxItems": 13,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "ones",
          "twos",
          "threes",
          "fours",
          "fives",
          "sixes",
          "three_of_a_kind",
          "four_of_a_kind",
          "full_house",
          "small_straight",
          "large_straight",
          "five_of_a_kind",
          "chance"
        ]
      }
    },
    "sheet": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "enum": [
          "ones",
          "twos",
          "threes",
          "fours",
          "fives",
          "sixes",
          "three_of_a_kind",
          "four_of_a_kind",
          "full_house",
          "small_straight",
          "large_straight",
          "five_of_a_kind",
          "chance"
        ]
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          {
            "type": "null"
          }
        ]
      },
      "description": "Score sheet state: map each category name to the five dice rolled (e.g. [5,5,5,2,2]) if you played that category, or null if you skipped it. Category keys: ones, twos, threes, fours, fives, sixes, three_of_a_kind, four_of_a_kind, full_house, small_straight, large_straight, five_of_a_kind, chance."
    }
  },
  "required": [
    "sheet"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "dice": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "score": {
            "type": "number"
          }
        },
        "required": [
          "category",
          "dice",
          "score"
        ],
        "additionalProperties": false
      }
    },
    "upper_total": {
      "type": "number"
    },
    "upper_bonus": {
      "type": "number"
    },
    "five_of_a_kind_bonus": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "csv_url": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "required": [
        "csv"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "categories",
    "upper_total",
    "upper_bonus",
    "five_of_a_kind_bonus",
    "total",
    "csv_url",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢score_darts_leg(start, turns, double_out)

Use this when the user wants a 501 or 301 darts leg scored: "score my 501 leg", "I threw T20 T20 T20, then S20, then out on D10", "darts scorer, double out". Send each visit to the oche as a turn of up to 3 darts (formats: S20, D16, T19, SB, DB, or 0). Applies standard bust rules (a bust scores nothing and the turn ends; darts after a finish are ignored; double-out requires a double or inner bull to finish unless double_out is false). Returns remaining, per-turn detail, busts, darts thrown, the three-dart average, a checkout suggestion when one exists, and a CSV of the leg. It is not for cricket or around-the-clock variants, and it does not track multi-leg matches — one leg per call.

Input Schema

{
  "type": "object",
  "properties": {
    "start": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Leg starting score: 501 (standard) or 301."
    },
    "turns": {
      "maxItems": 40,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "darts": {
            "maxItems": 3,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Darts in order, e.g. [\"T20\",\"T20\",\"D10\"]. Formats: S/D/T + number (S20, D16, T19), SB for the outer bull, DB for the inner bull, and 0 for a miss. Invalid tokens are named in the error (first 30 characters for long values)."
          }
        },
        "required": [
          "darts"
        ]
      },
      "description": "Turns in order; each turn has up to 3 darts. A new entry per visit, e.g. one turn containing T20 and D20."
    },
    "double_out": {
      "description": "Require a double (or inner bull) to finish, e.g. true for a double-out leg. Default true.",
      "type": "boolean"
    }
  },
  "required": [
    "start",
    "turns"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "start": {
      "type": "number"
    },
    "double_out": {
      "type": "boolean"
    },
    "turns": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "turn": {
            "type": "number"
          },
          "darts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "points": {
            "type": "number"
          },
          "remaining": {
            "type": "number"
          },
          "bust": {
            "type": "boolean"
          }
        },
        "required": [
          "turn",
          "darts",
          "points",
          "remaining",
          "bust"
        ],
        "additionalProperties": false
      }
    },
    "remaining": {
      "type": "number"
    },
    "finished": {
      "type": "boolean"
    },
    "busts": {
      "type": "number"
    },
    "darts_thrown": {
      "type": "number"
    },
    "scored": {
      "type": "number"
    },
    "three_dart_average": {
      "type": "number"
    },
    "checkout": {
      "type": [
        "string",
        "null"
      ]
    },
    "csv_url": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "required": [
        "csv"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "start",
    "double_out",
    "turns",
    "remaining",
    "finished",
    "busts",
    "darts_thrown",
    "scored",
    "three_dart_average",
    "checkout",
    "csv_url",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools