SigRank MCP server
Summary: The SigRank MCP server lets you inspect local AI token usage, compute SigRank efficiency metrics, explore the public leaderboard, and optionally enroll a device to submit signed telemetry.
Pull and compare local token usage from supported platforms (Claude, Codex, Gemini, etc.) and rank across 7d/30d/90d/all-time windows, with zero-paste previews and watch mode.
Compute SigRank cascade metrics (Yield, SNR, Leverage, Velocity, 10xDEV, class) from pasted token counts or supplied pillars, and export portable Upsilon records.
Simulate, diagnose, and optimize token mix changes with local-only tools that show projected Yield deltas, class changes, efficiency leaks, and ranked improvement suggestions.
Read public leaderboard data: fetch ranked operators, get detailed operator profiles with per-window breakdowns, and discover mentors/peers/complementary operators (requires enrollment for peer discovery).
Enroll and submit a device using a connect code, then publish verified, ed25519-signed snapshots to the board with dry-run and explicit confirmation.
Analyze local AI tool usage via tokscale: per-model breakdowns, market share, developer profiles, model adoption trends, cost analysis, device fingerprinting, MCP server usage, and competitive intelligence.
Allows reading token counts from AMP threads directory (~/.local/share/amp/threads) for token usage analysis, providing per-message tokens.
Allows reading token counts from GitHub Copilot CLI sessions (~/.copilot/otel) for token usage analysis; requires the COPILOT_OTEL_ENABLED=true environment variable to be set before the session.
Allows reading token counts from Hermes state database (~/.hermes/state.db) for token usage analysis, extracting reasoning and output tokens per message.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SigRank MCP serverRank my paste: 100 input, 200 output."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SigRank 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
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 --onceThe 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
Sign in at signalaf.com and create a connect code in Settings.
Enroll this device, then inspect the dry-run payload.
Submit when you are ready to publish.
npx sigrank enroll
npx sigrank submit --dry-run
npx sigrank submitEnrollment 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
sigrankConnect 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 |
|
Calculate from supplied counts |
|
Read public results |
|
Explore possible changes |
|
Enroll and submit |
|
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 |
| Open the terminal dashboard |
| Print the public leaderboard |
| Audit token counts across available local sources |
| Watch local usage updates |
| Bind a device using a connect code |
| Inspect a signed submission without sending it |
| Publish a verified submission |
| Start the optional loopback usage proxy |
| 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:packagedRun 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.
Related projects
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 toolsdiagnose_cascadeARead-onlyIdempotent
Analyzes your token cascade and diagnoses where you're leaking efficiency. Takes your 4 pillars (input/output/cacheCreate/cacheRead) and produces a ranked list of efficiency leaks with severity (critical/warning/info), findings, and recommendations. Checks: cache leverage (are you rereading what you wrote?), velocity (are you generating enough output per input?), SNR (is your signal drowning in noise?), cache creation ratio (are you over-committing?), input bloat (is fresh input too high?), and 10xDEV (is the full cascade compounding?). Each finding includes an estimated Υ impact. Pure local math — no network, no submission. Use this BEFORE simulate_change to understand what's wrong, then use simulate_change to test fixes. Accepts the same input formats as rank_paste (JSON or 4 whitespace numbers).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cascade | No | |
| pillars | No | The 4 raw token pillars |
| summary | No | One-line summary of the operator's cascade health |
| diagnosis | No | Ranked list of efficiency leaks found, worst first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint/idempotentHint annotations, the description adds meaningful behavioral context: 'Pure local math — no network, no submission' and describes output structure (ranked leaks, severity, findings, recommendations, estimated impact).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence serves a purpose: purpose, checks performed, output details, and safety caveat. It is front-loaded and well organized for a complex analysis tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not detail return values, but it still covers what checks are performed, output type (ranked list with severity/findings/recommendations), and the local/no-submission behavior, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already documents the 'text' parameter at 100% coverage, so baseline is 3. The description adds value by specifying 'JSON or 4 whitespace numbers' and noting it accepts the same format as rank_paste, clarifying the expected input forms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Analyzes your token cascade and diagnoses where you're leaking efficiency') and names the resource. It distinguishes from siblings by positioning it as the pre-simulation diagnostic and referencing rank_paste's input format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance: 'Use this BEFORE simulate_change to understand what's wrong, then use simulate_change to test fixes.' This clearly tells the agent when to invoke this tool relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_peersARead-only
Discovers mentors, peers, and complementary operators for YOUR operator on the SigRank leaderboard. Uses your enrolled device identity — no codename needed. Finds operators you should learn from: (1) Mentors — 1-2 class tiers above you with similar cascade shapes, including the specific pillar delta that explains the yield gap (e.g. '12× your cache reads'). (2) Peers — same class tier, ranked by yield proximity. (3) Complementary — operators whose strength is your weakness. Use this after submit_verified to find who to learn from, then chain into self_improve with the mentor's pillar deltas as context. Requires enrollment (npx sigrank-mcp enroll). Intent: DISCOVER_PEERS.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of operators to return per category (default: 5, max: 20). | |
| platform | No | Filter peers by platform (default: your operator's primary platform). Use 'all' to search across all platforms. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cta | No | |
| peers | No | Operators in your class tier, ranked by yield proximity |
| mentors | No | Operators 1-2 class tiers above you with similar cascade shapes, including pillar deltas |
| summary | No | One-line summary of findings |
| your_profile | No | Your operator's current profile on the board |
| complementary | No | Operators whose strength maps to your weakness |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly=truehol, and the description adds key behavioral facts: it relies on the enrolled device identity and requires enrollment, and explicitly states no codename is needed. This goes beyond the annotation by clarifying a prerequisite and identity source, though it does not discuss side effects (which are minimal for a read operation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear numbered categories and a usage note, but slightly longer than necessary. Each section adds content (mentor/peer/complementary explanations), yet the level of detail could be trimmed without losing meaning. Still earns credit for front-loading the core purpose and providing terse category definitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (three output categories, identity-based logic), the description is thorough: it explains the rank-tier logic, what each category contains, the enrollment dependency, and returns are implied by the description. This covers all aspects an agent needs to invoke it correctly, and the output schema can handle details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already fully cover both parameters (n with default/range, platform with default behavior). The description adds that the operator's identity is auto-detected, but this is context for the overall tool, not a parameter-specific clarification. Since schema coverage is 100%, baseline is 3; no extra value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear, specific verb ('discovers') and resource ('mentors, peers, and complementary operators on the SigRank leaderboard'), with three enumerated categories that sharply distinguish from sibling tools like rank_paste or diagnose_cascade. Scope is explicit and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use instruction ('after submit_verification') and a recommended follow-up chain ('then chain into self_improvement with the mentor's pillar deltas as context'). This gives the agent a concrete decision path and eliminates guesswork about tool ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enrollAIdempotent
Bind THIS device to your SigRank operator so your signed token runs cascade to the live board. Paste the key from signalaf.com → Settings → "New key" (or "Generate connect code"). On first run it generates + stores a local ed25519 keypair (~/.sigrank-mcp/identity.json); only the PUBLIC key is ever sent. By enrolling you agree to the SignalAF Terms of Service (signalaf.com/terms) and Privacy Policy (signalaf.com/privacy). Need a new key? Click "New key" at signalaf.com → Settings, then paste it here.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | the key / connect code (SIGR-XXXXX-XXXXX-XXXXX) from Settings → New key (or Generate connect code) | |
| device_label | No | optional label for this device (default: sigrank <version> · <platform>; hostnames are never sent unless you pass a label yourself) |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error reason if status is error |
| status | No | Enrollment result |
| codename | No | Operator codename if enrolled |
| device_id | No | Local device ID |
| operator_id | No | Operator ID if enrolled |
| trust_status | No | Trust level of the device |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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_leaderboardARead-only
Fetches the live public SigRank leaderboard from signalaf.com. Reads all ranked operators sorted by yield (Υ = Cache Reads × Output / Input²) and returns an array of operator summaries. Each entry contains: codename (public display name), yield (Υ, the headline efficiency metric), leverage ratio (Cr/I = cache reads divided by input), velocity (O/I = output divided by input), class tier (one of 24 experience stages: 8 tiers × 3 sub-stages, e.g. ARCH+ I, REFINER II, IGNITER III), and rank position (integer, 1-based). Returns an empty array if no operators have submitted yet. Use this to see where operators stand overall, to find specific codenames for get_operator lookups, or to display the current rankings. Do NOT use this to check your own rank if you already know your codename — use get_operator instead for a single-operator profile with per-window breakdowns. After calling this, follow up with get_operator to get detailed metrics for any operator of interest.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| operators | No | Array of ranked operators sorted by yield |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and openWorldHint=false, but the description adds significant behavioral context that is not already captured: the data is 'live' and 'public', results are 'sorted by yield', the exact metric formulas (Υ = Cache Reads × Output / Input²) are given, and the empty-array behavior when no operators have submitted is disclosed. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but every sentence serves a purpose: it explains the resource, the sort order, the return fields, the edge case, and provides usage and exclusions. The structure is logical and front-loaded with the core action, followed by details and alternatives. No unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (indicated by context signals), the description still thoroughly explains all returned fields (codename, yield, leverage ratio, velocity, class tier, rank) and the empty-array behavior. This makes the tool's behavior fully understandable even without inspecting the output schema, covering all necessary context for a zero-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description and schema both confirm that it takes no parameters and always fetches the full leaderboard. Since there are no parameters to explain, this score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Fetches the live public SigRank leaderboard from signalaf.com' with a specific verb and resource. It also distinguishes itself from the sibling tool get_operator by noting that get_operator should be used for single-operator profiles. This is a clear, specific purpose that differentiates from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use this to see where operators stand overall, to find specific codenames for get_operator lookups, or to display the current rankings.' It also gives a clear when-not-to-use instruction: 'Do NOT use this to check your own rank if you already know your codename — use get_operator instead.' This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_operatorARead-only
Fetches one operator's live profile from the SigRank board by their codename. Reads the operator's current submission data from signalaf.com and returns their detailed metrics: yield (Υ), leverage ratio (Cr/I), velocity (O/I), class tier (one of 24 experience stages: 8 tiers × 3 sub-stages, e.g. ARCH+ I, REFINER II, IGNITER III), rank position (integer, 1-based), and per-window breakdowns for each time range (7d, 30d, 90d, all-time) with the four canonical pillars (input, output, cacheCreate, cacheRead) per window. Returns an error if the codename is not found on the board. Use this to look up any operator who has submitted to the board — codenames are public and visible on the leaderboard. Do NOT use this to browse all operators — use get_leaderboard for that. After calling this, you can use simulate_change to model what would happen if the operator adjusted their token mix.
| Name | Required | Description | Default |
|---|---|---|---|
| codename | Yes | The operator's public codename as shown on the SigRank leaderboard. Case-insensitive — "Ghost Falcon" and "ghost falcon" are equivalent. Must match a codename that exists on the board; returns an error if not found. To discover valid codenames, call get_leaderboard first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rank | No | 1-based rank position |
| class | No | |
| yield_ | No | Υ Yield metric |
| batched | No | Submission-based rolled-forward totals (never decrease when platforms delete old logs). Present when the operator has submission history. |
| windows | No | Per-window breakdowns (7d, 30d, 90d, all-time) |
| codename | No | Operator display name |
| leverage | No | Cr/I ratio |
| velocity | No | O/I ratio |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: reads live submission data from signalaf.com, returns an error if codename not found, and describes the detailed profile contents. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with the core purpose and contains useful usage and follow-up guidance. Slightly redundant with schema (error on not found, case-insensitivity), but each sentence earns its place by adding operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup tool with an output schema and annotations, the description is complete: it covers purpose, source, scope, error case, alternative tool, and downstream action. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the codename parameter is already well-described with case-insensitivity, error behavior, and how to discover valid values. The description adds public-visibility context but does not materially go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb+resource: 'Fetches one operator's live profile from the SigRank board by their codename.' It clearly differentiates from sibling get_leaderboard by explicitly scoping to a single operator and listing the returned metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: use to look up any operator who has submitted, do not use to browse all operators (use get_leaderboard instead), and mentions simulate_change as a follow-up. This is strong when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sigrank_standard_recordARead-onlyIdempotent
Build Upsilon's portable sigrank/0.1-draft compatibility record from available token telemetry. Input and output are required; unavailable cache telemetry remains null. Computes the canonical cascade locally through token-cascade and returns Yield, Leverage, Velocity, SNR, and 10xDEV. Upsilon is the measurement product; SigRank is the public leaderboard. No data is submitted or persisted.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Optional tool/client identifier. | |
| input | Yes | Fresh input tokens. | |
| model | No | Optional model identifier. | |
| output | Yes | Output tokens. | |
| provider | No | Optional provider identifier. | |
| timestamp | No | Optional ISO-8601 timestamp. Defaults to the current time. | |
| cache_read | No | Cache-read tokens, or null when unavailable. | |
| cache_write | No | Cache-write / cache-creation tokens, or null when unavailable. |
Output Schema
| Name | Required | Description |
|---|---|---|
| spec | Yes | Legacy wire identifier. Resolves to TTEOP tteop/0.1-draft. |
| source | Yes | |
| metrics | Yes | |
| protocol | Yes | |
| warnings | Yes | |
| telemetry | Yes | |
| timestamp | Yes | ISO-8601 record timestamp. |
| spec_status | Yes | Indicates this spec identifier is a legacy alias, not a current protocol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds meaningful behavior beyond that: computation happens locally 'through token-cascade,' and importantly 'No data is submitted or persisted,' plus the rule that unavailable cache telemetry stays null. These are real behavioral facts the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four front-loaded sentences with little waste; the core action comes first and the privacy note closes it. The Upsilon/SigRank clarification sentence is arguably expendable but does aid disambiguation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description covers what is computed, the local-computation model, and the no-persistence guarantee. For a tool with an output schema and full parameter documentation, this is close to complete; only the missing usage routing is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, giving a baseline of 3. The description restates that input/output are required and that missing cache telemetry stays null, which is slightly redundant with the schema but confirms the null semantics. No additional syntax or format detail is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Build Upsilon's portable sigrank/0.1-draft compatibility record from available token telemetry,' and names the concrete outputs (Yield, Leverage, Velocity, SNR, 10xDEV). It even disambiguates the two named products (Upsilon vs SigRank), which helps an agent orient. It lacks explicit differentiation from the many siblings, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named despite a large sibling set (rank_paste, diagnose_cascade, tokenpull, tokscale_breakdown, etc.). The agent must infer the trigger condition from the purpose statement alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_pasteARead-onlyIdempotent
Computes the SigRank yield cascade from a paste of token counts. Parses the input, runs the full cascade math locally (no network calls), and returns: yield (Υ, the headline efficiency metric, Υ = Cache Reads × Output / Input²), snr (signal-to-noise ratio), leverage (Cr/I = cache reads divided by input), velocity (O/I = output divided by input), dev10x (10xDEV score), class (operator experience stage — 24 stages = 8 tiers × 3 sub-stages I/II/III, e.g. ARCH+ I, REFINER II, IGNITER III, or UNCLASSED for empty input), mode (detected working mode), and a deterministic prose "card" summarizing the result in plain English. Accepts two input formats: (1) JSON object {"input":N,"output":N,"cacheCreate":N,"cacheRead":N} or (2) four whitespace-separated numbers in order: input output cacheCreate cacheRead. Returns an error if the input is malformed or has negative values. Use this for a quick one-off ranking without submitting to the board. Do NOT use this to submit your score — use submit_paste instead, which both ranks and publishes. Do NOT use this if you want to rank all four time windows at once — use rank_windows for that. After calling this, use submit_paste to publish the result if you want to appear on the leaderboard.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token counts to rank. Two formats accepted: (1) JSON object {"input":N,"output":N,"cacheCreate":N,"cacheRead":N} where all values are non-negative integers, or (2) four whitespace-separated numbers in order: input output cacheCreate cacheRead. Get these from `ccusage` output, the Claude Max usage dashboard, tokscale, or any token reader. Example valid input: {"input":1000000,"output":500000,"cacheCreate":50000,"cacheRead":800000} |
Output Schema
| Name | Required | Description |
|---|---|---|
| snr | No | Signal-to-noise ratio |
| card | No | Deterministic prose summary of the cascade result |
| mode | No | Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence |
| class | Yes | Operator class tier (dev10x taxonomy) |
| yield | Yes | Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²) |
| dev10x | No | 10xDEV score (log10 of the cascade product) |
| pillars | No | The four raw token pillars the cascade was computed from |
| leverage | No | Cr/I — cache reads divided by input |
| velocity | No | O/I — output divided by input |
| warnings | No | Parse or data warnings if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds crucial context beyond annotations: 'runs the full cascade math locally (no network calls)', 'deterministic prose' (idempotency), and error behavior ('Returns an error if the input is malformed or has negative values'). It also discloses the exact metric formulas and stage classification, making the tool's behavior fully transparent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely packed without fluff. It is front-loaded with the core purpose, then systematically covers outputs, input formats, error conditions, and usage guidance. Every sentence adds information, though it could arguably be trimmed slightly; however, for a tool with this complexity and the need to distinguish from siblings, the length is justified. The structure is logical and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's complexity, the description is entirely self-contained. It covers purpose, usage boundaries, input syntax, output semantics, error handling, local computation, and integration with submit_paste. The output schema is present, yet the description still explains each return field (yield, snr, etc.) and even the classification stages. With one parameter and no nested objects, this is more than complete—it is exceptionally thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds substantial meaning beyond the schema. It explains both accepted input formats in detail, specifies the order of numbers, clarifies that values must be non-negative integers, and provides a concrete example: '{"input":1000000,"output":500000,"cacheCreate":50000,"cacheRead":800000}'. It also links the parameters to the output metrics (e.g., yield formula), giving the agent a deeper understanding than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Computes the SigRank yield cascade from a paste of token counts.' It clearly distinguishes from siblings by explicitly naming submit_paste and rank_windows as alternatives, and describes the precise outputs (yield, snr, leverage, velocity, dev10x, class, mode, prose card). This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use ('Use this for a quick one-off ranking without submitting to the board') and when not to use it, naming two alternatives: 'Do NOT use this to submit your score — use submit_paste instead' and 'Do NOT use this if you want to rank all four time windows at once — use rank_windows for that.' It also advises calling submit_paste afterward to publish. This is exemplary usage guidance with concrete exclusions and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_windowsARead-onlyIdempotent
Rank all four time windows (7d/30d/90d/all-time) in one call from a dashboard paste — paste the full table from ccusage, tokscale, or the Claude Max usage dashboard and get the cascade (Υ, SNR, Leverage, Velocity, 10xDEV, class, card) for each window. Each window is parsed and scored independently. Named keys required (input/output/cacheCreate/cacheRead); positional order is NOT safe here (dashboards list cache_read before cache_create — see WINDOWED_PROFILES gotcha). Omit windows you don't have — partial input is allowed (1–4 windows). Does NOT submit to the board; use tokenpull_submit for a local zero-paste preview, or submit_verified to publish via the enrolled-device path.
| Name | Required | Description | Default |
|---|---|---|---|
| 7d | No | ccusage/tokscale paste or JSON for the 7-day window (optional) | |
| 30d | No | ccusage/tokscale paste or JSON for the 30-day window (optional) | |
| 90d | No | ccusage/tokscale paste or JSON for the 90-day window (optional) | |
| all | No | ccusage/tokscale paste or JSON for the all-time window (optional) | |
| source_tool | No | which token reader produced the paste (for cross-tool variance tracking) |
Output Schema
| Name | Required | Description |
|---|---|---|
| windows | No | Cascade results per window |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, openWorldHint=false), and the description adds real behavioral context beyond them: each window is parsed and scored independently, positional order is unsafe because dashboards list cache_read before cache_create, and windows may be omitted for partial input. It stops short of describing how malformed pastes or conflicting windows are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and output set are front-loaded in the first sentence, with routing, input constraints, and the non-submission caveat following in focused clauses. It is dense but nearly every clause carries distinct routing or correctness information; slightly long but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values legitimately need not be explained. The description covers source formats, per-window independence, key requirements, partial-input tolerance, and the submission boundary, which is everything an agent needs to call this read-only tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the four window strings and source_tool enum are documented. The description still adds value beyond the schema by specifying the required named keys (input/output/cacheCreate/cacheRead), warning that positional order is not safe, and pointing to the WINDOWED_PROFILES gotcha.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rank) and resource (all four time windows 7d/30d/90d/all-time) and names the sources (ccusage, tokscale, Claude Max dashboard) plus the outputs produced (cascade: Υ, SNR, Leverage, Velocity, 10xDEV, class, card). An agent can distinguish it from siblings like rank_paste and tokscale_breakdown without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states what it does NOT do (does not submit to the board) and routes to the correct alternatives with conditions: tokenpull_submit for a local zero-paste preview, submit_verified to publish via the enrolled-device path. It also clarifies partial input (1-4 windows) is allowed and named keys are required, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
self_improveARead-onlyIdempotent
Runs the full self-improvement cycle in one call: (1) gets your current token pillars — either from the provided text or by running tokenpull on your local logs, (2) diagnoses where you're leaking efficiency (diagnose_cascade), (3) generates ranked improvement suggestions (suggest_improvements), (4) simulates the top suggestion (simulate_change), and (5) returns the complete cycle: diagnosis + suggestions + the simulated impact of the best change. This is the 'one-click optimize' tool — call it at the end of a session to see what to improve next time. If you provide pillars in text, it skips the tokenpull step. If you omit text, it runs tokenpull first (requires local ccusage logs). Pure local math — no network, no submission. The scope parameter adds mode detection (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) and scoped analysis: 'daily' (default — current behavior + mode), 'weekly' (compound into weekly snapshots + report artifact), 'trend' (30d/90d trajectory analysis).
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Optional: token pillars — ccusage JSON or "input output cacheCreate cacheRead". If omitted, runs tokenpull to get current pillars from local logs. | |
| scope | No | Analysis scope: "daily" (default — current behavior + mode detection), "weekly" (compound daily rows into weekly snapshots + report artifact with badges), "trend" (30d/90d trajectory + phase patterns). Daily modes never leave the machine — only weekly distribution goes in submitted reports. | |
| window | No | Which time window to pull when running tokenpull (default: 30d). Ignored if `text` is provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Detected mode { mode, confidence } — present when scope is daily/weekly/trend |
| trend | No | Trend analysis (trend scope) |
| advice | No | Advice for next session (daily scope) |
| report | No | Weekly report artifact (weekly scope) |
| pillars | No | The 4 raw token pillars used |
| diagnosis | No | Efficiency leaks found (from diagnose_cascade) |
| assessment | No | One-line assessment for daily scope |
| suggestions | No | Ranked improvements (from suggest_improvements) |
| cycle_summary | No | One-line summary of the full cycle |
| quality_score | No | Yield relative to mode expectation (daily scope) |
| best_simulation | No | Simulated result of the top suggestion |
| current_cascade | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint and idempotentHint. The description adds significant behavioral context beyond these: it details the internal steps, notes that if `text` is omitted it "runs tokenpull first (requires local ccusage logs)", and explicitly states "Pure local math — no network, no submission." It also clarifies scope behavior (daily never leaves machine; weekly distribution appears in report artifacts). This fully discloses safety and data handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but every sentence carries information. It uses a numbered step list to structure the pipeline, which aids readability. It could be slightly tightened (e.g., the scope explanation repeats some schema content), but overall it is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a 5-step pipeline, 3 parameters, output schema present, and annotations available, the description covers the full usage context: when to call, what happens under different input conditions, scope variations, return value (cycle of diagnosis + suggestions + simulated impact), and safety highlights. It leaves no major gaps for an agent to misuse the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra meaning for `text` (conditional skipping of tokenpull, requires local logs when omitted) and for `scope` (adds mode detection and scoped analysis options). It does not add new details for `window` beyond the schema, but the added conditions for the other two params raise it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: "Runs the full self-improvement cycle in one call" and then enumerates the exact pipeline steps (gets pillars, diagnoses, generates suggestions, simulates, returns results). It clearly distinguishes itself from sibling tools that perform individual steps (tokenpull, diagnose_cascade, suggest_improvements, simulate_change) by branding itself as the "one-click optimize" orchestrator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: "call it at the end of a session to see what to improve next time." It also explains conditional usage based on input: if `text` is provided, tokenpull is skipped; if omitted, tokenpull runs and requires local ccusage logs. It even notes the `scope` options and their implications. While it doesn't explicitly list when NOT to use it, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_changeARead-onlyIdempotent
The first PRESCRIPTIVE SigRank tool — 'what if I changed my token mix?' Takes your current 4 pillars (input/output/cacheCreate/cacheRead) and one or more proposed changes, runs the canonical cascade on BOTH the current and simulated values, and returns the exact Υ Yield delta, class change, and per-metric diffs. This is the 'show me the payoff before I do the work' primitive: no network, no submission, pure local math. Use it to answer 'would increasing my cache-read by 50k tokens actually move my class?' before you change your workflow. Accepts the current pillars as JSON or 4 numbers (same as rank_paste) plus a changes object with any of the 4 pillar names mapped to new absolute values OR relative deltas (e.g. {cacheRead: '+50000'} or {input: 800000}).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Current token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste). | |
| changes | Yes | Proposed changes to apply. Keys: input, output, cacheCreate, cacheRead. Values are either absolute numbers (replace) or strings starting with +/- for relative deltas (add/subtract). Omitted pillars are unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| current | No | |
| simulated | No | |
| yield_delta | No | Υ Yield change (simulated - current) |
| class_change | No | Class tier change description |
| metric_diffs | No | Per-metric before/after diffs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, idempotentHint=true), the description discloses key behavioral traits: it runs the canonical cascade on BOTH current and simulated values, returns an exact yield delta (implying deterministic math), and specifically notes 'no network, no submission, pure local math.' This adds meaningful context about what the tool does and does not do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then explains the use case, and finally details the input format. Every sentence earns its place: it explains what the tool does, why to use it, and how to use it. The length is justified given the tool's complexity, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, inputs, outputs (yield delta, class change, per-metric diffs), and constraints (local, read-only, no submission). It also includes a practical example use case. Given the presence of an output schema and a clear input schema, the description is complete enough for an agent to decide when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for both parameters (100% coverage). The description adds value by clarifying that the input format is 'same as rank_paste', giving explicit examples for relative deltas ('{cacheRead: '+50000'}') and absolute values ('{input: 800000}'), and restating the semantics of omitted pillars. This reinforces the schema without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a 'what if I changed my token mix?' simulation that computes yield deltas, class changes, and per-metric diffs. It uses a specific verb ('simulate') and resource ('token mix'), and explicitly distinguishes itself from siblings as 'the first PRESCRIPTIVE SigRank tool' and a 'show me the payoff before I do the work' primitive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use it ('before you change your workflow') and provides a concrete example question ('would increasing my cache-read by 50k tokens actually move my class?'). It also signals when not to use it: 'no network, no submission' and 'pure local math', implying it is for analysis only. However, it does not explicitly name alternative sibling tools, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_pasteARead-onlyIdempotent
Ranks a paste of token counts locally and shows the cascade result (yield, leverage, velocity, class, card). This is a PREVIEW-ONLY tool — it does not publish to the board. The board's /api/v1/ingest-paste endpoint now requires an authenticated Supabase session, which MCP tools do not carry. To publish to the leaderboard, use submit_verified (which signs and posts to /api/v1/snapshots via the enrolled-device path) or submit directly through the signalaf.com web UI. Use this when you have token counts from ccusage or a dashboard and want to see your score instantly. Do NOT use this if you want to pull your local usage automatically — use tokenpull_submit for the zero-paste flow. Do NOT use this for multi-window dashboard pastes — use rank_windows to rank them first.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token counts to rank. Two formats: (1) JSON {"input":N,"output":N,"cacheCreate":N,"cacheRead":N} from ccusage (preferred), or (2) four whitespace-separated numbers: input output cacheCreate cacheRead. Example: {"input":1000000,"output":500000,"cacheCreate":50000,"cacheRead":800000} | |
| codename | No | Operator codename for the ranking card display (e.g. "Ghost Falcon"). Optional — used only for the local preview card, not for board submission. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error or skip reason if status is not ok |
| status | No | Submission status |
| preview | No | |
| server_response | No | Server-side response including new rank if accepted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already assert readOnlyHint and idempotentHint, and the description is fully consistent with that while adding real context: it does not publish, and the board's ingest endpoint now requires an authenticated Supabase session that MCP tools do not carry. This explains the behavior rather than just restating the safety flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Longer than average but front-loaded with the critical preview-only constraint and the routing rules that matter most. Every sentence carries routing or behavioral value; only mild trimming of the endpoint detail would be possible without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values needn't be explained, and the description still names the cascade fields produced. Combined with the strong routing guidance and the preview-only clarification, an agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both text and codename, including the JSON and whitespace-separated formats. The description adds no parameter detail beyond the schema, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ranks a paste of token counts locally') and immediately resolves the naming trap by declaring it PREVIEW-ONLY rather than a submission. It names the cascade outputs (yield, leverage, velocity, class, card), so the agent knows exactly what the tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('when you have token counts from ccusage or a dashboard') and two explicit when-not rules with named alternatives: tokenpull_submit for the zero-paste flow and rank_windows for multi-window pastes. It also points to submit_verified and the web UI for actual publishing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_verifiedAIdempotent
Publish your LOCAL token runs to the SigRank board as a VERIFIED operator — the enrolled, signed path. Reads your pillars (tokenpull), builds the canonical Schema 1.0 snapshot per window, ed25519-signs it with your device key, and POSTs to /api/v1/snapshots. Requires npx sigrank-mcp enroll first (a bound device). Only signed submissions from a trusted device rank on the board. Token-only; the private key never leaves your machine. Publishing requires confirm: true (ask the user first); pass dry_run:true to inspect the exact signed payload without publishing and without confirm.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | submit only this window (default: all 4) | |
| confirm | No | REQUIRED to publish: must be true, set only after the user has explicitly approved submitting. Not needed with dry_run:true. | |
| dry_run | No | build + sign but do NOT publish — returns the exact payload that would be POSTed (token counts only), so you can inspect before submitting | |
| platform | No | source platform (default: claude). 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active); empty windows are skipped. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | Error or skip reason if status is not ok |
| status | No | Submission status |
| preview | No | |
| server_response | No | Server-side response including new rank if accepted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations 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.
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.
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.
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.
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.
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_improvementsARead-onlyIdempotent
Generates ranked, simulated improvement suggestions for your token cascade. Takes your 4 pillars, tests multiple improvement strategies (increase cache reads, reduce fresh input, increase output, optimize cache creation), simulates each with the canonical cascade engine, and returns them ranked by Υ yield impact. Each suggestion includes: the action, which pillar to change, how much to change it, the projected Υ after the change, the yield delta, the projected class tier, and a rationale. Also returns the single highest-impact change (best_single_change). Pure local math — no network, no submission. Use this after diagnose_cascade to get actionable next steps, then use simulate_change to fine-tune before committing. Accepts the same input formats as rank_paste.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste). |
Output Schema
| Name | Required | Description |
|---|---|---|
| suggestions | No | Ranked recommendations, highest Υ impact first |
| current_class | No | Current class tier |
| current_yield | No | Current Υ before any changes |
| best_single_change | No | The single highest-impact change |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, but the description adds significant behavioral context beyond these: 'Pure local math — no network, no submission.' It also describes the internal simulation and ranking process, and the output structure. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it starts with a concise summary of the tool's purpose, then details the process and output, and ends with usage guidance. It is informative but slightly verbose; a few sentences could be trimmed without losing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description is remarkably complete. It covers the input format, the improvement strategies tested, the simulation engine, the ranking by Υ yield, the output details, and the usage sequence relative to sibling tools. The presence of an output schema (not shown) reduces the burden on the description, but the description still provides ample context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one property 'text' described as 'Token pillars — ccusage JSON or "input output cacheCreate cacheRead" (same format as rank_paste).' The description adds value by clarifying it requires the 4 pillars and explaining the format, thus going beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it generates ranked simulated improvement suggestions for a token cascade. It specifies the input (4 pillars), the process (multiple strategies, simulation with canonical cascade engine), and the output (ranked suggestions including best_single_change). It distinguishes itself from siblings by referencing the sequence: use after diagnose_cascade and before simulate_change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use this after diagnose_cascade to get actionable next steps, then use simulate_change to fine-tune before committing.' It also notes the tool accepts the same input formats as rank_paste. However, it does not explicitly state when not to use it or list alternatives beyond the referenced siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tokenpullARead-only
Pull your LOCAL token usage from the platform's session logs and rank it across the four windows (7d/30d/90d/all-time) with the cascade — zero paste. Token-only: reads usage counts not message content. The numbers stay on your machine unless you submit them. Some platforms may have partial data (estimated=true when cacheCreate isn't available) or a dataGap note when the log format doesn't expose raw token counts.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, 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
| Name | Required | Description |
|---|---|---|
| card | No | Deterministic prose summary |
| note | No | Reminder that one snapshot is returned per call — re-call to detect changes. |
| window | No | The watched window (watch_tokenpull watches one window per call) |
| cascade | No | |
| pillars | No | The four raw token pillars for the watched window |
| messages | No | Number of messages in the watched window |
| platform | No | Source platform name |
| auth_submit | No | Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only). |
| generatedAt | No | ISO timestamp of the pull |
| poll_interval_s | No | Advisory poll cadence echoed back (does not make the call block) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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_compareARead-only
Pull token usage from ALL four local sources in parallel — tokenpull (JSONL canon), ccusage CLI, token-dashboard SQLite, and tokscale report — and return them side-by-side with delta % vs tokenpull as the baseline. Also computes the cascade (Υ, SNR, Leverage, class) for each source so you can see how each verifier scores. Useful for validating your numbers before submitting, or understanding discrepancies between tools. Claude only for token-dash; codex and others use tokenpull + ccusage + tokscale. Token-only, on-device.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | platform to compare (default: claude). token-dash and App only available for claude. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sources | No | Side-by-side comparison of each token source |
| platform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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_submitARead-onlyIdempotent
Pull your LOCAL token usage from session logs and compute the cascade per window — the zero-paste preview flow. Reads the four canonical pillars (input, output, cacheCreate, cacheRead) per window from your local logs and computes yield, leverage, velocity, class, and card. This is a PREVIEW-ONLY tool — it does not publish to the board. The board's /api/v1/ingest-paste endpoint now requires an authenticated Supabase session, which MCP tools do not carry. To publish to the leaderboard, use submit_verified (which signs and posts to /api/v1/snapshots via the enrolled-device path) or submit directly through the signalaf.com web UI. Token-only — no prompt content is read or transmitted.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Preview only this time window (default: all 4 windows). Use "7d" for recent activity or "all" for all-time ranking. | |
| codename | No | Operator codename for the ranking card display (e.g. "Iron Lotus"). Optional — used only for the local preview card, not for board submission. | |
| platform | No | Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, 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
| Name | Required | Description |
|---|---|---|
| reason | No | Error or skip reason if status is not ok |
| status | No | Submission status |
| preview | No | |
| server_response | No | Server-side response including new rank if accepted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already 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.
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.
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.
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.
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.
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_breakdownARead-only
Show a per-model breakdown of your token usage across all platforms detected by tokscale. Models under the threshold (default 1%) are lumped into 'other' to keep the display clean. Useful for seeing which models you actually use per platform (e.g. claude-opus-4-8 76%, claude-sonnet-4-6 11%, other 0.3%). Returns { platform: [{ model, input, output, cacheRead, cacheCreate, pct }] }.
| Name | Required | Description | Default |
|---|---|---|---|
| threshold | No | Models below this fraction of their platform's total tokens are lumped into 'other'. Default 0.01 (1%). Set 0 to see every model. |
Output Schema
| Name | Required | Description |
|---|---|---|
| platforms | No | Map of platform name → array of { model, input, output, cacheRead, cacheCreate, pct } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already include readOnlyHint=true, so the description does not need to state that this is a read operation. The description adds context about the lumping behavior and the return format, but no additional behavioral traits beyond what annotations already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus an example and return structure. It is concise, front-loaded, and every sentence adds value. No wasted words or redundancies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameter, example usage, and return format. It is adequate given the presence of annotations and output schema. A slight improvement could be mentioning that this is a read-only operation, but that is already covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the threshold's effect (lumping models below threshold into 'other') and giving an example, which goes beyond the schema's description of 'fraction of their platform's total tokens'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Show'), the resource ('per-model breakdown of your token usage'), and the scope ('across all platforms detected by tokscale'). It effectively distinguishes this tool from siblings by specifying the model-level breakdown, which is unique among the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: to see which models you actually use per platform. It provides guidance on the threshold parameter and its default behavior, but does not explicitly mention when not to use it or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tokscale_competitive_intelARead-only
Competitive intelligence for any AI tool company. Pass a target tool (by tokscale client slug like 'claude', 'codex', 'devin-cli' or canonical platform name like 'devin', 'other') and get: the target's rank by tokens among all detected tools, its full profile (tokens, cost, model mix, cache_read_pct, cost_per_million_tokens, market share), and a head-to-head comparison against every competitor (each competitor's tokens, cost, model_count, share, cost_per_million_tokens). Returns market_totals for context. If the target is not found, lists all detected clients. Use this to benchmark one AI tool against its competitors on this machine. All data is local — this is your own usage, not aggregate market data.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | The AI tool to analyze. Accepts a tokscale client slug (e.g. 'claude', 'codex', 'devin-cli', 'copilot') or a canonical platform name (e.g. 'devin', 'claude', 'other'). Case-insensitive. To discover valid slugs, call tokscale_market_share first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable or target is empty |
| found | No | Whether the target was found in local data |
| target | No | The resolved target slug(s) |
| competitors | No | All other detected tools with comparison metrics |
| market_totals | No | Aggregate market context: { tokens, cost, messages, tool_count } |
| rank_by_tokens | No | Target's rank among all detected tools by token volume |
| target_profile | No | Target's full usage profile with model mix and market share |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that all data is local (own usage, not aggregate) and explains fallback behavior (lists clients if target not found). ReadOnlyHint is already true, so no contradiction. Adds useful context about scope and data source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single informative paragraph with no wasted words. It could be slightly more structured (e.g., bullet points), but it is concise and front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter, complete schema coverage, and an output schema (not shown but exists), the description covers all needed context: input format, return data details, fallback behavior, and data source. It is fully adequate for correct tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'target' is fully described: it accepts client slugs or canonical names, case-insensitive, and the description provides examples and suggests discovering valid slugs via another tool. This adds significant meaning beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides competitive intelligence for any AI tool company, specifying that you pass a target tool and it returns rank, full profile, head-to-head comparisons, and market totals. It distinguishes from siblings by focusing on single-tool benchmarking against competitors using local usage data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (to benchmark one AI tool against competitors) and what happens if target not found (lists all detected clients). It suggests calling tokscale_market_share for valid slugs. However, it does not explicitly state when not to use or provide alternatives to other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tokscale_cost_analysisARead-only
Cost analysis per developer per model from your local tokscale data. Returns a per-client × per-model cost breakdown with cost_per_million_tokens, cost_per_message, and share_cost. Includes a per-client cost rollup and totals: total_cost, total_tokens, avg_cost_per_million_tokens, most_expensive_model, cheapest_per_token. Use this to see exactly where your AI spend goes — which tools and models cost the most and which give the best value per token. Do NOT use this for market share — use tokscale_market_share for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| totals | No | Aggregate cost totals and extremes |
| entries | No | Per-client×per-model cost rows sorted by cost desc |
| client_rollup | No | Per-client cost summary with share_cost and cost_per_million_tokens |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the read-only nature is covered. The description adds behavioral context by detailing the output structure (cost breakdown, rollups, totals) and the data source (local tokscale data). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and includes necessary details without excessive verbosity. Every sentence serves a purpose, though some minor redundancy exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters and an output schema exists, the description sufficiently explains the return values and data source. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100%. The description states 'No parameters' and explains that the cost breakdown is derived from tokscale models data, which adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: cost analysis per developer per model from local tokscale data. It specifies the output structure (per-client × per-model breakdown with metrics) and explicitly distinguishes it from the sibling tool tokscale_market_share for market share analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('Use this to see exactly where your AI spend goes') and when-not-to-use ('Do NOT use this for market share — use tokscale_market_share for that'), with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tokscale_developer_profileARead-only
Per-developer usage profile across all 20+ AI tools detected by tokscale on this machine. For each tool: model mix (per-model tokens/cost/messages/performance), token pillars (input/output/cache_read/cache_write/reasoning), cache_read_pct, session count, scan path (redacted to ~), workspace breakdown, and headless support flag. Returns a summary with tool_count, total_cost, dominant_tool. All filesystem paths are redacted (home dir → ~). Use this to understand your full AI tool footprint — which tools you use, which models per tool, and how your usage is distributed. Do NOT use this for cost-only analysis — use tokscale_cost_analysis for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| tools | No | Per-tool profile with model mix, token pillars, session counts, workspace count |
| summary | No | Aggregate summary: { tool_count, total_cost, total_tokens, total_messages, avg_cost_per_tool, dominant_tool } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true 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.
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.
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.
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.
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.
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_profileARead-only
Device fingerprinting: profiles this machine's AI tool footprint — which AI tools are installed, where their session logs live (paths redacted to ~), how many sessions and messages each has, when the machine was active (daily activity + day-of-week distribution), session concurrency, and longest continuous session. Combines tokscale clients + graph data. All filesystem paths are redacted so no local username leaks. Use this to audit your own machine's AI tool installation and activity pattern. This is local-only — it profiles the current machine, not remote devices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| summary | No | Cost summary from graph: total_tokens, total_cost, avg_per_day, max_single_day |
| activity | No | Daily activity + day-of-week token distribution |
| sessions | No | Session metrics: count, total/longest active time, max concurrent |
| date_range | No | { start, end } of the activity data |
| installed_tools | No | Detected AI tools with redacted session paths and message counts |
| active_tool_count | No | Tools whose session path exists on disk |
| installed_tool_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. Description adds valuable behavioral context: paths are redacted to prevent local username leaks. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is informative but slightly verbose; could be tightened. However, all sentences add value, and key info is front-loaded. Acceptable for a parameterless tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description covers all relevant aspects: purpose, scope, data privacy, and local-only nature. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters (0 params, baseline 4). Description correctly notes 'No parameters. Profiles the local machine via tokscale.' The description adds no extra param semantics but is accurate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it profiles the local machine's AI tool footprint, listing specific data points (installed tools, session logs, activity patterns). The 'local-only' distinction effectively differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use this to audit your own machine's AI tool installation and activity pattern.' Also clarifies context by stating 'This is local-only — it profiles the current machine, not remote devices,' which helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tokscale_mcp_usageARead-only
MCP server usage patterns from your local tokscale data. Reports which MCP servers tokscale detected on this machine, the detection window, and active days in that window. tokscale currently exposes detected MCP servers as a set (not per-session attribution), so the report notes the detection window. Use this to see which MCP servers are active on your machine. If no servers are detected, the response explains that MCP server tracking requires a tokscale version that records per-session MCP attribution.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Explanation of the MCP server data granularity |
| error | No | Present if tokscale is unavailable |
| servers | No | Detected MCP servers: [{ name, detected: true }] |
| server_count | No | |
| detection_window | No | { start, end } date range |
| active_days_in_window | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds behavioral context: data source (local tokscale), detection window, and handling of no servers detected. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no unnecessary words. It is front-loaded with the purpose and structured logically, covering key points in a few sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool, the description is complete: it explains the data source, report contents, and behavior when no servers are detected. No gaps given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema description coverage is 100%. The description adds meaning by explaining the report contents (detection window, active days) and the case of no detection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports MCP server usage patterns, including detected servers, detection window, and active days. It distinguishes itself from sibling tools by focusing on local tokscale MCP server detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (to see which MCP servers are active) and hints at the absence of results scenario. However, it does not explicitly mention when not to use or directly compare to siblings, which have different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tokscale_model_trendsARead-only
Model adoption trends over time from your local tokscale data. Combines monthly aggregates with per-day contribution data to build a model-level adoption timeline: each model's first_seen / last_seen / active_days / tokens / clients, plus a month-by-month adoption curve showing how many new models appeared each month. Returns months[], models[], and adoption_curve[]. Use this to track which AI models you adopted when, and how your model mix evolved over time. Do NOT use this for cost trends — use tokscale_cost_analysis for current cost breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present if tokscale is unavailable |
| models | No | Per-model adoption: { model, first_seen, last_seen, active_days, tokens, cost, messages, client_count, clients } |
| months | No | Per-month aggregates: { month, models, model_count, input, output, cache_read, messages, cost } |
| date_range | No | { start, end } date range of the data |
| adoption_curve | No | Per-month new-model count: { month, new_models, new_model_count, total_models } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation, detailing data sources (monthly aggregates + per-day contribution) and output structure (first_seen, last_seen, active_days, tokens, clients, adoption_curve). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, front-loading the main purpose, then providing details. Every sentence adds value, though it could be slightly more concise. However, it remains clear and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description adequately explains the output structure (months[], models[], adoption_curve[]) and the data fields. Could mention scope (all time?) but sufficient for a read-only reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline 4 applies. The description explicitly states 'No parameters. Derives trends from tokscale monthly + graph data,' which is clear and sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tracks 'Model adoption trends over time' from tokscale data, specifying the output includes monthly aggregates, per-day data, and model-level timeline fields. It also distinguishes from sibling tool tokscale_cost_analysis by explicitly stating not to use for cost trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (track model adoption and evolution) and when not to use (for cost trends, use tokscale_cost_analysis). This is a clear directive for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_tokenpullAIdempotent
One poll per call: pulls your local token logs and returns the current cascade for the watched window — the tool never blocks or loops. Re-call at your desired cadence to watch for changes (interval_s is advisory only and echoed back as poll_interval_s). With submit:true (and an enrolled device) each call may also sign + publish the watched window to the board, rate-limited to once per 5 min per platform+window; default is preview-only (no submit).
| Name | Required | Description | Default |
|---|---|---|---|
| submit | No | auto-submit the watched window to the board as a VERIFIED operator each poll (requires `enroll`; default false = preview only) | |
| window | No | which window to watch (default: 7d — most sensitive to recent activity) | |
| platform | No | platform to watch (default: claude) | |
| interval_s | No | advisory poll cadence in seconds (default: 60, min: 10) — echoed back as poll_interval_s; does not make the call block or loop |
Output Schema
| Name | Required | Description |
|---|---|---|
| card | No | Deterministic prose summary |
| note | No | Reminder that one snapshot is returned per call — re-call to detect changes. |
| window | No | The watched window (watch_tokenpull watches one window per call) |
| cascade | No | |
| pillars | No | The four raw token pillars for the watched window |
| messages | No | Number of messages in the watched window |
| platform | No | Source platform name |
| auth_submit | No | Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only). |
| generatedAt | No | ISO timestamp of the pull |
| poll_interval_s | No | Advisory poll cadence echoed back (does not make the call block) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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.
3 tool updates
v0.19.16- Changed
enroll1 field changed- changed
Input schema / properties / device_label / descriptionPrevious 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)"
- Changed
submit_verified1 field changed- added
Input schema / properties / confirmAdded 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" +}
- Changed
tokscale_developer_profile1 field changed- changed
Output schema / properties / tools / descriptionPrevious 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"
5 tool updates
v0.19.15- Changed
submit_verified1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "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" +]
- Changed
tokenpull2 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, 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)." - changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "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" +]
- Changed
tokenpull_compare1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "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" +]
- Changed
tokenpull_submit2 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, 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." - changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "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" +]
- Changed
watch_tokenpull1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "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 tool updates
v0.19.10- Added
get_sigrank_standard_record - Changed
submit_paste3 fields changed- changed
Input schema / descriptionPrevious value: -"Requires token counts (text). Codename is optional but required for board submission — omit it for preview-only mode."New value: +"Requires token counts (text). Returns a local preview only — does not publish to the board." - changed
Input schema / properties / codename / descriptionPrevious value: -"Operator codename to publish under on the leaderboard (e.g. \"Ghost Falcon\"). Required to submit — omit for local preview only (no board submission, just returns the local cascade result). Must be a non-empty string."New value: +"Operator codename for the ranking card display (e.g. \"Ghost Falcon\"). Optional — used only for the local preview card, not for board submission." - changed
Input schema / properties / text / descriptionPrevious value: -"Token counts to rank and submit. Two formats: (1) JSON {\"input\":N,\"output\":N,\"cacheCreate\":N,\"cacheRead\":N} from ccusage (preferred — the board parses this reliably), or (2) four whitespace-separated numbers: input output cacheCreate cacheRead. The 4-number form ranks locally but the board may reject it. Example: {\"input\":1000000,\"output\":500000,\"cacheCreate\":50000,\"cacheRead\":800000}"New value: +"Token counts to rank. Two formats: (1) JSON {\"input\":N,\"output\":N,\"cacheCreate\":N,\"cacheRead\":N} from ccusage (preferred), or (2) four whitespace-separated numbers: input output cacheCreate cacheRead. Example: {\"input\":1000000,\"output\":500000,\"cacheCreate\":50000,\"cacheRead\":800000}"
- Changed
tokenpull_submit2 fields changed- changed
Input schema / properties / codename / descriptionPrevious value: -"Operator codename to publish under on the leaderboard (e.g. \"Iron Lotus\"). Required to submit — omit for local preview only."New value: +"Operator codename for the ranking card display (e.g. \"Iron Lotus\"). Optional — used only for the local preview card, not for board submission." - changed
Input schema / properties / window / descriptionPrevious value: -"Submit only this time window (default: all 4 windows). Use \"7d\" for recent activity or \"all\" for all-time ranking."New value: +"Preview only this time window (default: all 4 windows). Use \"7d\" for recent activity or \"all\" for all-time ranking."
1 tool update
v0.19.8- Added
discover_peers
6 tool updates
v0.19.7- Changed
get_operator1 field changed- added
Output schema / properties / batchedAdded value: +{ + "description": "Submission-based rolled-forward totals (never decrease when platforms delete old logs). Present when the operator has submission history.", + "properties": { + "combined": { + "description": "Combined batched windows across all platforms", + "properties": { + "90d": { + "properties": { + "cacheCreate": { + "type": "integer" + }, + "cacheRead": { + "type": "integer" + }, + "input": { + "type": "integer" + }, + "output": { + "type": "integer" + } + }, + "type": "object" + }, + "all": { + "properties": { + "cacheCreate": { + "type": "integer" + }, + "cacheRead": { + "type": "integer" + }, + "input": { + "type": "integer" + }, + "output": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "per_platform": { + "additionalProperties": { + "properties": { + "90d": { + "description": "Rolled-forward 90d pillars (sum of batches <=90 days old)", + "properties": { + "cacheCreate": { + "type": "integer" + }, + "cacheRead": { + "type": "integer" + }, + "input": { + "type": "integer" + }, + "output": { + "type": "integer" + } + }, + "type": "object" + }, + "all": { + "description": "All-time pillars (baseline + all deltas — never decreases)", + "properties": { + "cacheCreate": { + "type": "integer" + }, + "cacheRead": { + "type": "integer" + }, + "input": { + "type": "integer" + }, + "output": { + "type": "integer" + } + }, + "type": "object" + }, + "baseline_date": { + "description": "ISO date of the first (baseline) submission", + "type": "string" + }, + "submission_count": { + "description": "Number of archived submissions for this platform", + "type": "integer" + } + }, + "type": "object" + }, + "description": "Per-platform batched windows", + "type": "object" + } + }, + "type": "object" +}
- Changed
submit_verified1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "multi" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "grok", + "multi" +]
- Changed
tokenpull2 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."New value: +"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, grok, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)." - changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "multi" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "grok", + "multi" +]
- Changed
tokenpull_compare1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "grok" +]
- Changed
tokenpull_submit2 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."New value: +"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, grok, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally." - changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex", - "multi" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "grok", + "multi" +]
- Changed
watch_tokenpull1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "omp", - "proxy", - "claude", - "codex" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "grok" +]
13 tool updates
v0.19.6- Changed
diagnose_cascade9 fields changed- changed
Output schema / properties / cascade / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / cascade / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / cascade / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / cascade / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / cascade / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / cascade / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / cascade / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / cascade / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / cascade / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
get_leaderboard1 field changed- changed
Output schema / properties / operators / items / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +]
- Changed
get_operator1 field changed- changed
Output schema / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +]
- Changed
rank_paste9 fields changed- changed
Output schema / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
rank_windows8 fields changed- changed
Output schema / properties / windows / items / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / windows / items / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / windows / items / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / windows / items / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / windows / items / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / windows / items / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / windows / items / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / windows / items / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -}
- Changed
self_improve9 fields changed- changed
Output schema / properties / current_cascade / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / current_cascade / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / current_cascade / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / current_cascade / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / current_cascade / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / current_cascade / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / current_cascade / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / current_cascade / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / current_cascade / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
simulate_change18 fields changed- changed
Output schema / properties / current / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / current / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / current / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / current / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / current / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / current / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / current / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / current / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / current / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +] - changed
Output schema / properties / simulated / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / simulated / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / simulated / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / simulated / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / simulated / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / simulated / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / simulated / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / simulated / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / simulated / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
submit_paste9 fields changed- changed
Output schema / properties / preview / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / preview / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / preview / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / preview / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / preview / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / preview / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / preview / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / preview / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / preview / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
submit_verified10 fields changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "claude", - "codex", - "multi" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "multi" +] - changed
Output schema / properties / preview / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / preview / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / preview / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / preview / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / preview / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / preview / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / preview / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / preview / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / preview / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
tokenpull11 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)."New value: +"source platform (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'codex' is estimated via io_ratio. 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Some platforms need setup (e.g. copilot requires COPILOT_OTEL_ENABLED=true)." - changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "claude", - "codex", - "multi" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "multi" +] - added
Output schema / properties / auth_submitAdded value: +{ + "description": "Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only).", + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / cardAdded value: +{ + "description": "Deterministic prose summary", + "type": "string" +} - added
Output schema / properties / cascadeAdded value: +{ + "properties": { + "card": { + "description": "Deterministic prose summary of the cascade result", + "type": "string" + }, + "class": { + "description": "Operator class tier (dev10x taxonomy)", + "enum": [ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" + ], + "type": "string" + }, + "dev10x": { + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" + }, + "leverage": { + "description": "Cr/I — cache reads divided by input", + "type": "number" + }, + "mode": { + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" + }, + "pillars": { + "description": "The four raw token pillars the cascade was computed from", + "type": "object" + }, + "snr": { + "description": "Signal-to-noise ratio", + "type": "number" + }, + "velocity": { + "description": "O/I — output divided by input", + "type": "number" + }, + "warnings": { + "description": "Parse or data warnings if any", + "items": { + "type": "string" + }, + "type": "array" + }, + "yield": { + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" + } + }, + "required": [ + "yield", + "class" + ], + "type": "object" +} - added
Output schema / properties / messagesAdded value: +{ + "description": "Number of messages in the watched window", + "type": "integer" +} - added
Output schema / properties / noteAdded value: +{ + "description": "Reminder that one snapshot is returned per call — re-call to detect changes.", + "type": "string" +} - added
Output schema / properties / pillarsAdded value: +{ + "description": "The four raw token pillars for the watched window", + "properties": { + "cacheCreate": { + "type": "integer" + }, + "cacheRead": { + "type": "integer" + }, + "input": { + "type": "integer" + }, + "output": { + "type": "integer" + } + }, + "type": "object" +} - added
Output schema / properties / poll_interval_sAdded value: +{ + "description": "Advisory poll cadence echoed back (does not make the call block)", + "type": "number" +} - added
Output schema / properties / windowAdded value: +{ + "description": "The watched window (watch_tokenpull watches one window per call)", + "enum": [ + "7d", + "30d", + "90d", + "all" + ], + "type": "string" +} - removed
Output schema / properties / windowsRemoved value: -{ - "description": "Per-window token usage + cascade results", - "items": { - "properties": { - "cascade": { - "properties": { - "card": { - "description": "Deterministic prose summary of the cascade result", - "type": "string" - }, - "class": { - "description": "Operator class tier", - "enum": [ - "Burner", - "Builder", - "10xer" - ], - "type": "string" - }, - "leverage": { - "description": "Cr/I — cache reads divided by input", - "type": "number" - }, - "snr": { - "description": "Signal-to-noise ratio", - "type": "number" - }, - "tenx_dev": { - "description": "10xDEV score", - "type": "number" - }, - "velocity": { - "description": "O/I — output divided by input", - "type": "number" - }, - "warnings": { - "description": "Parse or data warnings if any", - "items": { - "type": "string" - }, - "type": "array" - }, - "yield_": { - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" - } - }, - "required": [ - "yield_", - "class" - ], - "type": "object" - }, - "estimated": { - "description": "True if cacheCreate was estimated", - "type": "boolean" - }, - "messages": { - "description": "Number of messages in window", - "type": "integer" - }, - "pillars": { - "properties": { - "cacheCreate": { - "type": "integer" - }, - "cacheRead": { - "type": "integer" - }, - "input": { - "type": "integer" - }, - "output": { - "type": "integer" - } - }, - "type": "object" - }, - "window": { - "enum": [ - "7d", - "30d", - "90d", - "all" - ], - "type": "string" - } - }, - "type": "object" - }, - "type": "array" -}
- Changed
tokenpull_compare10 fields changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "claude", - "codex" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex" +] - changed
Output schema / properties / sources / items / properties / cascade / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / sources / items / properties / cascade / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / sources / items / properties / cascade / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / sources / items / properties / cascade / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / sources / items / properties / cascade / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / sources / items / properties / cascade / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / sources / items / properties / cascade / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / sources / items / properties / cascade / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / sources / items / properties / cascade / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
tokenpull_submit11 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally."New value: +"Source platform to pull from (default: claude). Supported: amp, kimi, qwen, pi, openclaw, droid, codebuff, gemini, copilot, opencode, goose, kilo, hermes, devin, other, omp, proxy, claude, codex, multi. 'multi' = combined cascade summed across all locally-detected platforms (needs 2+ active). 'devin' reads from ~/.local/share/devin/cli/sessions.db (SQLite, all windows). 'other' reads from a user-supplied JSON file (set SIGRANK_OTHER_PATH). Each platform reads its own session logs locally." - changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "claude", - "codex", - "multi" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex", + "multi" +] - changed
Output schema / properties / preview / properties / class / descriptionPrevious value: -"Operator class tier"New value: +"Operator class tier (dev10x taxonomy)" - changed
Output schema / properties / preview / properties / class / enumPrevious value: -[ - "Burner", - "Builder", - "10xer" -]New value: +[ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" +] - added
Output schema / properties / preview / properties / dev10xAdded value: +{ + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" +} - added
Output schema / properties / preview / properties / modeAdded value: +{ + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" +} - added
Output schema / properties / preview / properties / pillarsAdded value: +{ + "description": "The four raw token pillars the cascade was computed from", + "type": "object" +} - removed
Output schema / properties / preview / properties / tenx_devRemoved value: -{ - "description": "10xDEV score", - "type": "number" -} - added
Output schema / properties / preview / properties / yieldAdded value: +{ + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" +} - removed
Output schema / properties / preview / properties / yield_Removed value: -{ - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" -} - changed
Output schema / properties / preview / requiredPrevious value: -[ - "yield_", - "class" -]New value: +[ + "yield", + "class" +]
- Changed
watch_tokenpull10 fields changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "amp", - "kimi", - "qwen", - "pi", - "openclaw", - "droid", - "codebuff", - "gemini", - "copilot", - "opencode", - "goose", - "kilo", - "hermes", - "devin", - "other", - "claude", - "codex" -]New value: +[ + "amp", + "kimi", + "qwen", + "pi", + "openclaw", + "droid", + "codebuff", + "gemini", + "copilot", + "opencode", + "goose", + "kilo", + "hermes", + "devin", + "other", + "omp", + "proxy", + "claude", + "codex" +] - added
Output schema / properties / auth_submitAdded value: +{ + "description": "Present only when submit:true. One of: {status:'received'|'cooldown'|'not_enrolled'|'error', ...}. Null when submit is false (preview only).", + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / cardAdded value: +{ + "description": "Deterministic prose summary", + "type": "string" +} - added
Output schema / properties / cascadeAdded value: +{ + "properties": { + "card": { + "description": "Deterministic prose summary of the cascade result", + "type": "string" + }, + "class": { + "description": "Operator class tier (dev10x taxonomy)", + "enum": [ + "ARCH+ I", + "ARCH+ II", + "ARCH+ III", + "ARCH I", + "ARCH II", + "ARCH III", + "POWER I", + "POWER II", + "POWER III", + "BASE I", + "BASE II", + "BASE III", + "SEEKER I", + "SEEKER II", + "SEEKER III", + "REFINER I", + "REFINER II", + "REFINER III", + "BEARER I", + "BEARER II", + "BEARER III", + "IGNITER I", + "IGNITER II", + "IGNITER III", + "UNCLASSED" + ], + "type": "string" + }, + "dev10x": { + "description": "10xDEV score (log10 of the cascade product)", + "type": "number" + }, + "leverage": { + "description": "Cr/I — cache reads divided by input", + "type": "number" + }, + "mode": { + "description": "Detected working mode (BUILD/EDIT/DEBUG/MAINTAIN/IDLE) + confidence", + "type": "object" + }, + "pillars": { + "description": "The four raw token pillars the cascade was computed from", + "type": "object" + }, + "snr": { + "description": "Signal-to-noise ratio", + "type": "number" + }, + "velocity": { + "description": "O/I — output divided by input", + "type": "number" + }, + "warnings": { + "description": "Parse or data warnings if any", + "items": { + "type": "string" + }, + "type": "array" + }, + "yield": { + "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", + "type": "number" + } + }, + "required": [ + "yield", + "class" + ], + "type": "object" +} - added
Output schema / properties / messagesAdded value: +{ + "description": "Number of messages in the watched window", + "type": "integer" +} - added
Output schema / properties / noteAdded value: +{ + "description": "Reminder that one snapshot is returned per call — re-call to detect changes.", + "type": "string" +} - added
Output schema / properties / pillarsAdded value: +{ + "description": "The four raw token pillars for the watched window", + "properties": { + "cacheCreate": { + "type": "integer" + }, + "cacheRead": { + "type": "integer" + }, + "input": { + "type": "integer" + }, + "output": { + "type": "integer" + } + }, + "type": "object" +} - added
Output schema / properties / poll_interval_sAdded value: +{ + "description": "Advisory poll cadence echoed back (does not make the call block)", + "type": "number" +} - added
Output schema / properties / windowAdded value: +{ + "description": "The watched window (watch_tokenpull watches one window per call)", + "enum": [ + "7d", + "30d", + "90d", + "all" + ], + "type": "string" +} - removed
Output schema / properties / windowsRemoved value: -{ - "description": "Per-window token usage + cascade results", - "items": { - "properties": { - "cascade": { - "properties": { - "card": { - "description": "Deterministic prose summary of the cascade result", - "type": "string" - }, - "class": { - "description": "Operator class tier", - "enum": [ - "Burner", - "Builder", - "10xer" - ], - "type": "string" - }, - "leverage": { - "description": "Cr/I — cache reads divided by input", - "type": "number" - }, - "snr": { - "description": "Signal-to-noise ratio", - "type": "number" - }, - "tenx_dev": { - "description": "10xDEV score", - "type": "number" - }, - "velocity": { - "description": "O/I — output divided by input", - "type": "number" - }, - "warnings": { - "description": "Parse or data warnings if any", - "items": { - "type": "string" - }, - "type": "array" - }, - "yield_": { - "description": "Υ Yield — the headline efficiency metric (Cache Reads × Output / Input²)", - "type": "number" - } - }, - "required": [ - "yield_", - "class" - ], - "type": "object" - }, - "estimated": { - "description": "True if cacheCreate was estimated", - "type": "boolean" - }, - "messages": { - "description": "Number of messages in window", - "type": "integer" - }, - "pillars": { - "properties": { - "cacheCreate": { - "type": "integer" - }, - "cacheRead": { - "type": "integer" - }, - "input": { - "type": "integer" - }, - "output": { - "type": "integer" - } - }, - "type": "object" - }, - "window": { - "enum": [ - "7d", - "30d", - "90d", - "all" - ], - "type": "string" - } - }, - "type": "object" - }, - "type": "array" -}
5 tool updates
v0.19.5- Removed
compare_operators - Removed
compare_self - Removed
describe_power_user - Removed
get_best_operator - Removed
optimize_efficiency
2 tool updates
v0.19.4- Added
get_operator - Added
rank_paste
6 tool updates
v0.19.3- Added
compare_self - Added
get_best_operator - Removed
get_operator - Removed
rank_paste - Added
tokscale_breakdown - Added
tokscale_model_trends
9 tool updates
v0.19.3- Removed
compare_self - Added
diagnose_cascade - Added
get_leaderboard - Added
get_operator - Added
tokenpull - Added
tokenpull_submit - Added
tokscale_market_share - Removed
tokscale_model_trends - Added
watch_tokenpull
13 tool updates
v0.19.2- Added
compare_operators - Added
compare_self - Removed
diagnose_cascade - Added
optimize_efficiency - Added
rank_paste - Added
rank_windows - Added
submit_paste - Added
submit_verified - Removed
tokenpull_submit - Removed
tokscale_breakdown - Added
tokscale_competitive_intel - Removed
tokscale_market_share - Removed
watch_tokenpull
17 tool updates
- Removed
compare_operators - Removed
compare_self - Removed
get_best_operator - Removed
get_leaderboard - Removed
get_operator - Removed
optimize_efficiency - Removed
rank_paste - Removed
rank_windows - Removed
submit_paste - Removed
submit_verified - Removed
tokenpull - Added
tokscale_cost_analysis - Added
tokscale_developer_profile - Added
tokscale_device_profile - Added
tokscale_market_share - Added
tokscale_mcp_usage - Added
tokscale_model_trends
TDQS
Scored across 25 tools
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.
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.
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.
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
Related MCP Connectors
Rank agents; signed machine messages + wallet gates via x402; free verifiable agent passports.
Agent reputation registry: check, register, and endorse AI agents
Market intelligence for the AI agent economy: rankings, trust signals, liveness. 13 tools.
On-chain ERC-8004 agent registry. Search, register, and check reputation across 16 chains.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to interact with the AI-Archive platform for research paper discovery through semantic search, paper submission and management, peer review with structured scoring, and citation generation in multiple formats.5441 npm1MIT
- FlicenseNot gradedqualityDmaintenanceAn observability tool for agentic AI pipelines that intercepts MCP and Python tool calls to provide real-time metrics, session replays, and alerts via a local dashboard. It enables centralized monitoring of multiple MCP servers through multiplexer and proxy modes without requiring changes to existing agent code.3-
- AlicenseAqualityBmaintenanceTrust, identity, and reputation infrastructure for AI agents. Register agents with W3C DID (Ed25519), check EigenTrust reputation scores, submit peer attestations, search agents by capability, and verify IPFS-anchored audit trails. 11 tools.2061 PyPI15MIT
- AlicenseAqualityAmaintenanceDescription Governed agent city-state. Register as an agent, browse open mission slots, earn revenue under constitutional protocol. Every action creates a SHA-256 provenance seed. Powered by MO§ES™.231MIT