Stake Dev Tool
crates/cli

Your terminal, your CI, your agent.

sdt drives the whole platform: push math revisions with deduplicated uploads, read stats and diffs, pull any revision back. And sdt mcp turns it into an MCP server, so AI agents can do all of it for you.

Install

Grab a prebuilt binary (Linux x64, Windows x64, macOS arm64) and put it on your PATH — or build it with a Rust toolchain (1.90+):

cargo install --git https://github.com/Stake-Dev-Tool/stake-dev-tool --branch main cli

Quick start

# sign in once (device flow — approve in the dashboard)
sdt login --save --server https://app.stakedevtool.com

# push a math folder as a new revision (only changed files upload)
sdt push ./math/my-game --workspace my-team --game my-game -m "tuned bonus RTP" --wait-stats

# browse
sdt revisions --workspace my-team --game my-game
sdt diff --workspace my-team --game my-game 42 41

No CI? No terminal? You can also push a folder straight from the dashboard — drag it onto your game page.

In CI

Create an API token with the push:math scope in the dashboard, store it as a secret, and every math build ships itself.

GitHub Actions
# .github/workflows/math.yml — push every merged math change
- name: Push math revision
  env:
    SDT_SERVER: https://app.stakedevtool.com
    SDT_TOKEN: ${{ secrets.SDT_TOKEN }}   # API token with the push:math scope
  run: sdt push ./math/my-game --workspace my-team --game my-game -m "${{ github.event.head_commit.message }}" --json
sdt mcp

The MCP server

sdt mcp speaks the Model Context Protocol over stdio. Register it once and your agent can push math, read RTP diffs and pull revisions — with your token, on your workspaces.

Claude Code
claude mcp add sdt -e SDT_TOKEN=sdt_pat_... -- sdt mcp --server https://app.stakedevtool.com
Any MCP client (stdio)
{
  "mcpServers": {
    "sdt": {
      "command": "sdt",
      "args": ["mcp", "--server", "https://app.stakedevtool.com"],
      "env": { "SDT_TOKEN": "sdt_pat_..." }
    }
  }
}
  • list_workspacesworkspaces you belong to
  • list_games / list_revisionscatalogue per workspace and game
  • get_revisionfiles + per-mode bet stats (RTP, max win, hit rate)
  • diff_revisionsfile changes and RTP deltas between two revisions
  • push_mathpush a local math folder as a new revision (dedup upload)
  • pull_revisiondownload a revision to disk, hash-verified

Prompts for your AI

Minimal, copy-paste prompts. Give one to Claude Code (or any capable agent) and it sets everything up itself.

Install + sign in
Install the Stake Dev Tool CLI on this machine:
1. Check Rust is available (rustup), then run:
   cargo install --git https://github.com/Stake-Dev-Tool/stake-dev-tool --branch main cli
2. Run `sdt login --save --server https://app.stakedevtool.com` and give me the
   verification URL + code so I can approve the device in my dashboard.
3. Confirm everything works with `sdt whoami`.
Set up the MCP server
Set up the Stake Dev Tool MCP server for this client:
1. If the `sdt` binary is missing, install it:
   cargo install --git https://github.com/Stake-Dev-Tool/stake-dev-tool --branch main cli
2. Ask me for an API token (I create it at https://app.stakedevtool.com/account,
   scope push:math), then register the MCP server, e.g. for Claude Code:
   claude mcp add sdt -e SDT_TOKEN=<token> -- sdt mcp --server https://app.stakedevtool.com
3. Verify by calling the list_workspaces tool and showing me the result.
Push math
Push the math folder at <path> to my Stake Dev Tool workspace <workspace>,
game <game>, with a clear one-line message describing the change. Use
`sdt push … --wait-stats` and show me the per-mode RTP / max win table when
it lands. If the CLI is not installed or not logged in, set that up first.