Santiment
Server Details
Crypto market intelligence: social sentiment, on-chain, trending narratives & analyst insights.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
8 toolsassets_by_metric_toolScreen Assets by MetricARead-onlyInspect
A powerful metrics-based project filtering and sorting tool that works with cryptocurrency assets based on their metrics and allows for ordered, paginated results.
The tool allows for filtering assets by a metric and sorting them according to that same metric in ascending or descending metric, or just to sort the assets by a metric without filtering.
This tool allows you to discover projects that meet specific criteria by analyzing their metrics over time periods. You can filter projects by absolute values (greater_than/less_than thresholds) or by percentage changes, or just sort projects by some metric.
When to use vs other metric tools
This tool scans the whole asset universe and returns one aggregated value per
matching asset — use it for "which assets satisfy X" and "top N by X".
It never returns a timeseries: for the values of a metric over time for
already-known slugs use fetch_metric_data_tool. To check that a metric
exists (or fix a mistyped metric/slug) use metrics_and_assets_discovery_tool.
Use Cases
Get top 10 assets by marketcap, sorted in descending order
Get top 50 assets with highest dev_activity_1d
Find assets with price more than $10
Discover tokens whose price increased by more than 50% in the last 30 days
Screen for projects with market cap less than $100M
Identify assets that have dev_activity_1d decline by more than 20% in the past month
Examples
Get projects that have a price_usd in the last 24 hours and it's greater_than $500. Get the first 20 ordered by price_usd in descending order
{metric: "price_usd", operator: :greater_than, threshold: 500.0, from: "utc_now-24h", to: "utc_now", sort: "desc, page: 1, page_size: 20}Find projects whose price_usd today is 25% higher than 7 days ago, sorted by the highest percent increase in descending order. Get the first 100.
{metric: "price_usd", operator: :percent_up, threshold: 25.0, from: "utc_now-7d", to: "utc_now", sort: "desc", page: 1, page_size: 100}Projects with current market cap less_than $50M. Get 100 such projects, ordered by marketcap in descending order.
{metric: "marketcap_usd", operator: :less_than, threshold: 50000000.0, from: "utc_now-1d", to: "utc_now", sort: "desc", page: 1, page_size: 100}
Here is how the filtering works:
For absolute value operators -
greater_thanandless_than- fetch themetricfor each asset in the intervalfrom-to, aggregting it using the specifiedaggregationmethod (defaulting to the metric's default).For percent change operators -
percent_upandpercent_down- fetch themetricfor each asset in the intervalfrom-to, as well as in the same length interval immediately beforefrom`. The two resulting values are compared to calculate the percentage change.
Some metrics like price_usd and marketcap_usd are aggregated with LAST aggregation by default,
meaning that the last known value in the queried interval is used. For percent change, this means that
the tool compares the last known price immediately before from and the last known price before to.
Other metrics like transaction_volume_usd and social_volume_total (and most other volume metrics) are aggregated by
default with SUM aggregation, meaning that the total combined sum in the queried interval is used. For these
metrics length of the time window is vital. A common mistake is to try to check if the social_total_total for
the last 5 minutes is greater_than some threshold. Five minutes is not enough for social volume to accumulate enough.
In such scenarios use a longer time window like 1 day or more.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End date/time for the analysis period. Defines the end of the time window for metric aggregation. Accepts ISO 8601 datetime strings (e.g., "2024-12-31T23:59:59Z") or relative time expressions (e.g., "utc_now" for current time, "utc_now-1d" for yesterday). Defaults to current time if not specified. Must be after the 'from' date. Used with percentage operators to calculate change over the specified period. | |
| from | Yes | Start date/time for the analysis period. Defines the beginning of the time window for metric aggregation. Accepts ISO 8601 datetime strings (e.g., "2024-01-01T00:00:00Z") or relative time expressions (e.g., "utc_now-30d" for 30 days ago, "utc_now-1h" for 1 hour ago) Defaults to 30 days ago if not specified. Used with percentage operators to calculate change over time. | |
| page | Yes | Page number for paginated results. Used to retrieve specific pages when the result set is large. Starts from 1 (first page). Combine with page_size to control how many results are returned per page. Useful when only the top 10, 20, 100, etc. assets are needed. | |
| sort | Yes | Sort order for the filtered results based on the aggregated metric values. - "asc" - Ascending order (lowest values first, e.g., cheapest prices first) - "desc" - Descending order (highest values first, e.g., most expensive prices first) Particularly useful when combined with pagination to get the top/bottom performers. Example: sort="desc" with price_usd shows highest-priced projects first. | |
| metric | Yes | The metric to use for screening projects. This determines what aspect of each project will be analyzed. Common metrics include: 'price_usd', 'marketcap_usd', 'volume_usd', 'dev_activity', 'social_volume', 'active_addresses'. Use the data catalog to discover all available metrics for comprehensive screening options. Discover the supported metrics with the metrics_and_assets_discovery_tool. | |
| operator | No | Comparison operator that determines how projects are filtered based on the metric and threshold. Absolute value operators (compare current values): - `greater_than` - Include projects where the aggregated metric value is greater than the threshold - `less_than` - Include projects where the aggregated metric value is less than the threshold Percentage change operators (compare change from 'from' to 'to' period): - `percent_up` - Include projects where the metric increased by more than the threshold percentage - `percent_down` - Include projects where the metric decreased by more than the threshold percentage If this parameter is not provided, the threshold parameter also must not be provided. If they are not provided, the tool will simply sort the assets and will do no filtering. Example: operator=percent_up, threshold=25.0 finds projects that gained more than 25%. | |
| page_size | Yes | Number of projects to return per page (max 100). Controls the size of each paginated response. | |
| threshold | No | The numeric threshold value used for filtering projects. The meaning depends on the operator: For absolute operators (:greater_than, :less_than): - The actual metric value to compare against (e.g., 10.5 for price_usd greater_than $10.50) - Units match the metric (USD for price/market cap, count for addresses, etc.) For percentage operators (:percent_up, :percent_down): - The percentage change threshold (e.g., 25.0 for 25% change) - Always expressed as a positive number regardless of direction If this parameter is not provided, the operator parameter also must not be provided. If they are not provided, the tool will simply sort the assets and will do no filtering. Examples: threshold=50000000.0 with :less_than finds projects with market cap under $50M | |
| aggregation | No | Method for aggregating metric data over the specified time period. Determines how multiple data points within the time window are combined into a single value for comparison. Common aggregation methods: - "avg" - Average value over the period (default for most metrics) - "sum" - Total sum of values (useful for volume, transaction counts) - "max" - Maximum value in the period (highest price, peak activity) - "min" - Minimum value in the period (lowest price, minimum activity) - "last" - Most recent value in the period - "first" - Earliest value in the period If not specified, uses the metric's default aggregation, whichi is carefully selected based on the metric type. Some aggregations do not make sense for certain metrics (e.g., summing prices). If not specifically required, using the metric's default aggregation method is recommended. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true and destructiveHint=false; the description adds substantial behavioral detail: aggregation mechanics for absolute vs percent operators, default LAST vs SUM aggregations, and a warning about time-window sufficiency for volume metrics. It discloses the operational semantics 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear headings (When to use, Use Cases, Examples, How filtering works). Minor fluff like 'powerful' and some repetition (e.g., sorting behavior repeated) prevent a 5, but every major section earns its place for a 9-param tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the full task scope: what it returns (one aggregated value per asset), pagination behavior, filtering operators, aggregation defaults, and sibling-tool distinctions. Without an output schema, it still tells the agent the essential return shape and common usage patterns, making it complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all 9 parameters (100% coverage); description adds real value by explaining filtering mechanics with worked examples, clarifying percent operator comparisons across two intervals, and noting 'metric's default aggregation' behavior. Threshold/operator coupling is also explained in schema, but the description's use cases and time-window advice go beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States it is a 'metrics-based project filtering and sorting tool' that 'scans the whole asset universe' and returns 'one aggregated value per matching asset.' It explicitly differentiates from siblings by noting it 'never returns a timeseries' and directing to fetch_metric_data_tool for timeseries and metrics_and_assets_discovery_tool for metric discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use vs other metric tools' section explicitly says to use this for 'which assets satisfy X' and 'top N by X', and directs to fetch_metric_data_tool for timeseries over known slugs and metrics_and_assets_discovery_tool for validating metrics. This gives clear affirmative and exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combined_trends_toolCombined TrendsARead-onlyInspect
Combined trends tool that fetches trending words, stories, and documents in parallel.
This tool provides a unified view of all trending data - words with their documents and stories - in a single response across all crypto projects.
When to use vs trending_stories_tool
This is a superset of trending_stories_tool: same stories, plus trending
words, their context and AI-generated bull/bear summaries. It calls an LLM, so
it is slower and has a tighter per-tool rate-limit sub-cap than every other
tool. If only trending stories are needed, call trending_stories_tool
instead; set include_words: false / include_stories: false to drop a half
that is not needed. Do not call both tools for the same question.
Parameters
time_period- Time period for trending data (e.g., '1h', '6h', '1d', '7d'). Defaults to '1h' (last hour).size- Number of items per category to return (max 30). Defaults to 10.include_stories- Include trending stories in response. Defaults to true.include_words- Include trending words in response. Defaults to true.
Response
trends- Combined trending data containing stories and words.metadata- Request metadata including time period, size, and included data types.errors- Any non-fatal errors encountered during data fetching.
Trending Data Structure
Stories
title- Title of the trending story.summary- Summary of the story.score- Trending score.query- Search query used to find the story.related_tokens- List of related crypto tokens (format: "BTC_bitcoin").bullish_sentiment_ratio- Bullish sentiment ratio.bearish_sentiment_ratio- Bearish sentiment ratio.
Words
word- The trending word.score- Trending score.slug- Associated project slug (if word is project-related).summary- AI-generated summary of discussions.bullish_summary- Summary of bullish sentiment.bearish_summary- Summary of bearish sentiment.positive_sentiment_ratio- Positive sentiment ratio.negative_sentiment_ratio- Negative sentiment ratio.neutral_sentiment_ratio- Neutral sentiment ratio.positive_bb_sentiment_ratio- Positive bull/bear sentiment ratio.negative_bb_sentiment_ratio- Negative bull/bear sentiment ratio.neutral_bb_sentiment_ratio- Neutral bull/bear sentiment ratio.context- Related words that appear with this trending word.documents_summary- AI-generated summary of related social media discussions.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of items per category to return (max 30). Defaults to 10. | |
| time_period | No | Time period for trending data (e.g., '1h', '6h', '1d', '7d'). This parameter defines how far back to look for trending data. Defaults to '1h' (last hour). | |
| include_words | No | Include trending words in the response. Defaults to true. | |
| include_stories | No | Include trending stories in the response. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it calls an LLM (adding latency and tighter rate-limit sub-cap) and fetches data in parallel, both beyond what the annotations provide. It also clarifies it returns errors non-fatally. No contradiction with readOnly/openWorld/destructive hints, and the extra context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear headings and front-loaded purpose and usage guidance. It is longer than average, and the parameter section largely duplicates schema info, but the detailed response structure is essential because there is no output schema, so the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description thoroughly documents the response structure, including nested fields for stories and words, metadata, and error handling. Combined with parameter descriptions and usage guidance, it provides a complete mental model for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all four parameters with defaults, max values, and descriptions (100% coverage). The description adds practical guidance on how include_words/include_stories interact to control the response scope and performance, which goes beyond the schema's basic field semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it 'fetches trending words, stories, and documents in parallel' and provides a 'unified view of all trending data,' clearly naming the resource and actions. It explicitly differentiates from trending_stories_tool as a superset, so the purpose is distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A dedicated 'When to use vs trending_stories_tool' section gives explicit guidance: use this for combined data, call the sibling if only stories are needed, set include flags to drop unneeded halves, and 'Do not call both tools for the same question.' This is comprehensive and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_insights_toolFetch InsightsARead-onlyInspect
Fetch full text content for specific santiment crypto insights IDs
| Name | Required | Description | Default |
|---|---|---|---|
| insight_ids | Yes | Array of santiment crypto insights IDs to fetch full content for (max 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'full text content' behavior, but does not disclose potential batch limits beyond the schema, error conditions, or return format. With annotations doing heavy lifting, this is adequate but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It front-loads the core action and object, and every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and the annotations, the description provides sufficient context to invoke it correctly. It does not describe response structure, but that is less critical for a retrieval tool, and the schema covers the input. The only minor gap is lack of guidance about how to obtain IDs, which would push it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description covers the parameter well, stating it takes santiment crypto insights IDs with a max of 10. The tool description adds no further semantic detail. The schema's oneOf allowing a string is ambiguous (comma-separated? JSON-encoded?), and neither the description nor schema clarifies it, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch full text content') and resource ('specific santiment crypto insights IDs'), distinguishing it from sibling tools like insight_discovery_tool which likely handle discovery rather than retrieval by ID. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear usage context: this tool is for retrieving full content for already-known insight IDs. It does not explicitly mention that insight_discovery_tool should be used first to find IDs, nor does it list exclusion criteria, but the intent is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_metric_data_toolFetch Metric DataARead-onlyInspect
Fetch metric timeseries for one metric and one or many slugs.
Defaults: last 30 days (time_period="30d"), interval="1d".
Use this when the assets are already known and the values over time matter.
For the opposite direction — "which assets satisfy X" / "top N by X", one
aggregated value per asset across the whole universe — use
assets_by_metric_tool. To confirm a metric exists for a slug first, use
metrics_and_assets_discovery_tool; to draw the result, use show_chart.
| Name | Required | Description | Default |
|---|---|---|---|
| slugs | Yes | List of slug identifiers (e.g., ["bitcoin"], ["bitcoin", "ethereum"], etc.). Accepts at most 10 slugs at a time. Only metrics that have `supports_many_slugs: true` can accept more than one slug. Check the `supports_many_slugs` field in the metrics_and_assets_discovery_tool response before passing multiple slugs. Financial and on-chain metrics generally support multiple slugs; social, sentiment, and derivatives metrics generally do not. The tool returns data for one metric and one or many slugs. | |
| metric | Yes | Metric name to fetch (e.g., 'price_usd'). IMPORTANT: Before fetching data, verify metric names by calling the metrics_and_assets_discovery_tool first. Only metrics listed there are supported. Do not guess or infer metric names — they may differ from what you expect. | |
| interval | No | The interval between two data points in the timeseries data (e.g., '5m', '1h', '1d'). The format is: <number><suffix>, where: - <number> is an integer - <suffix> is one of: - m (minutes) - h (hours) - d (days) - w (weeks) - y (years) For example, 5m means that the data returned will have a 5 minute interval between two data points. Each metric has predefined `min_interval`. It describes the lowest possible interval for which data is available. If the metric has `min_interval=1d` it means that Santiment has one data point per day for that metric. For these metrics `interval="5m"` won't work as 5 minutes is less than 1 day. | |
| time_period | No | How far back in time to fetch the data for (e.g., '7d', '30d', '90d'). This parameter defines the range of metric data to fetch - from <time_period> time ago up until now. Defaults to 30d. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive behavior, lowering the bar. The description adds meaningful context: default time range (30d) and interval (1d), and clarifies this returns per-asset time series rather than a single aggregated value. It does not mention response format or pagination, but that is a minor gap given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core action, followed by defaults, then usage guidance and sibling references. Every sentence earns its place with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read-only tool with rich schemas, the description covers purpose, defaults, when-to-use, alternatives, prerequisites, and next steps. However, since there is no output schema, it omits the return shape or pagination details, which would further aid invocation confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all four parameters, so the baseline is 3. The description adds default values for `time_period` and `interval`, but otherwise does not go beyond the schema's already-rich parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Fetch metric timeseries for one metric and one or many slugs' — a specific verb, resource, and clear scope. It also distinguishes itself from siblings by explicitly contrasting with `assets_by_metric_tool`'s aggregated, universe-level use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use: 'Use this when the assets are already known and the values over time matter.' It names the exact alternative for the opposite direction (`assets_by_metric_tool`), and provides a prerequisite (`metrics_and_assets_discovery_tool`) and follow-up (`show_chart`) tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insight_discovery_toolDiscover InsightsARead-onlyInspect
List Santiment insights (analyst-written crypto articles) published in a lookback window. Returns metadata only — id, title, tags, author, link, published_at, prediction — never the article body.
When to use
The user asks what Santiment analysts have written or published recently.
As step 1 of a two-step read: discover ids here, then pass them to
fetch_insights_toolfor the full text.
When not to use
Full text of an insight — use
fetch_insights_tool(it needs ids, so call this tool first).What the market is talking about right now — use
trending_stories_tool(stories only) orcombined_trends_tool(stories + trending words). Insights are human-authored articles, not live social signal.Numeric metric timeseries for an asset — use
fetch_metric_data_tool.Ranking or screening assets by a metric — use
assets_by_metric_tool.
Parameters
time_period(optional, default"30d") — lookback window as<integer><unit>, unit one ofs,m,h,d,w,y(e.g."12h","7d","90d","1y"). The window is alwaysnow - time_period..now; absolute dates and future ranges are not supported. An unparsable value returns an error, not a default.
There is no tag, author, asset or full-text filter — filter the returned list yourself.
Behavior
Read-only: no writes, no state change, nothing destructive.
Requires an authenticated Santiment account (API key or OAuth token); every call counts against the account plan's MCP rate limits.
Returns only published, moderator-approved insights, newest first, hard capped at 100 per call. A wide
time_periodcan hit that cap and silently omit the oldest insights — iftotal_countis 100, narrow the window and call again.
Response
JSON object:
{
"insights": [
{
"id": 1234, // integer, feed to fetch_insights_tool
"title": "...",
"tags": ["BTC", "bitcoin"], // asset tickers/slugs and topics
"link": "https://app.santiment.net/insights/read/1234",
"published_at": "2025-01-30T10:00:00Z",
"author": "username", // "Anonymous" when unset
"prediction": "semi_bullish" // heavy_bullish | semi_bullish |
// semi_bearish | heavy_bearish |
// none | unspecified | null
}
],
"time_period": "30d",
"total_count": 1,
"period_start": "2024-12-31T10:00:00Z",
"period_end": "2025-01-30T10:00:00Z"
}An empty insights list with total_count: 0 means nothing was published in
the window — a valid result, not an error.
| Name | Required | Description | Default |
|---|---|---|---|
| time_period | No | Lookback window as <integer><unit>, unit one of s, m, h, d, w, y (e.g. '12h', '7d', '30d', '90d', '1y'). Insights published in `now - time_period` .. `now` are returned. Absolute dates and future ranges are not supported. Defaults to '30d'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true and destructiveHint=false. The description further discloses authentication requirements, rate limiting, pagination cap of 100, silent omission behavior, and response validity conditions. This goes far 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
While long, the description uses clear headings and every section serves a distinct purpose: usage, parameters, behavior, and response. It is appropriately sized for the tool's complexity, with no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description provides a complete response format with field types and semantics, plus edge cases (like empty results). It covers all necessary context for correct invocation and result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, but the description adds substantial meaning: concrete examples, unit constraints, exact window semantics, no absolute dates, and error behavior. This is a model of enriching schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'List Santiment insights (analyst-written crypto articles) published in a lookback window. Returns metadata only'. It explicitly distinguishes from siblings by naming alternatives like fetch_insights_tool and trending_stories_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' and 'When not to use' sections provide explicit guidance, including exact scenarios and named alternative tools. This fully covers when to use this tool versus alternatives, making it exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metrics_and_assets_discovery_toolMetrics and Assets DiscoveryARead-onlyInspect
Catalog lookup: which metrics and which crypto assets (slugs) Santiment supports, and whether a given metric exists for a given asset. Returns names and metadata only — it never returns metric values or timeseries.
When to use
Resolve a name before any data call: turn "Ethereum" into the slug
ethereum, or "active addresses" into the metricdaily_active_addresses.Check availability before calling
fetch_metric_data_tool,assets_by_metric_toolorshow_chart, so a bad slug/metric does not waste a data call.Recover from a "metric/slug not supported" error from any other tool.
When not to use
Actual metric values over time — use
fetch_metric_data_tool.Ranking, filtering or screening assets by a metric value — use
assets_by_metric_tool.Rendering a chart — use
show_chart.Trending words/stories or insights — use
combined_trends_toolorinsight_discovery_tool. Those data sets are not in this catalog.
Parameters
Both parameters are optional and the four combinations do four different things:
Arguments | Returns |
| Every supported metric and every supported asset |
| All metrics available for that one asset |
| All assets that support that one metric |
| Whether that exact pair is available (validation) |
slug— lowercase, hyphen-separated asset id:"bitcoin","ethereum","avalanche". Not a ticker: use"bitcoin", not"BTC". One slug per call; lists are not accepted.metric— lowercase snake_case metric id:"price_usd","marketcap_usd","daily_active_addresses". One metric per call.
Examples:
{}
{"slug": "ethereum"}
{"metric": "price_usd"}
{"slug": "bitcoin", "metric": "daily_active_addresses"}Behavior
Read-only: no writes, no state change, nothing destructive.
Requires an authenticated Santiment account (API key or OAuth token); every call counts against the account plan's MCP rate limits.
Results are cached server-side, so the catalog can lag a newly listed asset by a few minutes.
Large responses (notably
{}, which covers ~500 assets) are truncated to stay under the client token limit. When that happens the response carries"truncated": trueplus"truncation_notice", and the counts are adjusted to what was actually returned — passslugormetricto get a complete answer instead of a truncated one.
Response
Always a JSON object. Its shape depends on the arguments.
{} — full catalog:
{
"metrics": [{"name": "price_usd", "description": "...", "unit": "USD",
"supports_many_slugs": true, "min_interval": "1m",
"default_aggregation": "last",
"documentation_urls": [{"url": "..."}]}],
"assets": [{"name": "Bitcoin", "slug": "bitcoin", "ticker": "BTC"}],
"metrics_count": 120, "assets_count": 500, "description": "..."
}{"slug": ...} — {"slug", "metrics" (same metric objects as above), "metrics_count", "description"}.
{"metric": ...} — {"metric", "assets" (same asset objects as above), "assets_count", "description"}.
{"slug": ..., "metric": ...} — on success
{"slug", "metric": <metric object>, "available": true, "description"}.
Unsupported input is reported inside a successful response, not as a tool
error: an unknown slug yields {"error": "...", "available_assets": [...]},
an unknown metric yields {"error": "...", "available_metrics": [...]}.
There is no "available": false — read error. Error messages include a
fuzzy suggestion for near-miss metric names (price_uds -> price_usd), so
retry with the suggested name.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Santiment slug of one crypto asset: lowercase, hyphen-separated, e.g. 'bitcoin', 'ethereum', 'avalanche'. Not a ticker - use 'bitcoin', not 'BTC'. One slug per call; lists are not accepted. Alone: returns all metrics available for this asset. With `metric`: checks only whether that metric exists for this asset. Omit both to list the whole catalog. | |
| metric | No | Santiment id of one metric: lowercase snake_case, e.g. 'price_usd', 'marketcap_usd', 'daily_active_addresses'. One metric per call; lists are not accepted. Alone: returns all assets that support this metric. With `slug`: checks only whether this metric exists for that asset. Omit both to list the whole catalog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behaviors beyond annotations: read-only confirmation, auth/API key requirements, server-side caching with lag, response truncation for large payloads (with 'truncated': true and counts adjusted), and error handling via a successful response with an 'error' field plus fuzzy suggestions. This goes far beyond the readOnlyHint/destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear headers (When to use, When not to use, Parameters, Behavior, Response) and a table for combinations. Every section contributes essential information for a tool with four distinct modes. It is not overly verbose given the complexity, though a couple of examples could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains return shapes for all four argument combinations, including the full catalog JSON, per-slug/metric results, and error responses. It also covers truncation, caching, rate limits, and auth. No critical aspect of behavior or return format is left undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of parameter semantics with examples and combination behavior. The description adds value with a four-row table showing the exact output for each argument combination, plus concrete examples and clarification that lists are not accepted. It reinforces but does not significantly extend the schema's detailed parameter descriptions, earning slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise, resource-specific statement: 'Catalog lookup: which metrics and which crypto assets (slugs) Santiment supports, and whether a given metric exists for a given asset.' It explicitly says it returns names and metadata only, never metric values or timeseries, which immediately distinguishes it from data-fetching siblings like fetch_metric_data_tool and assets_by_metric_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Dedicated 'When to use' and 'When not to use' sections provide explicit guidance. They name alternatives directly: use fetch_metric_data_tool for values, assets_by_metric_tool for screening, show_chart for charts, and combined_trends_tool/insight_discovery_tool for trends. It also covers error-recovery use cases, such as resolving 'metric/slug not supported' errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_chartShow ChartARead-onlyInspect
Render a Santiment chart with an asset's price (OHLC) plus an optional
overlay metric in a second pane. The widget that consumes this tool is
built on the Santiment chart library (lightweight-charts under the hood),
so the response is render-ready — the client just feeds each series
entry into the chart unchanged.
Parameters
slug— asset slug (e.g.bitcoin,ethereum). Defaults tobitcoin.primary— what goes into the main pane."price"(default) — OHLC candlestick.any metric name from the catalog — line/area instead of candles.
overlay— optional metric name to render in a second pane. Allowed values are listed below.range—24h,7d,30d,90d,1y. Defaults to30d.
Available overlay metrics (catalog)
social_volume_total, social_dominance_total, sentiment_balance_total, sentiment_weighted_total, daily_active_addresses, network_growth, transaction_volume_usd, velocity, mvrv_usd, nvt, realized_value_usd, mvrv_long_short_diff_usd, exchange_balance, whale_transaction_count_100k_usd_to_inf, top_holders_held_supply_percent, dev_activity, github_activity, volume_usd, marketcap_usd, funding_rate_perp.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Asset slug (e.g. 'bitcoin', 'ethereum'). Defaults to 'bitcoin'. | |
| range | No | Time range. One of: 24h, 7d, 30d, 90d, 1y. Defaults to 30d. | |
| overlay | No | Optional metric to overlay in a second pane. Must be one of the catalog names (see tool description). | |
| primary | No | Primary series — 'price' for candlestick OHLC, or a metric name from the catalog. Defaults to 'price'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds meaningful behavior beyond that: it explains the response is 'render-ready' for the widget, and that the client feeds each `series` entry unchanged. This gives the agent useful context about output consumption 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is properly structured with a clear intro, parameter breakdown, and overlay list. It is slightly long but every section serves a purpose—the catalog list is necessary for valid overlay selections. Front-loading the core purpose makes it easy to grasp quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description partially covers return behavior by noting the response is 'render-ready' and contains `series` entries. It does not detail the exact shape of each series entry, but for a charting tool with clear parameter semantics and annotations, this is adequate. The main gap is a more explicit return format, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description significantly enriches parameter understanding: it lists allowed values for `range`, enumerates the full catalog of overlay metrics, and explains the semantic difference between `primary='price'` (candlesticks) vs a metric (line/area). Defaults are also restated and clarified. This goes well beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Render a Santiment chart with an asset's price (OHLC) plus an optional overlay metric in a second pane.' This clearly distinguishes the tool as a chart-rendering utility compared to sibling tools like fetch_metric_data_tool, which retrieve raw data. The purpose is unambiguous and immediately front-loaded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than explicitly stated. The description explains what the tool does and details parameters, but does not explicitly say when to prefer this over alternatives or provide when-not-to-use guidance. There is no direct contrast with sibling tools such as combined_trends_tool or fetch_metric_data_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_stories_toolTrending StoriesARead-onlyInspect
Fetch current trending crypto stories with sentiment analysis
When to use vs combined_trends_tool
Prefer this tool when only stories are needed: it is the cheap, fast path and
has no per-tool rate-limit sub-cap. combined_trends_tool is a superset —
same stories plus trending words, their context and AI-generated bull/bear
summaries — but it calls an LLM, so it is slower and capped much lower per
plan. Use it only when trending words or those summaries are actually
needed, and never call both for the same question.
Parameters
time_period- Time period for trending stories (e.g., '1h', '6h', '1d', '7d'). Defaults to '1h' (last hour).size- Number of trending stories to return (max 10). Defaults to 10.
Response
trending_stories- List of trending stories.time_period- Time period for trending stories.size- Number of trending stories to return.period_start- Start time of the time period.period_end- End time of the time period.total_time_periods- Total number of time periods.
Trending stories
title- Title of the story.summary- Summary of the story.bearish_sentiment_ratio- Bearish sentiment ratio.bullish_sentiment_ratio- Bullish sentiment ratio.score- Score of the story.query- Query used to find the story.related_tokens- List of related tokens. They have the formatBTC_bitcoin- first part is the ticker, second part is the slug in Sanbase.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of trending stories to return (max 10). Defaults to 10. | |
| time_period | No | Time period for trending stories (e.g., '1h', '6h', '1d', '7d'). This parameter defines how far back to look for trending stories. Defaults to '1h' (last hour). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context beyond that: no per-tool rate-limit sub-cap, cheap/fast path, and the specific response shape including period_start/end and total_time_periods. It also clarifies the related_tokens format. Nothing contradicts annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear headings, a front-loaded purpose, an explicit comparison section, parameter list, response list, and nested story field list. Every sentence earns its place — no redundant fluff. It is longer than average but remains tightly organized and information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no output schema, the description fully covers the response structure, story subfields, related_tokens format, and comparison with the superset tool. This leaves no significant gaps for the agent to guess about return values or usage constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds practical value by providing concrete examples ('1h', '6h', '1d', '7d'), restating defaults, and explicitly defining the meaning of time_period ('how far back to look'). It doesn't introduce new parameter semantics, but the examples and defaults reinforce usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Fetch current trending crypto stories with sentiment analysis' — a specific verb, resource, and clear scope. It immediately distinguishes the tool from `combined_trends_tool` by positioning it as the stories-only, cheap/fast alternative, which clarifies its unique role among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use vs combined_trends_tool' section explicitly states when to prefer this tool (only stories needed), what the alternative provides (superset with words and summaries), its drawbacks (LLM-slowed, lower rate-limit), and an explicit exclusion: 'never call both for the same question.' This is model guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Crypto market intelligence for Projects, Topics, Intel, Reports, and Clusters.
Real-time digital asset narrative intelligence from 1,000+ curated media sources.
Crypto market intelligence: regime detection, funding rates, liquidations, prices, signals.
Crypto market intelligence: prices, funding rates, narratives, regime, and delta-neutral research.
Related MCP Servers
- AlicenseAqualityCmaintenanceNarrative & signal intelligence for AI agents: crypto/AI/macro convergence & divergence.21MIT
- AlicenseNot gradedqualityBmaintenanceProvides crypto market intelligence tools, reference resources, and prompt templates for sentiment analysis, mindshare tracking, social intelligence, and more.205MIT
- AlicenseNot gradedqualityCmaintenanceDelivers real-time crypto market microstructure, derivatives, order flow CVD/OI regime classification, fear & greed sentiment, and whale tracking context, enabling traders to assess market regimes and complement charting tools.44MIT
- AlicenseAqualityAmaintenancePre-computed financial market intelligence for AI agents. Stocks, crypto, and ETFs.91675MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a clearly distinct purpose: screening assets vs fetching timeseries vs catalog discovery vs charting vs insights discovery/fetch vs trending stories vs combined trends. The overlapping trending tools are explicitly differentiated through a superset relationship with usage guidance.
All names are snake_case and most end in '_tool', but the pattern is mixed: some start with verbs (fetch_*, show_*) while others are noun phrases (assets_by_metric_tool, combined_trends_tool, insight_discovery_tool). This is readable but not a consistent verb_noun convention.
8 tools is well-scoped for a crypto analytics server, covering discovery, data retrieval, screening, charting, and content access without bloat or thinness. Each tool earns its place in the workflow.
The toolset covers the core workflows: catalog discovery, metric timeseries, asset screening, chart rendering, insights list/fetch, and trending data. Minor gaps include no multi-metric timeseries fetch and a limited set of chart overlay options, but agents can work around these.