Sign In

sigrank-mcp

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sigrank-mcp

SigRank MCP server — the yield cascade + live leaderboard as MCP tools any agent can call

latest
Source
npmnpm
Version
0.11.3
Version published
Maintainers
1
Created
Source
  ◈  ───────────────────────────────────────────  ◈

  ███████ ██  ██████  ██████   █████  ███    ██ ██   ██
  ██      ██ ██       ██   ██ ██   ██ ████   ██ ██  ██
  ███████ ██ ██   ███ ██████  ███████ ██ ██  ██ █████
       ██ ██ ██    ██ ██   ██ ██   ██ ██  ██ ██ ██  ██
  ███████ ██  ██████  ██   ██ ██   ██ ██   ████ ██   ██

  ◈  ───────────────────────────────────────────  ◈

        For all builders, burners and 10xers
                    signalaf

             powered by  MO§ES™
              $ npx sigrank-mcp

              ▸ press any key ◂
          [P] pause    [Enter] enter

SigRank MCP

The yield cascade + live leaderboard as MCP tools any agent can call.

For all builders, burners and 10xers.

npm version npm downloads CI license platform live

Token-only. No auth. No transcript content. Privacy-preserving by design.

Dual-mode package: interactive CLI dashboard for operators, MCP stdio server for AI clients.

npm install -g sigrank-mcp
sigrank-mcp          # launches the full tabbed TUI (TTY detected automatically)

Or one-shot without installing:

npx sigrank-mcp board --once

Install from GitHub

git clone https://github.com/SunrisesIllNeverSee/sigrank-mcp.git
cd sigrank-mcp
npm install

# Run CLI
node index.mjs                        # TUI (if TTY)
node cli.mjs board --once             # leaderboard one-shot

# Or link globally for `sigrank-mcp` command
npm link
sigrank-mcp

Repo: SunrisesIllNeverSee/sigrank-mcp Site: signalaf.com npm: sigrank-mcp

Commands

⊙ SigRank CLI  v0.11.2

Default (no args)
  sigrank-mcp              unified dashboard: cascade + token pillars + board

Commands
  enroll                   sign in: paste a connect code (get one at signalaf.com → Settings)
  submit                   publish your verified runs to the board (sign in first)
  board                    live leaderboard (refreshes every 30s)
  board --window 7d        board for a specific window (7d, 30d, 90d, all)
  board --once             print once and exit
  me                       single-platform cascade (claude by default)
  me --platform codex      use a different platform adapter
  compare                  raw pillar audit: tokenpull vs ccusage vs token-dash vs tokscale
  compare --platform codex compare for a specific platform
  tui                      full tabbed TUI: Dashboard / Trends / Compare / Board / Watch / Connect
  tui --platform codex     TUI with a different default platform
  watch                    live tune meter — re-reads local logs every 30s
  watch --window 7d        watch a specific window

Options
  --window    7d · 30d · 90d · all  (default: 30d for board, 7d for watch)
  --platform  claude · codex · amp · gemini · opencode · goose · …
  --refresh   poll interval in seconds (default: 30)
  --once      print once and exit (board only)

For AI clients (not typeable)
  In a piped/non-TTY context, sigrank-mcp is an MCP stdio server.
  AI clients (Claude, Cursor, …) call its tools automatically — these are
  NOT shell commands. Humans use the commands above.

Examples
  sigrank-mcp                        # unified dashboard
  sigrank-mcp board                  # live leaderboard
  sigrank-mcp compare                # pillar audit (claude)
  sigrank-mcp compare --platform codex
  sigrank-mcp me --platform codex
  sigrank-mcp watch --window 7d --refresh 60
  sigrank-mcp board --window all --once

The TUI is the whole app

Launch it and sign in inside it:

npx sigrank-mcp

Six tabs. Keys: 1-6 or to switch · R refresh · Q quit.

TabKeyContent
Dashboard1Cascade table (all platforms × windows + combined) · Υ sparklines · token composition bars · mini board
Trends2Every metric across windows — sub-views: You / Platform / Field
Compare34-source pillar audit (tokenpull vs ccusage vs token-dash vs tokscale) · delta % · cascade metrics per source · cache read bar chart
Board4Full leaderboard with all fields · [W] cycles window (7d/30d/90d/all)
Watch5In-TUI landing panel · [Enter] launches the live watcher (big numbers + pillar bars + Υ trend, auto-refreshes 30s)
Connect6Sign in / switch device — paste a connect code from signalaf.com → Settings. Then [S] submits.

Sign in + submit

sigrank-mcp enroll          # sign in: paste a connect code (get one at signalaf.com → Settings)
sigrank-mcp submit          # publish your verified runs to the board (sign in first)

Or do it inside the TUI on the Connect tab (6), then press [S] to submit.

MCP Server mode

When stdout is not a TTY (i.e. piped to an AI client), sigrank-mcp starts an MCP stdio server automatically. AI clients (Claude Code, Cursor, Windsurf, etc.) use this path.

Add to .mcp.json or equivalent:

{
  "mcpServers": {
    "sigrank": {
      "command": "npx",
      "args": ["-y", "sigrank-mcp"]
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "sigrank": {
      "command": "sigrank-mcp"
    }
  }
}

MCP Tools

ToolArgsWhat
rank_paste(text){input, output, cacheCreate, cacheRead} JSON or 4 whitespace-delimited numbersScores token pillars → Υ Yield / SNR / Leverage / Velocity / 10xDEV / Class + prose narration card
get_leaderboard(){window?}Live board from signalaf.com — sorted by Υ Yield
get_operator(codename){codename}One operator's live profile
submit_paste(text, codename){text, codename?}Rank locally then POST to board. Omit codename for preview-only
tokenpull(platform?){platform?}On-device local reader: scans local logs → 4-window cascade. Zero paste, token-only
tokenpull_submit(codename, window?){codename?, window?}tokenpull → publish to board. Omit codename for preview
tokenpull_compare(platform?){platform?}All four sources side-by-side: tokenpull + ccusage + token-dash + tokscale. Returns pillars, cascade metrics, and delta % vs tokenpull per window
rank_windows{platform?, window?}Multi-window cascade from local logs
watch_tokenpull{platform?, interval_s?}Streaming cascade snapshots

Cascade math

Υ Yield    = (cache_read × output) / input²
SNR        = output / (input + output)
Leverage   = cache_read / input
Velocity   = output / input
10xDEV     = log₁₀(leverage)

Math is in cascade.mjs, dependency-free. Mirrors sigrank-app/lib/ingest/bridge.ts. Canon check: MO§ES (1251211, 11296121, 128196310, 2555179769) → Υ 18436.98.

Token Pillars — sources

The dashboard pulls from multiple sources and shows them side-by-side for verification:

SourceWhatPlatform
tokenpullOn-device JSONL scanner (canon source)claude, codex, amp, …
ccusageccusage <platform> daily --json CLIclaude, codex
token-dashboard~/.claude/token-dashboard.db SQLiteclaude only
tokscale~/tokscale_report.json exportclaude, codex

Codex input is estimated — Codex logs don't expose true input tokens directly. The formula:

input       = output × ioRatio         (ioRatio derived from Claude ratio, else 2.0)
cacheCreate = uncached − input         (uncached = input_tokens − cached_input_tokens)
cacheRead   = exact (from logs)

Verifier numbers (ccusage/tokscale for codex) show raw uncached input (input_tokens − cached) — a different field than the estimated input above. The discrepancy is expected and explained inline in the dashboard.

Platform adapters

All adapters are token-only (no message content, no cost fields, no credentials).

PlatformPathNotes
Claude Code~/.claude/projectsNative; dedup by (session_id, message_id); subagents included
Codex~/.codex/sessionsEstimated input via io_ratio; verified vs ccusage
Amp~/.local/share/amp/threadsFull 4-pillar; per-message
Kimi~/.kimi/sessionsFull 4-pillar; StatusUpdate lines only
pi-agent~/.pi/agent/sessionsFull 4-pillar; per-message JSONL
OpenClaw~/.openclawFull 4-pillar; per-message JSONL
Droid~/.factory/sessions/*.settings.jsonFull 4-pillar; thinking→output
Codebuff~/.config/manicodeFull 4-pillar; chat-messages.json
Hermes~/.hermes/state.dbFull 4-pillar; SQLite; reasoning→output
Kilo~/.local/share/kilo/kilo.dbFull 4-pillar; SQLite
Qwen~/.qwen/projectscacheCreate=0 estimated; thought→output
Goose~/.local/share/goose/sessions/sessions.dbcacheCreate=cacheRead=0 estimated; SQLite
Gemini CLI~/.gemini/tmpcacheCreate=0 estimated; cache extracted from input field
GitHub Copilot CLI~/.copilot/otelOTel JSONL; requires COPILOT_OTEL_ENABLED=true
OpenCode⚠️ ~/.local/share/opencodeRaw token counts not persisted in log format
Cursor🔜Chat log path TBD
Windsurf🔜Session logs at ~/.codeium/windsurf/

estimated=true means one or more pillars are derived, not native. The server re-scores all submitted pillars authoritatively; local preview Υ is indicative only.

Privacy

  • Token-only, always. No message content is ever read, logged, or transmitted — only token counts (input, output, cache_creation, cache_read), message IDs, and timestamps.
  • Local by default. tokenpull reads only ~/.claude/projects (Claude) or ~/.codex (Codex) on your device. Numbers stay on your machine unless you explicitly submit with a codename.
  • Background tooling excluded. Memory plugins, observers, summarizers (e.g. claude-mem, mem0, observer-sessions) are filtered from both Claude and Codex reads. subagents/ are kept — they represent real operator work.
  • No auth required. All board reads and the submit path are anonymous.

Env vars

VarDefaultDescription
SIGRANK_API_BASEhttps://signalaf.comOverride the board host
SIGRANK_FETCH_TIMEOUT_MS10000Board API fetch timeout

Dev / test

node test.mjs          # 29 unit tests (no network, no fs writes)
node index.mjs         # stdio MCP server directly (pipe to MCP client)

Tests verify (29 assertions):

  • rank_paste canon: MO§ES (1251211, 11296121, 128196310, 2555179769) → Υ 18436.98 · TRANSMITTER
  • submit_paste preview (no codename) + POST shape (injected fetch, no live writes)
  • tokenpull dedup, window slicing, 4-window pillars (mock adapter)
  • tokenpull_submit all 4 windows POST, sha256 hash, ddmmyy stamp
  • tokenpullCodex io_ratio conversion per-window
  • Adapter registry (15 platforms) + per-adapter shape contracts
  • rank_windows 4-window paste scoring, partial input, no-network
  • watch_tokenpull cascade snapshot, interval_s, TODO(AUTH.WIRE) stub
  • Hardening: div-by-zero guards, parsePillars warnings, fetch timeout, EXCLUDE_TOOLING regex, narrate safety

File map

FileResponsibility
index.mjsEntry point — TTY detection, routes to CLI or MCP server
cli.mjsCLI commands: board, me, compare, watch, enroll, submit, help
tui.mjsFull tabbed TUI: Dashboard / Trends / Compare / Board / Watch / Connect
cascade.mjsPure cascade math (Υ, SNR, leverage, velocity, 10xDEV, class)
tokenpull.mjsOn-device log scanner — Claude, Codex, multi-platform
adapters.mjsPlatform adapter registry (15+ platforms)
tools.mjsMCP tool table + dispatcher
connect.mjsConnect-code enrollment + device identity
keystore.mjsLocal key management (paste-keys, not API keys)
submit.mjsVerified submit flow (signs + POSTs to board)
sign.mjsSchema 1.0 signing (X-Agent-Signature)
narrate.mjsDeterministic prose narration card
test.mjsUnit tests (no external deps)

FAQs

Package last updated on 26 Jun 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts