True Value Rankings
Server Details
Cryptocurrency fundamentals for agents: TVR Scores, rankings and model-derived valuation estimates.
- Status
- Healthy
- Uptime
- 100.0% over 82 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- TrueValueRankings/tvr-mcp-server
- GitHub Stars
- 1
- Server Listing
- tvr-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Most tools have clear, distinct purposes, but get_tvr_score and get_full_breakdown both return the TVR Score, rank, valuation category and all 8 metric scores with weights, making them nearly interchangeable, and get_tvr_estimated_value returns a subset of what get_tvr_score already provides. Cross-references in the descriptions and the free/paid split help an agent choose, but the boundaries between the single-coin read tools remain fuzzy.
All names are snake_case and follow a predictable verb_noun pattern: get_* for retrieval (get_tvr_score, get_fair_value_verdict, get_historical_scores, get_top_ranked, get_custom_ranking, get_portfolio_analysis, get_methodology), plus compare_coins and list_coins. The verb choice signals the operation type consistently across the whole set.
Eleven tools is well within a reasonable range for a rankings/valuation server and each maps to a recognizable capability (list, score, breakdown, verdict, history, compare, rank, portfolio, methodology). The count is slightly inflated by the near-duplicate pair get_tvr_score and get_full_breakdown, which could plausibly be one tool.
The surface covers the domain well: coin discovery, single-coin scores and breakdowns, fair-value verdicts, presets and custom rankings, comparison, portfolio roll-up, history, and methodology. Minor gaps remain (no filtered/screened listing by category or sector, comparison capped at 5 coins, no explicit metric-level explanation tool beyond the aggregate breakdown), but agents can work around these.
Available Tools
11 toolscompare_coinsCompare CoinsARead-onlyIdempotentInspect
Free. Compares 2 to 5 cryptocurrencies on TVR Score, rank, valuation category and all 8 metric scores side by side, and identifies the largest scoring difference. Exact Fair Value Gaps and TVR Estimated Values are in get_fair_value_verdict ($0.02 per coin). Accepts tickers or names. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| coins | Yes | Array of 2-5 cryptocurrency tickers or names to compare (e.g., ["BTC", "Ethereum", "SOL"]) |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| error | No | false on a normal answer, or an error message |
| status | No | Present when the request could not be answered as asked, for example not_available |
| context | No | Standing context about TVR and how to read its outputs |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| requested | No | What was asked for, when it could not be resolved |
| comparison | No | Per-coin scores, ranks and valuations |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| coins_compared | No | |
| key_difference | No | The largest gap between the compared coins |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
| metric_comparison | No | Metric-by-metric table |
| total_coins_evaluated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the tool is free, the comparison is capped at 2–5 coins, and it surfaces the largest scoring difference as an analytical output, with data sourced from truevaluerankings.com.
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 decisive fact ("Free.") and packs scope, output content, and the paid alternative into three tight sentences. The source attribution to truevaluerankings.com is marginally expendable but harmless.
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 described, and the description still names the compared dimensions. Cost, input constraints, accepted input forms, and the paid alternative are 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 schema already documents the 2–5 item bounds and ticker-or-name examples. The description's "Accepts tickers or names" restates what the schema says rather than adding format or normalization rules, so this sits at the 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 ("Compares 2 to 5 cryptocurrencies") and enumerates exactly what is compared: TVR Score, rank, valuation category, and all 8 metric scores side by side, plus the largest scoring difference. This is clearly separable from siblings like get_tvr_score or get_full_breakdown, which operate on one coin.
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 routes the agent to get_fair_value_verdict when exact Fair Value Gaps and TVR Estimated Values are needed, and discloses that this alternative costs $0.02 per coin — a strong when-to-use signal. It stops short of covering other plausible siblings such as get_full_breakdown or get_top_ranked, so the routing map is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_rankingGet Custom RankingARead-onlyInspect
Paid. Reranks every coin TVR covers with your own weights for the 8 fundamental metrics, applying TVR's non-public score transformation. Returns rank, TVR Score, valuation category, fair value gap and TVR Estimated Value per coin. $0.05 per call, paid in-band with x402 (USDC on Base) or MPP (USDC.e on Tempo); an unpaid call returns the offer (isError with the x402 PaymentRequired in structuredContent) and charges nothing. Invalid input is refused before any payment. Free alternative: get_top_ranked and the four presets. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| coins | No | Optional tickers or names (1-50). Omit for all covered coins. | |
| weights | No | Up to 8 weights (0-100) in this order: economic_model, network_security, adoption, privacy, longevity, liquidity, legal_clarity, technical_dev, or an object keyed by those names. Missing entries take TVR defaults. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| error | No | |
| legal | No | |
| reason | No | |
| status | No | |
| context | No | |
| payment | No | |
| product | No | |
| success | No | |
| rankings | No | Ranked coins under the requested weights |
| disclaimer | No | |
| how_to_pay | No | |
| learn_more | No | |
| redelivery | No | |
| weights_used | No | |
| defaults_applied_for | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, and the description aligns, describing a non-mutating rerank. It adds valuable behavioral context beyond annotations: payment required, unpaid calls return an offer with isError, invalid input is refused before payment, and charges nothing on failure. This goes beyond the basic annotation profile.
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 critical 'Paid' flag and purpose, then covering payment details, error behavior, and alternatives. Every sentence earns its place, providing comprehensive information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values are covered. The description explains the tool's scope, payment mechanics, error handling, and free alternatives. An agent has all necessary information to decide when to use this tool and how to invoke it correctly, including payment prerequisites.
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 descriptions for both coins and weights. The description adds extra meaning by specifying that coins can be omitted for all covered coins and that weights follow a specific order with missing entries defaulting to TVR defaults, which is not fully in the schema. This enriches understanding 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 reranks all TVR-covered coins using custom weights for 8 metrics, applying a non-public score transformation. It distinguishes itself from siblings like get_top_ranked and presets, and mentions the paid nature, leaving no ambiguity about what it 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?
Explicitly states 'Paid' and offers a 'Free alternative: get_top_ranked and the four presets,' giving agents a clear decision rule. It also details payment methods (x402/MPP) and the behavior on unpaid calls, ensuring correct invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fair_value_verdictFair Value Verdict: is this coin undervalued or overvalued?ARead-onlyInspect
Paid. Use when asked whether a cryptocurrency is undervalued, overvalued or fairly priced: the True Value Rankings fair value verdict for one coin (ticker or name), with the exact Fair Value Gap and TVR Estimated Value, the main reasons (which of the 8 metrics lift or hold back the TVR Score, and the written scoring factors), how far the gap is from the nearest category line, and plain caveats. No market price or market cap. $0.02 per call, paid in-band with x402 (USDC on Base) or MPP (USDC.e on Tempo); an unpaid call returns the offer (isError with the x402 PaymentRequired in structuredContent) and charges nothing. An unknown coin is refused before any payment. Free alternative: get_tvr_score (TVR Score, rank, valuation category and all 8 metric scores). Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Ticker or name of a coin covered by TVR (BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK) |
Output Schema
| Name | Required | Description |
|---|---|---|
| coin | No | |
| rank | No | |
| as_of | No | |
| error | No | |
| legal | No | |
| access | No | |
| reason | No | |
| status | No | |
| symbol | No | |
| caveats | No | |
| context | No | |
| payment | No | |
| product | No | |
| success | No | |
| verdict | No | Undervalued, Fair Value or Overvalued |
| boundary | No | The nearest category line and how far the gap is from it |
| category | No | |
| tvr_score | No | |
| disclaimer | No | |
| how_to_pay | No | |
| learn_more | No | |
| redelivery | No | |
| score_rank | No | |
| rank_out_of | No | |
| main_reasons | No | Which metrics lift or hold back the TVR Score, the written scoring factors and notes |
| metric_scores | No | |
| fair_value_gap | No | |
| fair_value_rule | No | |
| verdict_summary | No | |
| fair_value_gap_pct | No | The exact Fair Value Gap in percent: TVR Estimated Value against the current market price |
| tvr_estimated_value | No | |
| tvr_estimated_value_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it a safe, non-destructive read; the description adds the pricing model ($0.02 per call via x402/MPP), the exact failure mode for an unpaid call (isError with PaymentRequired in structuredContent, no charge), and that unknown coins are refused before payment. The non-idempotent annotation is consistent with a per-call charge, and the description explains why.
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 'Paid.' and the use condition, then progressively more detail, with no filler sentences; every clause (cost, failure mode, refusal, alternative, source) carries decision-relevant information. The pricing sentence is dense but earned.
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 paid, single-parameter read tool this covers everything an agent needs: what it returns, what it deliberately omits, cost and payment mechanics, the unpaid/unknown-coin error paths, and a cheaper sibling. Presence of an output schema makes detailed return-value explanation unnecessary, yet the description still summarizes the payload usefully.
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 schema already documents the single 'coin' parameter with an explicit coin list. The description only restates 'ticker or name' without adding format, casing, or matching behavior beyond the schema, so it sits at the 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: the fair value verdict for one coin, with named deliverables (Fair Value Gap, TVR Estimated Value, scoring factors) and an explicit exclusion ('No market price or market cap'). It also distinguishes itself from the sibling get_tvr_score, so an agent can separate the two without opening either 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 triggering condition ('Use when asked whether a cryptocurrency is undervalued, overvalued or fairly priced') and names a free alternative (get_tvr_score) with what that alternative returns, giving the agent a clear decision path. The paid nature and refusal behavior further constrain when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_breakdownGet Full BreakdownARead-onlyIdempotentInspect
Free. Returns all 8 metric scores with their weights, the TVR Score, rank, valuation category and a note on how the score is built for a cryptocurrency. The written scoring factors, the valuation note and the exact Fair Value Gap and TVR Estimated Value are in get_fair_value_verdict ($0.02). Accepts a ticker or a name. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Cryptocurrency ticker or name (e.g., BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK) |
Output Schema
| Name | Required | Description |
|---|---|---|
| coin | No | Coin name |
| rank | No | Rank among evaluated coins, 1 is best |
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| error | No | false on a normal answer, or an error message |
| status | No | Present when the request could not be answered as asked, for example not_available |
| symbol | No | Ticker |
| context | No | Standing context about TVR and how to read its outputs |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| category | No | TVR coin category |
| requested | No | What was asked for, when it could not be resolved |
| tvr_score | No | TVR Score, 0 to 100 |
| valuation | No | Undervalued, Fair Value or Overvalued |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| rank_out_of | No | Number of coins evaluated |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| metric_scores | No | |
| fair_value_gap | No | Gap between TVR Estimated Value and market price, formatted as a percentage |
| valuation_note | No | |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
| ranking_context | No | |
| scoring_factors | No | The reasoning behind each metric score |
| tvr_estimated_value | No | TVR Estimated Value, formatted in USD |
| scoring_methodology_note | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the description adds cost information ('Free' versus the $0.02 sibling) and the upstream data source, which are traits annotations cannot express. It does not discuss rate limits, caching, or failure behavior for unknown tickers, so it is strong but not exhaustive.
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 cost qualifier is front-loaded ('Free.'), followed by the payload, the alternative, the input note, and the data source, all in four compact sentences. The closing attribution to truevaluerankings.com is borderline but defensible as provenance; nothing else 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?
An output schema exists, so return values need no prose explanation, yet the description still summarizes the payload at the right level of detail. With rich annotations, a fully documented single parameter, and a clear paid-alternative pointer, an agent has everything needed to select and call this 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 description coverage is 100% and the single 'coin' parameter already includes ticker/name examples, so the schema carries the burden. The description's 'Accepts a ticker or a name' restates that flexibility but adds no format, casing, or ambiguity-resolution guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a concrete verb ('Returns') and enumerates the exact payload: all 8 metric scores with weights, TVR Score, rank, valuation category, and a note on how the score is built. It also implicitly separates itself from get_tvr_score by promising the full bundle rather than a single score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to get_fair_value_verdict ($0.02) for the written scoring factors, valuation note, exact Fair Value Gap, and TVR Estimated Value, so the boundary between the two tools is clear. It stops short of stating when-not to use this tool (e.g., for historical or comparison needs covered by other siblings), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_scoresGet Historical ScoresARead-onlyIdempotentInspect
Free slice, paid full record. Score history of one coin: every recorded change to its 8 metric scores as a dated record with the TVR Score, the method version, a source label (baseline for the opening record, auto_captured for rows written from the change itself), the public reason where recorded and a SHA-256 hash per record; forward-only from the day the record began. Without scope (or scope "free"): the last 90 days or the last 3 records, free, no payment, no key. scope "full": the whole record, $0.05 per pull paid in-band with x402 (USDC on Base) or MPP (USDC.e on Tempo) once the record extends beyond the free slice; until then the free record is returned and nothing is charged. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Ticker or name of a coin covered by TVR (BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK) | |
| scope | No | free (default): the last 90 days or the last 3 records, no payment. full: the whole record, paid per pull once the record extends beyond the free slice; until then the free record is returned and nothing is charged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| note | No | |
| error | No | |
| legal | No | |
| scope | No | |
| access | No | |
| period | No | |
| reason | No | |
| status | No | |
| symbol | No | |
| context | No | |
| payment | No | |
| product | No | |
| records | No | Dated score states, newest first: as_of, revision, source, scores, tvr_score, method_version, changed_metrics, reason_public, published_at, record_hash |
| success | No | |
| coverage | No | |
| hash_note | No | |
| disclaimer | No | |
| how_to_pay | No | |
| learn_more | No | |
| redelivery | No | |
| full_record | No | |
| hash_format | No | |
| method_versions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, and the description goes well beyond them: payment rails (x402 USDC on Base, MPP USDC.e on Tempo), per-pull pricing, and the fact that nothing is charged while the record still fits in the free slice. Forward-only recording and per-record SHA-256 hashes are also disclosed.
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 'Free slice, paid full record,' which is exactly the right framing. The pricing/scope material is partially duplicated between the description and the scope enum's schema text, which costs a little efficiency but doesn't obscure anything.
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, yet the description still enumerates the record fields (dated record, TVR Score, method version, source label, public reason, SHA-256 hash), so an agent knows what comes back and what billing behavior to expect. Nothing needed for a correct call 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 coverage is 100%, so both parameters are already documented; the description still adds value by clarifying that the 'source' label takes values like baseline vs auto_captured and what the hash represents. Marginal gain over the schema, but real.
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 — the score history of one coin, every recorded change to its 8 metric scores — and pins down the record's composition. It is clearly distinct from get_tvr_score (current score) and get_full_breakdown in the sibling list.
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 describes the two modes: without scope or 'free' returns the last 90 days / 3 records at no cost; 'full' returns the whole record for $0.05 per pull. It doesn't name a sibling tool as an alternative, but the free/paid branch is spelled out with the exact threshold that triggers billing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_methodologyGet Scoring MethodologyARead-onlyIdempotentInspect
Free. Explains how True Value Rankings scores cryptocurrencies: the 8 metrics, their current default weights, the 4 built-in weight presets, and the general scoring approach. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| error | No | false on a normal answer, or an error message |
| status | No | Present when the request could not be answered as asked, for example not_available |
| context | No | Standing context about TVR and how to read its outputs |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| requested | No | What was asked for, when it could not be resolved |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| methodology | No | The 8 metrics, their default weights and how the TVR Score is built |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds some useful context by saying the tool is free and names the data source, while noting that default weights and presets are covered, but it does not add details about rate limits, auth, or return behavior beyond what the output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the cost and core purpose, and lists the covered contents without redundant wording. Every sentence adds useful 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?
For a zero-parameter explanatory endpoint with rich annotations and an output schema, the description is complete: it states what the methodology covers, that weights and presets are included, and where the data comes from. No additional call details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description appropriately does not discuss parameter semantics, and the empty schema is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Explains,' and a specific resource, 'how True Value Rankings scores cryptocurrencies.' It also enumerates the scope: the 8 metrics, current default weights, 4 built-in presets, and general scoring approach, which distinguishes it from sibling tools that return scores or rankings.
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 implies the tool is for understanding the scoring methodology, but it does not explicitly state when to use it versus alternatives such as get_tvr_score, get_custom_ranking, or get_full_breakdown. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolio_analysisGet Portfolio AnalysisARead-onlyInspect
Paid. Fundamentals profile of a portfolio: allocation-weighted scores for the 8 metrics, each holding's TVR Score and valuation category, and the portfolio TVR Score from TVR's scoring engine (scores only, no prices). $0.08 per call, paid in-band with x402 (USDC on Base) or MPP (USDC.e on Tempo); an unpaid call returns the offer (isError with the x402 PaymentRequired in structuredContent) and charges nothing. Invalid input is refused before any payment. Free alternative: compare_coins. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| portfolio | Yes | The holdings to analyse |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| legal | No | |
| access | No | |
| reason | No | |
| status | No | |
| context | No | |
| payment | No | |
| product | No | |
| profile | No | |
| success | No | |
| holdings | No | |
| disclaimer | No | |
| how_to_pay | No | |
| learn_more | No | |
| redelivery | No | |
| weights_used | No | |
| blended_metrics | No | |
| portfolio_tvr_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint/destructiveHint only cover safety), disclosing cost ($0.08/call), payment rails (x402 USDC on Base, MPP USDC.e on Tempo), the unpaid-call behavior (isError with PaymentRequired in structuredContent, nothing charged), and that invalid input is refused before payment. This is exactly the behavioral context an agent needs for a paid call.
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 key constraint ('Paid.') so cost is known before anything else, then packs output contents, pricing, error behavior, and the free alternative into a handful of dense sentences with 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?
With an output schema present, return values need not be explained, and the description instead covers the things the schema can't: payment flow, failure modes, and the cheaper alternative. 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?
The single 'portfolio' parameter is fully documented in the schema (100% coverage, including the maxItems 50 cap and allocation normalisation), so the schema carries the load. The description adds only indirect context ('allocation-weighted'), which is baseline-appropriate but not extra parameter meaning.
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 ('Fundamentals profile of a portfolio') and enumerates exactly what comes back: allocation-weighted scores for the 8 metrics, per-holding TVR Score and valuation category, and the portfolio TVR Score. It also carves out scope ('scores only, no prices'), which separates it from siblings like get_full_breakdown or compare_coins.
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 names the free alternative (compare_coins) and describes the paid-path mechanics, giving the agent a clear routing signal. It stops short of spelling out the exact condition under which compare_coins is preferable over this paid tool, so the 'when not to use' is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_rankedGet Top Ranked CoinsARead-onlyIdempotentInspect
Free. Returns the top N cryptocurrencies by a chosen ranking method: tvr_score (fundamental strength), most_undervalued (largest positive fair value gap first) or most_overvalued (largest negative fair value gap first), with each coin's TVR Score and valuation category. Exact gaps and TVR Estimated Values are in get_fair_value_verdict ($0.02 per coin). Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of coins to return (default 5) | |
| rank_by | No | Ranking method: tvr_score, most_undervalued, or most_overvalued | tvr_score |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| error | No | false on a normal answer, or an error message |
| status | No | Present when the request could not be answered as asked, for example not_available |
| context | No | Standing context about TVR and how to read its outputs |
| rank_by | No | The ranking basis used |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| rankings | No | Ordered list of coins |
| requested | No | What was asked for, when it could not be resolved |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
| rank_by_description | No | |
| total_coins_evaluated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely non-schema information: the tool is free, the paid boundary sits at get_fair_value_verdict, and results include the TVR Score plus a valuation category but omit exact gaps and estimated values — that tells an agent what it will NOT get back. Pagination and result-format details are left to the output 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?
Front-loads the two things an agent needs to gate on first — cost ("Free") and the ranked-list purpose — then compresses the three ranking modes into one sentence. It is dense but every clause carries information; the only mild cost is a long run-on middle sentence rather than scannable structure.
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 two-parameter read tool with an output schema and full annotations, this covers everything: cost, ranking semantics, what fields are returned, what is deliberately withheld, and the sibling that supplies the withheld data. Nothing needed to invoke it 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 coverage is 100%, so the baseline is 3, but the description earns an upgrade by defining what each rank_by enum value actually sorts on (fundamental strength vs. positive vs. negative fair value gap direction). That is real semantic meaning beyond the schema's bare enum listing. The count parameter is fully handled by the schema and gets no extra treatment here.
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?
Names a specific verb and resource ("Returns the top N cryptocurrencies") and immediately disambiguates the three ranking modes: tvr_score = fundamental strength, most_undervalued = largest positive fair value gap first, most_overvalued = largest negative gap first. An agent can distinguish this from sibling tools like list_coins or get_custom_ranking 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?
Gives clear context: this is the free tier for ranked lists, and it explicitly routes the agent to get_fair_value_verdict when exact gaps or TVR Estimated Values are needed, including the cost ($0.02 per coin). It does not name exclusions against get_tvr_score (single coin) or list_coins, so the when-not-to-use side is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tvr_estimated_valueGet TVR Estimated ValueARead-onlyIdempotentInspect
Free. Returns TVR's valuation category for a cryptocurrency (Undervalued, Fair Value or Overvalued) and the rule behind it. Label only: the exact TVR Estimated Value and Fair Value Gap, with the main reasons, come from get_fair_value_verdict ($0.02). Accepts a ticker or a name. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Cryptocurrency ticker or name (e.g., BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK) |
Output Schema
| Name | Required | Description |
|---|---|---|
| coin | No | Coin name |
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| error | No | false on a normal answer, or an error message |
| status | No | Present when the request could not be answered as asked, for example not_available |
| symbol | No | Ticker |
| context | No | Standing context about TVR and how to read its outputs |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| requested | No | What was asked for, when it could not be resolved |
| valuation | No | Undervalued, Fair Value or Overvalued |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| fair_value_gap | No | Gap between TVR Estimated Value and market price, formatted as a percentage |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
| tvr_estimated_value | No | TVR Estimated Value, formatted in USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, non-destructive behavior, so the bar is lower. The description still adds useful context beyond that: cost is free, data provenance is truevaluerankings.com, and it discloses that the payload is a label, not the full valuation. It does not mention rate limits or caching, which keeps it from a 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?
Front-loaded with the cost signal, then purpose, then routing to the paid sibling, then provenance — a sensible order with no wasted sentences. The only near-redundancy is the ticker-or-name sentence, which duplicates the input schema.
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 no explanation, and the description correctly confines itself to what the schema cannot convey: price, data source, and the boundary against get_fair_value_verdict. For a one-parameter read tool this is close to complete; only rate/usage limits are unaddressed.
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 single 'coin' parameter already documents ticker-or-name input with concrete examples (BTC, Bitcoin, ETH, XMR...). The description's 'Accepts a ticker or a name' merely repeats the schema, adding no new meaning. Baseline 3 is correct when the schema carries the load.
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: returns TVR's valuation category (Undervalued, Fair Value, Overvalued) plus the rule behind it for a cryptocurrency. It also explicitly delineates scope against the sibling get_fair_value_verdict by calling this 'label only', so an agent can distinguish the two without opening either 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?
Names the alternative and the condition that selects it: if you need the exact TVR Estimated Value, Fair Value Gap, or reasons, use get_fair_value_verdict. Also signals cost ('Free' vs '$0.02'), which is a real selection factor here. It stops short of an explicit 'use this when you only need the label' instruction, but the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tvr_scoreGet TVR ScoreARead-onlyIdempotentInspect
Free. Returns the TVR Score, rank, valuation category (Undervalued, Fair Value or Overvalued) and all 8 metric scores with their weights for a cryptocurrency, with the date its scores last changed. The exact TVR Estimated Value, Fair Value Gap and the reasons behind the category are in get_fair_value_verdict ($0.02). Accepts a ticker (BTC) or a name (Bitcoin). TVR evaluates fundamental strength using Sound Value principles. Data from True Value Rankings (truevaluerankings.com). Rate limit: 100 requests per 15 minutes per IP.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Cryptocurrency ticker or name (e.g., BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK) |
Output Schema
| Name | Required | Description |
|---|---|---|
| coin | No | Coin name |
| rank | No | Rank among evaluated coins, 1 is best |
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| error | No | false on a normal answer, or an error message |
| status | No | Present when the request could not be answered as asked, for example not_available |
| symbol | No | Ticker |
| context | No | Standing context about TVR and how to read its outputs |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| category | No | TVR coin category |
| requested | No | What was asked for, when it could not be resolved |
| tvr_score | No | TVR Score, 0 to 100 |
| valuation | No | Undervalued, Fair Value or Overvalued |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| rank_out_of | No | Number of coins evaluated |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| metric_scores | No | All 8 metric scores with their weights |
| fair_value_gap | No | Gap between TVR Estimated Value and market price, formatted as a percentage |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
| weakest_metric | No | |
| strongest_metric | No | |
| tvr_estimated_value | No | TVR Estimated Value, formatted in USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered and the description is not required to restate it. It instead contributes context the annotations cannot: the call is free, data originates from truevaluerankings.com, and there is a concrete rate limit of 100 requests per 15 minutes per IP. What is missing is any statement about failure behavior, e.g. what happens for an unrecognized ticker.
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 cost marker and the return payload, then the sibling routing, then input flexibility and provenance. Every sentence is functional, though the trailing 'TVR evaluates fundamental strength using Sound Value principles' plus the domain callout could be merged or dropped without loss.
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 the description need not spell out return values and correctly spends its words on cost, rate limits, data provenance, accepted input forms, and the alternative for deeper data. For a single-parameter read-only lookup this is sufficient for an agent to invoke correctly on the first attempt.
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 single 'coin' parameter is already documented with ticker and name examples (BTC, Bitcoin, ETH...). The description's line 'Accepts a ticker (BTC) or a name (Bitcoin)' restates that same flexibility rather than adding new meaning such as case sensitivity, partial-name matching, or handling of ambiguous symbols. Baseline 3 applies when the schema does the heavy lifting.
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 names a specific resource (TVR Score) and enumerates exactly what is returned: rank, valuation category, all 8 metric scores with weights, and the date scores last changed. It explicitly delimits itself against a named sibling, get_fair_value_verdict, which owns the estimated value and Fair Value Gap. An agent can tell this tool apart from compare_coins or get_full_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?
It clearly frames a summary-score request as this tool's job and routes the agent to get_fair_value_verdict when the exact Estimated Value, Fair Value Gap, or category reasoning is needed, including the price of that call. What it does not do is mention the other plausible alternatives present among siblings, such as get_full_breakdown, get_historical_scores, or get_tvr_estimated_value, so the exclusion set is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_coinsList Evaluated CoinsARead-onlyIdempotentInspect
Free. Lists all cryptocurrencies currently evaluated by True Value Rankings with their symbol, name, and category. New coins are added regularly. Data from True Value Rankings (truevaluerankings.com).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed) |
| coins | No | Covered coins with ticker and name |
| error | No | false on a normal answer, or an error message |
| total | No | |
| status | No | Present when the request could not be answered as asked, for example not_available |
| context | No | Standing context about TVR and how to read its outputs |
| summary | No | Plain-language summary of the answer |
| trimmed | No | Present when this free answer leaves out the exact figures and written reasons, with where to find them |
| requested | No | What was asked for, when it could not be resolved |
| disclaimer | No | Model-derived assessment, not investment advice |
| learn_more | No | Links for more detail |
| attribution | No | Required attribution text |
| paid_option | No | Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays. |
| data_sources | No | Where the numbers come from |
| paid_verdict | No | The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays. |
| valuation_rule | No | The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds genuinely new behavior context: the call is free of charge and the coin set changes over time ('new coins are added regularly'), which warns the agent results are not a static catalog. No mention of list size or ordering, which is the only remaining gap.
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 short sentences, front-loaded with the cost signal and the core action. Slight redundancy in naming 'True Value Rankings' twice (once as the evaluator, once as the data source), but nothing is misleading or 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?
For a zero-parameter read tool with a full output schema and rich annotations, the description covers what is returned (symbol, name, category), cost, and data freshness. Only freshness granularity and result ordering/size are left unstated, which is minor here.
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 there is nothing for the description to disambiguate; baseline 4 applies. The description correctly signals this is an unfiltered full listing rather than implying hidden filter options.
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+resource: lists all cryptocurrencies evaluated by True Value Rankings, and names the returned fields (symbol, name, category). The word 'all' plus 'currently evaluated' separates it in spirit from ranked/filtered siblings like get_top_ranked and compare_coins, but it never names a sibling explicitly.
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?
No explicit when-to-use or when-not-to-use guidance. Usage is only implied: it is the natural discovery/entry-point call before get_tvr_score, compare_coins, or get_full_breakdown. The 'Free' prefix hints at cost considerations but does not state that other tools may be metered.
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.
8 tool updates
- Changed
compare_coins4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
- Added
get_fair_value_verdict - Changed
get_full_breakdown4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
- Changed
get_methodology4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
- Changed
get_top_ranked4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
- Changed
get_tvr_estimated_value4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
- Changed
get_tvr_score4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
- Changed
list_coins4 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "When the prices behind this answer were taken (prices_as_of) and the day the coin's eight metric scores last changed (scores_last_changed)" +} - added
Output schema / properties / paid_verdictAdded value: +{ + "description": "The paid fair value verdict for a coin: the exact Fair Value Gap and TVR Estimated Value with the main reasons and caveats, its price and how to call it. Nothing is charged unless the client pays." +} - added
Output schema / properties / trimmedAdded value: +{ + "description": "Present when this free answer leaves out the exact figures and written reasons, with where to find them" +} - added
Output schema / properties / valuation_ruleAdded value: +{ + "description": "The published valuation rule: Undervalued at least 4% above the market price, Overvalued more than 15% below it, Fair Value between", + "type": "string" +}
8 tool updates
- Changed
compare_coins1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
- Changed
get_full_breakdown1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
- Changed
get_historical_scores1 field changed- changed
Input schema / properties / scope / descriptionPrevious value: -"free (default): the last 90 days or the last 3 records, no payment. full: the whole record; included with a Premium agent key, or paid per pull once the record extends beyond the free slice."New value: +"free (default): the last 90 days or the last 3 records, no payment. full: the whole record, paid per pull once the record extends beyond the free slice; until then the free record is returned and nothing is charged."
- Changed
get_methodology1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
- Changed
get_top_ranked1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
- Changed
get_tvr_estimated_value1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
- Changed
get_tvr_score1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
- Changed
list_coins1 field changed- added
Output schema / properties / paid_optionAdded value: +{ + "description": "Where relevant: the paid TVR capability that goes further than this free answer, with its price, how to pay, the licence and an example call. Nothing is charged unless the client pays." +}
2 tool updates
- Added
get_historical_scores - Changed
get_portfolio_analysis1 field changed- added
Output schema / properties / accessAdded value: +{}
2 tool updates
- Added
get_custom_ranking - Added
get_portfolio_analysis
7 tool updates
- Changed
compare_coins1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "coins_compared": { + "type": "number" + }, + "comparison": { + "description": "Per-coin scores, ranks and valuations" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "key_difference": { + "description": "The largest gap between the compared coins" + }, + "learn_more": { + "description": "Links for more detail" + }, + "metric_comparison": { + "description": "Metric-by-metric table" + }, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + }, + "total_coins_evaluated": { + "type": "number" + } + }, + "type": "object" +}
- Changed
get_full_breakdown1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "category": { + "description": "TVR coin category", + "type": "string" + }, + "coin": { + "description": "Coin name", + "type": "string" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "fair_value_gap": { + "description": "Gap between TVR Estimated Value and market price, formatted as a percentage", + "type": "string" + }, + "learn_more": { + "description": "Links for more detail" + }, + "metric_scores": {}, + "rank": { + "description": "Rank among evaluated coins, 1 is best", + "type": "number" + }, + "rank_out_of": { + "description": "Number of coins evaluated", + "type": "number" + }, + "ranking_context": {}, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "scoring_factors": { + "description": "The reasoning behind each metric score" + }, + "scoring_methodology_note": { + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + }, + "symbol": { + "description": "Ticker", + "type": "string" + }, + "tvr_estimated_value": { + "description": "TVR Estimated Value, formatted in USD", + "type": "string" + }, + "tvr_score": { + "description": "TVR Score, 0 to 100", + "type": "number" + }, + "valuation": { + "description": "Undervalued, Fair Value or Overvalued", + "type": "string" + }, + "valuation_note": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_methodology1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "learn_more": { + "description": "Links for more detail" + }, + "methodology": { + "description": "The 8 metrics, their default weights and how the TVR Score is built" + }, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_top_ranked1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "learn_more": { + "description": "Links for more detail" + }, + "rank_by": { + "description": "The ranking basis used", + "type": "string" + }, + "rank_by_description": { + "type": "string" + }, + "rankings": { + "description": "Ordered list of coins", + "type": "array" + }, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + }, + "total_coins_evaluated": { + "type": "number" + } + }, + "type": "object" +}
- Changed
get_tvr_estimated_value1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "coin": { + "description": "Coin name", + "type": "string" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "fair_value_gap": { + "description": "Gap between TVR Estimated Value and market price, formatted as a percentage", + "type": "string" + }, + "learn_more": { + "description": "Links for more detail" + }, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + }, + "symbol": { + "description": "Ticker", + "type": "string" + }, + "tvr_estimated_value": { + "description": "TVR Estimated Value, formatted in USD", + "type": "string" + }, + "valuation": { + "description": "Undervalued, Fair Value or Overvalued", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_tvr_score1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "category": { + "description": "TVR coin category", + "type": "string" + }, + "coin": { + "description": "Coin name", + "type": "string" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "fair_value_gap": { + "description": "Gap between TVR Estimated Value and market price, formatted as a percentage", + "type": "string" + }, + "learn_more": { + "description": "Links for more detail" + }, + "metric_scores": { + "description": "All 8 metric scores with their weights" + }, + "rank": { + "description": "Rank among evaluated coins, 1 is best", + "type": "number" + }, + "rank_out_of": { + "description": "Number of coins evaluated", + "type": "number" + }, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "strongest_metric": {}, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + }, + "symbol": { + "description": "Ticker", + "type": "string" + }, + "tvr_estimated_value": { + "description": "TVR Estimated Value, formatted in USD", + "type": "string" + }, + "tvr_score": { + "description": "TVR Score, 0 to 100", + "type": "number" + }, + "valuation": { + "description": "Undervalued, Fair Value or Overvalued", + "type": "string" + }, + "weakest_metric": {} + }, + "type": "object" +}
- Changed
list_coins1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "attribution": { + "description": "Required attribution text", + "type": "string" + }, + "coins": { + "description": "Covered coins with ticker and name", + "type": "array" + }, + "context": { + "description": "Standing context about TVR and how to read its outputs" + }, + "data_sources": { + "description": "Where the numbers come from" + }, + "disclaimer": { + "description": "Model-derived assessment, not investment advice", + "type": "string" + }, + "error": { + "description": "false on a normal answer, or an error message" + }, + "learn_more": { + "description": "Links for more detail" + }, + "requested": { + "description": "What was asked for, when it could not be resolved", + "type": "string" + }, + "status": { + "description": "Present when the request could not be answered as asked, for example not_available", + "type": "string" + }, + "summary": { + "description": "Plain-language summary of the answer", + "type": "string" + }, + "total": { + "type": "number" + } + }, + "type": "object" +}
9 tool updates
- Changed
compare_coins1 field changed- changed
Input schema / properties / coins / descriptionPrevious value: -"Array of 2-5 cryptocurrency ticker symbols to compare (e.g., [\"BTC\", \"ETH\", \"SOL\"])"New value: +"Array of 2-5 cryptocurrency tickers or names to compare (e.g., [\"BTC\", \"Ethereum\", \"SOL\"])"
- Removed
get_comparison_report - Removed
get_custom_ranking - Changed
get_full_breakdown2 fields changed- removed
Input schema / properties / _metaRemoved value: -{ - "description": "Payment metadata (handled automatically by MPP-enabled clients)" -} - changed
Input schema / properties / coin / descriptionPrevious value: -"Cryptocurrency ticker symbol (e.g., BTC, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK)"New value: +"Cryptocurrency ticker or name (e.g., BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK)"
- Removed
get_historical_scores - Removed
get_portfolio_analysis - Changed
get_top_ranked2 fields changed- changed
Input schema / properties / count / descriptionPrevious value: -"Number of coins to return (1-10, default 5)"New value: +"Number of coins to return (default 5)" - changed
Input schema / properties / count / maximumPrevious value: -10New value: +50
- Changed
get_tvr_estimated_value1 field changed- changed
Input schema / properties / coin / descriptionPrevious value: -"Cryptocurrency ticker symbol (e.g., BTC, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK)"New value: +"Cryptocurrency ticker or name (e.g., BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK)"
- Changed
get_tvr_score1 field changed- changed
Input schema / properties / coin / descriptionPrevious value: -"Cryptocurrency ticker symbol (e.g., BTC, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK)"New value: +"Cryptocurrency ticker or name (e.g., BTC, Bitcoin, ETH, LTC, XMR, SOL, ADA, AVAX, DOT, POL, LINK)"
2 tool updates
- Added
get_tvr_estimated_value - Removed
get_tvr_price
6 tool updates
- Added
get_comparison_report - Added
get_custom_ranking - Added
get_full_breakdown - Added
get_historical_scores - Added
get_portfolio_analysis - Changed
get_top_ranked2 fields changed- changed
Input schema / properties / count / descriptionPrevious value: -"Number of top-ranked coins to return (1-10, default 5)"New value: +"Number of coins to return (1-10, default 5)" - added
Input schema / properties / rank_byAdded value: +{ + "default": "tvr_score", + "description": "Ranking method: tvr_score, most_undervalued, or most_overvalued", + "enum": [ + "tvr_score", + "most_undervalued", + "most_overvalued" + ], + "type": "string" +}
6 tool updates
- First observed
compare_coins - First observed
get_methodology - First observed
get_top_ranked - First observed
get_tvr_price - First observed
get_tvr_score - First observed
list_coins
Related MCP Connectors
Crypto fundamentals, sentiment, whale tracking and influencer call accuracy for traders and agents.
Crypto market signals, technical indicators, and sentiment analysis for AI agents.
Live crypto technical analysis for agents: 200+ causal indicators, signals and liquidity sweeps.
Crypto prices, market overview, DeFi TVL, whale flows & anomaly scans for trading agents.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceReal-time crypto risk scoring for AI agents. Trust Score, crash probability, and distance-to-default for 205 tokens. Free, no API key needed.MIT- AlicenseAqualityAmaintenancePre-computed financial market intelligence for AI agents. Stocks, crypto, and ETFs.9128 npm5MIT
- AlicenseAqualityBmaintenanceRead-only cryptocurrency intelligence tools for AI agents, providing source-backed market research, evidence, and structured crypto data.2Apache 2.0
- AlicenseNot gradedqualityFmaintenanceScores tokens for market cap risk, liquidity, volatility, and sentiment using CoinGecko, DeFiLlama, and Fear & Greed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.