Skip to main content
Glama

Server Details

Crypto yield data for AI agents: lending, savings, staking, borrowing & stablecoin rates. 18 tools.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

21 tools
coin_historyHistorical coin price chartB
Read-onlyIdempotent
Inspect

Historical price timeseries for a coin. (Current plan: up to 1825 days of history.)

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays of history
coinIdYesCanonical coin id (e.g. "bitcoin")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, non-destructive. Description adds the limitation of up to 1825 days and hints at plan-dependency ('Current plan'), which is useful context beyond annotations.

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

Conciseness4/5

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

Two concise sentences, front-loaded with the primary purpose. The parenthetical adds useful context without bloating.

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

Completeness3/5

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

Given output schema exists (not shown), the description is minimally sufficient but lacks details on granularity (daily? hourly?) and data source, leaving gaps for an agent.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. The description adds no extra meaning beyond what the schema provides, meeting baseline but not exceeding.

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

Purpose4/5

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

The description clearly states it provides historical price timeseries for a coin, which is specific. It distinguishes sibling tools like get_price (current) and get_rate_history (rates) but doesn't explicitly contrast them.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_price or get_rate_history. The agent must infer from the description alone, with no explicit when or when-not advice.

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

fear_greed_indexFear & Greed indexA
Read-onlyIdempotent
Inspect

Current Fear & Greed index value and historical trend.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYesCurrent index, 0 (extreme fear) to 100 (extreme greed)
historyNoRecent trend of the index
updatedAtNo
classificationYesLabel, e.g. `Greed`, `Neutral`, `Extreme Fear`

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description's mention of 'current' and 'historical' adds limited value. It does not detail behaviors like data source or update frequency, which would be helpful beyond annotations.

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

Conciseness4/5

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

The description is a single concise sentence, appropriately sized for a simple tool. It front-loads the key information, though it could benefit from a minor structural improvement (e.g., separating current and historical aspects). Still, it is efficient.

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

Completeness4/5

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

Given the tool is parameterless, has comprehensive annotations, and an output schema exists to detail the return value, the description is nearly complete. It covers the essential purpose. A slight gap is the lack of mention of data resolution or period, but this is minor.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100% (trivially). Per guidelines, baseline is 4 for 0 params. The description adds no parameter information, but none is needed.

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

Purpose5/5

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

The description clearly states the tool provides the 'current value and historical trend' of the Fear & Greed index, which is a specific verb+resource combination. It distinguishes itself from siblings like 'market_summary' and 'get_price' by focusing on a distinct market sentiment metric.

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

Usage Guidelines3/5

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

The description implies the tool is for general market sentiment, and siblings suggest alternatives for specific coin data, but no explicit when-to-use or when-not-to-use guidance is provided. The agent must infer context from sibling names.

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

get_coinGet coin metadataA
Read-onlyIdempotent
Inspect

Full metadata for a coin: description, links, categories, market data, developer stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinIdYesCanonical coin id or slug (e.g. "bitcoin")

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesCanonical coin ID (e.g. `bitcoin`)
nameYesHuman-readable name (e.g. `Bitcoin`)
rankNoMarket cap rank (1 = largest)
priceNoCurrent spot price in USD
symbolYesTrading symbol (e.g. `btc`)
marketCapNoMarket cap in USD

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, indicating a safe read operation. The description adds value by detailing the exact attributes returned, which goes beyond annotations without contradiction.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the purpose, and contains no redundant information. Every phrase adds value.

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

Completeness5/5

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

Given the output schema exists (not shown but referenced), the description covers the key return fields. For a metadata retrieval tool with one parameter, the description is complete.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter coinId, with a clear description. The tool description does not add additional 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.

Purpose5/5

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

The description clearly states the tool returns 'Full metadata for a coin' and specifies contents: description, links, categories, market data, developer stats. This distinguishes it from siblings like get_price (price only) or list_coins (list only).

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

Usage Guidelines3/5

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

The description implies usage for comprehensive metadata but does not explicitly state when to use this tool versus alternatives such as get_price for price-only queries. No exclusions or context are provided.

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

get_priceAggregated exchange priceA
Read-onlyIdempotent
Inspect

Current aggregated price for one or more symbols, computed from multiple exchange feeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
vsNoQuote currency, default "usd"
symbolsYesSingle symbol or array of symbols (e.g. "btc" or ["btc","eth"])

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
pricesYes
timestampYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive nature, covering basic safety and idempotency. The description adds 'computed from multiple exchange feeds' but does not disclose behavioral details like caching, staleness, or the fact that additionalProperties are allowed in the input schema, which could affect tool invocation.

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

Conciseness5/5

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

Single sentence, directly states purpose and key differentiator (aggregated from multiple feeds). No wasted words, front-loaded with the most important information.

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

Completeness5/5

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

Given the tool's simplicity, full schema coverage, and presence of output schema, the description is complete. Annotations provide safety context, and the description adds the aggregation nuance. No missing information needed for safe and correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no new information about parameter values or usage beyond restating the tool's purpose. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool provides current aggregated price for one or more symbols from multiple exchange feeds. It distinguishes from siblings like get_price_by_symbol (single symbol) and get_coin (more data) by emphasizing aggregation and multiple exchange sources.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs siblings (e.g., when to prefer get_price_by_symbol or get_rates). The description only states what it does, leaving the agent to infer usage context from the tool name and sibling list.

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

get_price_by_symbolAggregated price for a single symbolA
Read-onlyIdempotent
Inspect

Aggregated exchange price for one symbol, plus the raw per-provider prices that fed the aggregate. Use get_price for multiple symbols in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
vsNoQuote currency, default "usd"
regionNoOptional region filter for provider selection
symbolYesSingle coin symbol, e.g. "btc"

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint; description adds that it returns raw per-provider prices, which is useful beyond annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and returned data, then sibling distinction. Every sentence adds value with no waste.

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

Completeness5/5

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

With output schema present and description explaining aggregate + raw prices, the tool definition is complete for a single-symbol price lookup.

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

Parameters3/5

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

Schema has 100% coverage with descriptions for all 3 parameters; description adds no extra parameter detail beyond implying the return structure, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it provides aggregated exchange price for one symbol plus raw per-provider prices, and distinguishes from sibling get_price for multiple symbols.

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

Usage Guidelines5/5

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

Explicitly says 'Use get_price for multiple symbols in one call', providing clear guidance when to use this tool vs. a sibling.

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

get_rate_by_symbolGet rates for a single symbolA
Read-onlyIdempotent
Inspect

Fetch all provider rates for a specific coin symbol. Optionally filter by category — pass category="lending"/"borrowing"/"staking" for yield questions, since unfiltered results mix in spot prices (category="price").

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesCoin symbol, case-insensitive (e.g. "btc" or "eth")
categoryNoFilter to a single product category. Without it, results mix spot prices (category="price") in with yields — pass "lending"/"borrowing"/"staking" for yield-only results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive; description adds value by warning that unfiltered results mix spot prices, a key behavioral trait beyond annotations.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded purpose, efficient use of words.

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

Completeness5/5

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

Given output schema exists and only 2 parameters, description covers essential behavior and filtering guidance completely.

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

Parameters4/5

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

Schema coverage is 100%, but description adds practical guidance for the category parameter, explaining its use for yield vs price scenarios, enhancing the schema's enum descriptions.

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

Purpose5/5

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

Description clearly states 'Fetch all provider rates for a specific coin symbol', specifying the verb and resource, and distinguishes from siblings like get_price by mentioning multiple provider rates and category filtering.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to filter by category ('for yield questions') and explains consequence of unfiltered results, but does not directly compare to sibling tools like get_price_by_symbol.

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

get_rate_changesRate change feed (observations)A
Read-onlyIdempotent
Inspect

The immutable rate-change log: every material yield move with full provenance (previous rate, raw value, multiplier, collection method, confidence, base/bonus split). Time-ascending pages via cursor. Unfiltered windows are capped at 31 days — filter by provider or symbol to walk deep history. Use for "what changed since X?" and audit trails.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, default 100
sinceYesISO date/datetime lower bound (required), e.g. "2026-08-01"
untilNoISO upper bound, default now
cursorNoOpaque cursor from a previous page
symbolNoFilter to one symbol, e.g. "USDC"
categoryNo
providerNoFilter to one provider (enables deep ranges)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
paginationYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond those annotations: immutable log, time-ascending ordering via cursor, and the 31-day cap on unfiltered queries. It doesn't contradict annotations, and it enriches the agent's understanding of pagination and data scope.

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

Conciseness5/5

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

Three sentences with no filler. The first sentence states the core purpose and data content, the second covers pagination, and the third addresses limitations and use cases. Every sentence earns its place, and critical information is front-loaded.

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

Completeness5/5

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

Given the complexity (7 params, output schema present), the description holistically covers what the tool returns, how pagination works, constraints on time windows, and real-world use cases. The output schema handles return-value details, so the description doesn't need to. The combination of annotations, schema, and description fully equips an agent to select and invoke correctly.

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

Parameters4/5

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

Schema coverage is high (86%), so parameters are mostly self-documenting. The description adds semantic context that isn't in the schema, such as using provider or symbol to bypass the 31-day window and cursor-based time-ascending pagination. This bridges the gap between raw parameters and real-world usage patterns.

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

Purpose5/5

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

The description opens with 'The immutable rate-change log,' clearly identifying the resource and operation scope. It distinguishes itself from siblings like get_rates (current prices) and get_rate_history (historical snapshots) by emphasizing 'what changed since X?' and audit trails, with full provenance details.

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

Usage Guidelines4/5

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

It gives explicit use cases ('Use for "what changed since X?" and audit trails') and notes a key limitation (unfiltered windows capped at 31 days) with guidance to filter by provider or symbol for deep history. However, it doesn't explicitly name alternative sibling tools or state when not to use this tool, so it stops short of a 5.

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

get_rate_historyHistorical ratesA
Read-onlyIdempotent
Inspect

Historical rate timeseries for a symbol. Recent history (~30 days) is per-tick; older history is daily granularity. Depth is clamped to your plan (up to 365 days on Pro) and bounded by how far back data has been recorded. (Current plan: up to 1825 days of history.)

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays of history. Clamped server-side to your plan (Free 7, Starter 30, Growth 90, Pro 365, Enterprise 1825) and bounded by available data. Points within ~30 days are per-tick; older points are daily.
symbolYesCoin symbol, case-insensitive
providerNoProvider slug to scope to, case-insensitive

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnly, openWorld, idempotent. Description adds that point density changes after ~30 days, depth clamped to plan, and bounded by data recording. 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.

Conciseness5/5

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

Two sentences, front-loaded with core purpose, then key details about granularity and plan limits. Every sentence is valuable.

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

Completeness5/5

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

Output schema exists (not shown). Description covers timeseries data, granularity, plan limits, and boundaries. Complete for a read-only historical data tool.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all 3 parameters. The description adds meaningful context about days parameter behavior (granularity change, clamping) beyond the schema.

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

Purpose5/5

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

The description clearly states it provides historical rate timeseries for a symbol. It distinguishes granularity: recent ~30 days per-tick, older daily. It differentiates from siblings like get_price (current price) and get_rates by specifying timeseries with plan limits.

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

Usage Guidelines4/5

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

The description implies use for historical data and mentions plan clamping. It lacks explicit when-to-use vs alternatives, but given sibling names (e.g., get_price), the purpose is clear.

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

get_ratesGet current ratesA
Read-onlyIdempotent
Inspect

List current rates across providers, optionally filtered by symbol, category, or provider. For "what is the best yield on BTC right now?" style questions, ALWAYS pass category="lending"/"borrowing"/"staking" — an unfiltered call mostly returns spot prices (category="price"), not yields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 100
symbolNoFilter by coin symbol, case-insensitive (e.g. "btc" or "BTC")
categoryNoFilter by product category. IMPORTANT for yield questions: without this filter, most returned rows are category="price" (spot prices), not yields. Pass category="lending", "borrowing", or "staking" to get APY/interest-rate data.
providerNoFilter by provider slug, case-insensitive

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds behavioral context about the category filter affecting result types (yields vs. prices), which is not covered by annotations. 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.

Conciseness5/5

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

The description is just two sentences, both highly informative and front-loaded. Every sentence earns its place; there is no fluff.

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

Completeness5/5

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

Given the tool's complexity (4 optional parameters, rich annotations, output schema exists), the description is complete. It covers primary use cases, filtering options, and critical caveats regarding category usage. No missing context for an agent to select or invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value by reiterating the category filter's importance and explaining the unfiltered call's default behavior (returns mostly spot prices). This nuance goes beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool's function: 'List current rates across providers, optionally filtered by symbol, category, or provider.' It also distinguishes from siblings by emphasizing the yield vs. price distinction, which is a key differentiator among similar tools.

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

Usage Guidelines5/5

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

The description explicitly provides guidance: 'For "what is the best yield on BTC right now?" style questions, ALWAYS pass category="lending"/"borrowing"/"staking" — an unfiltered call mostly returns spot prices (category="price"), not yields.' This gives clear when-to-use and when-not-to-use information.

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

list_coinsList coinsA
Read-onlyIdempotent
Inspect

Paginated list of coins with optional name/symbol search.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage, default 1
limitNoPage size, default 20
searchNoSearch by name or symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
coinsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint(false). The description adds 'paginated' behavior, which is useful but does not elaborate on pagination mechanics (e.g., totals, cursor). The burden is shared with annotations, so this is adequate but not exceptional.

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

Conciseness5/5

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

One concise sentence (10 words) that covers the essential functionality. No wasted words, and the most critical information ('paginated list', 'optional search') is front-loaded.

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

Completeness4/5

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

Complexity is low (simple list with search and pagination). Output schema exists, so return format is covered. The description covers purpose and key features but omits sorting behavior or filtering details. Still, it is largely complete for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions pagination and optional search, which adds context beyond the schema's field descriptions but does not detail parameter interaction (e.g., search overrides other filters). The schema already describes default values and constraints.

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

Purpose5/5

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

The description clearly states the tool returns a 'paginated list of coins' and includes 'optional name/symbol search'. This specific verb+resource combination differentiates it from siblings like 'get_coin' (single coin) or 'top_coins' (filtered list).

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like 'get_coin' or 'top_coins'. The context is implied (general listing vs. specific queries), but the description does not provide when-not-to-use or compare with other tools.

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

list_earn_productsCanonical earn products & variantsA
Read-onlyIdempotent
Inspect

The canonical earn product graph: products (provider × asset × category) with their term variants — lockups, tiers, minimum deposits, payout schedules, withdrawal notice, TVL, promo flags — each carrying collection method, confidence (0-100 with bands), verification timestamps, and geo eligibility resolved from variant overrides or provider defaults. Use for "what are the actual terms behind this rate?"

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, default 50
offsetNo
symbolNoFilter to one symbol, e.g. "BTC"
categoryNo
providerNoFilter to one provider, e.g. "nexo"
min_confidenceNoOnly products with at least one variant at/above this confidence

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description adds context beyond these: it confirms the graph includes confidence with bands, verification timestamps, and geo eligibility resolved from variant overrides or provider defaults. This is useful behavioral detail. However, it doesn't specify pagination behavior or what happens if the result set is very large.

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

Conciseness4/5

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

The description is two sentences: the first concisely enumerates the rich output structure, and the second gives a clear usage case. It is dense with information but not excessively long. Slightly more structure (e.g., bullet points for variant fields) could improve readability, but it remains effective.

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

Completeness4/5

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

Given the tool has 6 optional parameters and a moderate schema coverage of 67%, the description sufficiently covers the key data fields and usage intent. The output schema exists but is not shown here; if it documents the return structure well, the description is adequate. It could be more complete by mentioning the default page size or the behavior of min_confidence filtering on variant-level data, but these are minor gaps.

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

Parameters4/5

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

Schema description coverage is 67% (4 of 6 params have descriptions). The description goes beyond the schema by explaining the overall data model and the meaning of the returned fields (e.g., confidence bands, geo eligibility), which helps the agent understand how filters like symbol, provider, or min_confidence relate to the output. This adds value but doesn't describe each parameter's syntax in detail.

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

Purpose5/5

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

The description clearly states that the tool returns 'the canonical earn product graph' with detailed term variants. It moves beyond the generic title by specifying the data structure (provider x asset x category) and listing key fields (lockups, tiers, minimum deposits, etc.). This effectively distinguishes it from sibling tools that focus on prices, rates, or coin details.

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

Usage Guidelines5/5

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

The description closes with a direct usage cue: 'Use for "what are the actual terms behind this rate?"' This tells the agent exactly when to select this tool over alternatives like get_rates or get_price. It implicitly advises against using it for simple price lookups, which are handled by siblings.

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

list_providersList rate providersA
Read-onlyIdempotent
Inspect

All rate providers, optionally filtered by product category.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 100
categoryNoFilter to providers that offer this category

Output Schema

ParametersJSON Schema
NameRequiredDescription
providersYes

TDQS

A3.8/5.0
Behavior2/5

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

The description does not add behavioral context beyond what the annotations already provide (readOnly, openWorld, idempotent, non-destructive). There is no mention of additional traits like pagination or result set limits beyond the schema.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. Every word serves a purpose, stating the main function and the optional filter.

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

Completeness4/5

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

For a simple list tool with only two optional parameters, full schema coverage, and existing output schema, the description is sufficient. It could be improved by noting the default limit, but the schema already provides that.

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

Parameters3/5

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

Schema coverage is 100% and both parameters have descriptions in the schema. The description adds no extra meaning beyond restating the filter capability, so it meets the baseline without improvement.

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

Purpose5/5

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

The description clearly states the action 'list' and the resource 'rate providers', and mentions optional filtering by product category. This distinguishes it from sibling tools which focus on rates or coins rather than providers.

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

Usage Guidelines4/5

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

The description implies when to use: to list rate providers with an optional category filter. While it does not explicitly mention when not to use it or provide alternatives among siblings, the context of sibling names makes the usage clear.

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

market_summaryGlobal market summaryA
Read-onlyIdempotent
Inspect

One-call summary of total market cap, 24h volume, BTC/ETH dominance, and recent trend.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
trend24hNo24h trend as a decimal (0.02 = +2%)
btcDominanceYesBTC share of total market cap, 0-100
ethDominanceYesETH share of total market cap, 0-100
volume24hUsdYesCombined 24h trading volume
totalMarketCapUsdYesCombined market cap of all tracked coins

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description adds marginal value by specifying the exact data returned (market cap, volume, dominance, trend). It does not disclose any additional behavioral traits beyond the annotations.

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

Conciseness5/5

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

Single sentence that is front-loaded and concise, containing no superfluous words. Every word contributes to the description.

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

Completeness5/5

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

Given zero parameters, presence of an output schema, and rich annotations, the description fully covers what the tool does and returns. 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.

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Description adds no parameter info but is not needed; baseline of 4 is appropriate for 0-parameter tools.

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

Purpose5/5

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

The description clearly states it provides a one-call summary of total market cap, 24h volume, BTC/ETH dominance, and recent trend, using specific verbs and resources. It distinguishes well from sibling tools like get_price or top_coins which are more specific.

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

Usage Guidelines3/5

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

The description implies usage for a quick global overview but does not explicitly state when to use versus alternatives like get_price or top_movers. It lacks when-not-to-use guidance.

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

resolve_symbolResolve symbol to canonical coinA
Read-onlyIdempotent
Inspect

Map an exchange-specific or ambiguous symbol to bitcompare's canonical coin id. Useful when an exchange uses a non-standard ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesExchange-specific or ambiguous symbol
contextNoSource exchange or quote currency to disambiguate (e.g. "kraken", "binance")

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesCoin display name
inputYesThe raw symbol that was queried
coinIdYesCanonical Bitcompare coin ID
symbolYesCanonical symbol

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. Description adds the core mapping behavior but no further traits like error handling or rate limits.

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

Conciseness5/5

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

Single sentence with no filler, front-loads the purpose. Every word earns its place.

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

Completeness4/5

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

Has output schema (mentioned). Description covers the main use case and disambiguation. Minor gap: doesn't explain what happens if symbol can't be resolved, but annotations hint at open world.

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

Parameters3/5

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

Schema covers all parameters at 100%. Description restates their purpose but adds minimal new meaning beyond the schema.

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

Purpose5/5

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

Clearly states it maps symbols to canonical coin IDs, with specific verb and resource. Distinguishes from sibling resolve_symbols_batch by implying individual resolution.

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

Usage Guidelines4/5

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

Explicitly says 'useful when an exchange uses a non-standard ticker', providing clear usage context. Does not exclude other uses but gives strong guidance.

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

resolve_symbols_batchBatch resolve symbolsA
Read-onlyIdempotent
Inspect

Resolve up to 100 symbols in a single request. Requires a plan with bulk endpoints enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoSource exchange or quote currency applied to every input symbol
symbolsYesUp to 100 symbols to resolve in a single request

Output Schema

ParametersJSON Schema
NameRequiredDescription
resolvedYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature, so the description adds value by specifying the batch limit (100 symbols) and plan requirement, without contradicting annotations.

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

Conciseness5/5

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

Two concise sentences with no redundancy, front-loading the key purpose and limitations.

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

Completeness4/5

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

Given the rich annotations and presence of an output schema, the description adequately covers the tool's behavior (batch limit, plan requirement). It could mention partial failure handling but is otherwise sufficient.

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

Parameters3/5

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

Schema description coverage is 100% and the description does not add new parameter information beyond what the schema already provides (e.g., context and symbols descriptions), so baseline score of 3 is appropriate.

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

Purpose5/5

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

The title 'Batch resolve symbols' and description 'Resolve up to 100 symbols in a single request' clearly specify the verb (resolve) and resource (symbols), distinguishing it from the sibling tool 'resolve_symbol' which handles single symbols.

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

Usage Guidelines4/5

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

The description mentions the prerequisite 'Requires a plan with bulk endpoints enabled' and implies batch usage via 'up to 100 symbols', but does not explicitly contrast with the single resolve tool or state when to prefer this tool.

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

similar_coinsSimilar coinsA
Read-onlyIdempotent
Inspect

Coins related to the given coin by category/sector similarity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax related coins to return, default 10
coinIdYesCanonical coin id to find related coins for (e.g. "bitcoin")

Output Schema

ParametersJSON Schema
NameRequiredDescription
coinsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive; description adds that similarity is based on category/sector, which provides extra behavioral context but no details on auth, rate limits, or side effects.

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

Conciseness5/5

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

Single sentence, no filler, front-loaded with key purpose. Every word earns its place.

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

Completeness4/5

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

Given the tool's simplicity (2 params, output schema exists), the description sufficiently explains the similarity criterion. Minor gap: no mention of default limit (10) beyond schema.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters; description does not add meaning beyond what schema already provides, so baseline score is appropriate.

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

Purpose5/5

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

Description uses specific verb 'find related coins' and resource 'coins by similarity', clearly distinguishing from siblings like 'get_coin' (single coin) or 'list_coins' (all coins).

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

Usage Guidelines3/5

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

Description implies use for finding similar coins but does not specify when to use this tool versus alternatives like 'top_coins' or 'coin_history', nor provides exclusions.

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

stablecoin_earn_benchmarkBitcompare Earn Index (BEI-Stable)A
Read-onlyIdempotent
Inspect

The Bitcompare Earn Index for stablecoins: median USDC/USDT lending APY across servable providers, with CeFi/DeFi splits, TVL-weighted variant, deltas, and an immutable daily history. Use for "what does stablecoin yield pay right now / how has it trended?" — this is the citable market reference, not a single provider quote.

ParametersJSON Schema
NameRequiredDescriptionDefault
segmentNoRestrict to one segment. Omit for the headline across overall + CeFi + DeFi.
history_daysNoRequest the daily series for the last N days instead of the headline. Anonymous/free access is clamped to the most recent 90 days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, making the tool's safety profile clear. The description adds valuable context about 'immutable daily history' and the existence of CeFi/DeFi splits and TVL weighting, which go beyond annotations without contradicting them.

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

Conciseness5/5

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

Two sentences, no filler. The first sentence defines the tool's output precisely; the second gives targeted usage guidance. Every word earns its place. Front-loaded structure makes it easy to scan.

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

Completeness4/5

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

For a read-only index tool with decent annotations and an output schema, the description covers the core behavior: segments, TVL-weighted variant, deltas, history immutability, and access clamping. Minor omission: 'deltas' are mentioned but not defined, though likely detailed in the output schema. Overall sufficient for selection and invocation.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline meaning. The description adds extra semantic value by explaining the effect of omitting the segment parameter ('headline across overall + CeFi + DeFi') and the access clamp on history_days ('anonymous/free access is clamped to the most recent 90 days'), which are not evident from the schema alone.

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

Purpose5/5

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

The description clearly states the tool returns the median USDC/USDT lending APY across servable providers, with splits and history. It uses specific verbs ('median', 'TVL-weighted', 'immutable daily history') and distinguishes itself from a single provider quote, making it unambiguous among siblings like stablecoin_index or list_earn_products.

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

Usage Guidelines4/5

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

The description provides explicit use cases ('what does stablecoin yield pay right now / how has it trended?') and clarifies it is a citable market reference rather than a single provider quote. However, it does not directly name sibling alternatives like stablecoin_index or list_earn_products to exclude them, leaving some differentiation implicit.

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

stablecoin_indexStablecoin stability leaderboardA
Read-onlyIdempotent
Inspect

Ranked stablecoin leaderboard with stability scores, peg deviation, and market cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 50

Output Schema

ParametersJSON Schema
NameRequiredDescription
stablecoinsYesRanked stablecoin leaderboard

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context on returned data (stability scores, peg deviation, market cap) but does not go beyond those annotations to disclose behaviors like pagination or update frequency.

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

Conciseness5/5

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

Single sentence with no extraneous information. Every word serves a clear purpose.

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

Completeness5/5

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

For a simple tool with one optional parameter and an output schema, the description sufficiently explains the purpose and key output fields. No additional context needed.

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

Parameters3/5

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

Schema coverage is 100% with a single limit parameter described as 'Default 50'. The description does not add additional meaning beyond that, so baseline score of 3 applies.

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

Purpose5/5

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

Title and description clearly state it provides a ranked leaderboard of stablecoins with stability scores, peg deviation, and market cap. This distinguishes it from sibling tools like stablecoin_peg_stability which may focus on individual peg analysis.

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

Usage Guidelines3/5

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

The description implies usage for obtaining a ranked overview of stablecoins but does not explicitly state when to use it over alternatives (e.g., stablecoin_peg_stability) or when not to use it.

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

stablecoin_peg_stabilityStablecoin peg stabilityB
Read-onlyIdempotent
Inspect

Peg deviation history and stability stats for a stablecoin.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoStability window, default "30d"
symbolYesStablecoin symbol (e.g. "usdt", "usdc")

Output Schema

ParametersJSON Schema
NameRequiredDescription
symbolYes
historyYesRecent peg deviation samples
deviationYesCurrent peg deviation in basis points
pegTargetYesTarget peg in USD (typically 1.0)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, providing a clear safety profile. The description adds no behavioral context beyond stating 'history and stats', which is consistent but redundant.

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

Conciseness5/5

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

The description is a single, concise sentence of 8 words, front-loaded with the core function. No extraneous information.

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

Completeness4/5

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

Given the tool's simplicity, good annotations, and presence of an output schema, the description is sufficient to inform the agent of the tool's purpose and data type. It omits return format details, but those are covered by the output schema.

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

Parameters3/5

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

The input schema has 100% description coverage for both parameters ('symbol' and 'period'), so the description does not need to add parameter details. The description mentions 'stability stats' and 'history', which loosely aligns with the parameters but adds no new meaning.

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

Purpose4/5

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

The description clearly states the tool provides 'peg deviation history and stability stats' for a stablecoin, specifying the resource and action. However, it does not differentiate from sibling tools like 'stablecoin_index', which may serve a similar purpose.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives like 'stablecoin_index' or 'coin_history'. There are no explicit usage contexts or exclusions.

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

top_coinsTop coins by market capB
Read-onlyIdempotent
Inspect

Top N coins ordered by market capitalisation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of coins, default 100

Output Schema

ParametersJSON Schema
NameRequiredDescription
coinsYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that results are ordered by market capitalisation, but does not elaborate on dynamic nature or pagination. Provides some additional behavioral context beyond annotations.

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

Conciseness4/5

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

The description is concise with one sentence. It is efficient but could benefit from slight elaboration without being verbose.

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

Completeness4/5

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

For a simple tool with one parameter and an output schema, the description covers the key aspects: ordering by market cap and limiting. It lacks mention of return format or real-time nature, but output schema likely covers that.

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

Parameters3/5

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

Schema coverage is 100% and describes the limit parameter. The description does not add any extra semantics about the parameter beyond what is in the schema.

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

Purpose4/5

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

The description clearly states it returns top coins ordered by market capitalisation. It uses a specific verb-resource combination. However, it does not explicitly differentiate from siblings like list_coins or top_movers.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description provides no context about when this tool is appropriate compared to other coin-listing tools.

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

top_moversTop gainers/losersA
Read-onlyIdempotent
Inspect

Biggest 24h gainers and losers within a rank segment.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of gainers and losers to return on each side, default 10
segmentNoRank segment, default "top100"

Output Schema

ParametersJSON Schema
NameRequiredDescription
losersYesTop 24h losers in the requested segment
gainersYesTop 24h gainers in the requested segment

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature, so the description's addition of the 24h time window and rank segment filter is valuable behavioral context. 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.

Conciseness5/5

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

The description is a single clear sentence with no extraneous information. It perfectly front-loads the core purpose.

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

Completeness5/5

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

Given the simplicity of the tool (2 optional params, full schema coverage, rich annotations, and an output schema), the description is complete enough to guide an agent in correct invocation.

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

Parameters4/5

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

The schema covers both parameters, but the description adds the 24h time window and clarifies that the rank segment is 'within' a segment, enhancing the semantic understanding beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool returns the biggest 24h gainers and losers within a rank segment, aligning with the name and title. It distinguishes from siblings like 'top_coins' by focusing on movers rather than static ranking.

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

Usage Guidelines3/5

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

The description implies usage for querying top performers based on 24h price change, but lacks explicit guidance on when to use it versus similar tools like 'get_price' or 'market_summary'. No alternatives or exclusions are mentioned.

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. Dates show when Glama detected each change.

  1. 1 tool update
    • Changedstablecoin_earn_benchmark3 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • addedOutput schema / properties / data
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "benchmarkKey": {
        +      "type": "string"
        +    },
        +    "clamped": {
        +      "type": "boolean"
        +    },
        +    "count": {
        +      "type": "integer"
        +    },
        +    "methodologyUrl": {
        +      "type": "string"
        +    },
        +    "methodologyVersion": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "prints": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "day": {
        +            "type": "string"
        +          },
        +          "medianRate": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "day",
        +          "medianRate"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "segment": {
        +      "enum": [
        +        "overall",
        +        "cefi",
        +        "defi"
        +      ],
        +      "type": "string"
        +    },
        +    "segments": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "constituentCount": {
        +            "type": "integer"
        +          },
        +          "day": {
        +            "type": "string"
        +          },
        +          "dayChange": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "medianRate": {
        +            "type": "number"
        +          },
        +          "monthChange": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "providerCount": {
        +            "type": "integer"
        +          },
        +          "segment": {
        +            "enum": [
        +              "overall",
        +              "cefi",
        +              "defi"
        +            ],
        +            "type": "string"
        +          },
        +          "sparkline": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "backfilled": {
        +                  "type": "boolean"
        +                },
        +                "day": {
        +                  "type": "string"
        +                },
        +                "medianRate": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "day",
        +                "medianRate",
        +                "backfilled"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "tvlWeightedRate": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "weekChange": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "segment",
        +          "day",
        +          "medianRate",
        +          "tvlWeightedRate",
        +          "constituentCount",
        +          "providerCount",
        +          "dayChange",
        +          "weekChange",
        +          "monthChange",
        +          "sparkline"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "benchmarkKey"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "data"
        +]
  2. 2 tool updates
    • Addedget_rate_changes
    • Addedlist_earn_products
  3. 1 tool update
    • Addedstablecoin_earn_benchmark
  4. 1 tool update
    • Addedget_price_by_symbol
  5. 1 tool update
    • Changedcoin_history4 fields changed
      • addedOutput schema / properties / data
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coinId": {
        +      "type": "string"
        +    },
        +    "days": {
        +      "type": "integer"
        +    },
        +    "lastUpdated": {
        +      "description": "ISO-8601 timestamp of the most recent refresh",
        +      "type": "string"
        +    },
        +    "prices": {
        +      "description": "Price points, oldest → newest",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "marketCap": {
        +            "type": "number"
        +          },
        +          "price": {
        +            "type": "number"
        +          },
        +          "timestamp": {
        +            "description": "Unix epoch milliseconds",
        +            "type": "number"
        +          },
        +          "volume": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "timestamp",
        +          "price"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "source": {
        +      "description": "Where the data came from",
        +      "enum": [
        +        "rate_history",
        +        "cache",
        +        "coingecko"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "coinId",
        +    "days",
        +    "source",
        +    "prices",
        +    "lastUpdated"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / points
        Removed value: -{
        -  "description": "Price points, oldest → newest",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "timestamp": {
        -        "description": "ISO-8601 timestamp of the data point",
        -        "type": "string"
        -      },
        -      "value": {
        -        "description": "The recorded numeric value",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "timestamp",
        -      "value"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / symbol
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "symbol",
        -  "points"
        -]New value: +[
        +  "data"
        +]
  6. 8 tool updates
    • Changedcoin_history3 fields changed
      • addedInput schema / properties / coinId
        Added value: +{
        +  "description": "Canonical coin id (e.g. \"bitcoin\")",
        +  "type": "string"
        +}
      • removedInput schema / properties / symbol
        Removed value: -{
        -  "description": "Coin symbol (e.g. \"btc\")",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "symbol"
        -]New value: +[
        +  "coinId"
        +]
    • Removedcoin_markets
    • Changedget_price14 fields changed
      • addedOutput schema / properties / count
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / prices / items / properties / currency
        Added value: +{
        +  "description": "ISO 4217 currency code the price is denominated in",
        +  "type": "string"
        +}
      • addedOutput schema / properties / prices / items / properties / max
        Added value: +{
        +  "description": "Highest provider price after outlier filtering",
        +  "type": "number"
        +}
      • addedOutput schema / properties / prices / items / properties / median
        Added value: +{
        +  "description": "Median provider price",
        +  "type": "number"
        +}
      • addedOutput schema / properties / prices / items / properties / min
        Added value: +{
        +  "description": "Lowest provider price after outlier filtering",
        +  "type": "number"
        +}
      • addedOutput schema / properties / prices / items / properties / price
        Added value: +{
        +  "description": "Aggregated price in `currency` (default USD)",
        +  "type": "number"
        +}
      • removedOutput schema / properties / prices / items / properties / priceUsd
        Removed value: -{
        -  "description": "Aggregated USD spot price",
        -  "type": "number"
        -}
      • addedOutput schema / properties / prices / items / properties / providers
        Added value: +{
        +  "description": "Number of providers included in the aggregation",
        +  "type": "integer"
        +}
      • changedOutput schema / properties / prices / items / properties / symbol / description
        Previous value: -"Coin symbol queried"New value: +"Coin symbol"
      • addedOutput schema / properties / prices / items / properties / timestamp
        Added value: +{
        +  "description": "ISO-8601 timestamp of the aggregation",
        +  "type": "string"
        +}
      • removedOutput schema / properties / prices / items / properties / updatedAt
        Removed value: -{
        -  "description": "ISO-8601 timestamp of the price aggregation",
        -  "type": "string"
        -}
      • changedOutput schema / properties / prices / items / required
        Previous value: -[
        -  "symbol",
        -  "priceUsd"
        -]New value: +[
        +  "symbol",
        +  "price",
        +  "currency",
        +  "providers",
        +  "min",
        +  "max",
        +  "median",
        +  "timestamp"
        +]
      • addedOutput schema / properties / timestamp
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "prices"
        -]New value: +[
        +  "prices",
        +  "count",
        +  "timestamp"
        +]
    • Changedget_rate_by_symbol5 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter to a single product category (e.g. \"savings\", \"lending\", \"staking\")"New value: +"Filter to a single product category. Without it, results mix spot prices (category=\"price\") in with yields — pass \"lending\"/\"borrowing\"/\"staking\" for yield-only results."
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "lending",
        +  "borrowing",
        +  "staking",
        +  "price"
        +]
      • changedInput schema / properties / symbol / description
        Previous value: -"Coin symbol, e.g. \"btc\" or \"eth\""New value: +"Coin symbol, case-insensitive (e.g. \"btc\" or \"eth\")"
      • addedOutput schema / properties / data / properties / rates / items / properties / ageSeconds
        Added value: +{
        +  "description": "Seconds since lastUpdated — use this to discount stale rows rather than trusting them as current",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / data / properties / rates / items / properties / stale
        Added value: +{
        +  "description": "True when this row is old enough that it should be treated with caution (audit BC-9)",
        +  "type": "boolean"
        +}
    • Changedget_rate_history2 fields changed
      • changedInput schema / properties / provider / description
        Previous value: -"Provider slug to scope to"New value: +"Provider slug to scope to, case-insensitive"
      • changedInput schema / properties / symbol / description
        Previous value: -"Coin symbol"New value: +"Coin symbol, case-insensitive"
    • Changedget_rates6 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter by product category (e.g. \"savings\", \"lending\")"New value: +"Filter by product category. IMPORTANT for yield questions: without this filter, most returned rows are category=\"price\" (spot prices), not yields. Pass category=\"lending\", \"borrowing\", or \"staking\" to get APY/interest-rate data."
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "lending",
        +  "borrowing",
        +  "staking",
        +  "price"
        +]
      • changedInput schema / properties / provider / description
        Previous value: -"Filter by provider slug"New value: +"Filter by provider slug, case-insensitive"
      • changedInput schema / properties / symbol / description
        Previous value: -"Filter by coin symbol (e.g. \"btc\")"New value: +"Filter by coin symbol, case-insensitive (e.g. \"btc\" or \"BTC\")"
      • addedOutput schema / properties / data / properties / rates / items / properties / ageSeconds
        Added value: +{
        +  "description": "Seconds since lastUpdated — use this to discount stale rows rather than trusting them as current",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / data / properties / rates / items / properties / stale
        Added value: +{
        +  "description": "True when this row is old enough that it should be treated with caution (audit BC-9)",
        +  "type": "boolean"
        +}
    • Changedlist_providers2 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter to providers that offer this category (e.g. \"savings\", \"lending\")"New value: +"Filter to providers that offer this category"
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "lending",
        +  "borrowing",
        +  "staking",
        +  "price"
        +]
    • Changedstablecoin_peg_stability2 fields changed
      • addedInput schema / properties / period
        Added value: +{
        +  "description": "Stability window, default \"30d\"",
        +  "enum": [
        +    "7d",
        +    "30d",
        +    "90d"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / window
        Removed value: -{
        -  "description": "Stability window, default \"30d\"",
        -  "enum": [
        -    "7d",
        -    "30d",
        -    "90d"
        -  ],
        -  "type": "string"
        -}
  7. 1 tool update
    • Changedget_rate_history1 field changed
      • changedInput schema / properties / days / description
        Previous value: -"Days of history. Clamped to the plan limit (7 Free, 1825 Pro)."New value: +"Days of history. Clamped server-side to your plan (Free 7, Starter 30, Growth 90, Pro 365, Enterprise 1825) and bounded by available data. Points within ~30 days are per-tick; older points are daily."
  8. 3 tool updates
    • Changedget_rate_by_symbol3 fields changed
      • addedOutput schema / properties / data
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "count": {
        +      "description": "Number of rates returned",
        +      "type": "number"
        +    },
        +    "rates": {
        +      "description": "Matching rate entries",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "category": {
        +            "description": "Product category",
        +            "enum": [
        +              "lending",
        +              "borrowing",
        +              "staking",
        +              "price"
        +            ],
        +            "type": "string"
        +          },
        +          "coinId": {
        +            "description": "Canonical coin id, e.g. `bitcoin` (nullable)",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lastUpdated": {
        +            "description": "ISO-8601 timestamp of the most recent rate refresh",
        +            "type": "string"
        +          },
        +          "metadata": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": {},
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "provider": {
        +            "description": "Provider slug, e.g. `nexo`",
        +            "type": "string"
        +          },
        +          "providerSymbol": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "rate": {
        +            "description": "Rate value; semantics depend on unitType (percentage APY vs absolute price)",
        +            "type": "number"
        +          },
        +          "symbol": {
        +            "description": "Coin symbol, e.g. `btc`",
        +            "type": "string"
        +          },
        +          "unitSymbol": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "unitType": {
        +            "enum": [
        +              "percentage",
        +              "absolute",
        +              "ratio"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "provider",
        +          "symbol",
        +          "category",
        +          "rate",
        +          "coinId",
        +          "lastUpdated"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "symbol": {
        +      "description": "Present on the /rates/{symbol} variant",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "description": "ISO-8601 response timestamp (omitted on /rates/{symbol})",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "rates",
        +    "count"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / rates
        Removed value: -{
        -  "description": "Matching rate entries",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "apy": {
        -        "description": "Annual percentage yield as a decimal (0.05 = 5%)",
        -        "type": "number"
        -      },
        -      "category": {
        -        "description": "Product category",
        -        "enum": [
        -          "savings",
        -          "lending",
        -          "staking",
        -          "borrowing"
        -        ],
        -        "type": "string"
        -      },
        -      "provider": {
        -        "description": "Provider slug, e.g. `nexo`",
        -        "type": "string"
        -      },
        -      "symbol": {
        -        "description": "Coin symbol, e.g. `btc`",
        -        "type": "string"
        -      },
        -      "updatedAt": {
        -        "description": "ISO-8601 timestamp of the most recent rate refresh",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "provider",
        -      "symbol",
        -      "category",
        -      "apy"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "rates"
        -]New value: +[
        +  "data"
        +]
    • Changedget_rate_history5 fields changed
      • addedOutput schema / properties / data
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "history": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "category": {
        +            "enum": [
        +              "lending",
        +              "borrowing",
        +              "staking",
        +              "price"
        +            ],
        +            "type": "string"
        +          },
        +          "coinId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "metadata": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": {},
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "provider": {
        +            "type": "string"
        +          },
        +          "providerSymbol": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "rate": {
        +            "type": "number"
        +          },
        +          "symbol": {
        +            "type": "string"
        +          },
        +          "timestamp": {
        +            "description": "ISO-8601 observation time (oldest → newest)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "provider",
        +          "symbol",
        +          "category",
        +          "rate",
        +          "timestamp",
        +          "createdAt",
        +          "coinId"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "history",
        +    "count"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / points
        Removed value: -{
        -  "description": "Time-ordered rate observations (oldest → newest)",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "timestamp": {
        -        "description": "ISO-8601 timestamp of the data point",
        -        "type": "string"
        -      },
        -      "value": {
        -        "description": "The recorded numeric value",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "timestamp",
        -      "value"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / provider
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / symbol
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "symbol",
        -  "points"
        -]New value: +[
        +  "data"
        +]
    • Changedget_rates3 fields changed
      • addedOutput schema / properties / data
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "count": {
        +      "description": "Number of rates returned",
        +      "type": "number"
        +    },
        +    "rates": {
        +      "description": "Matching rate entries",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "category": {
        +            "description": "Product category",
        +            "enum": [
        +              "lending",
        +              "borrowing",
        +              "staking",
        +              "price"
        +            ],
        +            "type": "string"
        +          },
        +          "coinId": {
        +            "description": "Canonical coin id, e.g. `bitcoin` (nullable)",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lastUpdated": {
        +            "description": "ISO-8601 timestamp of the most recent rate refresh",
        +            "type": "string"
        +          },
        +          "metadata": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": {},
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "provider": {
        +            "description": "Provider slug, e.g. `nexo`",
        +            "type": "string"
        +          },
        +          "providerSymbol": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "rate": {
        +            "description": "Rate value; semantics depend on unitType (percentage APY vs absolute price)",
        +            "type": "number"
        +          },
        +          "symbol": {
        +            "description": "Coin symbol, e.g. `btc`",
        +            "type": "string"
        +          },
        +          "unitSymbol": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "unitType": {
        +            "enum": [
        +              "percentage",
        +              "absolute",
        +              "ratio"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "provider",
        +          "symbol",
        +          "category",
        +          "rate",
        +          "coinId",
        +          "lastUpdated"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "symbol": {
        +      "description": "Present on the /rates/{symbol} variant",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "description": "ISO-8601 response timestamp (omitted on /rates/{symbol})",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "rates",
        +    "count"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / rates
        Removed value: -{
        -  "description": "Matching rate entries",
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "apy": {
        -        "description": "Annual percentage yield as a decimal (0.05 = 5%)",
        -        "type": "number"
        -      },
        -      "category": {
        -        "description": "Product category",
        -        "enum": [
        -          "savings",
        -          "lending",
        -          "staking",
        -          "borrowing"
        -        ],
        -        "type": "string"
        -      },
        -      "provider": {
        -        "description": "Provider slug, e.g. `nexo`",
        -        "type": "string"
        -      },
        -      "symbol": {
        -        "description": "Coin symbol, e.g. `btc`",
        -        "type": "string"
        -      },
        -      "updatedAt": {
        -        "description": "ISO-8601 timestamp of the most recent rate refresh",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "provider",
        -      "symbol",
        -      "category",
        -      "apy"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "rates"
        -]New value: +[
        +  "data"
        +]
  9. 18 tool updates
    • Changedcoin_history1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "points": {
        +      "description": "Price points, oldest → newest",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "timestamp": {
        +            "description": "ISO-8601 timestamp of the data point",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "The recorded numeric value",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "timestamp",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "points"
        +  ],
        +  "type": "object"
        +}
    • Changedcoin_markets3 fields changed
      • addedInput schema / properties / coinId / description
        Added value: +"Canonical coin id whose markets to fetch (e.g. \"ethereum\")"
      • addedInput schema / properties / limit / description
        Added value: +"Max exchange/pair rows to return, default 50"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coinId": {
        +      "type": "string"
        +    },
        +    "markets": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "exchange": {
        +            "description": "Exchange / venue name",
        +            "type": "string"
        +          },
        +          "pair": {
        +            "description": "Trading pair, e.g. `BTC/USDT`",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Last traded price",
        +            "type": "number"
        +          },
        +          "volume24h": {
        +            "description": "24h trading volume",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "exchange",
        +          "pair"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "coinId",
        +    "markets"
        +  ],
        +  "type": "object"
        +}
    • Changedfear_greed_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "classification": {
        +      "description": "Label, e.g. `Greed`, `Neutral`, `Extreme Fear`",
        +      "type": "string"
        +    },
        +    "history": {
        +      "description": "Recent trend of the index",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "timestamp": {
        +            "description": "ISO-8601 timestamp of the data point",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "The recorded numeric value",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "timestamp",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    },
        +    "value": {
        +      "description": "Current index, 0 (extreme fear) to 100 (extreme greed)",
        +      "maximum": 100,
        +      "minimum": 0,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "value",
        +    "classification"
        +  ],
        +  "type": "object"
        +}
    • Changedget_coin1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "id": {
        +      "description": "Canonical coin ID (e.g. `bitcoin`)",
        +      "type": "string"
        +    },
        +    "marketCap": {
        +      "description": "Market cap in USD",
        +      "type": "number"
        +    },
        +    "name": {
        +      "description": "Human-readable name (e.g. `Bitcoin`)",
        +      "type": "string"
        +    },
        +    "price": {
        +      "description": "Current spot price in USD",
        +      "type": "number"
        +    },
        +    "rank": {
        +      "description": "Market cap rank (1 = largest)",
        +      "type": "integer"
        +    },
        +    "symbol": {
        +      "description": "Trading symbol (e.g. `btc`)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "symbol",
        +    "name"
        +  ],
        +  "type": "object"
        +}
    • Changedget_price1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "prices": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "priceUsd": {
        +            "description": "Aggregated USD spot price",
        +            "type": "number"
        +          },
        +          "symbol": {
        +            "description": "Coin symbol queried",
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "description": "ISO-8601 timestamp of the price aggregation",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "symbol",
        +          "priceUsd"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "prices"
        +  ],
        +  "type": "object"
        +}
    • Changedget_rate_by_symbol2 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Filter to a single product category (e.g. \"savings\", \"lending\", \"staking\")"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "rates": {
        +      "description": "Matching rate entries",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "apy": {
        +            "description": "Annual percentage yield as a decimal (0.05 = 5%)",
        +            "type": "number"
        +          },
        +          "category": {
        +            "description": "Product category",
        +            "enum": [
        +              "savings",
        +              "lending",
        +              "staking",
        +              "borrowing"
        +            ],
        +            "type": "string"
        +          },
        +          "provider": {
        +            "description": "Provider slug, e.g. `nexo`",
        +            "type": "string"
        +          },
        +          "symbol": {
        +            "description": "Coin symbol, e.g. `btc`",
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "description": "ISO-8601 timestamp of the most recent rate refresh",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "provider",
        +          "symbol",
        +          "category",
        +          "apy"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "rates"
        +  ],
        +  "type": "object"
        +}
    • Changedget_rate_history1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "points": {
        +      "description": "Time-ordered rate observations (oldest → newest)",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "timestamp": {
        +            "description": "ISO-8601 timestamp of the data point",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "The recorded numeric value",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "timestamp",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "provider": {
        +      "type": "string"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "points"
        +  ],
        +  "type": "object"
        +}
    • Changedget_rates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "rates": {
        +      "description": "Matching rate entries",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "apy": {
        +            "description": "Annual percentage yield as a decimal (0.05 = 5%)",
        +            "type": "number"
        +          },
        +          "category": {
        +            "description": "Product category",
        +            "enum": [
        +              "savings",
        +              "lending",
        +              "staking",
        +              "borrowing"
        +            ],
        +            "type": "string"
        +          },
        +          "provider": {
        +            "description": "Provider slug, e.g. `nexo`",
        +            "type": "string"
        +          },
        +          "symbol": {
        +            "description": "Coin symbol, e.g. `btc`",
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "description": "ISO-8601 timestamp of the most recent rate refresh",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "provider",
        +          "symbol",
        +          "category",
        +          "apy"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "rates"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_coins1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coins": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "description": "Canonical coin ID (e.g. `bitcoin`)",
        +            "type": "string"
        +          },
        +          "marketCap": {
        +            "description": "Market cap in USD",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Human-readable name (e.g. `Bitcoin`)",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Current spot price in USD",
        +            "type": "number"
        +          },
        +          "rank": {
        +            "description": "Market cap rank (1 = largest)",
        +            "type": "integer"
        +          },
        +          "symbol": {
        +            "description": "Trading symbol (e.g. `btc`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "coins"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_providers3 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Filter to providers that offer this category (e.g. \"savings\", \"lending\")"
      • addedInput schema / properties / limit / description
        Added value: +"Max results, default 100"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "providers": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "categories": {
        +            "description": "Categories this provider offers",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Display name",
        +            "type": "string"
        +          },
        +          "slug": {
        +            "description": "Stable identifier (e.g. `nexo`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "providers"
        +  ],
        +  "type": "object"
        +}
    • Changedmarket_summary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "btcDominance": {
        +      "description": "BTC share of total market cap, 0-100",
        +      "type": "number"
        +    },
        +    "ethDominance": {
        +      "description": "ETH share of total market cap, 0-100",
        +      "type": "number"
        +    },
        +    "totalMarketCapUsd": {
        +      "description": "Combined market cap of all tracked coins",
        +      "type": "number"
        +    },
        +    "trend24h": {
        +      "description": "24h trend as a decimal (0.02 = +2%)",
        +      "type": "number"
        +    },
        +    "volume24hUsd": {
        +      "description": "Combined 24h trading volume",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "totalMarketCapUsd",
        +    "volume24hUsd",
        +    "btcDominance",
        +    "ethDominance"
        +  ],
        +  "type": "object"
        +}
    • Changedresolve_symbol2 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Optional source/exchange context"New value: +"Source exchange or quote currency to disambiguate (e.g. \"kraken\", \"binance\")"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coinId": {
        +      "description": "Canonical Bitcompare coin ID",
        +      "type": "string"
        +    },
        +    "input": {
        +      "description": "The raw symbol that was queried",
        +      "type": "string"
        +    },
        +    "name": {
        +      "description": "Coin display name",
        +      "type": "string"
        +    },
        +    "symbol": {
        +      "description": "Canonical symbol",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "input",
        +    "coinId",
        +    "symbol",
        +    "name"
        +  ],
        +  "type": "object"
        +}
    • Changedresolve_symbols_batch2 fields changed
      • addedInput schema / properties / context / description
        Added value: +"Source exchange or quote currency applied to every input symbol"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "resolved": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "coinId": {
        +            "description": "Canonical Bitcompare coin ID",
        +            "type": "string"
        +          },
        +          "input": {
        +            "description": "The raw symbol that was queried",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Coin display name",
        +            "type": "string"
        +          },
        +          "symbol": {
        +            "description": "Canonical symbol",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "input",
        +          "coinId",
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "resolved"
        +  ],
        +  "type": "object"
        +}
    • Changedsimilar_coins3 fields changed
      • addedInput schema / properties / coinId / description
        Added value: +"Canonical coin id to find related coins for (e.g. \"bitcoin\")"
      • addedInput schema / properties / limit / description
        Added value: +"Max related coins to return, default 10"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coins": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "description": "Canonical coin ID (e.g. `bitcoin`)",
        +            "type": "string"
        +          },
        +          "marketCap": {
        +            "description": "Market cap in USD",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Human-readable name (e.g. `Bitcoin`)",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Current spot price in USD",
        +            "type": "number"
        +          },
        +          "rank": {
        +            "description": "Market cap rank (1 = largest)",
        +            "type": "integer"
        +          },
        +          "symbol": {
        +            "description": "Trading symbol (e.g. `btc`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "coins"
        +  ],
        +  "type": "object"
        +}
    • Changedstablecoin_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "stablecoins": {
        +      "description": "Ranked stablecoin leaderboard",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "marketCap": {
        +            "description": "Market cap in USD",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Human-readable name",
        +            "type": "string"
        +          },
        +          "pegDeviation": {
        +            "description": "Current peg deviation from target (typically $1.00) in basis points",
        +            "type": "number"
        +          },
        +          "stabilityScore": {
        +            "description": "Stability score 0-100, higher is more stable",
        +            "type": "number"
        +          },
        +          "symbol": {
        +            "description": "Stablecoin symbol (e.g. `usdc`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "stablecoins"
        +  ],
        +  "type": "object"
        +}
    • Changedstablecoin_peg_stability1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "deviation": {
        +      "description": "Current peg deviation in basis points",
        +      "type": "number"
        +    },
        +    "history": {
        +      "description": "Recent peg deviation samples",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "timestamp": {
        +            "description": "ISO-8601 timestamp of the data point",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "The recorded numeric value",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "timestamp",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pegTarget": {
        +      "description": "Target peg in USD (typically 1.0)",
        +      "type": "number"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "pegTarget",
        +    "deviation",
        +    "history"
        +  ],
        +  "type": "object"
        +}
    • Changedtop_coins1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coins": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "description": "Canonical coin ID (e.g. `bitcoin`)",
        +            "type": "string"
        +          },
        +          "marketCap": {
        +            "description": "Market cap in USD",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Human-readable name (e.g. `Bitcoin`)",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Current spot price in USD",
        +            "type": "number"
        +          },
        +          "rank": {
        +            "description": "Market cap rank (1 = largest)",
        +            "type": "integer"
        +          },
        +          "symbol": {
        +            "description": "Trading symbol (e.g. `btc`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "coins"
        +  ],
        +  "type": "object"
        +}
    • Changedtop_movers2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Number of gainers and losers to return on each side, default 10"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "gainers": {
        +      "description": "Top 24h gainers in the requested segment",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "description": "Canonical coin ID (e.g. `bitcoin`)",
        +            "type": "string"
        +          },
        +          "marketCap": {
        +            "description": "Market cap in USD",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Human-readable name (e.g. `Bitcoin`)",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Current spot price in USD",
        +            "type": "number"
        +          },
        +          "rank": {
        +            "description": "Market cap rank (1 = largest)",
        +            "type": "integer"
        +          },
        +          "symbol": {
        +            "description": "Trading symbol (e.g. `btc`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "losers": {
        +      "description": "Top 24h losers in the requested segment",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "description": "Canonical coin ID (e.g. `bitcoin`)",
        +            "type": "string"
        +          },
        +          "marketCap": {
        +            "description": "Market cap in USD",
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Human-readable name (e.g. `Bitcoin`)",
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Current spot price in USD",
        +            "type": "number"
        +          },
        +          "rank": {
        +            "description": "Market cap rank (1 = largest)",
        +            "type": "integer"
        +          },
        +          "symbol": {
        +            "description": "Trading symbol (e.g. `btc`)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "symbol",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "gainers",
        +    "losers"
        +  ],
        +  "type": "object"
        +}
  10. 18 tool updates
    • First observedcoin_history
    • First observedcoin_markets
    • First observedfear_greed_index
    • First observedget_coin
    • First observedget_price
    • First observedget_rate_by_symbol
    • First observedget_rate_history
    • First observedget_rates
    • First observedlist_coins
    • First observedlist_providers
    • First observedmarket_summary
    • First observedresolve_symbol
    • First observedresolve_symbols_batch
    • First observedsimilar_coins
    • First observedstablecoin_index
    • First observedstablecoin_peg_stability
    • First observedtop_coins
    • First observedtop_movers

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    Provides AI assistants with access to real-time DeFi lending rates and yield data across 14+ protocols and multiple blockchains. Enables querying borrow/supply rates, comparing platforms, calculating leverage strategies, and finding best earn opportunities.
    6
    19
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to monitor stablecoin yields, balances, and rewards across Aave, Morpho, and Euler on multiple EVM chains, and to deposit, withdraw, or rebalance positions via user-signed transactions.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct aspect of cryptocurrency data: coin metadata, prices, rates (current, historical, changes), earn products, market summaries, stablecoin analysis, and symbol resolution. The detailed descriptions clearly differentiate even similar tools like get_price and get_price_by_symbol, or get_rates and list_earn_products.

Naming Consistency3/5

All names use snake_case, but conventions vary: some are verb_noun (get_coin, list_coins, resolve_symbol), some are noun_noun (coin_history, fear_greed_index, market_summary), and some include 'by' for parameters. This mix is readable but could be more consistent.

Tool Count5/5

With 21 tools, the server covers a broad domain of cryptocurrency data without being overwhelming. Each tool serves a clear purpose, and the count is appropriate for a comprehensive data API.

Completeness5/5

The tool set covers nearly all expected operations for a crypto data server: coin listing, metadata, prices, historical data, rates, yield products, market stats, top coins, stablecoin analysis, and symbol resolution. No obvious gaps are present for the stated focus on price, rate, and yield data.

Resources