Skip to main content
Glama

NakamotoNotes Bitcoin Barometer

Server Details

Bitcoin Barometer: Heat Score, BTC price, ten indicators and daily history. Read-only.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
multiassist/nakamotonotes-mcp
GitHub Stars
0
Server Listing
NakamotoNotes Bitcoin Barometer
ChatGPT
–
Claude
Nakamoto Notes Bitcoin Barometer

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation4/5

Each tool targets a distinct need: get_market_snapshot gives the current overall reading, get_history gives the time series, and explain_indicator gives a deep dive on a single indicator. There is minor overlap since the snapshot also lists indicator values/heats, but the granularity clearly differs.

Naming Consistency5/5

All three names follow a clean verb_noun snake_case pattern (explain_indicator, get_history, get_market_snapshot) with no convention mixing.

Tool Count4/5

Three tools is lean but defensible for a focused, read-only data server covering current state, history, and indicator explanation. It is on the thin side, with little room for additional workflows.

Completeness4/5

Covers the core lifecycle for a read-only barometer: current snapshot, heat score history, and per-indicator explanations. Minor gaps exist (no per-indicator time series or price history), but agents can work around these.

Available Tools

3 tools
explain_indicatorExplain one Barometer indicatorB
Read-onlyIdempotent
Inspect

What one Barometer indicator measures, its current value and heat, and how it feeds the score.

NameRequiredDescriptionDefault
nameYesIndicator key

Output Schema

NameRequiredDescription
keyYes
asOfYes
heatYes
nameYes
valueYes
licenseNo
degradedYes
measuresYes
limitationNo
attributionNo
feeds_scoreYes
methodologyNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds useful framing that the response is explanatory (meaning plus score contribution) rather than raw data, but discloses no auth, rate-limit, or caching behavior beyond that.

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?

A single tight sentence with the resource and the payload front-loaded, and no filler or restatement of the tool name. Every clause 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?

With an output schema present, the description need not explain return values, and the read-only annotations cover safety, so the main remaining gap is routing guidance against siblings. For a one-parameter lookup tool it is otherwise 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% and the single 'name' parameter carries an enum of ten indicator keys with its own description. The description only restates that it takes one indicator, adding no syntax, format, or validity guidance beyond what the schema already provides, so the baseline of 3 applies.

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 names a specific resource (one Barometer indicator) and enumerates the three things returned: what it measures, its current value and heat, and how it contributes to the score. That is far more concrete than a tautology, though it never explicitly contrasts itself with get_market_snapshot or get_history.

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?

There is no statement of when to use this tool versus the siblings. The word 'one' implies a single-indicator lookup, but an agent is left to infer whether indicator values should come from here or from get_market_snapshot, and no prerequisites or exclusions are given.

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

get_historyHeat Score historyA
Read-onlyIdempotent
Inspect

Heat Score history from the public daily history. from is required (YYYY-MM-DD), to defaults to the last day. interval day|week|month|auto (auto picks the finest that fits 400 points); max_points (1-400) caps the points: auto uses 180 by default, and with max_points the latest points are kept and truncated is set. A summary covers the whole range.

NameRequiredDescriptionDefault
toNoLast day, YYYY-MM-DD (default: last available day)
fromYesFirst day, YYYY-MM-DD
intervalNoPoint size (default auto)
max_pointsNoMost points to return; older points are dropped and truncated is set

Output Schema

NameRequiredDescription
toYes
fromYes
countYes
pointsYes
licenseNo
summaryYes
intervalYes
dataRangeNo
truncatedNo
limitationNo
methodologyNo
omittedPointsNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description only needed to add behavior beyond that — and it does: the 'auto picks the finest that fits 400 points' rule, the 180-point default, and the fact that max_points truncates from the oldest end and sets a 'truncated' flag. That truncation disclosure is genuinely useful for interpreting results. It does not cover rate limits or the public-data freshness caveat.

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 resource is front-loaded and every sentence carries information; there is no filler. The parameter clauses are dense and slightly run-on, which costs a point but not comprehension.

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?

With an output schema present, return values need not be described, and the description still notes that a summary covers the whole range. Between the annotations, full schema coverage, and the auto/truncation rules, an agent has enough to call it correctly; only edge behavior (e.g. what 'truncated' means downstream) is left implicit.

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%, so baseline is 3, but the description goes further than the schema on two params: it explains that interval=auto selects the finest resolution fitting 400 points, and that auto uses max_points=180 while an explicit max_points keeps the latest points and sets a truncation flag. That is real added semantics over the terse schema strings.

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?

States a specific resource with scope: 'Heat Score history from the public daily history,' so an agent knows it retrieves a time-series rather than a definition (explain_indicator) or a current-state view (get_market_snapshot). The verb is implicit in 'history' rather than stated outright, and it never names a sibling, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the parameter framing ('from is required', 'to defaults to the last day') rather than stated as when-to-use guidance. There is no explicit condition distinguishing this from explain_indicator or get_market_snapshot, but the retrieval context is clear enough to act on.

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

get_market_snapshotBitcoin Barometer snapshotA
Read-onlyIdempotent
Inspect

Current Bitcoin Barometer reading: Heat Score 0-100, zone and zone bands, yesterday and last week, BTC price with 24h and 7d change, and the ten indicators with value, heat and a one-line meaning. Descriptive only.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
asOfYes
zoneYes
priceNo
scoreYes
licenseNo
change1dNo
change7dNo
degradedYes
imageUrlNo
previousYes
gaugeNoteNo
zoneBandsYes
indicatorsYes
limitationYes
attributionNo
methodologyNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description's only added behavioral note is 'Descriptive only', which is consistent but largely redundant with those hints; it adds no auth, rate-limit, or freshness/latency context.

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?

Front-loaded with the resource name and contained in one sentence plus a short qualifier. The enumeration of return fields is somewhat redundant given an output schema exists, but it is compact and readable.

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?

With zero parameters, a full set of annotations, and an output schema that already defines the return shape, the description covers what an agent needs to decide and invoke. Only the lack of sibling differentiation keeps it from being fully complete.

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 takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description correctly implies no inputs are required.

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 names a specific resource ('Current Bitcoin Barometer reading') and enumerates what it contains, so an agent knows it returns a current-state snapshot. It does not explicitly contrast itself with siblings like get_history or explain_indicator, leaving the reader to infer 'snapshot = current' versus 'history = past'.

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?

Usage is only implied: the word 'Current' plus 'Descriptive only' suggests a read-only, present-tense snapshot, which implicitly contrasts with get_history. No alternative tool is named and no condition for choosing this over a sibling is stated.

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.

  1. 1 tool update
    • Changedget_history3 fields changed
      • addedInput schema / properties / max_points
        Added value: +{
        +  "description": "Most points to return; older points are dropped and truncated is set",
        +  "maximum": 400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / omittedPoints
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "type": "boolean"
        +}
  2. 1 tool update
    • Changedget_market_snapshot1 field changed
      • addedOutput schema / properties / imageUrl
        Added value: +{
        +  "type": "string"
        +}
  3. 3 tool updates
    • Changedexplain_indicator3 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"Indicator name"New value: +"Indicator key"
      • addedInput schema / properties / name / enum
        Added value: +[
        +  "monthlyRSI",
        +  "mayerMultiple",
        +  "piCycleProximity",
        +  "mvrvZScore",
        +  "nupl",
        +  "puellMultiple",
        +  "twoYearHighProximity",
        +  "roc90",
        +  "fearAndGreed",
        +  "searchInterestHeat"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "asOf": {
        +      "type": "string"
        +    },
        +    "attribution": {
        +      "type": "string"
        +    },
        +    "degraded": {
        +      "type": "boolean"
        +    },
        +    "feeds_score": {
        +      "type": "string"
        +    },
        +    "heat": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "key": {
        +      "type": "string"
        +    },
        +    "license": {
        +      "type": "string"
        +    },
        +    "limitation": {
        +      "type": "string"
        +    },
        +    "measures": {
        +      "type": "string"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "value": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "key",
        +    "name",
        +    "measures",
        +    "value",
        +    "heat",
        +    "degraded",
        +    "feeds_score",
        +    "asOf"
        +  ],
        +  "type": "object"
        +}
    • Changedget_history4 fields changed
      • addedInput schema / properties / interval
        Added value: +{
        +  "description": "Point size (default auto)",
        +  "enum": [
        +    "day",
        +    "week",
        +    "month",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / to / description
        Previous value: -"Last day, YYYY-MM-DD"New value: +"Last day, YYYY-MM-DD (default: last available day)"
      • changedInput schema / required
        Previous value: -[
        -  "from",
        -  "to"
        -]New value: +[
        +  "from"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "integer"
        +    },
        +    "dataRange": {
        +      "type": "object"
        +    },
        +    "from": {
        +      "type": "string"
        +    },
        +    "interval": {
        +      "type": "string"
        +    },
        +    "license": {
        +      "type": "string"
        +    },
        +    "limitation": {
        +      "type": "string"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "points": {
        +      "items": {
        +        "properties": {
        +          "date": {
        +            "type": "string"
        +          },
        +          "score": {
        +            "type": "integer"
        +          },
        +          "zone": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "date",
        +          "score",
        +          "zone"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "summary": {
        +      "properties": {
        +        "days": {
        +          "type": "integer"
        +        },
        +        "daysPerZone": {
        +          "type": "object"
        +        },
        +        "max": {
        +          "type": "number"
        +        },
        +        "mean": {
        +          "type": "number"
        +        },
        +        "min": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "min",
        +        "max",
        +        "mean",
        +        "days",
        +        "daysPerZone"
        +      ],
        +      "type": "object"
        +    },
        +    "to": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "from",
        +    "to",
        +    "interval",
        +    "count",
        +    "points",
        +    "summary"
        +  ],
        +  "type": "object"
        +}
    • Changedget_market_snapshot1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "asOf": {
        +      "type": "string"
        +    },
        +    "attribution": {
        +      "type": "string"
        +    },
        +    "change1d": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "change7d": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "degraded": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "gaugeNote": {
        +      "type": "string"
        +    },
        +    "indicators": {
        +      "items": {
        +        "properties": {
        +          "gauge": {
        +            "type": "boolean"
        +          },
        +          "heat": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "key": {
        +            "type": "string"
        +          },
        +          "meaning": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "key",
        +          "name",
        +          "value",
        +          "heat",
        +          "gauge",
        +          "meaning"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "license": {
        +      "type": "string"
        +    },
        +    "limitation": {
        +      "type": "string"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "previous": {
        +      "properties": {
        +        "weekAgo": {
        +          "properties": {
        +            "date": {
        +              "type": "string"
        +            },
        +            "score": {
        +              "type": "integer"
        +            },
        +            "zone": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "date",
        +            "score",
        +            "zone"
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "yesterday": {
        +          "properties": {
        +            "date": {
        +              "type": "string"
        +            },
        +            "score": {
        +              "type": "integer"
        +            },
        +            "zone": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "date",
        +            "score",
        +            "zone"
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "yesterday",
        +        "weekAgo"
        +      ],
        +      "type": "object"
        +    },
        +    "price": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "score": {
        +      "type": "integer"
        +    },
        +    "zone": {
        +      "type": "string"
        +    },
        +    "zoneBands": {
        +      "items": {
        +        "properties": {
        +          "max": {
        +            "type": "integer"
        +          },
        +          "min": {
        +            "type": "integer"
        +          },
        +          "zone": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "zone",
        +          "min",
        +          "max"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "score",
        +    "zone",
        +    "asOf",
        +    "zoneBands",
        +    "previous",
        +    "indicators",
        +    "degraded",
        +    "limitation"
        +  ],
        +  "type": "object"
        +}
  4. 3 tool updates
    • First observedexplain_indicator
    • First observedget_history
    • First observedget_market_snapshot

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides real-time Bitcoin market regime detection by fusing on-chain, derivatives, and absence sensors into a convergence score, enabling AI agents to make informed trading decisions.
    21 PyPI
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides crypto market intelligence including price quotes, momentum analysis, trending coins, and a composite scored verdict, using the free CoinGecko API.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Bitcoin, Ethereum and 22 more coins: news sentiment scores from 9 crypto news outlets plus the Fear & Greed Index, with the headlines behind each score. Hourly sentiment history for research and backtesting. Three free tools need no wallet; live readings cost $0.01 and hourly history $0.05 per call, paid in USDC on Base via x402. Unsupported coins and no-news results are refused and not charged.
    6
    5
    77 PyPI
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.