SigRank MCP server
The SigRank MCP server lets you score, rank, and publish AI token usage efficiency metrics — without sharing sensitive prompt content. Key capabilities include:
Score token counts locally (
rank_paste): Input raw token pillars (input, output, cacheCreate, cacheRead) to instantly get efficiency metrics (Υ Yield, SNR, Leverage, Velocity, 10xDEV, Class) and a prose narrative card, all computed on-device.Rank multiple time windows (
rank_windows): Score token data across up to four windows (7d/30d/90d/all-time) simultaneously.Pull local token usage automatically (
tokenpull): Scan on-device session logs from 15+ AI platforms (Claude, Codex, Amp, Gemini, Copilot, Goose, etc.) and compute cascade metrics across all time windows — no pasting, no content read.Pull and publish in one step (
tokenpull_submit): Combine local log scanning with a leaderboard submission, optionally filtered by window or platform.Submit to the leaderboard (
submit_paste): Score a token paste locally for a preview, then optionally publish it to the public SigRank board under a codename.View the live leaderboard (
get_leaderboard): Fetch the public board from signalaf.com, ranked by Υ Yield, with optional time window filters.Look up any operator's profile (
get_operator): Retrieve a specific operator's live stats and cascade metrics by codename.Watch your score in real time (
watch_tokenpull): Poll local session logs at a configurable interval for live efficiency score updates as new AI sessions are written.
Allows reading token counts from AMP threads directory (~/.local/share/amp/threads) for token usage analysis, providing per-message tokens.
Allows reading token counts from GitHub Copilot CLI sessions (~/.copilot/otel) for token usage analysis; requires the COPILOT_OTEL_ENABLED=true environment variable to be set before the session.
Allows reading token counts from Hermes state database (~/.hermes/state.db) for token usage analysis, extracting reasoning and output tokens per message.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SigRank MCP serverRank my paste: 100 input, 200 output."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SigRank SignalAF — sigrank CLI/MCP
SignalAF is the public brand. SigRank is the leaderboard and proof surface. The
sigrankpackage 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.
Table of Contents
The board | Your 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 enrollthensigrank submitto 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 engineRepo | 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. |
|
SignalAF web app — the SigRank leaderboard, operator profiles, and proof surface. | ||
The intent layer — routes "who is the best AI user?" queries to SigRank SignalAF's leaderboard. MCP server for AI assistants. |
| |
The satellite — public LLM operator evals at sigeconomy.com. Read-only leaderboard, SEO/AEO surface. | ||
The IDE extension — see your cascade metrics inline in VS Code. |
| |
The repo scorer — investor-readiness scoring for GitHub repos. CLI + MCP server. |
|
Also in the MO§ES™ suite
Site | What it is |
Governed AI agent marketplace where ranked agents form teams, fill slots, run missions, and earn revenue under constitutional protocol. Agents are free. Operators pay. | |
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-runThat'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
sigrankRepo: 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)
Click Install
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 --onceOptional 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 portThen 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 sigrankSix tabs. Keys: 1-6 or ← → to switch · R refresh · Q quit.
Tab | Key | Content |
Dashboard |
| Cascade table (all platforms × windows + combined) · Υ sparklines · token composition bars · mini board |
Trends |
| Every metric across windows — sub-views: You / Platform / Field |
Compare |
| 4-source pillar audit (tokenpull vs ccusage vs token-dash vs tokscale) · delta % · cascade metrics per source · cache read bar chart |
Board |
| Full leaderboard with all fields · |
Watch |
| In-TUI landing panel · |
Connect |
| Sign in / switch device — paste a connect code from signalaf.com → Settings. Then |
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 anythingOr 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 |
|
| Scores token pillars → Υ Yield / SNR / Leverage / Velocity / 10xDEV / Class + prose narration card |
|
| Live board from signalaf.com — sorted by Υ Yield |
|
| One operator's live profile |
|
| Rank locally then POST to board. Omit codename for preview-only |
|
| On-device local reader: scans local logs → 4-window cascade. Zero paste, token-only |
|
|
|
|
| All four sources side-by-side: tokenpull + ccusage + token-dash + tokscale. Returns pillars, cascade metrics, and delta % vs tokenpull per window |
|
| Multi-window cascade from local logs |
|
| One cascade snapshot per call (interval_s advisory) |
|
| THE ranked path: builds + ed25519-signs Schema 1.0 snapshots and POSTs them. |
|
| Bind this device with a connect code from signalaf.com → Settings |
|
| Diagnoses where your token cascade is leaking efficiency — ranked findings with severity + estimated Υ impact |
|
| Prescriptive "what if" — test proposed pillar changes and see the exact Υ delta + class change before committing |
|
| Generates ranked, simulated improvement suggestions — tests strategies and returns them sorted by Υ yield impact |
|
| One-click optimize: diagnoses, suggests, and simulates the best change in a single call |
|
| Top N operators with behavioral framing in power-user language. Intent: "who is the best AI user?" |
|
| Your metrics vs board averages + power-user assessment + percentile + suggestion. Intent: "how do I measure up?" |
|
| Side-by-side comparison with behavioral verdict. Intent: "compare operator X vs Y" |
|
| Static explanation of AI power user archetype + metrics explained. Intent: "what is an AI power user?" |
|
| Ranked efficiency suggestions tied to your cascade shape. Intent: "how can I use AI more efficiently?" |
|
| Per-model token breakdown across platforms (models under threshold → "other") |
|
| AI tool market share: each tool's % of tokens/cost/messages, ranked. From local tokscale data |
|
| Per-developer usage profile across all detected tools: model mix, pillars, sessions, workspaces. Paths redacted |
|
| Model adoption over time: per-model first/last seen, active days, month-by-month adoption curve |
|
| Cost per developer per model: cost_per_million_tokens, cost_per_message, share_cost, client rollup |
|
| Device fingerprinting: installed tools, session counts, active days, day-of-week distribution, concurrency. Paths redacted |
|
| MCP server usage: detected servers, detection window, active days |
|
| 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 |
| On-device JSONL scanner (canon source) | claude, codex, amp, … |
|
| claude, codex |
|
| claude only |
|
| 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 | ✅ | Native 4-pillar; dedup by |
Codex | ✅ |
|
Devin CLI | ✅ | SQLite; native 4-pillar from |
Amp | ✅ | Native 4-pillar; per-message |
Kimi | ✅ | Native 4-pillar; |
pi-agent | ✅ | Native 4-pillar; per-message JSONL |
oh-my-pi ( | ✅ | Native 4-pillar from |
OpenClaw | ✅ | Native 4-pillar; per-message JSONL |
Droid | ✅ | Native 4-pillar; |
Codebuff | ✅ | Native 4-pillar; |
Hermes | ✅ | Native 4-pillar; SQLite; |
Kilo | ✅ | Native 4-pillar; SQLite |
Qwen | ✅ | Estimated ( |
Goose | ✅ | Estimated ( |
Gemini CLI | ✅ | Estimated ( |
GitHub Copilot CLI | ✅ | Native 4-pillar (OTel spans: |
OpenCode | ⚠️ | Data gap — logs store |
SigRank SignalAF proxy | ✅ | 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) | ✅ | User-supplied JSON |
Cursor | 🔜 | Chat log path TBD |
Windsurf | 🔜 | Session logs at |
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.
tokenpullreads only the selected or detected adapter paths on your device (e.g.~/.claude/projectsfor Claude,~/.codexfor 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 submitrequires a one-timeenroll(device-bound ed25519 key — the private key never leaves your machine). Verify what's sent withsigrank submit --dry-run: the payload is four token counts, ratios, and a signature.
Env vars
Var | Default | Description |
|
| Override the board host |
|
| 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_pastecanon: MO§ES(1251211, 11296121, 128196310, 2555179769)→ Υ 18436.98 · TRANSMITTERsubmit_pastepreview (no codename) + POST shape (injected fetch, no live writes)tokenpulldedup, window slicing, 4-window pillars (mock adapter)tokenpull_submitall 4 windows POST, sha256 hash, ddmmyy stamptokenpullCodexio_ratio conversion per-windowAdapter registry (17 platforms) + per-adapter shape contracts
Local proxy: Anthropic/OpenAI JSON + fragmented SSE, live pass-through, secure JSONL, error forwarding
rank_windows4-window paste scoring, partial input, no-networkwatch_tokenpullcascade snapshot, interval_s, submit pathenrollposts identity (public key only), maps 201 enrolled + 410 code_invalidsubmit_verifiedsigns Schema 1.0, server-verifiablesimulate_changerelative + absolute deltas, quadratic penalty, JSON inputHardening: div-by-zero guards, parsePillars warnings, fetch timeout, EXCLUDE_TOOLING regex, narrate safety
sign.test.mjsed25519 round-trip + canonical 926-byte payload parity
File map
File | Responsibility |
| Entry point — TTY detection, routes to CLI or MCP server |
| Opt-in loopback Anthropic/OpenAI proxy and usage capture |
| CLI commands: board, compare, watch, enroll, submit, help |
| Full tabbed TUI: Dashboard / Trends / Compare / Board / Watch / Connect |
| Cascade facade — delegates to |
| On-device log scanner — Claude, Codex, multi-platform |
| Platform adapter registry (16+ platforms) |
| MCP tool table + dispatcher |
| Connect-code enrollment + device identity |
| Local key management (paste-keys, not API keys) |
| Verified submit flow (signs + POSTs to board) |
| Schema 1.0 signing (X-Agent-Signature) |
| Deterministic prose narration card |
| Plausibility checks (Benford, bounds, anomaly detection) |
| Unit tests (no external deps) |
| ed25519 signing + canon parity test |
Contributing
Contributions welcome. SigRank SignalAF MCP is built in the open.
Report bugs via GitHub Issues
PRs: fork → branch →
node test.mjspasses → open PR againstmain
License
MIT — see LICENSE.
Available Tools
25 toolsdiagnose_cascadeARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cascade | No | |
| pillars | No | The 4 raw token pillars |
| summary | No | One-line summary of the operator's cascade health |
| diagnosis | No | Ranked list of efficiency leaks found, worst first |
TDQS
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.
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.
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.
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.
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.
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_peersARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of operators to return per category (default: 5, max: 20). | |
| platform | No | Filter peers by platform (default: your operator's primary platform). Use 'all' to search across all platforms. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cta | No | |
| peers | No | Operators in your class tier, ranked by yield proximity |
| mentors | No | Operators 1-2 class tiers above you with similar cascade shapes, including pillar deltas |
| summary | No | One-line summary of findings |
| your_profile | No | Your operator's current profile on the board |
| complementary | No | Operators whose strength maps to your weakness |
TDQS
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.
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.
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.
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.
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.
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.
enrollAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | the key / connect code (SIGR-XXXXX-XXXXX-XXXXX) from Settings → New key (or Generate connect code) | |
| device_label | No | optional label for this device (default: hostname · agent version) |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error reason if status is error |
| status | No | Enrollment result |
| codename | No | Operator codename if enrolled |
| device_id | No | Local device ID |
| operator_id | No | Operator ID if enrolled |
| trust_status | No | Trust level of the device |
TDQS
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.
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.
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.
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.
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.
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_leaderboardARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| operators | No | Array of ranked operators sorted by yield |
TDQS
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.
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.
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.
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.
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.
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_operatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| codename | Yes | The 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
| Name | Required | Description |
|---|---|---|
| rank | No | 1-based rank position |
| class | No | |
| yield_ | No | Υ Yield metric |
| batched | No | Submission-based rolled-forward totals (never decrease when platforms delete old logs). Present when the operator has submission history. |
| windows | No | Per-window breakdowns (7d, 30d, 90d, all-time) |
| codename | No | Operator display name |
| leverage | No | Cr/I ratio |
| velocity | No | O/I ratio |
TDQS
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.
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.
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.
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.
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.
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_recordARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Optional tool/client identifier. | |
| input | Yes | Fresh input tokens. | |
| model | No | Optional model identifier. | |
| output | Yes | Output tokens. | |
| provider | No | Optional provider identifier. | |
| timestamp | No | Optional ISO-8601 timestamp. Defaults to the current time. | |
| cache_read | No | Cache-read tokens, or null when unavailable. | |
| cache_write | No | Cache-write / cache-creation tokens, or null when unavailable. |
Output Schema
| Name | Required | Description |
|---|---|---|
| spec | Yes | Legacy wire identifier. Resolves to TTEOP tteop/0.1-draft. |
| source | Yes | |
| metrics | Yes | |
| protocol | Yes | |
| warnings | Yes | |
| telemetry | Yes | |
| timestamp | Yes | ISO-8601 record timestamp. |
| spec_status | Yes | Indicates this spec identifier is a legacy alias, not a current protocol. |
TDQS
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.
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.
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.
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.
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.
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_pasteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token 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
| Name | Required | Description |
|---|---|---|
| snr | No | Signal-to-noise ratio |
| card | No | Deterministic prose summary of the cascade result |
| mode | No | Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence |
| class | Yes | Operator class tier (dev10x taxonomy) |
| yield | Yes | Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²) |
| dev10x | No | 10xDEV score (log10 of the cascade product) |
| pillars | No | The four raw token pillars the cascade was computed from |
| leverage | No | Cr/I — cache reads divided by input |
| velocity | No | O/I — output divided by input |
| warnings | No | Parse or data warnings if any |
TDQS
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.
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.
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.
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.
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.
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_windowsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| 7d | No | ccusage/tokscale paste or JSON for the 7-day window (optional) | |
| 30d | No | ccusage/tokscale paste or JSON for the 30-day window (optional) | |
| 90d | No | ccusage/tokscale paste or JSON for the 90-day window (optional) | |
| all | No | ccusage/tokscale paste or JSON for the all-time window (optional) | |
| source_tool | No | which token reader produced the paste (for cross-tool variance tracking) |
Output Schema
| Name | Required | Description |
|---|---|---|
| windows | No | Cascade results per window |
TDQS
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.
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.
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.
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.
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.
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_improveARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Optional: token pillars — ccusage JSON or "input output cacheCreate cacheRead". If omitted, runs tokenpull to get current pillars from local logs. | |
| scope | No | Analysis 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. | |
| window | No | Which time window to pull when running tokenpull (default: 30d). Ignored if `text` is provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Detected mode { mode, confidence } — present when scope is daily/weekly/trend |
| trend | No | Trend analysis (trend scope) |
| advice | No | Advice for next session (daily scope) |
| report | No | Weekly report artifact (weekly scope) |
| pillars | No | The 4 raw token pillars used |
| diagnosis | No | Efficiency leaks found (from diagnose_cascade) |
| assessment | No | One-line assessment for daily scope |
| suggestions | No | Ranked improvements (from suggest_improvements) |
| cycle_summary | No | One-line summary of the full cycle |
| quality_score | No | Yield relative to mode expectation (daily scope) |
| best_simulation | No | Simulated result of the top suggestion |
| current_cascade | No |
TDQS
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.
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.
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.
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.
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.
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_changeARead-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}).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Current token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste). | |
| changes | Yes | Proposed 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
| Name | Required | Description |
|---|---|---|
| current | No | |
| simulated | No | |
| yield_delta | No | Υ Yield change (simulated - current) |
| class_change | No | Class tier change description |
| metric_diffs | No | Per-metric before/after diffs |
TDQS
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.
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.
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.
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.
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.
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_pasteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | 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} | |
| codename | No | Operator codename for the ranking card display (e.g. "Ghost Falcon"). Optional — used only for the local preview card, not for board submission. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error or skip reason if status is not ok |
| status | No | Submission status |
| preview | No | |
| server_response | No | Server-side response including new rank if accepted |
TDQS
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.
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.
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.
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.
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.
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_verifiedAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | submit only this window (default: all 4) | |
| dry_run | No | build + sign but do NOT publish — returns the exact payload that would be POSTed (token counts only), so you can inspect before submitting | |
| platform | No | source platform (default: claude). 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active); empty windows are skipped. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error or skip reason if status is not ok |
| status | No | Submission status |
| preview | No | |
| server_response | No | Server-side response including new rank if accepted |
TDQS
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.
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.
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.
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.
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.
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_improvementsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste). |
Output Schema
| Name | Required | Description |
|---|---|---|
| suggestions | No | Ranked recommendations, highest Υ impact first |
| current_class | No | Current class tier |
| current_yield | No | Current Υ before any changes |
| best_single_change | No | The single highest-impact change |
TDQS
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.
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.
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.
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.
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.
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.
tokenpullARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| card | No | Deterministic prose summary |
| note | No | Reminder that one snapshot is returned per call — re-call to detect changes. |
| window | No | The watched window (watch_tokenpull watches one window per call) |
| cascade | No | |
| pillars | No | The four raw token pillars for the watched window |
| messages | No | Number of messages in the watched window |
| platform | No | Source platform name |
| auth_submit | No | Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only). |
| generatedAt | No | ISO timestamp of the pull |
| poll_interval_s | No | Advisory poll cadence echoed back (does not make the call block) |
TDQS
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.
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.
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.
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.
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.
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_compareARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | platform to compare (default: claude). token-dash and App only available for claude. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sources | No | Side-by-side comparison of each token source |
| platform | No |
TDQS
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.
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.
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.
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.
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.
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_submitARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Preview only this time window (default: all 4 windows). Use "7d" for recent activity or "all" for all-time ranking. | |
| codename | No | Operator codename for the ranking card display (e.g. "Iron Lotus"). Optional — used only for the local preview card, not for board submission. | |
| platform | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error or skip reason if status is not ok |
| status | No | Submission status |
| preview | No | |
| server_response | No | Server-side response including new rank if accepted |
TDQS
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.
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.
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.
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.
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.
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_breakdownARead-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 }] }.
| Name | Required | Description | Default |
|---|---|---|---|
| threshold | No | Models 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
| Name | Required | Description |
|---|---|---|
| platforms | No | Map of platform name → array of { model, input, output, cacheRead, cacheCreate, pct } |
TDQS
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.
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.
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.
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.
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.
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_intelARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | The 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
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable or target is empty |
| found | No | Whether the target was found in local data |
| target | No | The resolved target slug(s) |
| competitors | No | All other detected tools with comparison metrics |
| market_totals | No | Aggregate market context: { tokens, cost, messages, tool_count } |
| rank_by_tokens | No | Target's rank among all detected tools by token volume |
| target_profile | No | Target's full usage profile with model mix and market share |
TDQS
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.
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.
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.
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.
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.
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_analysisARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| totals | No | Aggregate cost totals and extremes |
| entries | No | Per-client×per-model cost rows sorted by cost desc |
| client_rollup | No | Per-client cost summary with share_cost and cost_per_million_tokens |
TDQS
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.
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.
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.
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.
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.
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_profileARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| tools | No | Per-tool profile with model mix, token pillars, session counts, workspaces |
| summary | No | Aggregate summary: { tool_count, total_cost, total_tokens, total_messages, avg_cost_per_tool, dominant_tool } |
TDQS
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.
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.
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.
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.
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.
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_profileARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| summary | No | Cost summary from graph: total_tokens, total_cost, avg_per_day, max_single_day |
| activity | No | Daily activity + day-of-week token distribution |
| sessions | No | Session metrics: count, total/longest active time, max concurrent |
| date_range | No | { start, end } of the activity data |
| installed_tools | No | Detected AI tools with redacted session paths and message counts |
| active_tool_count | No | Tools whose session path exists on disk |
| installed_tool_count | No |
TDQS
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.
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.
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.
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.
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.
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_mcp_usageARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Explanation of the MCP server data granularity |
| error | No | Present if tokscale is unavailable |
| servers | No | Detected MCP servers: [{ name, detected: true }] |
| server_count | No | |
| detection_window | No | { start, end } date range |
| active_days_in_window | No |
TDQS
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.
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.
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.
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.
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.
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.
tokscale_model_trendsARead-only
Model adoption trends over time from your local tokscale data. Combines monthly aggregates with per-day contribution data to build a model-level adoption timeline: each model's first_seen / last_seen / active_days / tokens / clients, plus a month-by-month adoption curve showing how many new models appeared each month. Returns months[], models[], and adoption_curve[]. Use this to track which AI models you adopted when, and how your model mix evolved over time. Do NOT use this for cost trends — use tokscale_cost_analysis for current cost breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| models | No | Per-model adoption: { model, first_seen, last_seen, active_days, tokens, cost, messages, client_count, clients } |
| months | No | Per-month aggregates: { month, models, model_count, input, output, cache_read, messages, cost } |
| date_range | No | { start, end } date range of the data |
| adoption_curve | No | Per-month new-model count: { month, new_models, new_model_count, total_models } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation, detailing data sources (monthly aggregates + per-day contribution) and output structure (first_seen, last_seen, active_days, tokens, clients, adoption_curve). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, front-loading the main purpose, then providing details. Every sentence adds value, though it could be slightly more concise. However, it remains clear and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description adequately explains the output structure (months[], models[], adoption_curve[]) and the data fields. Could mention scope (all time?) but sufficient for a read-only reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline 4 applies. The description explicitly states 'No parameters. Derives trends from tokscale monthly + graph data,' which is clear and sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tracks 'Model adoption trends over time' from tokscale data, specifying the output includes monthly aggregates, per-day data, and model-level timeline fields. It also distinguishes from sibling tool tokscale_cost_analysis by explicitly stating not to use for cost trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (track model adoption and evolution) and when not to use (for cost trends, use tokscale_cost_analysis). This is a clear directive for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_tokenpullAIdempotent
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).
| Name | Required | Description | Default |
|---|---|---|---|
| submit | No | auto-submit the watched window to the board as a VERIFIED operator each poll (requires `enroll`; default false = preview only) | |
| window | No | which window to watch (default: 7d — most sensitive to recent activity) | |
| platform | No | platform to watch (default: claude) | |
| interval_s | No | advisory poll cadence in seconds (default: 60, min: 10) — echoed back as poll_interval_s; does not make the call block or loop |
Output Schema
| Name | Required | Description |
|---|---|---|
| card | No | Deterministic prose summary |
| note | No | Reminder that one snapshot is returned per call — re-call to detect changes. |
| window | No | The watched window (watch_tokenpull watches one window per call) |
| cascade | No | |
| pillars | No | The four raw token pillars for the watched window |
| messages | No | Number of messages in the watched window |
| platform | No | Source platform name |
| auth_submit | No | Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only). |
| generatedAt | No | ISO timestamp of the pull |
| poll_interval_s | No | Advisory poll cadence echoed back (does not make the call block) |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.19.10- Added
get_sigrank_standard_record - Changed
submit_paste3 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / properties / codename / descriptionPrevious 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." - changed
Input schema / properties / text / descriptionPrevious 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}"
- Changed
tokenpull_submit2 fields changed- changed
Input schema / properties / codename / descriptionPrevious 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." - changed
Input schema / properties / window / descriptionPrevious 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."
1 tool update
v0.19.8- Added
discover_peers
6 tool updates
v0.19.7- Changed
get_operator1 field changed- added
Output schema / properties / batchedAdded 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" +}
- Changed
submit_verified1 field changed- changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
tokenpull2 fields changed- changed
Input schema / properties / platform / descriptionPrevious 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)." - changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
tokenpull_compare1 field changed- changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
tokenpull_submit2 fields changed- changed
Input schema / properties / platform / descriptionPrevious 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." - changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
watch_tokenpull1 field changed- changed
Input schema / properties / platform / enumPrevious 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" +]
13 tool updates
v0.19.6- Changed
diagnose_cascade9 fields changed- changed
Output schema / properties / cascade / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / cascade / properties / class / enumPrevious 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" +] - added
Output schema / properties / cascade / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / cascade / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / cascade / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / cascade / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / cascade / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / cascade / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / cascade / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
get_leaderboard1 field changed- changed
Output schema / properties / operators / items / properties / class / enumPrevious 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" +]
- Changed
get_operator1 field changed- changed
Output schema / properties / class / enumPrevious 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" +]
- Changed
rank_paste9 fields changed- changed
Output schema / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / class / enumPrevious 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" +] - added
Output schema / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
rank_windows8 fields changed- changed
Output schema / properties / windows / items / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / windows / items / properties / class / enumPrevious 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" +] - added
Output schema / properties / windows / items / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / windows / items / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / windows / items / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / windows / items / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / windows / items / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / windows / items / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -}
- Changed
self_improve9 fields changed- changed
Output schema / properties / current_cascade / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / current_cascade / properties / class / enumPrevious 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" +] - added
Output schema / properties / current_cascade / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / current_cascade / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / current_cascade / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / current_cascade / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / current_cascade / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / current_cascade / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / current_cascade / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
simulate_change18 fields changed- changed
Output schema / properties / current / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / current / properties / class / enumPrevious 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" +] - added
Output schema / properties / current / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / current / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / current / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / current / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / current / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / current / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / current / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +] - changed
Output schema / properties / simulated / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / simulated / properties / class / enumPrevious 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" +] - added
Output schema / properties / simulated / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / simulated / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / simulated / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / simulated / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / simulated / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / simulated / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / simulated / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
submit_paste9 fields changed- changed
Output schema / properties / preview / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / preview / properties / class / enumPrevious 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" +] - added
Output schema / properties / preview / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / preview / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / preview / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / preview / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / preview / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / preview / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / preview / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
submit_verified10 fields changed- changed
Input schema / properties / platform / enumPrevious 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" +] - changed
Output schema / properties / preview / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / preview / properties / class / enumPrevious 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" +] - added
Output schema / properties / preview / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / preview / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / preview / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / preview / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / preview / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / preview / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / preview / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
tokenpull11 fields changed- changed
Input schema / properties / platform / descriptionPrevious 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)." - changed
Input schema / properties / platform / enumPrevious 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" +] - added
Output schema / properties / auth_submitAdded 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" + ] +} - added
Output schema / properties / cardAdded value: +{ + "description": "Deterministic prose summary", + "type": "string" +} - added
Output schema / properties / cascadeAdded 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" +} - added
Output schema / properties / messagesAdded value: +{ + "description": "Number of messages in the watched window", + "type": "integer" +} - added
Output schema / properties / noteAdded value: +{ + "description": "Reminder that one snapshot is returned per call — re-call to detect changes.", + "type": "string" +} - added
Output schema / properties / pillarsAdded 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" +} - added
Output schema / properties / poll_interval_sAdded value: +{ + "description": "Advisory poll cadence echoed back (does not make the call block)", + "type": "number" +} - added
Output schema / properties / windowAdded value: +{ + "description": "The watched window (watch_tokenpull watches one window per call)", + "enum": [ + "7d", + "30d", + "90d", + "all" + ], + "type": "string" +} - removed
Output schema / properties / windowsRemoved 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" -}
- Changed
tokenpull_compare10 fields changed- changed
Input schema / properties / platform / enumPrevious 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" +] - changed
Output schema / properties / sources / items / properties / cascade / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / sources / items / properties / cascade / properties / class / enumPrevious 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" +] - added
Output schema / properties / sources / items / properties / cascade / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / sources / items / properties / cascade / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / sources / items / properties / cascade / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / sources / items / properties / cascade / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / sources / items / properties / cascade / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / sources / items / properties / cascade / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / sources / items / properties / cascade / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
tokenpull_submit11 fields changed- changed
Input schema / properties / platform / descriptionPrevious 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." - changed
Input schema / properties / platform / enumPrevious 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" +] - changed
Output schema / properties / preview / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / preview / properties / class / enumPrevious 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" +] - added
Output schema / properties / preview / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / preview / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / preview / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / preview / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / preview / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / preview / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / preview / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
watch_tokenpull10 fields changed- changed
Input schema / properties / platform / enumPrevious 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" +] - added
Output schema / properties / auth_submitAdded 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" + ] +} - added
Output schema / properties / cardAdded value: +{ + "description": "Deterministic prose summary", + "type": "string" +} - added
Output schema / properties / cascadeAdded 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" +} - added
Output schema / properties / messagesAdded value: +{ + "description": "Number of messages in the watched window", + "type": "integer" +} - added
Output schema / properties / noteAdded value: +{ + "description": "Reminder that one snapshot is returned per call — re-call to detect changes.", + "type": "string" +} - added
Output schema / properties / pillarsAdded 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" +} - added
Output schema / properties / poll_interval_sAdded value: +{ + "description": "Advisory poll cadence echoed back (does not make the call block)", + "type": "number" +} - added
Output schema / properties / windowAdded value: +{ + "description": "The watched window (watch_tokenpull watches one window per call)", + "enum": [ + "7d", + "30d", + "90d", + "all" + ], + "type": "string" +} - removed
Output schema / properties / windowsRemoved 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 tool updates
v0.19.5- Removed
compare_operators - Removed
compare_self - Removed
describe_power_user - Removed
get_best_operator - Removed
optimize_efficiency
2 tool updates
v0.19.4- Added
get_operator - Added
rank_paste
6 tool updates
v0.19.3- Added
compare_self - Added
get_best_operator - Removed
get_operator - Removed
rank_paste - Added
tokscale_breakdown - Added
tokscale_model_trends
9 tool updates
v0.19.3- Removed
compare_self - Added
diagnose_cascade - Added
get_leaderboard - Added
get_operator - Added
tokenpull - Added
tokenpull_submit - Added
tokscale_market_share - Removed
tokscale_model_trends - Added
watch_tokenpull
13 tool updates
v0.19.2- Added
compare_operators - Added
compare_self - Removed
diagnose_cascade - Added
optimize_efficiency - Added
rank_paste - Added
rank_windows - Added
submit_paste - Added
submit_verified - Removed
tokenpull_submit - Removed
tokscale_breakdown - Added
tokscale_competitive_intel - Removed
tokscale_market_share - Removed
watch_tokenpull
17 tool updates
- Removed
compare_operators - Removed
compare_self - Removed
get_best_operator - Removed
get_leaderboard - Removed
get_operator - Removed
optimize_efficiency - Removed
rank_paste - Removed
rank_windows - Removed
submit_paste - Removed
submit_verified - Removed
tokenpull - Added
tokscale_cost_analysis - Added
tokscale_developer_profile - Added
tokscale_device_profile - Added
tokscale_market_share - Added
tokscale_mcp_usage - Added
tokscale_model_trends
6 tool updates
v0.18.1- Changed
submit_verified1 field changed- changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
tokenpull2 fields changed- changed
Input schema / properties / platform / descriptionPrevious 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)." - changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
tokenpull_compare1 field changed- changed
Input schema / properties / platform / enumPrevious 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" +]
- Changed
tokenpull_submit2 fields changed- changed
Input schema / properties / platform / descriptionPrevious 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." - changed
Input schema / properties / platform / enumPrevious 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" +]
- Added
tokscale_breakdown - Changed
watch_tokenpull1 field changed- changed
Input schema / properties / platform / enumPrevious 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" +]
5 tool updates
v0.17.2- Added
compare_operators - Added
compare_self - Added
describe_power_user - Added
get_best_operator - Added
optimize_efficiency
15 tool updates
v0.16.0- Added
diagnose_cascade - Changed
enroll1 field changed- changed
Output 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" +}
- Changed
get_leaderboard1 field changed- changed
Output 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" +}
- Changed
get_operator1 field changed- changed
Output 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" +}
- Changed
rank_paste1 field changed- changed
Output 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" +}
- Changed
rank_windows1 field changed- changed
Output 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" +}
- Added
self_improve - Changed
simulate_change1 field changed- changed
Output 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" +}
- Changed
submit_paste1 field changed- changed
Output 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" +}
- Changed
submit_verified1 field changed- changed
Output 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" +}
- Added
suggest_improvements - Changed
tokenpull1 field changed- changed
Output 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" +}
- Changed
tokenpull_compare1 field changed- changed
Output 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" +}
- Changed
tokenpull_submit1 field changed- changed
Output 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" +}
- Changed
watch_tokenpull1 field changed- changed
Output 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
Scored across 25 tools
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 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.
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.
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
Related MCP Connectors
Rank agents; signed machine messages + wallet gates via x402; free verifiable agent passports.
Agent reputation registry: check, register, and endorse AI agents
Market intelligence for the AI agent economy: rankings, trust signals, liveness. 13 tools.
On-chain ERC-8004 agent registry. Search, register, and check reputation across 16 chains.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables 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.5411 npm1MIT
- FlicenseNot gradedqualityDmaintenanceAn 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-
- AlicenseAqualityAmaintenanceTrust, identity, and reputation infrastructure for AI agents. Register agents with W3C DID (Ed25519), check EigenTrust reputation scores, submit peer attestations, search agents by capability, and verify IPFS-anchored audit trails. 11 tools.2015MIT
- AlicenseAqualityAmaintenanceDescription Governed agent city-state. Register as an agent, browse open mission slots, earn revenue under constitutional protocol. Every action creates a SHA-256 provenance seed. Powered by MO§ES™.6231MIT

