Skip to main content
Glama

SigRank SignalAF — sigrank CLI/MCP

SignalAF is the public brand. SigRank is the leaderboard and proof surface. The sigrank package reads local AI session logs, derives your token cascade, and publishes to the board at signalaf.com. Four token counts only. Never prompts or code.

SignalAF is the brand. SigRank proves. MO§ES™ governs.

SigRank evaluates observable AI operator token-processing patterns—not AI model quality, cognition, work quality, employee productivity, or business value.

npm version CI CodeQL audit Dependabot license platform live SunrisesIllNeverSee/sigrank-mcp MCP server LightNow capabilities

Table of Contents

The board

Your operator profile

SigRank SignalAF leaderboard

SigRank SignalAF operator profile

Every operator ranked by Υ Yield — the architecture of the cascade, not raw spend

Cascade layer, class, and fingerprint — derived from four token counts

Run sigrank enroll then sigrank submit to get ranked and claim your public profile at signalaf.com.


Related MCP server: MCP Monitor

SignalAF product architecture

MO§ES™ governance → SignalAF brand → SigRank leaderboard → Upsilon engine

Repo

What it is

Install

sigrank-mcp (this repo)

SigRank's on-device scanner — extracts four token pillars, computes locally, and optionally submits to the board.

npx sigrank

sigrank-app

SignalAF web app — the SigRank leaderboard, operator profiles, and proof surface.

signalaf.com

bestuser-router-mcp

The intent layer — routes "who is the best AI user?" queries to SigRank SignalAF's leaderboard. MCP server for AI assistants.

npx bestuser-router-mcp

sigarena

The satellite — public LLM operator evals at sigeconomy.com. Read-only leaderboard, SEO/AEO surface.

sigeconomy.com

sigrank-vscode

The IDE extension — see your cascade metrics inline in VS Code.

code --install-extension sigrank.sigrank

fundscore

The repo scorer — investor-readiness scoring for GitHub repos. CLI + MCP server.

npx fundscore

Also in the MO§ES™ suite

Site

What it is

SIGNOMY

Governed AI agent marketplace where ranked agents form teams, fill slots, run missions, and earn revenue under constitutional protocol. Agents are free. Operators pay.

MO§ES

Constitutional governance and methodology — the law governing SignalAF, SigRank, and the Upsilon measurement engine.

Quickstart — 3 steps to the board

# 1. Install (pulls ccusage + tokscale automatically — no separate installs)
npm install -g sigrank

# 2. Sign in (paste a connect code from signalaf.com → Settings → New key)
sigrank enroll

# 3. Submit your cascade to the board
sigrank submit

# (cautious? see exactly what would be sent — four counts + a signature — sending nothing)
sigrank submit --dry-run

That's it. sigrank reads your local AI session logs on-device, derives your token cascade (Υ Yield, Leverage, Velocity, 10xDEV), and publishes to signalaf.com. No paste, no transcript content — only the four token counts leave your machine.

Or just explore without signing in:

sigrank          # launches the full tabbed TUI (dashboard, compare, board, watch)
npx sigrank board --once    # print the live leaderboard once
bunx sigrank board --once   # same, via Bun (faster startup if you have it)

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` command
npm link
sigrank

Repo: SunrisesIllNeverSee/sigrank-mcp Site: signalaf.com npm: sigrank Smithery: smithery.ai/servers/burnmydays/sigrank Glama: glama.ai/mcp/servers/SunrisesIllNeverSee/sigrank-mcp


Install via Smithery

SigRank SignalAF is available on Smithery as a stdio MCP bundle — one-click install for Claude Desktop, Cursor, and other MCP clients.

Smithery CLI

# Install Smithery CLI
npm install -g smithery

# Connect to SigRank SignalAF (downloads the MCPB bundle locally)
smithery mcp add burnmydays/sigrank --id sigrank

# List available tools
smithery tool list sigrank

# Call a tool
smithery tool call sigrank get_leaderboard '{}'
smithery tool call sigrank rank_paste '{"text": "1000000 500000 50000 800000"}'

Claude Desktop (via Smithery)

  1. Go to smithery.ai/servers/burnmydays/sigrank

  2. Click Install

  3. Smithery handles the rest — no manual config editing


Commands

⊙ SigRank SignalAF CLI  v1.0.37

Default (no args)
  sigrank              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
  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 — ALL active platforms × all windows, every 30s
  watch --platform codex   watch only one platform (optional filter)
  watch --window 7d        watch only one window (optional filter)
  proxy                    opt-in local Anthropic/OpenAI usage proxy
  proxy --port 9000        run the proxy on a custom loopback port

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

For AI clients (not typeable)
  In a piped/non-TTY context, sigrank 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                        # unified dashboard
  sigrank board                  # live leaderboard
  sigrank compare                # pillar audit (claude)
  sigrank compare --platform codex
  sigrank watch --window 7d --refresh 60
  sigrank board --window all --once

Optional API usage proxy

Some desktop coding agents receive provider usage in API responses but do not persist it in their local session files. SigRank SignalAF can capture those provider-reported counts through a manually started loopback proxy:

sigrank proxy              # http://localhost:8787
sigrank proxy --port 9000  # custom port

Then point a compatible tool's API base URL at the displayed local URL. The first release supports Anthropic Messages (/v1/messages), OpenAI Chat Completions (/v1/chat/completions), and OpenAI Responses (/v1/responses). The tool must support a custom API base URL; this is not guaranteed for every desktop client.

The proxy is off by default: it opens no port and observes no traffic unless you explicitly run sigrank proxy. It binds only to loopback and stops when the command exits. Request and response content, API keys, and tool calls are forwarded transiently but never written to disk. Only usage metadata is appended to ~/.sigrank-mcp/proxy-sessions.jsonl (directory 0700, file 0600).

Anthropic and OpenAI calls are currently grouped under one proxy platform row. For streamed Chat Completions, SigRank SignalAF sets OpenAI's stream_options.include_usage=true so the provider includes the final usage chunk; response chunks are still forwarded immediately.

The TUI is the whole app

Launch it and sign in inside it:

npx sigrank

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

Tab

Key

Content

Dashboard

1

Cascade table (all platforms × windows + combined) · Υ sparklines · token composition bars · mini board

Trends

2

Every metric across windows — sub-views: You / Platform / Field

Compare

3

4-source pillar audit (tokenpull vs ccusage vs token-dash vs tokscale) · delta % · cascade metrics per source · cache read bar chart

Board

4

Full leaderboard with all fields · [W] cycles window (7d/30d/90d/all)

Watch

5

In-TUI landing panel · [Enter] launches the live watcher (big numbers + pillar bars + Υ trend, auto-refreshes 30s)

Connect

6

Sign in / switch device — paste a connect code from signalaf.com → Settings. Then [S] submits.

Sign in + submit

sigrank enroll          # sign in: paste a connect code (get one at signalaf.com → Settings)
sigrank submit          # publish your verified runs to the board (sign in first)
sigrank submit --dry-run  # inspect the exact signed payload without sending anything

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 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"]
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "sigrank": {
      "command": "sigrank"
    }
  }
}

Tools

Tool

Args

What

rank_paste(text)

{input, output, cacheCreate, cacheRead} JSON or 4 whitespace-delimited numbers

Scores 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?}

One cascade snapshot per call (interval_s advisory)

submit_verified

{window?, platform?, dry_run?}

THE ranked path: builds + ed25519-signs Schema 1.0 snapshots and POSTs them. platform:'multi' sums all active platforms. dry_run:true returns the exact payload unsent

enroll

{code, device_label?}

Bind this device with a connect code from signalaf.com → Settings

diagnose_cascade

{text?}

Diagnoses where your token cascade is leaking efficiency — ranked findings with severity + estimated Υ impact

simulate_change

{text?, changes}

Prescriptive "what if" — test proposed pillar changes and see the exact Υ delta + class change before committing

suggest_improvements

{text?}

Generates ranked, simulated improvement suggestions — tests strategies and returns them sorted by Υ yield impact

self_improve

{text?}

One-click optimize: diagnoses, suggests, and simulates the best change in a single call

get_best_operator(n?)

{n?}

Top N operators with behavioral framing in power-user language. Intent: "who is the best AI user?"

compare_self(codename? | text?)

{codename?} or {text?}

Your metrics vs board averages + power-user assessment + percentile + suggestion. Intent: "how do I measure up?"

compare_operators(a, b)

{codename_a, codename_b}

Side-by-side comparison with behavioral verdict. Intent: "compare operator X vs Y"

describe_power_user()

{}

Static explanation of AI power user archetype + metrics explained. Intent: "what is an AI power user?"

optimize_efficiency(codename? | text?)

{codename?} or {text?}

Ranked efficiency suggestions tied to your cascade shape. Intent: "how can I use AI more efficiently?"

tokscale_breakdown(threshold?)

{threshold?}

Per-model token breakdown across platforms (models under threshold → "other")

tokscale_market_share()

{}

AI tool market share: each tool's % of tokens/cost/messages, ranked. From local tokscale data

tokscale_developer_profile()

{}

Per-developer usage profile across all detected tools: model mix, pillars, sessions, workspaces. Paths redacted

tokscale_model_trends()

{}

Model adoption over time: per-model first/last seen, active days, month-by-month adoption curve

tokscale_cost_analysis()

{}

Cost per developer per model: cost_per_million_tokens, cost_per_message, share_cost, client rollup

tokscale_device_profile()

{}

Device fingerprinting: installed tools, session counts, active days, day-of-week distribution, concurrency. Paths redacted

tokscale_mcp_usage()

{}

MCP server usage: detected servers, detection window, active days

tokscale_competitive_intel(target)

{target}

Competitive intelligence for any AI tool: rank, model mix, cost efficiency, share vs all competitors


Cascade math

Υ Yield    = (cache_read × output) / input²       (TTEOP canonical)
SNR        = output / (input + output)            (display alias for output_fraction)
Leverage   = cache_read / input                   (TTEOP canonical)
Velocity   = output / input                       (TTEOP canonical)
10xDEV     = log₁₀(leverage)                      (display alias for log_leverage)

Canonical metric computation is delegated to tteop-spec via @sigrank/cascade. SNR and 10xDEV are SigRank display aliases for the TTEOP metrics output_fraction and log_leverage respectively. See TTEOP-IMPLEMENTATION-PROFILE.md for the full authority chain. 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:

Source

What

Platform

tokenpull

On-device JSONL scanner (canon source)

claude, codex, amp, …

ccusage

ccusage <platform> daily --json CLI (bundled)

claude, codex

token-dashboard

~/.claude/token-dashboard.db SQLite (Nate's)

claude only

tokscale

tokscale models --json CLI (bundled, falls back to ~/tokscale_report.json)

claude, codex

Non-Claude input is estimated — most non-Claude systems (Codex, Devin, etc.) combine user input + cache write into a single input_tokens field, so true fresh input must be derived. The ruleset (applies to ALL non-Claude systems):

input       = output × ioRatio         (ioRatio derived from Claude ratio, else 2.0)
cacheCreate = uncached − input         (uncached = input_tokens − cached_input_tokens)
cacheRead   = exact (from logs)
  • Beta = operator's Claude input/output ratio (if Claude data available)

  • Alpha = 2.0 default (when no Claude data)

  • Owner-stated average: 7:1:2 (cache:input:output) → input/output ≈ 0.5

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). The table below is regenerated from the adapter file headers in adapters/index.mjs + adapters/tokenpull.mjs so the path, pillar shape, and notes match the actual code (a prior revision had drifted on Qwen/Codex/Copilot).

Platform

Path

Pillar shape & notes

Claude Code

~/.claude/projects (recursive, incl. subagents/)

Native 4-pillar; dedup by (session_id, message_id) — final snapshot wins

Codex

~/.codex/sessions (+ archived_sessions)

input_tokens incl. cached → input + cacheCreate split window-level via io_ratio; cacheRead native (cached_input_tokens); reasoning_output→output; verified vs ccusage (~1%)

Devin CLI

~/.local/share/devin/cli/sessions.db

SQLite; native 4-pillar from metadata.metrics (input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens); input_tokens is fresh (excludes cache)

Amp

~/.local/share/amp/threads

Native 4-pillar; per-message

Kimi

~/.kimi/sessions

Native 4-pillar; StatusUpdate lines only

pi-agent

~/.pi/agent/sessions

Native 4-pillar; per-message JSONL

oh-my-pi (omp)

~/.omp/agent/sessions (recursive, incl. nested subagent transcripts)

Native 4-pillar from .message.usage on type:"message" entries (cacheWritecacheCreate); reasoningTokens is already inside output — never added, or it double-counts; usage.cost reuses the same four key names for USD floats and is dropped; dedup by (session header id, entry id). Separate harness from pi-agent

OpenClaw

~/.openclaw

Native 4-pillar; per-message JSONL

Droid

~/.factory/sessions/*.settings.json

Native 4-pillar; thinking_tokens→output

Codebuff

~/.config/manicode

Native 4-pillar; chat-messages.json

Hermes

~/.hermes/state.db

Native 4-pillar; SQLite; reasoning_tokens→output

Kilo

~/.local/share/kilo/kilo.db

Native 4-pillar; SQLite

Qwen

~/.qwen/projects

Estimated (cacheCreate=0 — no field in logs); cacheRead from cachedContentTokenCount; thoughtsTokenCount→output

Goose

~/.local/share/goose/sessions/sessions.db (or $GOOSE_PATH_ROOT/data/sessions/sessions.db)

Estimated (cacheCreate=cacheRead=0 — no cache fields); reasoning = total−input−output→output; cumulative-column dedup by session id

Gemini CLI

~/.gemini/tmp

Estimated (cacheCreate=0); cacheRead from cached field; thought→output; input = input−cached (fresh)

GitHub Copilot CLI

~/.copilot/otel

Native 4-pillar (OTel spans: llm.token_count.{prompt,completion,cache_creation,cache_read}); requires COPILOT_OTEL_ENABLED=true + COPILOT_OTEL_EXPORTER_TYPE=file set before session start

OpenCode

⚠️ ~/.local/share/opencode

Data gap — logs store cost:0 and derive tokens via LiteLLM at runtime; raw token counts not persisted. No pillars readable with current format

SigRank SignalAF proxy

~/.sigrank-mcp/proxy-sessions.jsonl

Opt-in native 4-pillar usage reported by Anthropic/OpenAI; same-timestamp records keep the last call; OpenAI cached input is separated from fresh input

Other (user JSON)

$SIGRANK_OTHER_PATH

User-supplied JSON { "windows": { "all": {input,output,cacheCreate,cacheRead} } }; all-time only (no timestamps)

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 persistence and submission. Local-log adapters read usage metadata only. The optional proxy necessarily handles provider-bound request and response bytes in memory, but never persists their content; it writes only token counts, model/backend metadata, and timestamps. Only token telemetry is submitted to SigRank SignalAF.

  • Local by default. tokenpull reads only the selected or detected adapter paths on your device (e.g. ~/.claude/projects for Claude, ~/.codex for Codex, plus additional paths for Amp, Devin, Gemini, Goose, and other supported platforms). 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.

  • Board reads are anonymous. No account needed to browse, compare, or watch.

  • Ranked submissions are signed, not trusted. sigrank submit requires a one-time enroll (device-bound ed25519 key — the private key never leaves your machine). Verify what's sent with sigrank submit --dry-run: the payload is four token counts, ratios, and a signature.


Env vars

Var

Default

Description

SIGRANK_API_BASE

https://signalaf.com

Override the board host

SIGRANK_FETCH_TIMEOUT

10000

Board API fetch timeout (ms)


Dev / test

node test.mjs          # 313-assertion baseline + proxy tests (local mocks only; temp filesystem)
node sign.test.mjs     # ed25519 signing + canon parity
node index.mjs         # stdio MCP server directly (pipe to MCP client)

Tests verify (14 groups, 313 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 (17 platforms) + per-adapter shape contracts

  • Local proxy: Anthropic/OpenAI JSON + fragmented SSE, live pass-through, secure JSONL, error forwarding

  • rank_windows 4-window paste scoring, partial input, no-network

  • watch_tokenpull cascade snapshot, interval_s, submit path

  • enroll posts identity (public key only), maps 201 enrolled + 410 code_invalid

  • submit_verified signs Schema 1.0, server-verifiable

  • simulate_change relative + absolute deltas, quadratic penalty, JSON input

  • Hardening: div-by-zero guards, parsePillars warnings, fetch timeout, EXCLUDE_TOOLING regex, narrate safety

  • sign.test.mjs ed25519 round-trip + canonical 926-byte payload parity


File map

File

Responsibility

index.mjs

Entry point — TTY detection, routes to CLI or MCP server

proxy.mjs

Opt-in loopback Anthropic/OpenAI proxy and usage capture

cli.mjs

CLI commands: board, compare, watch, enroll, submit, help

tui.mjs

Full tabbed TUI: Dashboard / Trends / Compare / Board / Watch / Connect

cascade.mjs

Cascade facade — delegates to @sigrank/cascadetteop-spec (Υ, SNR, leverage, velocity, 10xDEV, class)

tokenpull.mjs

On-device log scanner — Claude, Codex, multi-platform

adapters.mjs

Platform adapter registry (16+ platforms)

tools.mjs

MCP tool table + dispatcher

connect.mjs

Connect-code enrollment + device identity

keystore.mjs

Local key management (paste-keys, not API keys)

submit.mjs

Verified submit flow (signs + POSTs to board)

sign.mjs

Schema 1.0 signing (X-Agent-Signature)

narrate.mjs

Deterministic prose narration card

preflight.mjs

Plausibility checks (Benford, bounds, anomaly detection)

test.mjs

Unit tests (no external deps)

sign.test.mjs

ed25519 signing + canon parity test


Contributing

Contributions welcome. SigRank SignalAF MCP is built in the open.

License

MIT — see LICENSE.

Available Tools

25 tools
diagnose_cascadeA
Read-onlyIdempotent

Analyzes your token cascade and diagnoses where you're leaking efficiency. Takes your 4 pillars (input/output/cacheCreate/cacheRead) and produces a ranked list of efficiency leaks with severity (critical/warning/info), findings, and recommendations. Checks: cache leverage (are you rereading what you wrote?), velocity (are you generating enough output per input?), SNR (is your signal drowning in noise?), cache creation ratio (are you over-committing?), input bloat (is fresh input too high?), and 10xDEV (is the full cascade compounding?). Each finding includes an estimated Υ impact. Pure local math — no network, no submission. Use this BEFORE simulate_change to understand what's wrong, then use simulate_change to test fixes. Accepts the same input formats as rank_paste (JSON or 4 whitespace numbers).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesToken pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste).

Output Schema

ParametersJSON Schema
NameRequiredDescription
cascadeNo
pillarsNoThe 4 raw token pillars
summaryNoOne-line summary of the operator's cascade health
diagnosisNoRanked list of efficiency leaks found, worst first

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint/idempotentHint annotations, the description adds meaningful behavioral context: 'Pure local math — no network, no submission' and describes output structure (ranked leaks, severity, findings, recommendations, estimated impact).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence serves a purpose: purpose, checks performed, output details, and safety caveat. It is front-loaded and well organized for a complex analysis tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description need not detail return values, but it still covers what checks are performed, output type (ranked list with severity/findings/recommendations), and the local/no-submission behavior, making it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already documents the 'text' parameter at 100% coverage, so baseline is 3. The description adds value by specifying 'JSON or 4 whitespace numbers' and noting it accepts the same format as rank_paste, clarifying the expected input forms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Analyzes your token cascade and diagnoses where you're leaking efficiency') and names the resource. It distinguishes from siblings by positioning it as the pre-simulation diagnostic and referencing rank_paste's input format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance: 'Use this BEFORE simulate_change to understand what's wrong, then use simulate_change to test fixes.' This clearly tells the agent when to invoke this tool relative to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_peersA
Read-only

Discovers mentors, peers, and complementary operators for YOUR operator on the SigRank leaderboard. Uses your enrolled device identity — no codename needed. Finds operators you should learn from: (1) Mentors — 1-2 class tiers above you with similar cascade shapes, including the specific pillar delta that explains the yield gap (e.g. '12× your cache reads'). (2) Peers — same class tier, ranked by yield proximity. (3) Complementary — operators whose strength is your weakness. Use this after submit_verified to find who to learn from, then chain into self_improve with the mentor's pillar deltas as context. Requires enrollment (npx sigrank-mcp enroll). Intent: DISCOVER_PEERS.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of operators to return per category (default: 5, max: 20).
platformNoFilter peers by platform (default: your operator's primary platform). Use 'all' to search across all platforms.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ctaNo
peersNoOperators in your class tier, ranked by yield proximity
mentorsNoOperators 1-2 class tiers above you with similar cascade shapes, including pillar deltas
summaryNoOne-line summary of findings
your_profileNoYour operator's current profile on the board
complementaryNoOperators whose strength maps to your weakness

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnly=truehol, and the description adds key behavioral facts: it relies on the enrolled device identity and requires enrollment, and explicitly states no codename is needed. This goes beyond the annotation by clarifying a prerequisite and identity source, though it does not discuss side effects (which are minimal for a read operation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear numbered categories and a usage note, but slightly longer than necessary. Each section adds content (mentor/peer/complementary explanations), yet the level of detail could be trimmed without losing meaning. Still earns credit for front-loading the core purpose and providing terse category definitions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (three output categories, identity-based logic), the description is thorough: it explains the rank-tier logic, what each category contains, the enrollment dependency, and returns are implied by the description. This covers all aspects an agent needs to invoke it correctly, and the output schema can handle details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already fully cover both parameters (n with default/range, platform with default behavior). The description adds that the operator's identity is auto-detected, but this is context for the overall tool, not a parameter-specific clarification. Since schema coverage is 100%, baseline is 3; no extra value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear, specific verb ('discovers') and resource ('mentors, peers, and complementary operators on the SigRank leaderboard'), with three enumerated categories that sharply distinguish from sibling tools like rank_paste or diagnose_cascade. Scope is explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use instruction ('after submit_verification') and a recommended follow-up chain ('then chain into self_improvement with the mentor's pillar deltas as context'). This gives the agent a concrete decision path and eliminates guesswork about tool ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enrollA
Idempotent

Bind THIS device to your SigRank operator so your signed token runs cascade to the live board. Paste the key from signalaf.com → Settings → "New key" (or "Generate connect code"). On first run it generates + stores a local ed25519 keypair (~/.sigrank-mcp/identity.json); only the PUBLIC key is ever sent. By enrolling you agree to the SignalAF Terms of Service (signalaf.com/terms) and Privacy Policy (signalaf.com/privacy). Need a new key? Click "New key" at signalaf.com → Settings, then paste it here.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesthe key / connect code (SIGR-XXXXX-XXXXX-XXXXX) from Settings → New key (or Generate connect code)
device_labelNooptional label for this device (default: hostname · agent version)

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNoError reason if status is error
statusNoEnrollment result
codenameNoOperator codename if enrolled
device_idNoLocal device ID
operator_idNoOperator ID if enrolled
trust_statusNoTrust level of the device

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses behavioral traits beyond annotations: it generates a local ed25519 keypair, sends only the public key, implies agreement to terms. Annotations already indicate idempotent and non-destructive, but the description adds meaningful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences) and front-loaded with purpose, followed by instructions. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description adequately covers the workflow and side effects. It could mention what happens after successful enrollment (e.g., confirmation), but the schema likely handles return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter descriptions already exist. The description adds value by explaining the code format (SIGR-XXXXX-XXXXX-XXXXX) and where to get it, and clarifying the default for device_label.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Bind THIS device to your SigRank operator' with a specific verb and resource. It distinguishes this enrollment action from sibling tools like tokenpull_submit, which are unrelated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit step-by-step instructions on how to obtain the key and what happens on first run. However, it does not explicitly state when not to use the tool or mention alternatives, though none are obvious given the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_leaderboardA
Read-only

Fetches the live public SigRank leaderboard from signalaf.com. Reads all ranked operators sorted by yield (Υ = Cache Reads × Output / Input²) and returns an array of operator summaries. Each entry contains: codename (public display name), yield (Υ, the headline efficiency metric), leverage ratio (Cr/I = cache reads divided by input), velocity (O/I = output divided by input), class tier (one of 24 experience stages: 8 tiers × 3 sub-stages, e.g. ARCH+ I, REFINER II, IGNITER III), and rank position (integer, 1-based). Returns an empty array if no operators have submitted yet. Use this to see where operators stand overall, to find specific codenames for get_operator lookups, or to display the current rankings. Do NOT use this to check your own rank if you already know your codename — use get_operator instead for a single-operator profile with per-window breakdowns. After calling this, follow up with get_operator to get detailed metrics for any operator of interest.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
operatorsNoArray of ranked operators sorted by yield

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true and openWorldHint=false, but the description adds significant behavioral context that is not already captured: the data is 'live' and 'public', results are 'sorted by yield', the exact metric formulas (Υ = Cache Reads × Output / Input²) are given, and the empty-array behavior when no operators have submitted is disclosed. This goes well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed but every sentence serves a purpose: it explains the resource, the sort order, the return fields, the edge case, and provides usage and exclusions. The structure is logical and front-loaded with the core action, followed by details and alternatives. No unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (indicated by context signals), the description still thoroughly explains all returned fields (codename, yield, leverage ratio, velocity, class tier, rank) and the empty-array behavior. This makes the tool's behavior fully understandable even without inspecting the output schema, covering all necessary context for a zero-parameter read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description and schema both confirm that it takes no parameters and always fetches the full leaderboard. Since there are no parameters to explain, this score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Fetches the live public SigRank leaderboard from signalaf.com' with a specific verb and resource. It also distinguishes itself from the sibling tool get_operator by noting that get_operator should be used for single-operator profiles. This is a clear, specific purpose that differentiates from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use this to see where operators stand overall, to find specific codenames for get_operator lookups, or to display the current rankings.' It also gives a clear when-not-to-use instruction: 'Do NOT use this to check your own rank if you already know your codename — use get_operator instead.' This is exemplary usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_operatorA
Read-only

Fetches one operator's live profile from the SigRank board by their codename. Reads the operator's current submission data from signalaf.com and returns their detailed metrics: yield (Υ), leverage ratio (Cr/I), velocity (O/I), class tier (one of 24 experience stages: 8 tiers × 3 sub-stages, e.g. ARCH+ I, REFINER II, IGNITER III), rank position (integer, 1-based), and per-window breakdowns for each time range (7d, 30d, 90d, all-time) with the four canonical pillars (input, output, cacheCreate, cacheRead) per window. Returns an error if the codename is not found on the board. Use this to look up any operator who has submitted to the board — codenames are public and visible on the leaderboard. Do NOT use this to browse all operators — use get_leaderboard for that. After calling this, you can use simulate_change to model what would happen if the operator adjusted their token mix.

ParametersJSON Schema
NameRequiredDescriptionDefault
codenameYesThe operator's public codename as shown on the SigRank leaderboard. Case-insensitive — "Ghost Falcon" and "ghost falcon" are equivalent. Must match a codename that exists on the board; returns an error if not found. To discover valid codenames, call get_leaderboard first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rankNo1-based rank position
classNo
yield_NoΥ Yield metric
batchedNoSubmission-based rolled-forward totals (never decrease when platforms delete old logs). Present when the operator has submission history.
windowsNoPer-window breakdowns (7d, 30d, 90d, all-time)
codenameNoOperator display name
leverageNoCr/I ratio
velocityNoO/I ratio

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: reads live submission data from signalaf.com, returns an error if codename not found, and describes the detailed profile contents. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with the core purpose and contains useful usage and follow-up guidance. Slightly redundant with schema (error on not found, case-insensitivity), but each sentence earns its place by adding operational context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only lookup tool with an output schema and annotations, the description is complete: it covers purpose, source, scope, error case, alternative tool, and downstream action. No significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the codename parameter is already well-described with case-insensitivity, error behavior, and how to discover valid values. The description adds public-visibility context but does not materially go beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb+resource: 'Fetches one operator's live profile from the SigRank board by their codename.' It clearly differentiates from sibling get_leaderboard by explicitly scoping to a single operator and listing the returned metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: use to look up any operator who has submitted, do not use to browse all operators (use get_leaderboard instead), and mentions simulate_change as a follow-up. This is strong when-to-use and when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sigrank_standard_recordA
Read-onlyIdempotent

Build Upsilon's portable sigrank/0.1-draft compatibility record from available token telemetry. Input and output are required; unavailable cache telemetry remains null. Computes the canonical cascade locally through token-cascade and returns Yield, Leverage, Velocity, SNR, and 10xDEV. Upsilon is the measurement product; SigRank is the public leaderboard. No data is submitted or persisted.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNoOptional tool/client identifier.
inputYesFresh input tokens.
modelNoOptional model identifier.
outputYesOutput tokens.
providerNoOptional provider identifier.
timestampNoOptional ISO-8601 timestamp. Defaults to the current time.
cache_readNoCache-read tokens, or null when unavailable.
cache_writeNoCache-write / cache-creation tokens, or null when unavailable.

Output Schema

ParametersJSON Schema
NameRequiredDescription
specYesLegacy wire identifier. Resolves to TTEOP tteop/0.1-draft.
sourceYes
metricsYes
protocolYes
warningsYes
telemetryYes
timestampYesISO-8601 record timestamp.
spec_statusYesIndicates this spec identifier is a legacy alias, not a current protocol.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds meaningful behavior beyond that: computation happens locally 'through token-cascade,' and importantly 'No data is submitted or persisted,' plus the rule that unavailable cache telemetry stays null. These are real behavioral facts the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four front-loaded sentences with little waste; the core action comes first and the privacy note closes it. The Upsilon/SigRank clarification sentence is arguably expendable but does aid disambiguation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and the description covers what is computed, the local-computation model, and the no-persistence guarantee. For a tool with an output schema and full parameter documentation, this is close to complete; only the missing usage routing is a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all eight parameters, giving a baseline of 3. The description restates that input/output are required and that missing cache telemetry stays null, which is slightly redundant with the schema but confirms the null semantics. No additional syntax or format detail is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Build Upsilon's portable sigrank/0.1-draft compatibility record from available token telemetry,' and names the concrete outputs (Yield, Leverage, Velocity, SNR, 10xDEV). It even disambiguates the two named products (Upsilon vs SigRank), which helps an agent orient. It lacks explicit differentiation from the many siblings, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no alternative is named despite a large sibling set (rank_paste, diagnose_cascade, tokenpull, tokscale_breakdown, etc.). The agent must infer the trigger condition from the purpose statement alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_pasteA
Read-onlyIdempotent

Computes the SigRank yield cascade from a paste of token counts. Parses the input, runs the full cascade math locally (no network calls), and returns: yield (Υ, the headline efficiency metric, Υ = Cache Reads × Output / Input²), snr (signal-to-noise ratio), leverage (Cr/I = cache reads divided by input), velocity (O/I = output divided by input), dev10x (10xDEV score), class (operator experience stage — 24 stages = 8 tiers × 3 sub-stages I/II/III, e.g. ARCH+ I, REFINER II, IGNITER III, or UNCLASSED for empty input), mode (detected working mode), and a deterministic prose "card" summarizing the result in plain English. Accepts two input formats: (1) JSON object {"input":N,"output":N,"cacheCreate":N,"cacheRead":N} or (2) four whitespace-separated numbers in order: input output cacheCreate cacheRead. Returns an error if the input is malformed or has negative values. Use this for a quick one-off ranking without submitting to the board. Do NOT use this to submit your score — use submit_paste instead, which both ranks and publishes. Do NOT use this if you want to rank all four time windows at once — use rank_windows for that. After calling this, use submit_paste to publish the result if you want to appear on the leaderboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesToken counts to rank. Two formats accepted: (1) JSON object {"input":N,"output":N,"cacheCreate":N,"cacheRead":N} where all values are non-negative integers, or (2) four whitespace-separated numbers in order: input output cacheCreate cacheRead. Get these from `ccusage` output, the Claude Max usage dashboard, tokscale, or any token reader. Example valid input: {"input":1000000,"output":500000,"cacheCreate":50000,"cacheRead":800000}

Output Schema

ParametersJSON Schema
NameRequiredDescription
snrNoSignal-to-noise ratio
cardNoDeterministic prose summary of the cascade result
modeNoDetected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence
classYesOperator class tier (dev10x taxonomy)
yieldYesΥ Yield — the headline efficiency metric (Cache Reads × Output / Input²)
dev10xNo10xDEV score (log10 of the cascade product)
pillarsNoThe four raw token pillars the cascade was computed from
leverageNoCr/I — cache reads divided by input
velocityNoO/I — output divided by input
warningsNoParse or data warnings if any

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds crucial context beyond annotations: 'runs the full cascade math locally (no network calls)', 'deterministic prose' (idempotency), and error behavior ('Returns an error if the input is malformed or has negative values'). It also discloses the exact metric formulas and stage classification, making the tool's behavior fully transparent. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but densely packed without fluff. It is front-loaded with the core purpose, then systematically covers outputs, input formats, error conditions, and usage guidance. Every sentence adds information, though it could arguably be trimmed slightly; however, for a tool with this complexity and the need to distinguish from siblings, the length is justified. The structure is logical and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's complexity, the description is entirely self-contained. It covers purpose, usage boundaries, input syntax, output semantics, error handling, local computation, and integration with submit_paste. The output schema is present, yet the description still explains each return field (yield, snr, etc.) and even the classification stages. With one parameter and no nested objects, this is more than complete—it is exceptionally thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning beyond the schema. It explains both accepted input formats in detail, specifies the order of numbers, clarifies that values must be non-negative integers, and provides a concrete example: '{"input":1000000,"output":500000,"cacheCreate":50000,"cacheRead":800000}'. It also links the parameters to the output metrics (e.g., yield formula), giving the agent a deeper understanding than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Computes the SigRank yield cascade from a paste of token counts.' It clearly distinguishes from siblings by explicitly naming submit_paste and rank_windows as alternatives, and describes the precise outputs (yield, snr, leverage, velocity, dev10x, class, mode, prose card). This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use ('Use this for a quick one-off ranking without submitting to the board') and when not to use it, naming two alternatives: 'Do NOT use this to submit your score — use submit_paste instead' and 'Do NOT use this if you want to rank all four time windows at once — use rank_windows for that.' It also advises calling submit_paste afterward to publish. This is exemplary usage guidance with concrete exclusions and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_windowsA
Read-onlyIdempotent

Rank all four time windows (7d/30d/90d/all-time) in one call from a dashboard paste — paste the full table from ccusage, tokscale, or the Claude Max usage dashboard and get the cascade (Υ, SNR, Leverage, Velocity, 10xDEV, class, card) for each window. Each window is parsed and scored independently. Named keys required (input/output/cacheCreate/cacheRead); positional order is NOT safe here (dashboards list cache_read before cache_create — see WINDOWED_PROFILES gotcha). Omit windows you don't have — partial input is allowed (1–4 windows). Does NOT submit to the board; use tokenpull_submit for a local zero-paste preview, or submit_verified to publish via the enrolled-device path.

ParametersJSON Schema
NameRequiredDescriptionDefault
7dNoccusage/tokscale paste or JSON for the 7-day window (optional)
30dNoccusage/tokscale paste or JSON for the 30-day window (optional)
90dNoccusage/tokscale paste or JSON for the 90-day window (optional)
allNoccusage/tokscale paste or JSON for the all-time window (optional)
source_toolNowhich token reader produced the paste (for cross-tool variance tracking)

Output Schema

ParametersJSON Schema
NameRequiredDescription
windowsNoCascade results per window

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, openWorldHint=false), and the description adds real behavioral context beyond them: each window is parsed and scored independently, positional order is unsafe because dashboards list cache_read before cache_create, and windows may be omitted for partial input. It stops short of describing how malformed pastes or conflicting windows are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and output set are front-loaded in the first sentence, with routing, input constraints, and the non-submission caveat following in focused clauses. It is dense but nearly every clause carries distinct routing or correctness information; slightly long but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values legitimately need not be explained. The description covers source formats, per-window independence, key requirements, partial-input tolerance, and the submission boundary, which is everything an agent needs to call this read-only tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the four window strings and source_tool enum are documented. The description still adds value beyond the schema by specifying the required named keys (input/output/cacheCreate/cacheRead), warning that positional order is not safe, and pointing to the WINDOWED_PROFILES gotcha.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rank) and resource (all four time windows 7d/30d/90d/all-time) and names the sources (ccusage, tokscale, Claude Max dashboard) plus the outputs produced (cascade: Υ, SNR, Leverage, Velocity, 10xDEV, class, card). An agent can distinguish it from siblings like rank_paste and tokscale_breakdown without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states what it does NOT do (does not submit to the board) and routes to the correct alternatives with conditions: tokenpull_submit for a local zero-paste preview, submit_verified to publish via the enrolled-device path. It also clarifies partial input (1-4 windows) is allowed and named keys are required, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

self_improveA
Read-onlyIdempotent

Runs the full self-improvement cycle in one call: (1) gets your current token pillars — either from the provided text or by running tokenpull on your local logs, (2) diagnoses where you're leaking efficiency (diagnose_cascade), (3) generates ranked improvement suggestions (suggest_improvements), (4) simulates the top suggestion (simulate_change), and (5) returns the complete cycle: diagnosis + suggestions + the simulated impact of the best change. This is the 'one-click optimize' tool — call it at the end of a session to see what to improve next time. If you provide pillars in text, it skips the tokenpull step. If you omit text, it runs tokenpull first (requires local ccusage logs). Pure local math — no network, no submission. The scope parameter adds mode detection (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) and scoped analysis: 'daily' (default — current behavior + mode), 'weekly' (compound into weekly snapshots + report artifact), 'trend' (30d/90d trajectory analysis).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoOptional: token pillars — ccusage JSON or "input output cacheCreate cacheRead". If omitted, runs tokenpull to get current pillars from local logs.
scopeNoAnalysis scope: "daily" (default — current behavior + mode detection), "weekly" (compound daily rows into weekly snapshots + report artifact with badges), "trend" (30d/90d trajectory + phase patterns). Daily modes never leave the machine — only weekly distribution goes in submitted reports.
windowNoWhich time window to pull when running tokenpull (default: 30d). Ignored if `text` is provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNoDetected mode { mode, confidence } — present when scope is daily/weekly/trend
trendNoTrend analysis (trend scope)
adviceNoAdvice for next session (daily scope)
reportNoWeekly report artifact (weekly scope)
pillarsNoThe 4 raw token pillars used
diagnosisNoEfficiency leaks found (from diagnose_cascade)
assessmentNoOne-line assessment for daily scope
suggestionsNoRanked improvements (from suggest_improvements)
cycle_summaryNoOne-line summary of the full cycle
quality_scoreNoYield relative to mode expectation (daily scope)
best_simulationNoSimulated result of the top suggestion
current_cascadeNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint and idempotentHint. The description adds significant behavioral context beyond these: it details the internal steps, notes that if `text` is omitted it "runs tokenpull first (requires local ccusage logs)", and explicitly states "Pure local math — no network, no submission." It also clarifies scope behavior (daily never leaves machine; weekly distribution appears in report artifacts). This fully discloses safety and data handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but every sentence carries information. It uses a numbered step list to structure the pipeline, which aids readability. It could be slightly tightened (e.g., the scope explanation repeats some schema content), but overall it is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 5-step pipeline, 3 parameters, output schema present, and annotations available, the description covers the full usage context: when to call, what happens under different input conditions, scope variations, return value (cycle of diagnosis + suggestions + simulated impact), and safety highlights. It leaves no major gaps for an agent to misuse the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds extra meaning for `text` (conditional skipping of tokenpull, requires local logs when omitted) and for `scope` (adds mode detection and scoped analysis options). It does not add new details for `window` beyond the schema, but the added conditions for the other two params raise it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: "Runs the full self-improvement cycle in one call" and then enumerates the exact pipeline steps (gets pillars, diagnoses, generates suggestions, simulates, returns results). It clearly distinguishes itself from sibling tools that perform individual steps (tokenpull, diagnose_cascade, suggest_improvements, simulate_change) by branding itself as the "one-click optimize" orchestrator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: "call it at the end of a session to see what to improve next time." It also explains conditional usage based on input: if `text` is provided, tokenpull is skipped; if omitted, tokenpull runs and requires local ccusage logs. It even notes the `scope` options and their implications. While it doesn't explicitly list when NOT to use it, the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_changeA
Read-onlyIdempotent

The first PRESCRIPTIVE SigRank tool — 'what if I changed my token mix?' Takes your current 4 pillars (input/output/cacheCreate/cacheRead) and one or more proposed changes, runs the canonical cascade on BOTH the current and simulated values, and returns the exact Υ Yield delta, class change, and per-metric diffs. This is the 'show me the payoff before I do the work' primitive: no network, no submission, pure local math. Use it to answer 'would increasing my cache-read by 50k tokens actually move my class?' before you change your workflow. Accepts the current pillars as JSON or 4 numbers (same as rank_paste) plus a changes object with any of the 4 pillar names mapped to new absolute values OR relative deltas (e.g. {cacheRead: '+50000'} or {input: 800000}).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesCurrent token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste).
changesYesProposed changes to apply. Keys: input, output, cacheCreate, cacheRead. Values are either absolute numbers (replace) or strings starting with +/- for relative deltas (add/subtract). Omitted pillars are unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription
currentNo
simulatedNo
yield_deltaNoΥ Yield change (simulated - current)
class_changeNoClass tier change description
metric_diffsNoPer-metric before/after diffs

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=true, idempotentHint=true), the description discloses key behavioral traits: it runs the canonical cascade on BOTH current and simulated values, returns an exact yield delta (implying deterministic math), and specifically notes 'no network, no submission, pure local math.' This adds meaningful context about what the tool does and does not do.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then explains the use case, and finally details the input format. Every sentence earns its place: it explains what the tool does, why to use it, and how to use it. The length is justified given the tool's complexity, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, inputs, outputs (yield delta, class change, per-metric diffs), and constraints (local, read-only, no submission). It also includes a practical example use case. Given the presence of an output schema and a clear input schema, the description is complete enough for an agent to decide when and how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for both parameters (100% coverage). The description adds value by clarifying that the input format is 'same as rank_paste', giving explicit examples for relative deltas ('{cacheRead: '+50000'}') and absolute values ('{input: 800000}'), and restating the semantics of omitted pillars. This reinforces the schema without being redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a 'what if I changed my token mix?' simulation that computes yield deltas, class changes, and per-metric diffs. It uses a specific verb ('simulate') and resource ('token mix'), and explicitly distinguishes itself from siblings as 'the first PRESCRIPTIVE SigRank tool' and a 'show me the payoff before I do the work' primitive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use it ('before you change your workflow') and provides a concrete example question ('would increasing my cache-read by 50k tokens actually move my class?'). It also signals when not to use it: 'no network, no submission' and 'pure local math', implying it is for analysis only. However, it does not explicitly name alternative sibling tools, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_pasteA
Read-onlyIdempotent

Ranks a paste of token counts locally and shows the cascade result (yield, leverage, velocity, class, card). This is a PREVIEW-ONLY tool — it does not publish to the board. The board's /api/v1/ingest-paste endpoint now requires an authenticated Supabase session, which MCP tools do not carry. To publish to the leaderboard, use submit_verified (which signs and posts to /api/v1/snapshots via the enrolled-device path) or submit directly through the signalaf.com web UI. Use this when you have token counts from ccusage or a dashboard and want to see your score instantly. Do NOT use this if you want to pull your local usage automatically — use tokenpull_submit for the zero-paste flow. Do NOT use this for multi-window dashboard pastes — use rank_windows to rank them first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesToken counts to rank. Two formats: (1) JSON {"input":N,"output":N,"cacheCreate":N,"cacheRead":N} from ccusage (preferred), or (2) four whitespace-separated numbers: input output cacheCreate cacheRead. Example: {"input":1000000,"output":500000,"cacheCreate":50000,"cacheRead":800000}
codenameNoOperator codename for the ranking card display (e.g. "Ghost Falcon"). Optional — used only for the local preview card, not for board submission.

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNoError or skip reason if status is not ok
statusNoSubmission status
previewNo
server_responseNoServer-side response including new rank if accepted

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already assert readOnlyHint and idempotentHint, and the description is fully consistent with that while adding real context: it does not publish, and the board's ingest endpoint now requires an authenticated Supabase session that MCP tools do not carry. This explains the behavior rather than just restating the safety flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Longer than average but front-loaded with the critical preview-only constraint and the routing rules that matter most. Every sentence carries routing or behavioral value; only mild trimming of the endpoint detail would be possible without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values needn't be explained, and the description still names the cascade fields produced. Combined with the strong routing guidance and the preview-only clarification, an agent has everything needed to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both text and codename, including the JSON and whitespace-separated formats. The description adds no parameter detail beyond the schema, making 3 the correct baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Ranks a paste of token counts locally') and immediately resolves the naming trap by declaring it PREVIEW-ONLY rather than a submission. It names the cascade outputs (yield, leverage, velocity, class, card), so the agent knows exactly what the tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you have token counts from ccusage or a dashboard') and two explicit when-not rules with named alternatives: tokenpull_submit for the zero-paste flow and rank_windows for multi-window pastes. It also points to submit_verified and the web UI for actual publishing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_verifiedA
Idempotent

Publish your LOCAL token runs to the SigRank board as a VERIFIED operator — the enrolled, signed path. Reads your pillars (tokenpull), builds the canonical Schema 1.0 snapshot per window, ed25519-signs it with your device key, and POSTs to /api/v1/snapshots. Requires npx sigrank-mcp enroll first (a bound device). Only signed submissions from a trusted device rank on the board. Token-only; the private key never leaves your machine. Pass dry_run:true to inspect the exact signed payload without publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNosubmit only this window (default: all 4)
dry_runNobuild + sign but do NOT publish — returns the exact payload that would be POSTed (token counts only), so you can inspect before submitting
platformNosource platform (default: claude). 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active); empty windows are skipped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNoError or skip reason if status is not ok
statusNoSubmission status
previewNo
server_responseNoServer-side response including new rank if accepted

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and destructiveHint=false, but the description goes far beyond: it reveals the full workflow (reads pillars, builds Schema 1.0 snapshot, signs with device key, POSTs), the security property ('private key never leaves your machine'), and the dry_run capability. This adds substantial behavioral context not inferable from annotations alone. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that conveys multiple key facts efficiently: local source, verified operator, signing method, requirement, security note, and dry_run option. While it's slightly long, every sentence contributes meaning. It could be split into two for readability, but the structure is acceptable and front-loads the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (signing, local processing, multiple steps), the description covers all critical aspects: prerequisites, workflow, security, dry_run, and the local-only nature. The output schema likely describes the return payload, so return values need not be explained. This is comprehensive for an agent to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters (window, dry_run, platform), each with its own description. The tool description reinforces dry_run specifically ('Pass dry_run:true to inspect the exact signed payload without publishing') but does not add new meaning for window or platform beyond what the schema already provides. This meets the baseline of 3 for high schema coverage; the description adds minimal extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Publish your LOCAL token runs to the SigRank board as a VERIFIED operator'. It specifies the action (publish), resource (SigRank board), and distinguishes it from siblings like submit_paste or tokenpull_submit by emphasizing the verified/enrolled path. The mention of 'enrolled, signed path' and 'Requires npx sigrank-mcp enroll first' clearly differentiates this from alternative submission tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it requires an enrolled device and is the verified/signed submission path. It also mentions dry_run for testing. However, it does not explicitly state when NOT to use this tool or name alternative tools (e.g., 'use submit_paste for unverified submissions'). The prerequisite is explicit, but exclusions and alternatives are only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_improvementsA
Read-onlyIdempotent

Generates ranked, simulated improvement suggestions for your token cascade. Takes your 4 pillars, tests multiple improvement strategies (increase cache reads, reduce fresh input, increase output, optimize cache creation), simulates each with the canonical cascade engine, and returns them ranked by Υ yield impact. Each suggestion includes: the action, which pillar to change, how much to change it, the projected Υ after the change, the yield delta, the projected class tier, and a rationale. Also returns the single highest-impact change (best_single_change). Pure local math — no network, no submission. Use this after diagnose_cascade to get actionable next steps, then use simulate_change to fine-tune before committing. Accepts the same input formats as rank_paste.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesToken pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste).

Output Schema

ParametersJSON Schema
NameRequiredDescription
suggestionsNoRanked recommendations, highest Υ impact first
current_classNoCurrent class tier
current_yieldNoCurrent Υ before any changes
best_single_changeNoThe single highest-impact change

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true, but the description adds significant behavioral context beyond these: 'Pure local math — no network, no submission.' It also describes the internal simulation and ranking process, and the output structure. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: it starts with a concise summary of the tool's purpose, then details the process and output, and ends with usage guidance. It is informative but slightly verbose; a few sentences could be trimmed without losing essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description is remarkably complete. It covers the input format, the improvement strategies tested, the simulation engine, the ranking by Υ yield, the output details, and the usage sequence relative to sibling tools. The presence of an output schema (not shown) reduces the burden on the description, but the description still provides ample context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one property 'text' described as 'Token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste).' The description adds value by clarifying it requires the 4 pillars and explaining the format, thus going beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it generates ranked simulated improvement suggestions for a token cascade. It specifies the input (4 pillars), the process (multiple strategies, simulation with canonical cascade engine), and the output (ranked suggestions including best_single_change). It distinguishes itself from siblings by referencing the sequence: use after diagnose_cascade and before simulate_change.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Use this after diagnose_cascade to get actionable next steps, then use simulate_change to fine-tune before committing.' It also notes the tool accepts the same input formats as rank_paste. However, it does not explicitly state when not to use it or list alternatives beyond the referenced siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokenpullA
Read-only

Pull your LOCAL token usage from the platform's session logs and rank it across the four windows (7d/30d/90d/all-time) with the cascade — zero paste. Token-only: reads usage counts not message content. The numbers stay on your machine unless you submit them. Some platforms may have partial data (estimated=true when cacheCreate isn't available) or a dataGap note when the log format doesn't expose raw token counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNosource platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, grok, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
cardNoDeterministic prose summary
noteNoReminder that one snapshot is returned per call — re-call to detect changes.
windowNoThe watched window (watch_tokenpull watches one window per call)
cascadeNo
pillarsNoThe four raw token pillars for the watched window
messagesNoNumber of messages in the watched window
platformNoSource platform name
auth_submitNoPresent only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only).
generatedAtNoISO timestamp of the pull
poll_interval_sNoAdvisory poll cadence echoed back (does not make the call block)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, lowering the bar, but the description adds meaningful behavioral disclosure beyond it: data scoping ('reads usage counts not message content'), privacy guarantees ('stay on your machine unless you submit them'), and explicit data-quality caveats ('estimated=true when cacheCreate isn't available', 'dataGap note when the log format doesn't expose raw token counts'). No contradiction with the readOnlyHint annotation exists — 'pull' and 'reads' align with it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each earning its place: purpose+windows, scope/cascade, privacy, and data-caveats. The structure front-loads the core purpose and moves outward to caveats. Loses one point for density in the final sentence, which crams estimated, cacheCreate, and dataGap into a single long clause that could be restructured for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-param tool with a readOnlyHint and output schema present, the description covers all essential ground: what it does, what data it touches, privacy implications, and how results may degrade across platforms. The output schema handles return-value documentation, and the description rounds out the user-facing intent (rank windows with cascade, zero paste). Nothing material is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the platform enum fully documented (path for devin, env var for copilot), so the baseline is 3. The description adds value by explaining what the values return in imperfect conditions ('estimated=true when cacheCreate isn't available', 'dataGap note'), which helps the agent interpret results for any platform choice, and flags platform quirks ('codex is estimated via io_ratio'). Slightly above baseline but doesn't over-perform given the schema already carries the detailed per-platform semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource construction ('Pull your LOCAL token usage from the platform's session logs') combined with distinctive scope ('rank it across the four windows (7d/30d/90d/all-time)', 'cascade', 'zero paste') that differentiates it from siblings like rank_paste and tokenpull_compare. 'Token-only: reads usage counts not message content' sharpens the boundaries further. The resource, action, and scope are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when this tool is appropriate: it's the local, offline, privacy-preserving read operation ('zero paste', 'The numbers stay on your machine unless you submit them'), which contrasts implicitly with paste-based siblings. It doesn't name explicit alternatives like tokenpull_compare or rank_windows, but the local/paste-free framing plus setup caveats ('Some platforms need setup') provide solid contextual guidance for an agent choosing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokenpull_compareA
Read-only

Pull token usage from ALL four local sources in parallel — tokenpull (JSONL canon), ccusage CLI, token-dashboard SQLite, and tokscale report — and return them side-by-side with delta % vs tokenpull as the baseline. Also computes the cascade (Υ, SNR, Leverage, class) for each source so you can see how each verifier scores. Useful for validating your numbers before submitting, or understanding discrepancies between tools. Claude only for token-dash; codex and others use tokenpull + ccusage + tokscale. Token-only, on-device.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNoplatform to compare (default: claude). token-dash and App only available for claude.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourcesNoSide-by-side comparison of each token source
platformNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds critical context beyond the readOnlyHint: it promises parallel execution, returns 'delta % vs tokenpull as the baseline', computes cascade metrics for each source, and emphasizes it is 'Token-only, on-device'. The readOnlyHint aligns with the non-destructive read nature described, and the openWorldHint aligns with the fixed set of local sources. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with high information density, front-loaded with the core function and lists key features and usage. Every sentence earns its place, and it remains concise despite covering many aspects.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple sources, baseline comparison, cascade computation), the description covers the purpose, the data sources, the key output (delta % and cascade), and usage context. An output schema exists for return values, so the description doesn't need detailed output specs. The description is fully self-contained for an AI agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers 100% of the parameter, so baseline is 3. The description adds context about platform-specific source usage, but the description does not explain the parameter format or behavior beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Pull token usage from ALL four local sources in parallel' and specifies the exact sources and computation of delta percentages and cascade metrics. It distinguishes itself from siblings like 'tokenpull' by emphasizing the comparative and validating nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Useful for validating your numbers before submitting, or understanding discrepancies between tools' and provides guidance on which platforms use which sources ('Claude only for token-dash; codex and others use tokenpull + ccusage + tokscale'). This is clear when-to-use context and differentiates from alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokenpull_submitA
Read-onlyIdempotent

Pull your LOCAL token usage from session logs and compute the cascade per window — the zero-paste preview flow. Reads the four canonical pillars (input, output, cacheCreate, cacheRead) per window from your local logs and computes yield, leverage, velocity, class, and card. This is a PREVIEW-ONLY tool — it does not publish to the board. The board's /api/v1/ingest-paste endpoint now requires an authenticated Supabase session, which MCP tools do not carry. To publish to the leaderboard, use submit_verified (which signs and posts to /api/v1/snapshots via the enrolled-device path) or submit directly through the signalaf.com web UI. Token-only — no prompt content is read or transmitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNoPreview only this time window (default: all 4 windows). Use "7d" for recent activity or "all" for all-time ranking.
codenameNoOperator codename for the ranking card display (e.g. "Iron Lotus"). Optional — used only for the local preview card, not for board submission.
platformNoSource platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, grok, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally.

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNoError or skip reason if status is not ok
statusNoSubmission status
previewNo
server_responseNoServer-side response including new rank if accepted

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and idempotentHint, but the description adds substantial behavior the annotations cannot convey: it is preview-only with no board publication, it reads the four canonical pillars per window from local logs, and it guarantees token-only access with no prompt content read or transmitted. This is exactly the extra context the dimension rewards.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded: the first sentence gives the verb, scope, and preview framing, followed by mechanism, the preview-only constraint, and the publishing alternatives. It is longer than strictly necessary (the endpoint/auth mechanics could be tightened), but every clause carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and it covers the gaps that matter: default platform, window semantics, privacy guarantees, and the correct publishing path. For a tool whose name implies submission but which only previews, this is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter (window, codename, platform) already carries a detailed enum list and semantics, including the 'multi' and 'devin' special cases. The description adds only the correct default (claude) and per-window framing, so the schema does the heavy lifting and a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (pull LOCAL token usage from session logs, compute the cascade per window) and draws a hard line against the misleading tool name by declaring it PREVIEW-ONLY. It expressly distinguishes itself from submit_verified and the web UI, so an agent can tell it apart from siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use this tool (local preview of cascade metrics) and when not to (publishing to the board), and names the two concrete alternatives: submit_verified and the signalaf.com web UI. The reason publishing is unavailable here (MCP tools don't carry an authenticated Supabase session) is given explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_breakdownA
Read-only

Show a per-model breakdown of your token usage across all platforms detected by tokscale. Models under the threshold (default 1%) are lumped into 'other' to keep the display clean. Useful for seeing which models you actually use per platform (e.g. claude-opus-4-8 76%, claude-sonnet-4-6 11%, other 0.3%). Returns { platform: [{ model, input, output, cacheRead, cacheCreate, pct }] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdNoModels below this fraction of their platform's total tokens are lumped into 'other'. Default 0.01 (1%). Set 0 to see every model.

Output Schema

ParametersJSON Schema
NameRequiredDescription
platformsNoMap of platform name → array of { model, input, output, cacheRead, cacheCreate, pct }

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already include readOnlyHint=true, so the description does not need to state that this is a read operation. The description adds context about the lumping behavior and the return format, but no additional behavioral traits beyond what annotations already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus an example and return structure. It is concise, front-loaded, and every sentence adds value. No wasted words or redundancies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, parameter, example usage, and return format. It is adequate given the presence of annotations and output schema. A slight improvement could be mentioning that this is a read-only operation, but that is already covered by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the threshold's effect (lumping models below threshold into 'other') and giving an example, which goes beyond the schema's description of 'fraction of their platform's total tokens'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Show'), the resource ('per-model breakdown of your token usage'), and the scope ('across all platforms detected by tokscale'). It effectively distinguishes this tool from siblings by specifying the model-level breakdown, which is unique among the listed siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool: to see which models you actually use per platform. It provides guidance on the threshold parameter and its default behavior, but does not explicitly mention when not to use it or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_competitive_intelA
Read-only

Competitive intelligence for any AI tool company. Pass a target tool (by tokscale client slug like 'claude', 'codex', 'devin-cli' or canonical platform name like 'devin', 'other') and get: the target's rank by tokens among all detected tools, its full profile (tokens, cost, model mix, cache_read_pct, cost_per_million_tokens, market share), and a head-to-head comparison against every competitor (each competitor's tokens, cost, model_count, share, cost_per_million_tokens). Returns market_totals for context. If the target is not found, lists all detected clients. Use this to benchmark one AI tool against its competitors on this machine. All data is local — this is your own usage, not aggregate market data.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesThe AI tool to analyze. Accepts a tokscale client slug (e.g. 'claude', 'codex', 'devin-cli', 'copilot') or a canonical platform name (e.g. 'devin', 'claude', 'other'). Case-insensitive. To discover valid slugs, call tokscale_market_share first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent if tokscale is unavailable or target is empty
foundNoWhether the target was found in local data
targetNoThe resolved target slug(s)
competitorsNoAll other detected tools with comparison metrics
market_totalsNoAggregate market context: { tokens, cost, messages, tool_count }
rank_by_tokensNoTarget's rank among all detected tools by token volume
target_profileNoTarget's full usage profile with model mix and market share

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that all data is local (own usage, not aggregate) and explains fallback behavior (lists clients if target not found). ReadOnlyHint is already true, so no contradiction. Adds useful context about scope and data source.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single informative paragraph with no wasted words. It could be slightly more structured (e.g., bullet points), but it is concise and front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given only one parameter, complete schema coverage, and an output schema (not shown but exists), the description covers all needed context: input format, return data details, fallback behavior, and data source. It is fully adequate for correct tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'target' is fully described: it accepts client slugs or canonical names, case-insensitive, and the description provides examples and suggests discovering valid slugs via another tool. This adds significant meaning beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides competitive intelligence for any AI tool company, specifying that you pass a target tool and it returns rank, full profile, head-to-head comparisons, and market totals. It distinguishes from siblings by focusing on single-tool benchmarking against competitors using local usage data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use (to benchmark one AI tool against competitors) and what happens if target not found (lists all detected clients). It suggests calling tokscale_market_share for valid slugs. However, it does not explicitly state when not to use or provide alternatives to other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_cost_analysisA
Read-only

Cost analysis per developer per model from your local tokscale data. Returns a per-client × per-model cost breakdown with cost_per_million_tokens, cost_per_message, and share_cost. Includes a per-client cost rollup and totals: total_cost, total_tokens, avg_cost_per_million_tokens, most_expensive_model, cheapest_per_token. Use this to see exactly where your AI spend goes — which tools and models cost the most and which give the best value per token. Do NOT use this for market share — use tokscale_market_share for that.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent if tokscale is unavailable
totalsNoAggregate cost totals and extremes
entriesNoPer-client×per-model cost rows sorted by cost desc
client_rollupNoPer-client cost summary with share_cost and cost_per_million_tokens

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the read-only nature is covered. The description adds behavioral context by detailing the output structure (cost breakdown, rollups, totals) and the data source (local tokscale data). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and includes necessary details without excessive verbosity. Every sentence serves a purpose, though some minor redundancy exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no parameters and an output schema exists, the description sufficiently explains the return values and data source. It is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is 100%. The description states 'No parameters' and explains that the cost breakdown is derived from tokscale models data, which adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: cost analysis per developer per model from local tokscale data. It specifies the output structure (per-client × per-model breakdown with metrics) and explicitly distinguishes it from the sibling tool tokscale_market_share for market share analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance ('Use this to see exactly where your AI spend goes') and when-not-to-use ('Do NOT use this for market share — use tokscale_market_share for that'), with a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_developer_profileA
Read-only

Per-developer usage profile across all 20+ AI tools detected by tokscale on this machine. For each tool: model mix (per-model tokens/cost/messages/performance), token pillars (input/output/cache_read/cache_write/reasoning), cache_read_pct, session count, scan path (redacted to ~), workspace breakdown, and headless support flag. Returns a summary with tool_count, total_cost, dominant_tool. All filesystem paths are redacted (home dir → ~). Use this to understand your full AI tool footprint — which tools you use, which models per tool, and how your usage is distributed. Do NOT use this for cost-only analysis — use tokscale_cost_analysis for that.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent if tokscale is unavailable
toolsNoPer-tool profile with model mix, token pillars, session counts, workspaces
summaryNoAggregate summary: { tool_count, total_cost, total_tokens, total_messages, avg_cost_per_tool, dominant_tool }

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description does not need to reiterate safety. The description adds valuable behavioral context: it returns a summary, all filesystem paths are redacted (home dir → ~), and includes headless support flag. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense with information but remains efficient; each sentence adds value. It is front-loaded with the main purpose and includes usage guidance. Minor improvement could be more structured bullet points, but overall it is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an existing output schema, the description covers all essential context: it describes the data returned, how paths are redacted, and provides a usage note. It is complete for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and schema description coverage is 100% (trivially). Description adds meaning beyond schema by elaborating on what the returned profile includes (model mix, token pillars, etc.), which is useful context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a per-developer usage profile across all 20+ AI tools detected by tokscale, listing specific data points like model mix, token pillars, and summary fields. It distinguishes itself from sibling tool tokscale_cost_analysis by explicitly stating it is not for cost-only analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool ('to understand your full AI tool footprint') and when not to ('Do NOT use this for cost-only analysis') while directing to the appropriate alternative (tokscale_cost_analysis). This provides clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_device_profileA
Read-only

Device fingerprinting: profiles this machine's AI tool footprint — which AI tools are installed, where their session logs live (paths redacted to ~), how many sessions and messages each has, when the machine was active (daily activity + day-of-week distribution), session concurrency, and longest continuous session. Combines tokscale clients + graph data. All filesystem paths are redacted so no local username leaks. Use this to audit your own machine's AI tool installation and activity pattern. This is local-only — it profiles the current machine, not remote devices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent if tokscale is unavailable
summaryNoCost summary from graph: total_tokens, total_cost, avg_per_day, max_single_day
activityNoDaily activity + day-of-week token distribution
sessionsNoSession metrics: count, total/longest active time, max concurrent
date_rangeNo{ start, end } of the activity data
installed_toolsNoDetected AI tools with redacted session paths and message counts
active_tool_countNoTools whose session path exists on disk
installed_tool_countNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true. Description adds valuable behavioral context: paths are redacted to prevent local username leaks. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is informative but slightly verbose; could be tightened. However, all sentences add value, and key info is front-loaded. Acceptable for a parameterless tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema present, the description covers all relevant aspects: purpose, scope, data privacy, and local-only nature. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters (0 params, baseline 4). Description correctly notes 'No parameters. Profiles the local machine via tokscale.' The description adds no extra param semantics but is accurate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it profiles the local machine's AI tool footprint, listing specific data points (installed tools, session logs, activity patterns). The 'local-only' distinction effectively differentiates it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use this to audit your own machine's AI tool installation and activity pattern.' Also clarifies context by stating 'This is local-only — it profiles the current machine, not remote devices,' which helps avoid misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_market_shareA
Read-only

Complete AI tool market share analysis from your local tokscale data. Aggregates per-model usage by client (AI tool) and computes each tool's share of total tokens, cost, and messages. Returns each tool ranked by token share, with share_tokens / share_cost / share_messages percentages and a totals rollup. All data is read locally from tokscale's scan of your session logs — no network calls, no PII. Use this to see which AI coding tools dominate your workflow by volume, spend, or activity. Do NOT use this for per-model detail — use tokscale_developer_profile for that.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent if tokscale is unavailable
toolsNoAI tools ranked by token share, each with { client, label, tokens, cost, messages, model_count, share_tokens, share_cost, share_messages }
totalsNoAggregate totals: { tokens, cost, messages, tool_count }

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false. Description adds context: 'All data is read locally from tokscale's scan of your session logs — no network calls, no PII.' This reinforces safety and discloses the data source beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise (~80 words) and front-loaded with purpose. Every sentence adds value: purpose, aggregation method, output format, data privacy, usage guidance, and negative guidance. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters, rich annotations (readOnlyHint, openWorldHint), and presence of output schema, the description fully covers what the tool does, how it works, what it returns, and when to use it. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; schema coverage is 100% with empty schema. Description is not required to add parameter details, and baseline for 0 params is 4. The description confirms lack of parameters by stating 'No parameters' in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Complete AI tool market share analysis', specifying aggregation by client and computation of shares for tokens, cost, messages. It distinguishes from sibling tool 'tokscale_developer_profile' by directing users elsewhere for per-model detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance: 'Use this to see which AI coding tools dominate your workflow' and 'Do NOT use this for per-model detail — use tokscale_developer_profile for that.' Also notes data is local with no network calls or PII.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tokscale_mcp_usageA
Read-only

MCP server usage patterns from your local tokscale data. Reports which MCP servers tokscale detected on this machine, the detection window, and active days in that window. tokscale currently exposes detected MCP servers as a set (not per-session attribution), so the report notes the detection window. Use this to see which MCP servers are active on your machine. If no servers are detected, the response explains that MCP server tracking requires a tokscale version that records per-session MCP attribution.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNoExplanation of the MCP server data granularity
errorNoPresent if tokscale is unavailable
serversNoDetected MCP servers: [{ name, detected: true }]
server_countNo
detection_windowNo{ start, end } date range
active_days_in_windowNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds behavioral context: data source (local tokscale), detection window, and handling of no servers detected. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with no unnecessary words. It is front-loaded with the purpose and structured logically, covering key points in a few sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter tool, the description is complete: it explains the data source, report contents, and behavior when no servers are detected. No gaps given the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema description coverage is 100%. The description adds meaning by explaining the report contents (detection window, active days) and the case of no detection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports MCP server usage patterns, including detected servers, detection window, and active days. It distinguishes itself from sibling tools by focusing on local tokscale MCP server detection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use (to see which MCP servers are active) and hints at the absence of results scenario. However, it does not explicitly mention when not to use or directly compare to siblings, which have different purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

watch_tokenpullA
Idempotent

One poll per call: pulls your local token logs and returns the current cascade for the watched window — the tool never blocks or loops. Re-call at your desired cadence to watch for changes (interval_s is advisory only and echoed back as poll_interval_s). With submit:true (and an enrolled device) each call may also sign + publish the watched window to the board, rate-limited to once per 5 min per platform+window; default is preview-only (no submit).

ParametersJSON Schema
NameRequiredDescriptionDefault
submitNoauto-submit the watched window to the board as a VERIFIED operator each poll (requires `enroll`; default false = preview only)
windowNowhich window to watch (default: 7d — most sensitive to recent activity)
platformNoplatform to watch (default: claude)
interval_sNoadvisory poll cadence in seconds (default: 60, min: 10) — echoed back as poll_interval_s; does not make the call block or loop

Output Schema

ParametersJSON Schema
NameRequiredDescription
cardNoDeterministic prose summary
noteNoReminder that one snapshot is returned per call — re-call to detect changes.
windowNoThe watched window (watch_tokenpull watches one window per call)
cascadeNo
pillarsNoThe four raw token pillars for the watched window
messagesNoNumber of messages in the watched window
platformNoSource platform name
auth_submitNoPresent only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only).
generatedAtNoISO timestamp of the pull
poll_interval_sNoAdvisory poll cadence echoed back (does not make the call block)

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (idempotentHint: true, openWorldHint: false), the description discloses important behaviors: calls never block or loop, interval_s is advisory, and the submit path is rate-limited to once per 5 minutes per platform+window and requires enrollment. This adds substantial context that is not present in the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the key behavioral point ('One poll per call'), and every clause carries useful information. There is no redundancy or filler; it is concise yet comprehensive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with multiple optional parameters, an output schema, and an optional submit path, the description fully covers the operational model, rate limits, prerequisites, defaults, and the non-blocking nature. No significant gaps remain for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% description coverage, but the tool description enriches it further: submit requires enroll and is rate-limited, interval_s is advisory and echoed back as poll_interval_s, and the default behavior is preview-only. This goes well beyond the schema descriptions, making the parameters' practical semantics clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: 'One poll per call: pulls your local token logs and returns the current cascade for the watched window.' It uses a specific verb (pulls) and resource (local token logs), and distinguishes itself from sibling tools by emphasizing it never blocks or loops and by explaining preview-only vs submit modes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Re-call at your desired cadence to watch for changes' and notes that interval_s is advisory only and echoed back as poll_interval_s. It also explains when to use submit:true (with an enrolled device) and when to stick with preview-only (default), effectively covering when and when-not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.19.10
    • Addedget_sigrank_standard_record
    • Changedsubmit_paste3 fields changed
      • changedInput schema / description
        Previous value: -"Requires token counts (text). Codename is optional but required for board submission — omit it for preview-only mode."New value: +"Requires token counts (text). Returns a local preview only — does not publish to the board."
      • changedInput schema / properties / codename / description
        Previous value: -"Operator codename to publish under on the leaderboard (e.g. \"Ghost Falcon\"). Required to submit — omit for local preview only (no board submission, just returns the local cascade result). Must be a non-empty string."New value: +"Operator codename for the ranking card display (e.g. \"Ghost Falcon\"). Optional — used only for the local preview card, not for board submission."
      • changedInput schema / properties / text / description
        Previous value: -"Token counts to rank and submit. Two formats: (1) JSON {\"input\":N,\"output\":N,\"cacheCreate\":N,\"cacheRead\":N} from ccusage (preferred — the board parses this reliably), or (2) four whitespace-separated numbers: input output cacheCreate cacheRead. The 4-number form ranks locally but the board may reject it. Example: {\"input\":1000000,\"output\":500000,\"cacheCreate\":50000,\"cacheRead\":800000}"New value: +"Token counts to rank. Two formats: (1) JSON {\"input\":N,\"output\":N,\"cacheCreate\":N,\"cacheRead\":N} from ccusage (preferred), or (2) four whitespace-separated numbers: input output cacheCreate cacheRead. Example: {\"input\":1000000,\"output\":500000,\"cacheCreate\":50000,\"cacheRead\":800000}"
    • Changedtokenpull_submit2 fields changed
      • changedInput schema / properties / codename / description
        Previous value: -"Operator codename to publish under on the leaderboard (e.g. \"Iron Lotus\"). Required to submit — omit for local preview only."New value: +"Operator codename for the ranking card display (e.g. \"Iron Lotus\"). Optional — used only for the local preview card, not for board submission."
      • changedInput schema / properties / window / description
        Previous value: -"Submit only this time window (default: all 4 windows). Use \"7d\" for recent activity or \"all\" for all-time ranking."New value: +"Preview only this time window (default: all 4 windows). Use \"7d\" for recent activity or \"all\" for all-time ranking."
  2. 1 tool updatev0.19.8
    • Addeddiscover_peers
  3. 6 tool updatesv0.19.7
    • Changedget_operator1 field changed
      • addedOutput schema / properties / batched
        Added value: +{
        +  "description": "Submission-based rolled-forward totals (never decrease when platforms delete old logs). Present when the operator has submission history.",
        +  "properties": {
        +    "combined": {
        +      "description": "Combined batched windows across all platforms",
        +      "properties": {
        +        "90d": {
        +          "properties": {
        +            "cacheCreate": {
        +              "type": "integer"
        +            },
        +            "cacheRead": {
        +              "type": "integer"
        +            },
        +            "input": {
        +              "type": "integer"
        +            },
        +            "output": {
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "all": {
        +          "properties": {
        +            "cacheCreate": {
        +              "type": "integer"
        +            },
        +            "cacheRead": {
        +              "type": "integer"
        +            },
        +            "input": {
        +              "type": "integer"
        +            },
        +            "output": {
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "per_platform": {
        +      "additionalProperties": {
        +        "properties": {
        +          "90d": {
        +            "description": "Rolled-forward 90d pillars (sum of batches <=90 days old)",
        +            "properties": {
        +              "cacheCreate": {
        +                "type": "integer"
        +              },
        +              "cacheRead": {
        +                "type": "integer"
        +              },
        +              "input": {
        +                "type": "integer"
        +              },
        +              "output": {
        +                "type": "integer"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "all": {
        +            "description": "All-time pillars (baseline + all deltas — never decreases)",
        +            "properties": {
        +              "cacheCreate": {
        +                "type": "integer"
        +              },
        +              "cacheRead": {
        +                "type": "integer"
        +              },
        +              "input": {
        +                "type": "integer"
        +              },
        +              "output": {
        +                "type": "integer"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "baseline_date": {
        +            "description": "ISO date of the first (baseline) submission",
        +            "type": "string"
        +          },
        +          "submission_count": {
        +            "description": "Number of archived submissions for this platform",
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "description": "Per-platform batched windows",
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsubmit_verified1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "omp",
        -  "proxy",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "grok",
        +  "multi"
        +]
    • Changedtokenpull2 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."New value: +"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, grok, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "omp",
        -  "proxy",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "grok",
        +  "multi"
        +]
    • Changedtokenpull_compare1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "omp",
        -  "proxy",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "grok"
        +]
    • Changedtokenpull_submit2 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."New value: +"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, grok, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "omp",
        -  "proxy",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "grok",
        +  "multi"
        +]
    • Changedwatch_tokenpull1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "omp",
        -  "proxy",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "grok"
        +]
  4. 13 tool updatesv0.19.6
    • Changeddiagnose_cascade9 fields changed
      • changedOutput schema / properties / cascade / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / cascade / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / cascade / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / cascade / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / cascade / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / cascade / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / cascade / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / cascade / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / cascade / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedget_leaderboard1 field changed
      • changedOutput schema / properties / operators / items / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
    • Changedget_operator1 field changed
      • changedOutput schema / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
    • Changedrank_paste9 fields changed
      • changedOutput schema / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedrank_windows8 fields changed
      • changedOutput schema / properties / windows / items / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / windows / items / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / windows / items / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / windows / items / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / windows / items / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / windows / items / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / windows / items / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / windows / items / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
    • Changedself_improve9 fields changed
      • changedOutput schema / properties / current_cascade / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / current_cascade / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / current_cascade / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / current_cascade / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / current_cascade / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / current_cascade / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / current_cascade / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / current_cascade / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / current_cascade / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedsimulate_change18 fields changed
      • changedOutput schema / properties / current / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / current / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / current / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / current / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / current / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / current / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / current / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / current / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / current / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
      • changedOutput schema / properties / simulated / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / simulated / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / simulated / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / simulated / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / simulated / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / simulated / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / simulated / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / simulated / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / simulated / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedsubmit_paste9 fields changed
      • changedOutput schema / properties / preview / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / preview / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / preview / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / preview / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / preview / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / preview / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / preview / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / preview / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / preview / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedsubmit_verified10 fields changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "multi"
        +]
      • changedOutput schema / properties / preview / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / preview / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / preview / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / preview / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / preview / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / preview / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / preview / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / preview / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / preview / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedtokenpull11 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."New value: +"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "multi"
        +]
      • addedOutput schema / properties / auth_submit
        Added value: +{
        +  "description": "Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only).",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / card
        Added value: +{
        +  "description": "Deterministic prose summary",
        +  "type": "string"
        +}
      • addedOutput schema / properties / cascade
        Added value: +{
        +  "properties": {
        +    "card": {
        +      "description": "Deterministic prose summary of the cascade result",
        +      "type": "string"
        +    },
        +    "class": {
        +      "description": "Operator class tier (dev10x taxonomy)",
        +      "enum": [
        +        "ARCH+ I",
        +        "ARCH+ II",
        +        "ARCH+ III",
        +        "ARCH I",
        +        "ARCH II",
        +        "ARCH III",
        +        "POWER I",
        +        "POWER II",
        +        "POWER III",
        +        "BASE I",
        +        "BASE II",
        +        "BASE III",
        +        "SEEKER I",
        +        "SEEKER II",
        +        "SEEKER III",
        +        "REFINER I",
        +        "REFINER II",
        +        "REFINER III",
        +        "BEARER I",
        +        "BEARER II",
        +        "BEARER III",
        +        "IGNITER I",
        +        "IGNITER II",
        +        "IGNITER III",
        +        "UNCLASSED"
        +      ],
        +      "type": "string"
        +    },
        +    "dev10x": {
        +      "description": "10xDEV score (log10 of the cascade product)",
        +      "type": "number"
        +    },
        +    "leverage": {
        +      "description": "Cr/I — cache reads divided by input",
        +      "type": "number"
        +    },
        +    "mode": {
        +      "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +      "type": "object"
        +    },
        +    "pillars": {
        +      "description": "The four raw token pillars the cascade was computed from",
        +      "type": "object"
        +    },
        +    "snr": {
        +      "description": "Signal-to-noise ratio",
        +      "type": "number"
        +    },
        +    "velocity": {
        +      "description": "O/I — output divided by input",
        +      "type": "number"
        +    },
        +    "warnings": {
        +      "description": "Parse or data warnings if any",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "yield": {
        +      "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "yield",
        +    "class"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / messages
        Added value: +{
        +  "description": "Number of messages in the watched window",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Reminder that one snapshot is returned per call — re-call to detect changes.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars for the watched window",
        +  "properties": {
        +    "cacheCreate": {
        +      "type": "integer"
        +    },
        +    "cacheRead": {
        +      "type": "integer"
        +    },
        +    "input": {
        +      "type": "integer"
        +    },
        +    "output": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / poll_interval_s
        Added value: +{
        +  "description": "Advisory poll cadence echoed back (does not make the call block)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / window
        Added value: +{
        +  "description": "The watched window (watch_tokenpull watches one window per call)",
        +  "enum": [
        +    "7d",
        +    "30d",
        +    "90d",
        +    "all"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / windows
        Removed value: -{
        -  "description": "Per-window token usage + cascade results",
        -  "items": {
        -    "properties": {
        -      "cascade": {
        -        "properties": {
        -          "card": {
        -            "description": "Deterministic prose summary of the cascade result",
        -            "type": "string"
        -          },
        -          "class": {
        -            "description": "Operator class tier",
        -            "enum": [
        -              "Burner",
        -              "Builder",
        -              "10xer"
        -            ],
        -            "type": "string"
        -          },
        -          "leverage": {
        -            "description": "Cr/I — cache reads divided by input",
        -            "type": "number"
        -          },
        -          "snr": {
        -            "description": "Signal-to-noise ratio",
        -            "type": "number"
        -          },
        -          "tenx_dev": {
        -            "description": "10xDEV score",
        -            "type": "number"
        -          },
        -          "velocity": {
        -            "description": "O/I — output divided by input",
        -            "type": "number"
        -          },
        -          "warnings": {
        -            "description": "Parse or data warnings if any",
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "yield_": {
        -            "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "yield_",
        -          "class"
        -        ],
        -        "type": "object"
        -      },
        -      "estimated": {
        -        "description": "True if cacheCreate was estimated",
        -        "type": "boolean"
        -      },
        -      "messages": {
        -        "description": "Number of messages in window",
        -        "type": "integer"
        -      },
        -      "pillars": {
        -        "properties": {
        -          "cacheCreate": {
        -            "type": "integer"
        -          },
        -          "cacheRead": {
        -            "type": "integer"
        -          },
        -          "input": {
        -            "type": "integer"
        -          },
        -          "output": {
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "window": {
        -        "enum": [
        -          "7d",
        -          "30d",
        -          "90d",
        -          "all"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
    • Changedtokenpull_compare10 fields changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex"
        +]
      • changedOutput schema / properties / sources / items / properties / cascade / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / sources / items / properties / cascade / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / sources / items / properties / cascade / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / sources / items / properties / cascade / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / sources / items / properties / cascade / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / sources / items / properties / cascade / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / sources / items / properties / cascade / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / sources / items / properties / cascade / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / sources / items / properties / cascade / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedtokenpull_submit11 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."New value: +"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex",
        +  "multi"
        +]
      • changedOutput schema / properties / preview / properties / class / description
        Previous value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)"
      • changedOutput schema / properties / preview / properties / class / enum
        Previous value: -[
        -  "Burner",
        -  "Builder",
        -  "10xer"
        -]New value: +[
        +  "ARCH+ I",
        +  "ARCH+ II",
        +  "ARCH+ III",
        +  "ARCH I",
        +  "ARCH II",
        +  "ARCH III",
        +  "POWER I",
        +  "POWER II",
        +  "POWER III",
        +  "BASE I",
        +  "BASE II",
        +  "BASE III",
        +  "SEEKER I",
        +  "SEEKER II",
        +  "SEEKER III",
        +  "REFINER I",
        +  "REFINER II",
        +  "REFINER III",
        +  "BEARER I",
        +  "BEARER II",
        +  "BEARER III",
        +  "IGNITER I",
        +  "IGNITER II",
        +  "IGNITER III",
        +  "UNCLASSED"
        +]
      • addedOutput schema / properties / preview / properties / dev10x
        Added value: +{
        +  "description": "10xDEV score (log10 of the cascade product)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / preview / properties / mode
        Added value: +{
        +  "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +  "type": "object"
        +}
      • addedOutput schema / properties / preview / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars the cascade was computed from",
        +  "type": "object"
        +}
      • removedOutput schema / properties / preview / properties / tenx_dev
        Removed value: -{
        -  "description": "10xDEV score",
        -  "type": "number"
        -}
      • addedOutput schema / properties / preview / properties / yield
        Added value: +{
        +  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / preview / properties / yield_
        Removed value: -{
        -  "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -  "type": "number"
        -}
      • changedOutput schema / properties / preview / required
        Previous value: -[
        -  "yield_",
        -  "class"
        -]New value: +[
        +  "yield",
        +  "class"
        +]
    • Changedwatch_tokenpull10 fields changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "devin",
        -  "other",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "omp",
        +  "proxy",
        +  "claude",
        +  "codex"
        +]
      • addedOutput schema / properties / auth_submit
        Added value: +{
        +  "description": "Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only).",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / card
        Added value: +{
        +  "description": "Deterministic prose summary",
        +  "type": "string"
        +}
      • addedOutput schema / properties / cascade
        Added value: +{
        +  "properties": {
        +    "card": {
        +      "description": "Deterministic prose summary of the cascade result",
        +      "type": "string"
        +    },
        +    "class": {
        +      "description": "Operator class tier (dev10x taxonomy)",
        +      "enum": [
        +        "ARCH+ I",
        +        "ARCH+ II",
        +        "ARCH+ III",
        +        "ARCH I",
        +        "ARCH II",
        +        "ARCH III",
        +        "POWER I",
        +        "POWER II",
        +        "POWER III",
        +        "BASE I",
        +        "BASE II",
        +        "BASE III",
        +        "SEEKER I",
        +        "SEEKER II",
        +        "SEEKER III",
        +        "REFINER I",
        +        "REFINER II",
        +        "REFINER III",
        +        "BEARER I",
        +        "BEARER II",
        +        "BEARER III",
        +        "IGNITER I",
        +        "IGNITER II",
        +        "IGNITER III",
        +        "UNCLASSED"
        +      ],
        +      "type": "string"
        +    },
        +    "dev10x": {
        +      "description": "10xDEV score (log10 of the cascade product)",
        +      "type": "number"
        +    },
        +    "leverage": {
        +      "description": "Cr/I — cache reads divided by input",
        +      "type": "number"
        +    },
        +    "mode": {
        +      "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence",
        +      "type": "object"
        +    },
        +    "pillars": {
        +      "description": "The four raw token pillars the cascade was computed from",
        +      "type": "object"
        +    },
        +    "snr": {
        +      "description": "Signal-to-noise ratio",
        +      "type": "number"
        +    },
        +    "velocity": {
        +      "description": "O/I — output divided by input",
        +      "type": "number"
        +    },
        +    "warnings": {
        +      "description": "Parse or data warnings if any",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "yield": {
        +      "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "yield",
        +    "class"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / messages
        Added value: +{
        +  "description": "Number of messages in the watched window",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Reminder that one snapshot is returned per call — re-call to detect changes.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pillars
        Added value: +{
        +  "description": "The four raw token pillars for the watched window",
        +  "properties": {
        +    "cacheCreate": {
        +      "type": "integer"
        +    },
        +    "cacheRead": {
        +      "type": "integer"
        +    },
        +    "input": {
        +      "type": "integer"
        +    },
        +    "output": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / poll_interval_s
        Added value: +{
        +  "description": "Advisory poll cadence echoed back (does not make the call block)",
        +  "type": "number"
        +}
      • addedOutput schema / properties / window
        Added value: +{
        +  "description": "The watched window (watch_tokenpull watches one window per call)",
        +  "enum": [
        +    "7d",
        +    "30d",
        +    "90d",
        +    "all"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / windows
        Removed value: -{
        -  "description": "Per-window token usage + cascade results",
        -  "items": {
        -    "properties": {
        -      "cascade": {
        -        "properties": {
        -          "card": {
        -            "description": "Deterministic prose summary of the cascade result",
        -            "type": "string"
        -          },
        -          "class": {
        -            "description": "Operator class tier",
        -            "enum": [
        -              "Burner",
        -              "Builder",
        -              "10xer"
        -            ],
        -            "type": "string"
        -          },
        -          "leverage": {
        -            "description": "Cr/I — cache reads divided by input",
        -            "type": "number"
        -          },
        -          "snr": {
        -            "description": "Signal-to-noise ratio",
        -            "type": "number"
        -          },
        -          "tenx_dev": {
        -            "description": "10xDEV score",
        -            "type": "number"
        -          },
        -          "velocity": {
        -            "description": "O/I — output divided by input",
        -            "type": "number"
        -          },
        -          "warnings": {
        -            "description": "Parse or data warnings if any",
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "yield_": {
        -            "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "yield_",
        -          "class"
        -        ],
        -        "type": "object"
        -      },
        -      "estimated": {
        -        "description": "True if cacheCreate was estimated",
        -        "type": "boolean"
        -      },
        -      "messages": {
        -        "description": "Number of messages in window",
        -        "type": "integer"
        -      },
        -      "pillars": {
        -        "properties": {
        -          "cacheCreate": {
        -            "type": "integer"
        -          },
        -          "cacheRead": {
        -            "type": "integer"
        -          },
        -          "input": {
        -            "type": "integer"
        -          },
        -          "output": {
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "window": {
        -        "enum": [
        -          "7d",
        -          "30d",
        -          "90d",
        -          "all"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
  5. 5 tool updatesv0.19.5
    • Removedcompare_operators
    • Removedcompare_self
    • Removeddescribe_power_user
    • Removedget_best_operator
    • Removedoptimize_efficiency
  6. 2 tool updatesv0.19.4
    • Addedget_operator
    • Addedrank_paste
  7. 6 tool updatesv0.19.3
    • Addedcompare_self
    • Addedget_best_operator
    • Removedget_operator
    • Removedrank_paste
    • Addedtokscale_breakdown
    • Addedtokscale_model_trends
  8. 9 tool updatesv0.19.3
    • Removedcompare_self
    • Addeddiagnose_cascade
    • Addedget_leaderboard
    • Addedget_operator
    • Addedtokenpull
    • Addedtokenpull_submit
    • Addedtokscale_market_share
    • Removedtokscale_model_trends
    • Addedwatch_tokenpull
  9. 13 tool updatesv0.19.2
    • Addedcompare_operators
    • Addedcompare_self
    • Removeddiagnose_cascade
    • Addedoptimize_efficiency
    • Addedrank_paste
    • Addedrank_windows
    • Addedsubmit_paste
    • Addedsubmit_verified
    • Removedtokenpull_submit
    • Removedtokscale_breakdown
    • Addedtokscale_competitive_intel
    • Removedtokscale_market_share
    • Removedwatch_tokenpull
  10. 17 tool updates
    • Removedcompare_operators
    • Removedcompare_self
    • Removedget_best_operator
    • Removedget_leaderboard
    • Removedget_operator
    • Removedoptimize_efficiency
    • Removedrank_paste
    • Removedrank_windows
    • Removedsubmit_paste
    • Removedsubmit_verified
    • Removedtokenpull
    • Addedtokscale_cost_analysis
    • Addedtokscale_developer_profile
    • Addedtokscale_device_profile
    • Addedtokscale_market_share
    • Addedtokscale_mcp_usage
    • Addedtokscale_model_trends
  11. 6 tool updatesv0.18.1
    • Changedsubmit_verified1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "claude",
        -  "codex",
        -  "multi"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "claude",
        +  "codex",
        +  "multi"
        +]
    • Changedtokenpull2 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, claude, codex. codex is estimated via io_ratio. Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."New value: +"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "claude",
        +  "codex",
        +  "multi"
        +]
    • Changedtokenpull_compare1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "claude",
        +  "codex"
        +]
    • Changedtokenpull_submit2 fields changed
      • changedInput schema / properties / platform / description
        Previous value: -"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, claude, codex. Each platform reads its own session logs locally."New value: +"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "claude",
        +  "codex",
        +  "multi"
        +]
    • Addedtokscale_breakdown
    • Changedwatch_tokenpull1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "amp",
        -  "kimi",
        -  "qwen",
        -  "pi",
        -  "openclaw",
        -  "droid",
        -  "codebuff",
        -  "gemini",
        -  "copilot",
        -  "opencode",
        -  "goose",
        -  "kilo",
        -  "hermes",
        -  "claude",
        -  "codex"
        -]New value: +[
        +  "amp",
        +  "kimi",
        +  "qwen",
        +  "pi",
        +  "openclaw",
        +  "droid",
        +  "codebuff",
        +  "gemini",
        +  "copilot",
        +  "opencode",
        +  "goose",
        +  "kilo",
        +  "hermes",
        +  "devin",
        +  "other",
        +  "claude",
        +  "codex"
        +]
  12. 5 tool updatesv0.17.2
    • Addedcompare_operators
    • Addedcompare_self
    • Addeddescribe_power_user
    • Addedget_best_operator
    • Addedoptimize_efficiency
  13. 15 tool updatesv0.16.0
    • Addeddiagnose_cascade
    • Changedenroll1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "codename": {
        +      "description": "Operator codename if enrolled",
        +      "type": "string"
        +    },
        +    "device_id": {
        +      "description": "Local device ID",
        +      "type": "string"
        +    },
        +    "operator_id": {
        +      "description": "Operator ID if enrolled",
        +      "type": "string"
        +    },
        +    "reason": {
        +      "description": "Error reason if status is error",
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "Enrollment result",
        +      "enum": [
        +        "enrolled",
        +        "error"
        +      ],
        +      "type": "string"
        +    },
        +    "trust_status": {
        +      "description": "Trust level of the device",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_leaderboard1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "operators": {
        +      "description": "Array of ranked operators sorted by yield",
        +      "items": {
        +        "properties": {
        +          "class": {
        +            "enum": [
        +              "Burner",
        +              "Builder",
        +              "10xer"
        +            ],
        +            "type": "string"
        +          },
        +          "codename": {
        +            "description": "Public display name",
        +            "type": "string"
        +          },
        +          "leverage": {
        +            "description": "Cr/I ratio",
        +            "type": "number"
        +          },
        +          "rank": {
        +            "description": "1-based rank position",
        +            "type": "integer"
        +          },
        +          "velocity": {
        +            "description": "O/I ratio",
        +            "type": "number"
        +          },
        +          "yield_": {
        +            "description": "Υ Yield metric",
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_operator1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "class": {
        +      "enum": [
        +        "Burner",
        +        "Builder",
        +        "10xer"
        +      ],
        +      "type": "string"
        +    },
        +    "codename": {
        +      "description": "Operator display name",
        +      "type": "string"
        +    },
        +    "leverage": {
        +      "description": "Cr/I ratio",
        +      "type": "number"
        +    },
        +    "rank": {
        +      "description": "1-based rank position",
        +      "type": "integer"
        +    },
        +    "velocity": {
        +      "description": "O/I ratio",
        +      "type": "number"
        +    },
        +    "windows": {
        +      "description": "Per-window breakdowns (7d, 30d, 90d, all-time)",
        +      "items": {
        +        "properties": {
        +          "pillars": {
        +            "properties": {
        +              "cacheCreate": {
        +                "type": "integer"
        +              },
        +              "cacheRead": {
        +                "type": "integer"
        +              },
        +              "input": {
        +                "type": "integer"
        +              },
        +              "output": {
        +                "type": "integer"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "window": {
        +            "enum": [
        +              "7d",
        +              "30d",
        +              "90d",
        +              "all_time"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "yield_": {
        +      "description": "Υ Yield metric",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrank_paste1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "card": {
        +      "description": "Deterministic prose summary of the cascade result",
        +      "type": "string"
        +    },
        +    "class": {
        +      "description": "Operator class tier",
        +      "enum": [
        +        "Burner",
        +        "Builder",
        +        "10xer"
        +      ],
        +      "type": "string"
        +    },
        +    "leverage": {
        +      "description": "Cr/I — cache reads divided by input",
        +      "type": "number"
        +    },
        +    "snr": {
        +      "description": "Signal-to-noise ratio",
        +      "type": "number"
        +    },
        +    "tenx_dev": {
        +      "description": "10xDEV score",
        +      "type": "number"
        +    },
        +    "velocity": {
        +      "description": "O/I — output divided by input",
        +      "type": "number"
        +    },
        +    "warnings": {
        +      "description": "Parse or data warnings if any",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "yield_": {
        +      "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "yield_",
        +    "class"
        +  ],
        +  "type": "object"
        +}
    • Changedrank_windows1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "windows": {
        +      "description": "Cascade results per window",
        +      "items": {
        +        "properties": {
        +          "card": {
        +            "description": "Deterministic prose summary of the cascade result",
        +            "type": "string"
        +          },
        +          "class": {
        +            "description": "Operator class tier",
        +            "enum": [
        +              "Burner",
        +              "Builder",
        +              "10xer"
        +            ],
        +            "type": "string"
        +          },
        +          "leverage": {
        +            "description": "Cr/I — cache reads divided by input",
        +            "type": "number"
        +          },
        +          "snr": {
        +            "description": "Signal-to-noise ratio",
        +            "type": "number"
        +          },
        +          "tenx_dev": {
        +            "description": "10xDEV score",
        +            "type": "number"
        +          },
        +          "velocity": {
        +            "description": "O/I — output divided by input",
        +            "type": "number"
        +          },
        +          "warnings": {
        +            "description": "Parse or data warnings if any",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "window": {
        +            "enum": [
        +              "7d",
        +              "30d",
        +              "90d",
        +              "all"
        +            ],
        +            "type": "string"
        +          },
        +          "yield_": {
        +            "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedself_improve
    • Changedsimulate_change1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "class_change": {
        +      "description": "Class tier change description",
        +      "type": "string"
        +    },
        +    "current": {
        +      "properties": {
        +        "card": {
        +          "description": "Deterministic prose summary of the cascade result",
        +          "type": "string"
        +        },
        +        "class": {
        +          "description": "Operator class tier",
        +          "enum": [
        +            "Burner",
        +            "Builder",
        +            "10xer"
        +          ],
        +          "type": "string"
        +        },
        +        "leverage": {
        +          "description": "Cr/I — cache reads divided by input",
        +          "type": "number"
        +        },
        +        "snr": {
        +          "description": "Signal-to-noise ratio",
        +          "type": "number"
        +        },
        +        "tenx_dev": {
        +          "description": "10xDEV score",
        +          "type": "number"
        +        },
        +        "velocity": {
        +          "description": "O/I — output divided by input",
        +          "type": "number"
        +        },
        +        "warnings": {
        +          "description": "Parse or data warnings if any",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "yield_": {
        +          "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "yield_",
        +        "class"
        +      ],
        +      "type": "object"
        +    },
        +    "metric_diffs": {
        +      "description": "Per-metric before/after diffs",
        +      "type": "object"
        +    },
        +    "simulated": {
        +      "properties": {
        +        "card": {
        +          "description": "Deterministic prose summary of the cascade result",
        +          "type": "string"
        +        },
        +        "class": {
        +          "description": "Operator class tier",
        +          "enum": [
        +            "Burner",
        +            "Builder",
        +            "10xer"
        +          ],
        +          "type": "string"
        +        },
        +        "leverage": {
        +          "description": "Cr/I — cache reads divided by input",
        +          "type": "number"
        +        },
        +        "snr": {
        +          "description": "Signal-to-noise ratio",
        +          "type": "number"
        +        },
        +        "tenx_dev": {
        +          "description": "10xDEV score",
        +          "type": "number"
        +        },
        +        "velocity": {
        +          "description": "O/I — output divided by input",
        +          "type": "number"
        +        },
        +        "warnings": {
        +          "description": "Parse or data warnings if any",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "yield_": {
        +          "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "yield_",
        +        "class"
        +      ],
        +      "type": "object"
        +    },
        +    "yield_delta": {
        +      "description": "Υ Yield change (simulated - current)",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsubmit_paste1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "preview": {
        +      "properties": {
        +        "card": {
        +          "description": "Deterministic prose summary of the cascade result",
        +          "type": "string"
        +        },
        +        "class": {
        +          "description": "Operator class tier",
        +          "enum": [
        +            "Burner",
        +            "Builder",
        +            "10xer"
        +          ],
        +          "type": "string"
        +        },
        +        "leverage": {
        +          "description": "Cr/I — cache reads divided by input",
        +          "type": "number"
        +        },
        +        "snr": {
        +          "description": "Signal-to-noise ratio",
        +          "type": "number"
        +        },
        +        "tenx_dev": {
        +          "description": "10xDEV score",
        +          "type": "number"
        +        },
        +        "velocity": {
        +          "description": "O/I — output divided by input",
        +          "type": "number"
        +        },
        +        "warnings": {
        +          "description": "Parse or data warnings if any",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "yield_": {
        +          "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "yield_",
        +        "class"
        +      ],
        +      "type": "object"
        +    },
        +    "reason": {
        +      "description": "Error or skip reason if status is not ok",
        +      "type": "string"
        +    },
        +    "server_response": {
        +      "description": "Server-side response including new rank if accepted",
        +      "type": "object"
        +    },
        +    "status": {
        +      "description": "Submission status",
        +      "enum": [
        +        "ok",
        +        "error",
        +        "skipped"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsubmit_verified1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "preview": {
        +      "properties": {
        +        "card": {
        +          "description": "Deterministic prose summary of the cascade result",
        +          "type": "string"
        +        },
        +        "class": {
        +          "description": "Operator class tier",
        +          "enum": [
        +            "Burner",
        +            "Builder",
        +            "10xer"
        +          ],
        +          "type": "string"
        +        },
        +        "leverage": {
        +          "description": "Cr/I — cache reads divided by input",
        +          "type": "number"
        +        },
        +        "snr": {
        +          "description": "Signal-to-noise ratio",
        +          "type": "number"
        +        },
        +        "tenx_dev": {
        +          "description": "10xDEV score",
        +          "type": "number"
        +        },
        +        "velocity": {
        +          "description": "O/I — output divided by input",
        +          "type": "number"
        +        },
        +        "warnings": {
        +          "description": "Parse or data warnings if any",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "yield_": {
        +          "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "yield_",
        +        "class"
        +      ],
        +      "type": "object"
        +    },
        +    "reason": {
        +      "description": "Error or skip reason if status is not ok",
        +      "type": "string"
        +    },
        +    "server_response": {
        +      "description": "Server-side response including new rank if accepted",
        +      "type": "object"
        +    },
        +    "status": {
        +      "description": "Submission status",
        +      "enum": [
        +        "ok",
        +        "error",
        +        "skipped"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedsuggest_improvements
    • Changedtokenpull1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "generatedAt": {
        +      "description": "ISO timestamp of the pull",
        +      "type": "string"
        +    },
        +    "platform": {
        +      "description": "Source platform name",
        +      "type": "string"
        +    },
        +    "windows": {
        +      "description": "Per-window token usage + cascade results",
        +      "items": {
        +        "properties": {
        +          "cascade": {
        +            "properties": {
        +              "card": {
        +                "description": "Deterministic prose summary of the cascade result",
        +                "type": "string"
        +              },
        +              "class": {
        +                "description": "Operator class tier",
        +                "enum": [
        +                  "Burner",
        +                  "Builder",
        +                  "10xer"
        +                ],
        +                "type": "string"
        +              },
        +              "leverage": {
        +                "description": "Cr/I — cache reads divided by input",
        +                "type": "number"
        +              },
        +              "snr": {
        +                "description": "Signal-to-noise ratio",
        +                "type": "number"
        +              },
        +              "tenx_dev": {
        +                "description": "10xDEV score",
        +                "type": "number"
        +              },
        +              "velocity": {
        +                "description": "O/I — output divided by input",
        +                "type": "number"
        +              },
        +              "warnings": {
        +                "description": "Parse or data warnings if any",
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "yield_": {
        +                "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "yield_",
        +              "class"
        +            ],
        +            "type": "object"
        +          },
        +          "estimated": {
        +            "description": "True if cacheCreate was estimated",
        +            "type": "boolean"
        +          },
        +          "messages": {
        +            "description": "Number of messages in window",
        +            "type": "integer"
        +          },
        +          "pillars": {
        +            "properties": {
        +              "cacheCreate": {
        +                "type": "integer"
        +              },
        +              "cacheRead": {
        +                "type": "integer"
        +              },
        +              "input": {
        +                "type": "integer"
        +              },
        +              "output": {
        +                "type": "integer"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "window": {
        +            "enum": [
        +              "7d",
        +              "30d",
        +              "90d",
        +              "all"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtokenpull_compare1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "platform": {
        +      "type": "string"
        +    },
        +    "sources": {
        +      "description": "Side-by-side comparison of each token source",
        +      "items": {
        +        "properties": {
        +          "cascade": {
        +            "properties": {
        +              "card": {
        +                "description": "Deterministic prose summary of the cascade result",
        +                "type": "string"
        +              },
        +              "class": {
        +                "description": "Operator class tier",
        +                "enum": [
        +                  "Burner",
        +                  "Builder",
        +                  "10xer"
        +                ],
        +                "type": "string"
        +              },
        +              "leverage": {
        +                "description": "Cr/I — cache reads divided by input",
        +                "type": "number"
        +              },
        +              "snr": {
        +                "description": "Signal-to-noise ratio",
        +                "type": "number"
        +              },
        +              "tenx_dev": {
        +                "description": "10xDEV score",
        +                "type": "number"
        +              },
        +              "velocity": {
        +                "description": "O/I — output divided by input",
        +                "type": "number"
        +              },
        +              "warnings": {
        +                "description": "Parse or data warnings if any",
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "yield_": {
        +                "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "yield_",
        +              "class"
        +            ],
        +            "type": "object"
        +          },
        +          "delta_pct": {
        +            "description": "Delta % vs tokenpull baseline",
        +            "type": "object"
        +          },
        +          "pillars": {
        +            "type": "object"
        +          },
        +          "source": {
        +            "description": "Source name (tokenpull, ccusage, token-dash, tokscale)",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtokenpull_submit1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "preview": {
        +      "properties": {
        +        "card": {
        +          "description": "Deterministic prose summary of the cascade result",
        +          "type": "string"
        +        },
        +        "class": {
        +          "description": "Operator class tier",
        +          "enum": [
        +            "Burner",
        +            "Builder",
        +            "10xer"
        +          ],
        +          "type": "string"
        +        },
        +        "leverage": {
        +          "description": "Cr/I — cache reads divided by input",
        +          "type": "number"
        +        },
        +        "snr": {
        +          "description": "Signal-to-noise ratio",
        +          "type": "number"
        +        },
        +        "tenx_dev": {
        +          "description": "10xDEV score",
        +          "type": "number"
        +        },
        +        "velocity": {
        +          "description": "O/I — output divided by input",
        +          "type": "number"
        +        },
        +        "warnings": {
        +          "description": "Parse or data warnings if any",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "yield_": {
        +          "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "yield_",
        +        "class"
        +      ],
        +      "type": "object"
        +    },
        +    "reason": {
        +      "description": "Error or skip reason if status is not ok",
        +      "type": "string"
        +    },
        +    "server_response": {
        +      "description": "Server-side response including new rank if accepted",
        +      "type": "object"
        +    },
        +    "status": {
        +      "description": "Submission status",
        +      "enum": [
        +        "ok",
        +        "error",
        +        "skipped"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedwatch_tokenpull1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "generatedAt": {
        +      "description": "ISO timestamp of the pull",
        +      "type": "string"
        +    },
        +    "platform": {
        +      "description": "Source platform name",
        +      "type": "string"
        +    },
        +    "windows": {
        +      "description": "Per-window token usage + cascade results",
        +      "items": {
        +        "properties": {
        +          "cascade": {
        +            "properties": {
        +              "card": {
        +                "description": "Deterministic prose summary of the cascade result",
        +                "type": "string"
        +              },
        +              "class": {
        +                "description": "Operator class tier",
        +                "enum": [
        +                  "Burner",
        +                  "Builder",
        +                  "10xer"
        +                ],
        +                "type": "string"
        +              },
        +              "leverage": {
        +                "description": "Cr/I — cache reads divided by input",
        +                "type": "number"
        +              },
        +              "snr": {
        +                "description": "Signal-to-noise ratio",
        +                "type": "number"
        +              },
        +              "tenx_dev": {
        +                "description": "10xDEV score",
        +                "type": "number"
        +              },
        +              "velocity": {
        +                "description": "O/I — output divided by input",
        +                "type": "number"
        +              },
        +              "warnings": {
        +                "description": "Parse or data warnings if any",
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "yield_": {
        +                "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)",
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "yield_",
        +              "class"
        +            ],
        +            "type": "object"
        +          },
        +          "estimated": {
        +            "description": "True if cacheCreate was estimated",
        +            "type": "boolean"
        +          },
        +          "messages": {
        +            "description": "Number of messages in window",
        +            "type": "integer"
        +          },
        +          "pillars": {
        +            "properties": {
        +              "cacheCreate": {
        +                "type": "integer"
        +              },
        +              "cacheRead": {
        +                "type": "integer"
        +              },
        +              "input": {
        +                "type": "integer"
        +              },
        +              "output": {
        +                "type": "integer"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "window": {
        +            "enum": [
        +              "7d",
        +              "30d",
        +              "90d",
        +              "all"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}

TDQS

A4/5.0

Scored across 25 tools

Disambiguation3/5

There are two crowded clusters: the paste-ranking family (rank_paste, submit_paste, rank_windows, get_sigrank_standard_record) and the local token-pull family (tokenpull, tokenpull_submit, tokenpull_compare, watch_tokenpull), where tools differ only subtly in preview vs submit vs multi-window behavior. Descriptions aggressively mitigate this with explicit 'Do NOT use X — use Y' notes, but misselection risk remains for an agent skimming. The tokscale_* tools are cleanly distinct from each other.

Naming Consistency4/5

Naming is uniformly snake_case and mostly follows verb_noun or namespace_noun patterns (rank_paste, get_leaderboard, submit_verified, tokscale_cost_analysis). A few names are bare nouns or single verbs (tokenpull, enroll, self_improve), which is a minor deviation from the otherwise predictable scheme.

Tool Count3/5

25 tools is on the heavy end and borders on over-scoped for a single MCP server, though the surface legitimately spans two broad subdomains (SigRank board workflows and tokscale local analytics). Several near-duplicate variants (tokenpull vs tokenpull_submit vs watch_tokenpull) inflate the count without adding much functional coverage.

Completeness4/5

Coverage is broad: local token pulls, paste ranking, multi-window ranking, leaderboard/operator lookup, enrollment, signed submission, diagnosis, suggestion, simulation, peer discovery, and a full tokscale analytics suite. Minor gaps exist (no unenroll/device-revocation tool, no explicit delete/withdraw submission), but core lifecycles are covered.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to interact with the AI-Archive platform for research paper discovery through semantic search, paper submission and management, peer review with structured scoring, and citation generation in multiple formats.
    54
    11 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An observability tool for agentic AI pipelines that intercepts MCP and Python tool calls to provide real-time metrics, session replays, and alerts via a local dashboard. It enables centralized monitoring of multiple MCP servers through multiplexer and proxy modes without requiring changes to existing agent code.
    3
    -