Koskamo

Gamechalk Score Keeper MCP

Provides live scoreboards for up to 12 players, five-dice score sheets with bonus calculations, and 501/301 darts leg scoring with checkout suggestions and bust handling.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Gamechalk Score Keeper MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://score-keeper.zovo.one/mcp
Vendor documentation

What you can do with it

  • Create a live scoreboard for 2-12 players with +/- scoring and undo
  • Score a five-dice sheet with upper-section and five-of-a-kind bonuses
  • Score 501 or 301 darts legs with bust handling and checkout suggestions
  • Download CSV of scored sheets and darts legs

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
score-keeper 1.0.0
MCP protocol
2025-06-18
Tools
3 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Gamechalk Score Keeper scores tabletop games live in the chat: a five-dice score sheet (ones through chance, with upper-bonus and five-of-a-kind bonuses) and 501/301 darts legs with bust handling, checkout suggestions, and a three-dart average. Use show_scoreboard to open the live scoreboard widget; score_dice_sheet for dice sheets; score_darts_leg for darts legs.

Tools

3 advertised

show_scoreboard — Show scoreboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

show_scoreboard input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "players"
  ],
  "properties": {
    "mode": {
      "enum": [
        "highest",
        "lowest",
        "target"
      ],
      "type": "string",
      "description": "Win mode, e.g. lowest for a penalty game, highest (default), or target for first to a target score."
    },
    "scores": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991
      },
      "maxItems": 12,
      "description": "Optional starting totals, same order and length as players. Default 0, e.g. [25,0]."
    },
    "target": {
      "type": "integer",
      "maximum": 9007199254740991,
      "description": "Required target for target mode, e.g. 100. Ignored for highest/lowest modes.",
      "exclusiveMinimum": 0
    },
    "players": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 30,
        "minLength": 1
      },
      "maxItems": 12,
      "minItems": 2,
      "description": "Player names in seating order, e.g. [\"Anna\", \"Ben\"]. 2-12 players."
    }
  }
}
show_scoreboard output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "mode",
    "players"
  ],
  "properties": {
    "mode": {
      "enum": [
        "highest",
        "lowest",
        "target"
      ],
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "target": {
      "type": "number"
    },
    "players": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "score"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "score": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
show_scoreboard annotations
{
  "title": "Show scoreboard",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
score_dice_sheet — Score dice sheet
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

score_dice_sheet input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "sheet"
  ],
  "properties": {
    "sheet": {
      "type": "object",
      "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.",
      "propertyNames": {
        "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"
        ],
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          {
            "type": "null"
          }
        ]
      }
    },
    "play_order": {
      "type": "array",
      "items": {
        "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"
        ],
        "type": "string"
      },
      "maxItems": 13,
      "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."
    }
  }
}
score_dice_sheet output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "categories",
    "upper_total",
    "upper_bonus",
    "five_of_a_kind_bonus",
    "total",
    "csv_url",
    "downloads"
  ],
  "properties": {
    "total": {
      "type": "number"
    },
    "csv_url": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "category",
          "dice",
          "score"
        ],
        "properties": {
          "dice": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "score": {
            "type": "number"
          },
          "category": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "upper_bonus": {
      "type": "number"
    },
    "upper_total": {
      "type": "number"
    },
    "five_of_a_kind_bonus": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
score_dice_sheet annotations
{
  "title": "Score dice sheet",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
score_darts_leg — Score darts leg
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

score_darts_leg input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start",
    "turns"
  ],
  "properties": {
    "start": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Leg starting score: 501 (standard) or 301."
    },
    "turns": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "darts"
        ],
        "properties": {
          "darts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 3,
            "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)."
          }
        }
      },
      "maxItems": 40,
      "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": {
      "type": "boolean",
      "description": "Require a double (or inner bull) to finish, e.g. true for a double-out leg. Default true."
    }
  }
}
score_darts_leg output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start",
    "double_out",
    "turns",
    "remaining",
    "finished",
    "busts",
    "darts_thrown",
    "scored",
    "three_dart_average",
    "checkout",
    "csv_url",
    "downloads"
  ],
  "properties": {
    "busts": {
      "type": "number"
    },
    "start": {
      "type": "number"
    },
    "turns": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "turn",
          "darts",
          "points",
          "remaining",
          "bust"
        ],
        "properties": {
          "bust": {
            "type": "boolean"
          },
          "turn": {
            "type": "number"
          },
          "darts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "points": {
            "type": "number"
          },
          "remaining": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "scored": {
      "type": "number"
    },
    "csv_url": {
      "type": "string"
    },
    "checkout": {
      "type": [
        "string",
        "null"
      ]
    },
    "finished": {
      "type": "boolean"
    },
    "downloads": {
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "remaining": {
      "type": "number"
    },
    "double_out": {
      "type": "boolean"
    },
    "darts_thrown": {
      "type": "number"
    },
    "three_dart_average": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
score_darts_leg annotations
{
  "title": "Score darts leg",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

score-keeper-widget — Gamechalk Score Keeper view

Advertised by the server during the last successful anonymous check.

Interactive view for Gamechalk Score Keeper.

score-keeper-widget URI
ui://widget/score-keeper-v3-1.0.0-d397aebf6a45f9a5c4039a71c8e7436f0d4189a35153f79574c5ef7d0686f398.html

MIME type: text/html;profile=mcp-app

score-keeper-widget-legacy — Gamechalk Score Keeper view (previous versions)

Advertised by the server during the last successful anonymous check.

score-keeper-widget-legacy URI template
ui://widget/score-keeper-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
575 ms
95th percentile latency
575 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 575 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http gamechalk-score-keeper-mcp https://score-keeper.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add gamechalk-score-keeper-mcp --url https://score-keeper.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable gamechalk-score-keeper-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "gamechalk-score-keeper-mcp": {
      "url": "https://score-keeper.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "gamechalk-score-keeper-mcp": {
      "type": "streamableHttp",
      "url": "https://score-keeper.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start gamechalk-score-keeper-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "gamechalk-score-keeper-mcp": {
      "type": "http",
      "url": "https://score-keeper.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http gamechalk-score-keeper-mcp https://score-keeper.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "gamechalk-score-keeper-mcp": {
      "url": "https://score-keeper.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "gamechalk-score-keeper-mcp": {
      "serverUrl": "https://score-keeper.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Gamechalk Score Keeper MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.