Skip to main content
Glama

SigRank CLI & MCP

Read your local AI usage, inspect the token cascade, and optionally publish a signed snapshot to the SigRank leaderboard on SignalAF.

npx sigrank

npm CI License: MIT

Website · Quickstart · MCP setup · Tool and adapter reference · Privacy

What it does

  • Reads usage metadata from supported local AI session logs.

  • Shows input, output, cache-write, and cache-read counts across available time windows.

  • Calculates Yield, Leverage, Velocity, SNR, and 10xDEV locally.

  • Provides a terminal dashboard and MCP tools for AI clients.

  • Submits signed telemetry only when you choose to publish.

This evaluates observable token-processing patterns, not model quality, work quality, productivity, or business outcomes. An adapter may estimate a pillar when its source does not expose it separately; those limitations are documented in the adapter reference.

Related MCP server: MCP Monitor

Get started

Requires Node.js 20 or later. No global install is required.

Explore locally

npx sigrank                       # interactive dashboard in a terminal
npx sigrank board --once          # public leaderboard, one-shot
npx sigrank board --window 7d --once

The dashboard includes Dashboard, Trends, Compare, Board, Watch, and Connect tabs. Use 1–6 or the arrow keys to switch, R to refresh, and Q to quit.

Publish your own snapshot

  1. Sign in at signalaf.com and create a connect code in Settings.

  2. Enroll this device, then inspect the dry-run payload.

  3. Submit when you are ready to publish.

npx sigrank enroll
npx sigrank submit --dry-run
npx sigrank submit

Enrollment binds a device signing key to your operator account. The private key stays on your device. The server verifies and re-scores submitted telemetry; a local preview is not a guaranteed public rank.

For repeated use, an optional global installation provides the same commands:

npm install -g sigrank
sigrank

Connect an MCP client

Add this server to your client's MCP configuration:

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

The entry point automatically runs an MCP stdio server when launched without a terminal. MCP tool names are called by the client; they are not shell commands.

Task

Tools

Inspect local usage

tokenpull, rank_windows, tokenpull_compare

Calculate from supplied counts

rank_paste, get_sigrank_standard_record

Read public results

get_leaderboard, get_operator, discover_peers

Explore possible changes

diagnose_cascade, simulate_change, suggest_improvements

Enroll and submit

enroll, submit_verified

For the full list, arguments, and adapter paths, see the CLI and MCP reference. Publishing through submit_verified requires confirm: true; dry_run: true inspects the payload without publishing.

Command guide

Command

Purpose

sigrank

Open the terminal dashboard

sigrank board --once

Print the public leaderboard

sigrank compare --platform codex

Audit token counts across available local sources

sigrank watch --window 7d

Watch local usage updates

sigrank enroll

Bind a device using a connect code

sigrank submit --dry-run

Inspect a signed submission without sending it

sigrank submit

Publish a verified submission

sigrank proxy

Start the optional loopback usage proxy

sigrank --help

Show the current command reference

Optional usage proxy

Some clients do not persist all provider-reported usage in their session files. sigrank proxy can capture usage from compatible Anthropic or OpenAI API traffic when a client supports a custom API base URL.

The proxy is off by default and binds only to loopback. It forwards provider-bound request/response content and credentials in memory, but does not persist their content. Its local usage log contains token counts and metadata. See the privacy contract before using it.

How measurement works

Four token pillars feed the calculation:

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

This package distributes the Upsilon measurement engine through the sigrank CLI/MCP compatibility command. SigRank is the public leaderboard and proof surface on SignalAF. TTEOP defines the protocol semantics; MO§ES™ is the governance framework.

The implementation delegates canonical calculations through token-cascade to tteop-spec. See the TTEOP implementation profile and protocol compatibility notes.

Privacy

Local inspection does not publish your usage. Signed submissions include the four pillars plus account/device identifiers, signature, platform/version information, counts, and report metadata. Enrollment also sends a device label.

Prompt text, response text, source code, repository contents, and local file paths are not part of the ranked submission payload. The optional proxy's transient handling of content is separate from what is persisted or submitted.

Read the full payload and privacy details, and use submit --dry-run to inspect what would be sent.

Development

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

Run node index.mjs in a terminal for the dashboard, or configure the checked-out entry point in an MCP client. Release versions are managed by the repository's explicit publishing workflow; a documentation commit does not publish an npm release.

  • sigrank-app — SignalAF website, profiles, public API, and leaderboard.

  • token-cascade — measurement implementation consumed by this package.

  • TTEOP — protocol specification and semantics.

Contributing and security

See the contributing guide. Open bugs in GitHub Issues; report vulnerabilities privately through the security policy.

License

MIT.

Available Tools

25 tools
diagnose_cascadeA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A4.9/5.0
Behavior5/5

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

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

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

Conciseness5/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

discover_peersA
Read-only

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

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

Output Schema

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

TDQS

A4.4/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

enrollA
Idempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesthe key / connect code (SIGR-XXXXX-XXXXX-XXXXX) from Settings → New key (or Generate connect code)
device_labelNooptional label for this device (default: sigrank <version> · <platform>; hostnames are never sent unless you pass a label yourself)

Output Schema

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

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds substantial beyond-annotation context: it creates and stores a local ed25519 keypair at ~/.sigrank-mcp/identity.json, sends only the PUBLIC key, and binds the user to ToS/Privacy terms.

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

Conciseness3/5

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

Mostly front-loaded and informative, but the key-pasting instruction appears twice ('Paste the key from signalaf.com → Settings → New key' and later 'Need a new key? Click New key at signalaf.com → Settings, then paste it here'), which is redundant and pads the length.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description covers the prerequisite operator context, side effects (keypair file), privacy handling, and legal terms, leaving little an agent would need missing before calling it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both `code` (format SIGR-XXXXX) and `device_label` (default and hostname behavior). The description reinforces the code-source workflow but adds little syntax or semantics beyond what the schema provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (bind/enroll) and resource (THIS device's identity to the SigRank operator), with a concrete outcome ('your signed token runs cascade to the live board'). It is unique among siblings, none of which perform enrollment, though it doesn't explicitly name an alternative.

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

Usage Guidelines4/5

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

Clear context for use (first-run enrollment, paste the Settings key) and a recovery path for the 'need a new key' case. No explicit when-not or alternative routing, but none of the sibling tools overlap, so context is sufficient.

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

get_leaderboardA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
operatorsNoArray of ranked operators sorted by yield

TDQS

A4.9/5.0
Behavior5/5

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

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

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

Conciseness5/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

get_operatorA
Read-only

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

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

Output Schema

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

TDQS

A4.4/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

get_sigrank_standard_recordA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A3.5/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness4/5

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

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

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

Parameters3/5

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

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

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

Purpose4/5

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

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

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

Usage Guidelines2/5

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

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

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

rank_pasteA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A4.9/5.0
Behavior5/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters5/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

rank_windowsA
Read-onlyIdempotent

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

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

Output Schema

ParametersJSON Schema
NameRequiredDescription
windowsNoCascade results per window

TDQS

A4.6/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

self_improveA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A4.8/5.0
Behavior5/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

simulate_changeA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A4.7/5.0
Behavior5/5

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

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

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

Conciseness5/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

submit_pasteA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A4.6/5.0
Behavior5/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

submit_verifiedA
Idempotent

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

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

Output Schema

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

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover idempotency, non-destructiveness and closed-world, but the description adds rich behavior: the enroll prerequisite, ed25519 signing with a device key, the guarantee the private key never leaves the machine, the rule that only signed submissions from a trusted device rank, and the confirm/dry_run safety flow.

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

Conciseness4/5

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

Front-loads the core action and then the mechanics in a single dense but readable paragraph; nearly every clause earns its place. Minor redundancy between 'Token-only' and 'the private key never leaves your machine' keeps it just below top marks.

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

Completeness5/5

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

With an output schema present, return values need no explanation. The description nonetheless covers prerequisites, the safety confirmation flow, dry-run inspection, and the security model, leaving nothing an agent needs to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: confirm must reflect explicit user approval ('ask the user first') and dry_run returns the exact signed payload. window and platform defaults are also reinforced.

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

Purpose5/5

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

States a specific verb and resource ('Publish your LOCAL token runs to the SigRank board as a VERIFIED operator') plus the mechanism (signed path). This clearly delimits it from unsigned siblings like submit_paste/tokenpull_submit by emphasizing the enrolled, signed route.

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

Usage Guidelines4/5

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

Gives a concrete precondition ('Requires npx sigrank-mcp enroll first') and a clear workflow gating rule ('Publishing requires confirm: true — ask the user first; pass dry_run:true to inspect'). It implies but never explicitly names the alternative unsigned/paste paths, so the when-not-to-use contrast is left implicit.

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

suggest_improvementsA
Read-onlyIdempotent

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

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

Output Schema

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

TDQS

A4.6/5.0
Behavior5/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

tokenpullA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNosource platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, antigravity, grok, zcode, 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).

Output Schema

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

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the readOnlyHint/openWorldHint annotations with real behavioral context: reads token counts not message content, numbers stay local unless submitted (privacy model), and data-quality caveats (estimated=true when cacheCreate is absent, dataGap notes). Does not describe pagination or volume, but for a read-only local tool the disclosure is notably rich.

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

Conciseness4/5

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

Front-loads the core action in the first sentence and uses the following sentences for scoping and caveats. Three sentences with little waste, though 'with the cascade' is unexplained jargon that costs a small amount of clarity.

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

Completeness4/5

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

Output schema exists so return values need not be described; the description covers the operational essentials (privacy, local-only, data-quality flags) an agent needs. Minor gap: no guidance on sequencing with enroll/diagnose siblings that likely precede a successful pull.

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

Parameters3/5

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

Schema description coverage is 100% – the schema already documents the single platform enum, its default, 'multi' semantics, per-platform sources and setup requirements – so the description adds no parameter meaning. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Pull your LOCAL token usage from the platform's session logs') plus the outcome (ranked across four windows with the cascade). The 'zero paste' framing clearly distinguishes it from paste-based siblings like rank_paste/submit_paste, so an agent can route without opening schemas.

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

Usage Guidelines3/5

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

Usage is implied by 'zero paste' and 'LOCAL ... session logs', which signals this is the no-paste path versus its paste siblings, but there is no explicit when-to-use/when-to-prefer-an-alternative statement nor any mention of prerequisites like enroll or diagnose_cascade before running.

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

tokenpull_compareA
Read-only

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

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

Output Schema

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

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: parallel execution across four sources, the tokenpull-baseline delta model, cascade computation per source, and the platform-conditional rule (token-dash only for Claude). This is more than structured fields convey.

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

Conciseness4/5

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

The core action is front-loaded in the first clause and each sentence carries distinct information (sources, output model, cascade, applicability). It is dense with jargon (Υ, SNR, Leverage) and slightly overloaded, but no sentence is wasted.

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

Completeness5/5

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

With an output schema covering return shape and annotations covering the safety profile, the description supplies the remaining context an agent needs: which sources are read, the comparison baseline, the platform constraint, and that it is read-only and on-device.

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

Parameters4/5

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

Schema coverage is 100% with an enum and per-param description, so baseline 3 applies. The description adds meaning beyond the schema by clarifying that token-dash and the App only apply to the claude platform and that codex/others fall back to three sources, which directly informs how the platform parameter should be set.

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

Purpose5/5

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

States a specific verb (pull/compare) and resource (token usage) and enumerates the four sources it reads from, so the agent can distinguish it from generic tokenpull and tokscale siblings without opening a schema. The scope is unambiguous: side-by-side comparison with tokenpull as baseline.

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

Usage Guidelines4/5

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

Gives clear when-to-use contexts (validating numbers before submitting, understanding discrepancies between tools), which implicitly routes the agent relative to tokenpull_submit. It does not explicitly name an alternative tool to use instead for a given case, so it stops short of full when-not guidance.

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

tokenpull_submitA
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNoPreview only this time window (default: all 4 windows). Use "7d" for recent activity or "all" for all-time ranking.
codenameNoOperator codename for the ranking card display (e.g. "Iron Lotus"). Optional — used only for the local preview card, not for board submission.
platformNoSource platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, antigravity, grok, zcode, 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.

Output Schema

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

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, yet the description adds material context: it is PREVIEW-ONLY and does not publish, it discloses the auth constraint that forces that, and it states 'Token-only — no prompt content is read or transmitted', which is a privacy trait no annotation captures.

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

Conciseness4/5

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

Front-loaded with the action and the preview framing, then the routing/auth rationale, then the privacy note. Every sentence carries weight, though the pillar enumeration and endpoint paths make it denser than strictly needed for selection.

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

Completeness5/5

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

With annotations covering the safety profile and an output schema covering return values, the description only needed to cover the routing decision, the auth limitation, and the privacy boundary — all present. Nothing an agent needs to invoke this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the enum values, defaults, and file paths (e.g. ~/.local/share/devin/cli/sessions.db, SIGRANK_OTHER_PATH, 'multi' semantics) are documented in the schema itself, not the description. The description adds only the general notion of per-window pillars, so the baseline 3 is correct.

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

Purpose5/5

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

States a specific verb and resource ('pull your LOCAL token usage from session logs and compute the cascade per window') and immediately frames the scope ('the zero-paste preview flow'). It names the sibling alternative (submit_verified) and the web UI, so the agent can route without opening a schema.

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

Usage Guidelines5/5

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

Explicitly says when to use this tool (preview) and when not to (publishing), and names both alternatives with their mechanisms: submit_verified for signed posting, or the web UI. The reason for the split (ingest-paste requires an authenticated Supabase session MCP tools don't carry) is stated outright.

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

tokscale_breakdownA
Read-only

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

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

Output Schema

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

TDQS

A4.2/5.0
Behavior3/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

tokscale_competitive_intelA
Read-only

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

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

Output Schema

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

TDQS

A4.5/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters5/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

tokscale_cost_analysisA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A4.4/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

tokscale_developer_profileA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: filesystem paths are redacted (home dir → ~), scan path is redacted, and it discloses the return payload shape including a headless support flag. It stops short of describing scan scope limits or rate/performance characteristics, so a 4 rather than 5.

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

Conciseness4/5

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

Purpose and scope are front-loaded, and the exclusions come last, which is the right order. However the long enumeration of per-tool return fields (model mix, token pillars, cache_read_pct, session count, scan path, workspace breakdown, headless flag, summary keys) partly duplicates what the output schema already provides, so some sentences do not fully earn their place.

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

Completeness5/5

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

With zero parameters, an output schema already present, and annotations covering the safety profile, the description carries everything an agent needs: scope, redaction behavior, and routing to the correct sibling. Nothing required to invoke it correctly is absent.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The schema description ('No parameters. Profiles all locally-detected AI tools via tokscale.') is fully consistent with the description and nothing about parameter semantics is missing.

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

Purpose5/5

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

States a specific verb+resource — a per-developer usage profile across all 20+ AI tools detected by tokscale — and enumerates the dimensions it covers. It explicitly names the sibling it is not (tokscale_cost_analysis), so an agent can distinguish it without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use ('Use this to understand your full AI tool footprint — which tools you use, which models per tool, and how your usage is distributed') and an explicit when-not with the named alternative ('Do NOT use this for cost-only analysis — use tokscale_cost_analysis'). Nothing is left to inference.

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

tokscale_device_profileA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A4.8/5.0
Behavior5/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

tokscale_market_shareA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A4.7/5.0
Behavior4/5

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

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

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

Conciseness5/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

tokscale_mcp_usageA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A4.5/5.0
Behavior4/5

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

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

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

Conciseness5/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

watch_tokenpullA
Idempotent

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

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

Output Schema

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

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only supply idempotentHint and openWorldHint, so the description carries most of the burden and does so well: it discloses that the call never blocks or loops, that interval_s is advisory, that submit requires prior enrollment, that the default is preview-only, and that submission is rate-limited to once per 5 minutes per platform+window. Those are exactly the behavioral facts an agent cannot infer from the schema.

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

Conciseness5/5

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

Three sentences, each earning its place: the first states what one call does and the non-blocking invariant, the second explains the polling contract, the third covers the optional submit path and its limits. The non-blocking constraint is front-loaded before any optional behavior.

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

Completeness5/5

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

With an output schema present, return values need no explanation, and the description still covers the areas structured fields cannot: non-blocking semantics, polling cadence, enrollment prerequisite, default preview mode, and rate limits. An agent has everything needed to decide when and how to call it repeatedly.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds meaning beyond the schema by clarifying that interval_s does not cause blocking and that submit is capped at one publish per 5 minutes per platform+window. The default values and enrollment prerequisite are largely restated from the schema, so it is an incremental rather than transformative addition.

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

Purpose4/5

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

The description states a specific verb+resource: it pulls local token logs and returns the cascade for the watched window, with the added scoping that each call is a single non-blocking poll. That is far more than a restatement of the name. It does not, however, explicitly differentiate itself from the close siblings tokenpull, tokenpull_submit, or tokenpull_compare, so it stops short of a 5.

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

Usage Guidelines4/5

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

It gives clear operational context: re-call at your own cadence to watch for changes, and use submit:true (with an enrolled device) only when you want the window published rather than previewed. There is no explicit when-not guidance or named alternative tool for the compare/submit-one-shot cases, which keeps it below 5.

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

Tool Schema Changelog

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

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

TDQS

A3.9/5.0

Scored across 25 tools

Disambiguation3/5

There is real overlap among the ranking/preview tools: rank_paste, submit_paste, tokenpull_submit, rank_windows, and watch_tokenpull all compute the cascade with subtly different input sources. The descriptions are unusually explicit with 'Do NOT use this — use X instead' guidance, which rescues much of the ambiguity, but submit_paste being preview-only (despite 'submit' in its name) and the many near-duplicate preview flows still cause misselection risk.

Naming Consistency3/5

Readable groupings exist (tokscale_* namespace, tokenpull_* family, get_* prefix) but conventions are mixed: verb_noun (get_leaderboard, rank_paste), noun_verb (tokenpull_submit, tokenpull_compare, watch_tokenpull), and bare single words (enroll, tokenpull). The inconsistency between submit_paste / submit_verified / tokenpull_submit is the most confusing example.

Tool Count3/5

At 25 tools this is borderline heavy for the apparent scope, and several tools are near-redundant (multiple preview/rank flows, five distinct tokscale analytics tools). Each tool does have a stated purpose, but the surface could be consolidated without losing capability.

Completeness4/5

Coverage is strong: local pull, cascade math, diagnosis, simulation, suggestion, a full self-improve cycle, comparison, enrolled submission, leaderboard/operator lookup, peer discovery, plus deep tokscale analytics. Minor gaps remain around multi-window submission and PR-like review of submitted data, but core workflows are complete.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

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