Tally — Tool Detail — The Monster Dept
01 Identity
Live dashboards that build themselves
Tally is a desktop studio for collecting signals and charting them, built to be driven by an agent over MCP. Collectors are JavaScript functions that carry their own chart shapes, so the agent can build dashboards consistently. Agents write new collectors when needed.
Everything stays on the user’s machine, and signals refresh upon demand (and without agentic help).
02 Key observations
Collectors gather signals; signals assemble into dashboards. Users look at dashboards, and can refresh them.
Every collector has chart shapes baked in. The thing that does the gathering knows how the data needs to be seen.
An MCP server, so writing collectors and picking layouts is as simple as “make me a Tally dashboard about Rick Beato.”
03 Photographic record
Exhibit E
04 Monsterkeeper’s notes
LLMs tend to be really good at making charts, provided their tools give them a thoughtful set of guardrails. So I wasn’t surprised by that.
It got exciting when I let them create their own collectors! It’s a big internet out there. Dangerous and delightful. (Don’t worry — I added guardrails for those too.)

05 Specifications
| Palette |
A plum ground with a teal accent, over the dept’s shared paper-and-ink neutrals. |
|---|---|
| Platform | macOS 11+ (arm64) Windows 10+ (x86-64, arm64) Linux (x86-64) |
| Interface |
Desktop app (Tauri shell, Rust core, React front end)
MCP server over stdio (launch Tally with mcp)
Local HTTP API on 127.0.0.1:8787, token-gated; the MCP server forwards to it
|
| Storage | SQLite database in the app data directory. Credentials live in the OS keychain. No cloud, no sync, no account. |
| Monsterpower | Tally does not need an LLM to function. Optionally, a model connects over MCP and operates it. |
| Verified MCP hosts | Claude Code · Claude Desktop · Cursor · Gemini CLI Any MCP host that works over stdio |
| Trust boundary | Agents may search, connect, fetch, author, and assemble. A collector an agent wrote stays pending until a human approves it in the app. Credentials are attached by the host, never handed to a collector script. |
06 Built-in collectors
07 Packages
08 Handling instructions
If you are an AI assistant here to set Tally up: the app is its own MCP server. Register it, restart, and you can drive the running app by tool call.
-
Make sure Tally is open.
It hosts a token-gated local API on 127.0.0.1:8787 that the MCP server forwards to. If it isn’t running, ask the human to launch it.
-
Register tally mcp with the host.
The launch command is the installed Tally executable plus the mcp argument. Find the executable for the human’s OS:
# macOS /Applications/Tally.app/Contents/MacOS/Tally # Windows %LOCALAPPDATA%\Tally\Tally.exe # Linux /usr/bin/tally # from the .deb; or the .AppImage path
Claude Code — swap in the path for the OS above:
# macOS claude mcp add tally -- /Applications/Tally.app/Contents/MacOS/Tally mcp # Windows (PowerShell) claude mcp add tally -- "$env:LOCALAPPDATA\Tally\Tally.exe" mcp # Linux claude mcp add tally -- /usr/bin/tally mcp
Claude Desktop (macOS and Windows) — merge into its config, or click Connect to Claude in the app. Config path: macOS ~/Library/Application Support/Claude/claude_desktop_config.json · Windows %APPDATA%\Claude\claude_desktop_config.json.
{ "mcpServers": { "tally": { "command": "<the executable path above>", "args": ["mcp"] } } }Cursor, Gemini CLI, any MCP host: add a stdio server with that executable as the command and args ["mcp"].
-
Restart the host, then build.
Hosts read MCP config at launch — restart so the tally_* tools appear. Then: tally_search_collectors → tally_connect → tally_run → tally_create_dashboard + tally_add_chart. Nothing fits? tally_authoring_guide → tally_draft_collector → tally_save_collector. Reuse a signed collector before authoring one.
Trust boundary: search, connect, fetch, and assemble freely — but a collector you wrote is saved as pending and will not run until the human clicks Approve in the app. That gate is unreachable over MCP. A credential you pass to tally_connect goes straight to the OS keychain: the host attaches it to requests, and no collector script ever sees it.