Skip to content

Santiment

by santiment · remote · no sign-in to list tools · v1.0.0 · published by GitHub user santiment

Crypto market intelligence: social sentiment, on-chain, trending narratives & analyst insights.

Final · 1Changes · 2

8 tools: 1 do something that can't be undone, 2 change things and 5 only read.

Scanned Oct 21, 2026

7 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http santiment https://api.santiment.net/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn4 info
  • The server marks "assets_by_metric_tool" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The description contains "every other tool", wording about other tools or servers.

    Matched text

    description: "...ighter per-tool rate-limit sub-cap than every other tool. If only trending stories are needed, c..."

    What this check looks for
  • The description contains "any other tool", wording about other tools or servers.

    Matched text

    description: "..."metric/slug not supported" error from any other tool. ## When not to use - Actual metric v..."

    What this check looks for
  • The description is 3,612 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...ccumulate enough. In such scenarios use a longer time window like 1 day or more."

    What this check looks for
  • The description is 2,851 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...`documents_summary` - AI-generated summary of related social media discussions."

    What this check looks for
  • The description is 2,736 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...nt: 0` means nothing was published in the window — a valid result, not an error."

    What this check looks for
Show 1 more finding

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

8 tools

Can't be undone 1Claude Code: ask
  • assets_by_metric_toolA powerful metrics-based project filtering and sorting tool that works with cryptocurrency assets based on their metrics and allows for ordered, paginated results.2 findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 3,612 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...ccumulate enough. In such scenarios use a longer time window like 1 day or more."

      What this check looks for
    • Warn

      The server marks "assets_by_metric_tool" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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_than` and `less_than` - fetch the `metric` for each asset in the interval `from`-`to`, aggregting it using the specified `aggregation` method (defaulting to the metric's default). - For percent change operators - `percent_up` and `percent_down` - fetch the `metric` for each asset in the interval `from-`to`, as well as in the same length interval immediately before `from`. 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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Screen Assets by Metric
Changes things 2Claude Code: ask
  • metrics_and_assets_discovery_toolCatalog lookup: which metrics and which crypto assets (slugs) Santiment supports, and whether a given metric exists for a given asset.2 findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains "any other tool", wording about other tools or servers.

      Matched text

      description: "..."metric/slug not supported" error from any other tool. ## When not to use - Actual metric v..."

      What this check looks for
    • Info

      The description is 3,908 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...iss metric names (`price_uds` -> `price_usd`), so retry with the suggested name."

      What this check looks for
    Description, as the server wrote it
    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 metric `daily_active_addresses`. - Check availability before calling `fetch_metric_data_tool`, `assets_by_metric_tool` or `show_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_tool` or `insight_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 | | `{"slug": ...}` | All metrics available for that one asset | | `{"metric": ...}` | All assets that support that one metric | | `{"slug":..., "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": true` plus `"truncation_notice"`, and the counts are adjusted to what was actually returned — pass `slug` or `metric` to 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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Metrics and Assets Discovery
Only reads 5Claude Code: allow
  • fetch_insights_toolFetch full text content for specific santiment crypto insights IDsNo findings

    Why it is in this group

    • The name "fetch_insights_tool" says "fetch": a word for reading.
    Description, as the server wrote it
    Fetch full text content for specific santiment crypto insights IDs

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Fetch Insights
  • fetch_metric_data_toolFetch metric timeseries for one metric and one or many slugs, or for a text search term.No findings

    Why it is in this group

    • The name "fetch_metric_data_tool" says "fetch": a word for reading.
    Description, as the server wrote it
    Fetch metric timeseries for one metric and one or many slugs, or for a text search term. Defaults: last 30 days (time_period="30d"), interval="1d". Pass `text` instead of `slugs` to get a social metric for any word or phrase (e.g. how often "sold" was mentioned), not just for an asset. 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`.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Fetch Metric Data
  • insight_discovery_toolList Santiment insights (analyst-written crypto articles) published in a lookback window.1 finding

    Why it is in this group

    • The description's first verb is "list": a word for reading.

    Findings

    • Info

      The description is 2,736 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...nt: 0` means nothing was published in the window — a valid result, not an error."

      What this check looks for
    Description, as the server wrote it
    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_tool` for 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) or `combined_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 of `s`, `m`, `h`, `d`, `w`, `y` (e.g. `"12h"`, `"7d"`, `"90d"`, `"1y"`). The window is always `now - 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_period` can hit that cap and silently omit the oldest insights — if `total_count` is 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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Discover Insights
  • show_chartRender a Santiment chart with an asset's price (OHLC) plus an optional overlay metric in a second pane.No findings

    Why it is in this group

    • The name "show_chart" says "show": a word for reading.
    Description, as the server wrote it
    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 to `bitcoin`. - `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 to `30d`. ## 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.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Show Chart

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http santiment https://api.santiment.net/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__santiment__fetch_insights_tool",
      "mcp__santiment__fetch_metric_data_tool",
      "mcp__santiment__insight_discovery_tool",
      "mcp__santiment__show_chart",
      "mcp__santiment__trending_stories_tool"
    ],
    "ask": [
      "mcp__santiment__assets_by_metric_tool",
      "mcp__santiment__combined_trends_tool",
      "mcp__santiment__metrics_and_assets_discovery_tool"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as santiment. Review it before you use it.