Exchange hack alerts, a hash-chained public event record and crypto/finance/tech news for agents
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Free tools need no credentials. Other tools take this key or a wallet bearer token, and some need a paid plan; paid tools also accept a per-call x402 payment (X-PAYMENT).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One exchange security alert with its evidence signals, sources and timeline. Takes the id from muhabbit_alerts, or the article_id of an alert headline seen in muhabbit_events. A confirmed alert is free; an unconfirmed (suspected) one answers 403 alert_unconfirmed unless include_unconfirmed is true, which reads the paid route. (Free when include_unconfirmed is false, the default, and the alert is confirmed. Otherwise paid: x402 payment, or an API key or wallet token on a paid plan.)
Alert id (incident uuid) or one of its article uuids
true reads the paid route, which also serves suspected (unconfirmed) alerts
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http muhabbit https://api-production-ba80.up.railway.app/mcp
Headers
X-API-Key (optional, not in the config above): Optional. Free tools need no credentials. Other tools take this key or a wallet bearer token, and some need a paid plan; paid tools also accept a per-call x402 payment (X-PAYMENT).One exchange security alert with its evidence signals, sources and timeline. Takes the id from muhabbit_alerts, or the article_id of an alert headline seen in muhabbit_events. A confirmed alert is free; an unconfirmed (suspected) one answers 403 alert_unconfirmed unless include_unconfirmed is true, which reads the paid route. (Free when include_unconfirmed is false, the default, and the alert is confirmed. Otherwise paid: x402 payment, or an API key or wallet token on a paid plan.)
| Argument | Type | Description |
|---|---|---|
| id* | string | Alert id (incident uuid) or one of its article uuids |
| include_unconfirmed | boolean | true reads the paid route, which also serves suspected (unconfirmed) alerts |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Alert id (incident uuid) or one of its article uuids"
},
"include_unconfirmed": {
"type": "boolean",
"description": "true reads the paid route, which also serves suspected (unconfirmed) alerts"
}
},
"additionalProperties": false
}Exchange hack and drain alerts from Muhabbit's incident engine (large outflows to unlabelled wallets, withdrawal halts, security-researcher posts, exchange statements). One item per incident: tier (suspected = unconfirmed, confirmed), exchange, headline, USD at risk, assets, evidence signals and sources, a timeline with named clocks, and links to its hash-chained public record entries. Newest update first. Use for 'is an exchange being hacked right now?' or 'any exchange incidents since T?'. Informational, not advice. (Free when tier is confirmed, the default; that feed needs no credentials and returns at most 20. Otherwise paid: x402 payment, or an API key or wallet token on a paid plan.)
| Argument | Type | Description |
|---|---|---|
| tier | string | confirmed (free): confirmed incidents only. suspected (paid): unconfirmed incidents, published before confirmation. all (paid): both. |
| limit | integer | Max alerts, 1-100 (default 20). The free confirmed feed returns at most 20. |
| since | string | ISO 8601 instant, e.g. 2026-10-29T00:00:00Z. Only alerts updated (new evidence or a tier change) at or after it, on the engine's detection clock. An update can become visible a few seconds after its updated_at, so when polling pass your previous poll time minus 60s and dedupe on (id, tier, updated_at). |
| exchange | string | Exchange key, lowercase, e.g. binance, okx, bybit, bitget, coinbase |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tier": {
"enum": [
"suspected",
"confirmed",
"all"
],
"type": "string",
"default": "confirmed",
"description": "confirmed (free): confirmed incidents only. suspected (paid): unconfirmed incidents, published before confirmation. all (paid): both."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max alerts, 1-100 (default 20). The free confirmed feed returns at most 20."
},
"since": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 instant, e.g. 2026-10-29T00:00:00Z. Only alerts updated (new evidence or a tier change) at or after it, on the engine's detection clock. An update can become visible a few seconds after its updated_at, so when polling pass your previous poll time minus 60s and dedupe on (id, tier, updated_at)."
},
"exchange": {
"enum": [
"binance",
"coinbase",
"kraken",
"okx",
"bybit",
"bitfinex",
"bitstamp",
"htx",
"gemini",
"kucoin",
"gateio",
"bitget",
"upbit",
"bithumb",
"cryptocom",
"robinhood",
"deribit",
"mexc",
"bitmex",
"uphold",
"revolut",
"poloniex",
"coinone",
"wazirx"
],
"type": "string",
"description": "Exchange key, lowercase, e.g. binance, okx, bybit, bitget, coinbase"
}
},
"additionalProperties": false
}Verticals and currently active topic slugs. The anonymous token from GET /auth/public-token is enough. (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Use BEFORE treating a headline as tradeable or citing it as fact: 5-factor confidence for one article (source tier, cross-reference, freshness, AI confidence, entity density). (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
| Argument | Type | Description |
|---|---|---|
| article_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"article_id"
],
"properties": {
"article_id": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}Use when asked 'is this confirmed?' or 'who else is reporting this?' — multi-source validation of an article's claims with entity correlation. (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
| Argument | Type | Description |
|---|---|---|
| article_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"article_id"
],
"properties": {
"article_id": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}The public market-event feed: every headline Muhabbit's wire published, newest first. Each item is an entry of the hash-chained public record with three clocks in UTC ms (source_at = publisher, detected_at = our ingest, published_at = our publication), focus tags, a category and impact 0-100. Covers exchange listings, US CPI, jobs and Fed, crypto, macro and tech. Exchange security alert headlines appear here too (suspected ones start with 'Unconfirmed:'; their evidence is in muhabbit_alerts). Page with next_cursor. (Free: no credentials needed.)
| Argument | Type | Description |
|---|---|---|
| limit | integer | Events per page, 1-20 (default 20) |
| cursor | string | next_cursor from the previous page |
| categories | array | Keep only these categories: listings (exchange listings), cpi, jobs, fed (US macro prints), crypto, macro, tech |
| min_impact | integer | Keep events with impact at or above this (0-100). Above 0 drops events whose impact is unknown. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Events per page, 1-20 (default 20)"
},
"cursor": {
"type": "string",
"maxLength": 256,
"minLength": 1,
"description": "next_cursor from the previous page"
},
"categories": {
"type": "array",
"items": {
"enum": [
"listings",
"cpi",
"jobs",
"fed",
"crypto",
"macro",
"tech"
],
"type": "string"
},
"minItems": 1,
"description": "Keep only these categories: listings (exchange listings), cpi, jobs, fed (US macro prints), crypto, macro, tech"
},
"min_impact": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Keep events with impact at or above this (0-100). Above 0 drops events whose impact is unknown."
}
},
"additionalProperties": false
}Time series for ONE narrative (15-min captures of phase, velocity, article and source counts). Use after muhabbit_narratives to see how a story's lifecycle evolved — is it accelerating or rolling over? (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
| Argument | Type | Description |
|---|---|---|
| hours | number | Lookback window in hours (default 48, max 168) |
| narrative_id* | string | Narrative id from muhabbit_narratives, e.g. 'bitcoin-etf' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"narrative_id"
],
"properties": {
"hours": {
"type": "number",
"description": "Lookback window in hours (default 48, max 168)"
},
"narrative_id": {
"type": "string",
"description": "Narrative id from muhabbit_narratives, e.g. 'bitcoin-etf'"
}
},
"additionalProperties": false
}Ranked live narrative clusters by phase, velocity and distinct-source count. Use for themes, rotations, or 'what's the story in crypto right now?' — returns decision-ready rows, not a raw feed. (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
| Argument | Type | Description |
|---|---|---|
| vertical | string | |
| emerging_only | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"vertical": {
"enum": [
"crypto",
"finance",
"tech",
"turkish"
],
"type": "string"
},
"emerging_only": {
"type": "boolean"
}
},
"additionalProperties": false
}Latest approved news across crypto, finance, tech and Turkish markets. Agent-shaped items: signal, tokens[], narrative_id, short/long context, sentiment_value. Filter by vertical, topic, tokens or time. (Paid route: API key, wallet token, or x402 payment.)
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| since | string | |
| tokens | string | Comma-separated symbols, e.g. BTC,ETH |
| category | string | Topic slug from muhabbit_categories |
| language | string | |
| vertical | string | |
| min_importance | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"since": {
"type": "string",
"format": "date-time"
},
"tokens": {
"type": "string",
"maxLength": 200,
"description": "Comma-separated symbols, e.g. BTC,ETH"
},
"category": {
"type": "string",
"maxLength": 64,
"description": "Topic slug from muhabbit_categories"
},
"language": {
"enum": [
"en",
"tr"
],
"type": "string"
},
"vertical": {
"enum": [
"crypto",
"finance",
"tech",
"turkish"
],
"type": "string"
},
"min_importance": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
}Scheduled 1h / 24h / 7d recap for a vertical or all verticals (English). Returns freshness; never generated on demand. (Paid route: API key, wallet token, or x402 payment.)
| Argument | Type | Description |
|---|---|---|
| vertical | string | |
| timeframe | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"vertical": {
"enum": [
"all",
"crypto",
"finance",
"tech",
"turkish"
],
"type": "string"
},
"timeframe": {
"enum": [
"1h",
"24h",
"7d"
],
"type": "string"
}
},
"additionalProperties": false
}Raw public record entries in chain order from an id: each entry's frozen fields, prev_hash and hash, for offline verification. hash = sha256 over the canonical JSON bytes followed by prev_hash; the exact recipe is in /public/events/{id}/proof. Page with next_from. (Free: no credentials needed.)
| Argument | Type | Description |
|---|---|---|
| from | string | First entry id (default 1) |
| limit | integer | Entries, 1-100 (default 100) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"from": {
"type": "string",
"description": "First entry id (default 1)"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Entries, 1-100 (default 100)"
}
},
"additionalProperties": false
}Latest entry id and hash of Muhabbit's public record: an append-only sha256 hash chain (hash_v1) over every published event. Pin the head now; muhabbit_record_verify later proves nothing up to it was rewritten. null on an empty record. (Free: no credentials needed.)
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Recompute the public record's hash chain server-side over [from, to], at most 1000 entries (no bounds: the latest 1000). Returns ok, checked and head_hash, or the first broken id and the reason (prev_hash_mismatch, hash_mismatch, endpoint_missing). Limited to 5 calls a minute per client. (Free: no credentials needed.)
| Argument | Type | Description |
|---|---|---|
| to | any | Last entry id to check, e.g. a head id you pinned |
| from | string | First entry id to check |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"$ref": "#/properties/from",
"description": "Last entry id to check, e.g. a head id you pinned"
},
"from": {
"type": "string",
"description": "First entry id to check"
}
},
"additionalProperties": false
}Full-text search over the article corpus with relevance ranking. (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | |
| vertical | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"vertical": {
"enum": [
"crypto",
"finance",
"tech",
"turkish"
],
"type": "string"
}
},
"additionalProperties": false
}0-100 Fear & Greed index overall and per vertical, computed from the last 24h of scored articles. (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Momentum, volume-weighted, regime and vertical-shift sentiment signals. (Needs an API key or wallet token: X-API-Key or Authorization: Bearer.)
| Argument | Type | Description |
|---|---|---|
| vertical | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"vertical": {
"enum": [
"crypto",
"finance",
"tech",
"turkish"
],
"type": "string"
}
},
"additionalProperties": false
}24h AI summary of news about one asset symbol (exists for the most-mentioned assets). (Paid route: API key, wallet token, or x402 payment.)
| Argument | Type | Description |
|---|---|---|
| symbol* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"pattern": "^[A-Za-z0-9.\\-]{1,20}$"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 31, 2026.