bitcoin-signals

Leading non-price Bitcoin signals over MCP: sovereign, hiring, hashrate. Not financial advice.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
61%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,563Tokens (tool definitions)
~568 BTypical response size
Moderate attention impact (1.22% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "bitcoin-signals": {
      "url": "https://coinbucha.com/api/mcp"
    }
  }
}

Remote endpoints

https://coinbucha.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢scan_signals(min_strength, direction, signal_types)

Ranked cross-signal feed of CoinBucha's leading, non-price Bitcoin indicators. Returns { as_of, btc_price_usd, count, signals[], disclaimer }, where each signal carries id, type, title, value, unit, signal_strength (0-100), direction (tailwind | headwind | neutral), a one-line why, sources[] and its own as_of. Optional filters narrow by strength, direction or signal type. Example: {"min_strength": 70, "direction": "tailwind"} — call with {} for the full ranked list. Observational data; information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {
    "min_strength": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "Only signals with strength >= this"
    },
    "direction": {
      "type": "string",
      "enum": [
        "tailwind",
        "headwind",
        "neutral"
      ],
      "description": "Keep only signals carrying this direction label"
    },
    "signal_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. ['sovereign_adoption','hiring_velocity']"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_hiring_signal(company)

Hiring velocity across tracked Bitcoin and crypto-infrastructure employers, counted from their live ATS boards. Returns { as_of, companies[], note, why, disclaimer }; each company carries company, ticker, category, ats, careers_url, open_roles, open_roles_30d_ago, open_roles_90d_ago and the derived delta_30d, delta_90d and pct_30d. Example: {"company": "coinbase"} for one employer, or {} for every employer tracked. When a company filter matches no tracked employer the response adds coverage_note and tracked_count, saying that the name is outside the tracked set — a limit of coverage, not a finding about whether that company is hiring. Information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {
    "company": {
      "type": "string",
      "description": "Case-insensitive company filter"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sovereign_reserves(country, tier)

Nation-state Bitcoin holdings, ranked largest first. Returns { as_of, btc_price_usd, count, sovereigns[], disclaimer }; each row carries country_name, country_code, holdings_btc, status, tier (1 = largest holders), framework, sources[], its own as_of, and source_quality (primary = confirmed against the state's own publication; secondary = reported, not confirmed at source — derived from that row's sources[]). Filter by country name or ISO code, or by tier. Example: {"country": "US"} or {"tier": 1} — call with {} for the full ranking. Information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country name or ISO code"
    },
    "tier": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "Holding tier; 1 = largest holders"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_treasury_holdings

Bitcoin held on the balance sheets of tracked public companies, in aggregate and by largest holder. Takes no arguments. Returns { as_of, total_btc, company_count, total_value_usd, top[], why, disclaimer }, where top[] lists the largest holders as { name, symbol, btc }. Example: {}. Information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_etf_flows

RETIRED: this tool is no longer advertised and serves no flow figures. No spot-Bitcoin-ETF flow source is available that is both key-free and permitted to redistribute, so CoinBucha never had a licensed figure to serve here. It remains callable so existing integrations do not break: it takes no arguments and returns { available: false, status, as_of, date_basis, unit, note, disclaimer }, stating the absence explicitly. Read that absence as absent — never as a zero flow. For live signals use scan_signals, get_sovereign_reserves, get_treasury_holdings, get_hiring_signal, get_network_signal or get_daily_brew. Example: {}. Information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_network_signal

Bitcoin network hashrate level and trend. Takes no arguments. Returns { as_of, hashrate_eh (exahashes per second), pct_30d, pct_90d, why, disclaimer }. Example: {}. Information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_daily_brew

The day's machine-readable digest of the whole signal set — the CoinBucha Daily Brew. Takes no arguments. Returns { date, btc_price_usd, headline, signals_summary[] }, one summary line per signal with its strength, direction and one-line why. Example: {}. Information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_signal_history(signal_type, days)

Dated strength history for one CoinBucha signal, newest first. Returns { as_of, signal_type, title, unit, count, points[], truncated, available_points, tier_window_points, freshness, why, disclaimer, cite }, where each point carries date, signal_strength (0-100) and direction (tailwind | headwind | neutral). Example: {"signal_type": "network_hashrate", "days": 30}. `signal_type` is one of sovereign_adoption, hiring_velocity, corporate_treasury, network_hashrate. Anonymous and free-tier callers receive the most recent points only and are told so by `truncated` and `available_points`; no figure is ever altered or interpolated to fit a window. Observational data; information, not financial advice.

Input Schema

{
  "type": "object",
  "properties": {
    "signal_type": {
      "type": "string",
      "enum": [
        "sovereign_adoption",
        "hiring_velocity",
        "corporate_treasury",
        "network_hashrate"
      ],
      "description": "Which signal's history to return"
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "description": "How many of the most recent dated points to return (1-90)"
    }
  },
  "required": [
    "signal_type"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools