Bitcoin Signals

com.coinbuchaPublished by coinbucha.comOfficial publisherv0.1.2Updated Nov 3, 2026

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

VerifiedStreamable HTTPWeb executableFinanceData & Analytics

Overview

Bitcoin Signals's hosted MCP server (coinbucha.com), published by coinbucha.com; no sign-in required; Streamable HTTP; 10 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
coinbucha.com
Endpoint
coinbucha.com
Last checked

Installation

In SourceWeft

  1. Open Bitcoin Signals in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.coinbucha%2Fbitcoin-signals/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

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

README

CoinBucha MCP — Bitcoin signal intelligence for AI agents

Signal-first Bitcoin intelligence over MCP. Leading, non-price indicators — sovereign adoption, hiring velocity, network hashrate, ETF flows, corporate treasuries — each as a 0–100 strength, a direction, a one-line why, and primary sources.

Information, not financial advice. No tool returns a buy/sell/hold recommendation.

This is the public MCP interface for CoinBucha. The hosted server reads the same live signal data the dashboard renders, so the machine face and the human face never diverge.

Connect (hosted — recommended, no install)

The server is remote and speaks Streamable HTTP. Point any MCP client at:

https://coinbucha.com/api/mcp

Claude Desktop / Claude Code — add a custom connector with that URL, or in claude_desktop_config.json:

json
{  "mcpServers": {    "coinbucha": {      "type": "streamable-http",      "url": "https://coinbucha.com/api/mcp"    }  }}

Cursor / other clients — add an MCP server with transport streamable-http and the URL above.

Free tier is open (IP rate-limited). Higher limits are available with an API key via the Authorization: Bearer <key> header — see coinbucha.com.

Connect (local stdio — offline/dev)

The bundled server.py exposes the same tools and fetches the live public snapshots from coinbucha.com, so it needs no local data pipeline.

bash
pip install -r requirements.txtpython3 server.py            # stdio transport# inspect: uv run mcp dev server.py
json
{  "mcpServers": {    "coinbucha": { "command": "python3", "args": ["server.py"] }  }}

Tools

ToolReturns
scan_signalsRanked composite signal feed (filter by min_strength, direction, signal_types) — the money tool
get_hiring_signalBitcoin/crypto-infra hiring velocity: open roles + 30/90-day deltas from live ATS boards
get_sovereign_reservesSovereign Bitcoin holdings, ranked (filter by country or tier)
get_treasury_holdingsCorporate Bitcoin treasury holdings: total BTC held by public companies + top holders
get_etf_flowsSpot Bitcoin ETF net flows (latest day + trailing 5/30-day)
get_network_signalBitcoin network hashrate level + 30/90-day trend
get_daily_brewToday's machine-readable signal digest (the CoinBucha Daily Brew)

Resource coinbucha://methodology — how every signal is computed (see docs/methodology.md). Prompt morning_bitcoin_brief — one-shot template to render the Daily Brew from live signals.

Every response carries an as_of timestamp, a why, and a disclaimer.

Example

Call scan_signals with { "min_strength": 60, "direction": "tailwind" } → the strongest structural tailwinds right now, ranked, each with its rationale and sources. Or run the morning_bitcoin_brief prompt for a written digest.

Methodology & guardrail

Signals are leading, non-price indicators rendered as signal_strength (0–100), a direction, and a why. The full, versioned methodology is public — see docs/methodology.md — because an auditable method is the point.

CoinBucha's public and MCP surfaces are self-audited against MiCA / FCA / GDPR. No surface presents a signal as advice.

Links

License

MIT — see LICENSE. This repository is the public MCP interface and methodology; the signal-collection pipeline is maintained separately.

Source: README.md at commit 347700e

Tools

10

scan_signals

Scan Bitcoin signals

Ranked cross-signal feed of CoinBucha's leading, non-price Bitcoin indicators. Returns { as_of, btc_price_usd, count, signals[], disclaimer, attribution, source_terms }, 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. CoinGecko values carry attribution: "Powered by CoinGecko" and source_terms. Observational data; information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Parametersdirectionmin_strengthsignal_types

get_hiring_signal

Bitcoin hiring velocity

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. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Parameterscompany

get_sovereign_reserves

Sovereign Bitcoin reserves

Nation-state Bitcoin holdings, ranked largest first. Returns { as_of, btc_price_usd, count, sovereigns[], disclaimer, attribution, source_terms }; 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. CoinGecko values carry attribution: "Powered by CoinGecko" and source_terms. Information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Parameterstiercountry

sovereign_diff

Sovereign Bitcoin snapshot diff

What changed between two frozen, immutable sovereign-reserve snapshots. Takes optional { from, to } snapshot dates (YYYY-MM-DD); defaults to the two newest. Returns { status, as_of, from, to, counts, added[], removed[], changed[], envelope[], disclaimer, cite }, where each changed row carries country_code, country_name, source_quality { from, to } and changes[] of { field, basis (reported | derived), from, to }. With fewer than two snapshots it returns status "insufficient_snapshots" and diff: null — not an empty diff. Example: {"from": "2026-09-04", "to": "2026-10-01"}. CoinGecko values carry attribution: "Powered by CoinGecko" and source_terms. The whole frozen series in one call: the per-call x402 route /api/paid/sovereign-snapshots (USDC); the per-date snapshot files stay free. Information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Parameterstofrom

get_treasury_holdings

Corporate Bitcoin treasuries

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, attribution, source_terms }, where top[] lists the largest holders as { name, symbol, btc }, and listed_exposure[] lists every company in the CoinBucha Listed Bitcoin record as { id, name, ticker, venue, status, btc, page, exposure, record_check } — exposure = { btc_per_share, usd_of_bitcoin_per_share, usd_of_bitcoin_per_1000_usd, btc_per_1000_usd, btc_pct_of_market_cap, as_of { holdings, shares, btc_usd_close, share_close } }, arithmetic on primary filings and closes. Example: {}. CoinGecko values carry attribution: "Powered by CoinGecko" and source_terms. Information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Takes no parameters.

get_etf_flows

Spot Bitcoin ETF flows (retired)

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. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Takes no parameters.

get_network_signal

Bitcoin network hashrate

Bitcoin network hashrate level and trend, derived from difficulty (expected, 2016-block epoch). hashrate_eh = difficulty × 2^32 / 600 s for the epoch in force, read from block headers — an expected rate, not a measured one. Takes no arguments. Returns { as_of, hashrate_eh (exahashes per second), pct_30d, pct_90d, hashrate_source, basis, difficulty, difficulty_height, difficulty_source_url, why, disclaimer }. Example: {}. Information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Takes no parameters.

get_bitcoin_company_calendar

Bitcoin company earnings calendar

Next results dates and SEC 10-Q/10-K filing windows of listed bitcoin holders (MSTR, COIN, MARA, HOOD and others): dates and windows from issuer and exchange sources. Takes optional { ticker, days_ahead (1-60, default 60) }. Returns { as_of, today, days_ahead, ticker, count, available, truncated, events[], full, disclaimer, cite, data_contract }; up to 5 events, soonest first, each with ticker, issuer, event_type, event_name, date_status, source_url, checked and either event_date (an issuer-announced date) or window_start/window_end with the SEC rule (a statutory window — never a date). date_status is the record's, verbatim: announced_primary_confirmed, occurred_primary_confirmed or unknown_exact_date_statutory_window. Example: {"ticker": "MSTR"} or {"days_ahead": 14}. Every row with history, rule locators and recorded outcomes: the per-call x402 route /api/paid/calendar (USDC), named with its price in `full`; the same rows stay free as JSON and CSV. Information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Parameterstickerdays_ahead

get_daily_brew

CoinBucha 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[], attribution, source_terms }, one summary line per signal with its strength, direction and one-line why. Example: {}. CoinGecko values carry attribution: "Powered by CoinGecko" and source_terms. Information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Takes no parameters.

get_signal_history

Bitcoin signal strength history

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. Beyond that window: a cut answer carries `more`, naming the per-call x402 route /api/paid/signal-history (every signal's full series in one call, USDC) and whether it is open now; or data_contract.bulk_url names the free CSV of the signal's dated figures. Observational data; information, not financial advice. Every answer carries data_contract { source, as_of, status, corrections_url, license }. This server answers bounded questions, one question, one answer; for bulk, history, backfills and scheduled pulls use the CSVs and datapackage.json at https://coinbucha.com/data.

Parametersdayssignal_typerequired

Version history

2
  1. v0.1.2LatestNov 3, 2026
  2. v0.1.1Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts