Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Mit Google anmelden, um Bewertungen zu schreiben.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Bitcoincreditstack MCP

von JamieFrameVersion 0.1.0i★ 0iLäuft in der Cloud
Name in der Registrycom.bitcoincreditstack/mcp

So installierst du es

Überblick

Beschreibung vom Entwickler (englisches Original)

The Bitcoin credit markets, measured. Cross-venue rates, venue criteria, chain indicators.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft in der Cloud
  • Transport: Streamable HTTP
  • Kategorie: Krypto & Blockchain

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

3/5 Prüfungen bestanden · Was du fragst, läuft über den Server des Anbieters (mcp.bitcoincreditstack.com)

Zuerst: Welche KI nutzt du?

Wähle deine App, dann erscheinen die Schritte unten.

Klappt mit Claude · etwa 2 Min.

Kein Schlüssel, nichts zu installieren · Einmal auf claude.ai oder in der Desktop-App einrichten, dann im Chat nutzen · kostenlose Konten können 1 hinzufügen

  1. Öffne die Connectors-Seite von Claude

    CustomizeConnectors

    CustomizeConnectors1+ Add2https://…3Add4
  2. Klicke „+ Add“ → „Add custom connector“ und fülle diese 2 Felder aus

    Kopiere jeden Wert in das gleichnamige Feld in Claude und klicke Continue

    Name · NameBitcoincreditstack MCP
    Remote MCP server URL · Adressehttps://mcp.bitcoincreditstack.com/mcp

    Authentication so lassen, wie Claude es erkannt hat, dann Add klicken

  3. Im Chat einschalten

    +ConnectorsBitcoincreditstack MCP

  4. Ausprobieren

    Nutze Bitcoincreditstack MCP und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude sagt, dass es Bitcoincreditstack MCP nutzt, oder ein Werkzeug von Bitcoincreditstack MCP in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit ChatGPT nur in Firmen-Tarifen

ChatGPT Business, Enterprise oder Edu im Web, hinzugefügt von Admin oder Inhaber des Workspace · Mit Free, Plus oder Pro: Dein ChatGPT-Tarif kann MCP noch nicht selbst verbinden

  1. In ChatGPT im Web die Seite zum Hinzufügen von MCP öffnen

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. Name und Adresse eintragen

    Namen eingeben, Adresse unter Connection einfügen, Risikohinweis abhaken und Create as a plugin klicken

    Name · NameBitcoincreditstack MCP
    Connection · Adressehttps://mcp.bitcoincreditstack.com/mcp
  3. Bitcoincreditstack MCP im Chat auswählen

    Neuen Chat öffnen und vor dem Tippen Bitcoincreditstack MCP aus deinen Plugins wählen

  4. Ausprobieren

    Nutze Bitcoincreditstack MCP und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn ChatGPT sagt, dass es Bitcoincreditstack MCP nutzt, oder ein Werkzeug von Bitcoincreditstack MCP in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von OpenAI abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Claude Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Terminal öffnen

    Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen

  2. Diesen Befehl einfügen und Enter drücken

    claude mcp add --transport http bitcoincreditstack https://mcp.bitcoincreditstack.com/mcp
  3. /mcp in Claude Code eingeben

    Bitcoincreditstack MCP sollte in der Liste als verbunden erscheinen

  4. Ausprobieren

    Nutze Bitcoincreditstack MCP und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude Code sagt, dass es Bitcoincreditstack MCP nutzt, oder ein Werkzeug von Bitcoincreditstack MCP in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Cursor · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button Cursor öffnen

    In Cursor öffnen

    Cursor fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in Cursor im Agent-Modus öffnen

  3. Ausprobieren

    Nutze Bitcoincreditstack MCP und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Cursor sagt, dass es Bitcoincreditstack MCP nutzt, oder ein Werkzeug von Bitcoincreditstack MCP in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit VS Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button VS Code öffnen

    In VS Code öffnen

    VS Code fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in VS Code im Agent-Modus öffnen

  3. Ausprobieren

    Nutze Bitcoincreditstack MCP und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn VS Code sagt, dass es Bitcoincreditstack MCP nutzt, oder ein Werkzeug von Bitcoincreditstack MCP in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Andere Apps mit MCP, etwa Windsurf, Zed oder Gemini CLI, fügen Server unterschiedlich hinzu. Sieh in der App-Liste nach

Alle Apps mit MCP ansehen →

Adresse für Apps, die über das Web verbinden

Adressehttps://mcp.bitcoincreditstack.com/mcp

JSON-Einstellungen stehen unten unter „Für Entwickler“

Hängst du fest? Frag Leute, die Bitcoincreditstack MCP nutzen💬 Diskussion →
Für Entwickler: Terminal-Befehle und JSON-Einstellungen

Über das Web

Claude Code

claude mcp add --transport http bitcoincreditstack https://mcp.bitcoincreditstack.com/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "bitcoincreditstack": {
      "url": "https://mcp.bitcoincreditstack.com/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "bitcoincreditstack": {
      "type": "http",
      "url": "https://mcp.bitcoincreditstack.com/mcp"
    }
  }
}

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Auf einen Blick

Downloads pro Wochei
Nicht auf npm/PyPI
Bestätigte Domain
✓ bitcoincreditstack.com
Lizenzi
Keine Lizenz angegeben
Verbindung
Läuft in der Cloud
Transport
streamable-http
Neueste Versioni
0.1.0
In der Registry veröffentlichti
29. Aug. 2026
Code zuletzt geänderti
2. Nov. 2026
Entwickler
JamieFrame
Registry-Status
Aktiv

Welche Apps ihn nutzen können

Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.

Verbinden sich über das Internet in

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Alle Apps, mit Vor- und Nachteilen →

Was er kann

Tool-Namen und -Beschreibungen genau so, wie der Server sie am 9. Nov. 2026 gemeldet hat. Geschrieben hat sie der Entwickler, nicht wir; wir zeigen sie als reinen Text.

  • list_onchain_indicators

    Returns the catalog of available on-chain indicator tools, including tool name, indicator name, brief description, units, an example invocation, and current readiness status ('live' or 'pending'). Use this when you need to discover which tools are available for on-chain analysis

  • get_mvrv

    Returns the current Bitcoin MVRV ratio: market capitalisation divided by realised capitalisation, where realised cap values each coin at the price it last moved. MVRV is therefore an identity on observed chain data. It states the aggregate unrealised position of the supply — how

  • list_chain_series

    Lists every series served from Aletheia's vintage store: the chain series built from one pass over every Bitcoin block on Aletheia's own node (chain.cohort.*: supply, supply by age band, long- and short-term holder supply, BTC moved, coin-days destroyed, dormancy, realised cap an

  • get_chain_series

    Returns one series from Aletheia's vintage store, by id (see list_chain_series): every value with its date and kind, the series' unit, source and limitation, and the vintages the values came from. With as_known_on, returns the series exactly as the store held it at the end of tha

  • get_cost_basis

    Returns Bitcoin's supply alive at the end of one UTC day, grouped by the BTC price on the day each coin was created, in logarithmic price buckets of a chosen width (ratio, default 1.02: each bucket spans 2%). Built from Aletheia's own node, block by block; day-granular. Creation

  • list_series

    Lists the series the Stack serves, across every dataset: the credit tree at every level (market, class, family, venue) and figure, for bitcoin and, separately, for ether collateral; the liquidation map's bands; the credit x on-chain measures and their sub-series; the governed ind

  • get_series

    Returns 1 to 13 series (ids from list_series), each on its own dates, from Aletheia's vintage store: every value with its date and kind (an absence is a kind with its reason, never a zero), the unit, source, limitation and the vintages the values came from. Default window: the la

  • get_chart

    Draws the series get_series would return for the same request (ids from list_series, the same window and as_known_on) as an SVG image in the Stack's house style: exactly the chart plan's panels, one unit each; rate axes from zero; a refused series not drawn; an absence a gap, nev

  • get_corporate_instruments

    Lists the instruments of the corporate issuers in the registry (convertible notes, credit facilities, bonds, perpetual preferreds), one row per instrument, as the site's /instruments pages show them: terms, seniority, the yield a holder receives where a last regular-session trade

  • get_fund_holdings

    Lists the spot bitcoin funds and the bitcoin each states it holds, as read from the fund's own SEC filing (10-Q or 10-K), its daily holdings file, or its periodic report, each figure with its date, its source and a quote. A fund's headline is its latest-dated figure; the other fi

  • get_balance_sheet

    Who holds the mined bitcoin, as each holder states it, and how much of it is pledged, wrapped or lent out. One line per holder (companies, spot funds, wrapped-token reserves, custodians, exchanges, governments), each with its figure or a range, its date, its source and a grade (A

  • get_events

    Returns the credit-market events the Stack has recorded, newest first: a venue's debt, collateral or borrow rate moving past its rule from one daily reading to the next, a figure crossing a fixed level (each power of ten, and twice and five times it), a company filing a purchase,

  • get_event_post_kit

    For one credit-market event (an id from get_events; without one, the newest events to choose from): its sentence, the link to post (X shows it as a card with the event's chart), the suggested chart and other series to set beside it (each with a page that saves it as a PNG to atta

  • get_desk_rates

    Returns the rate cards the custodial lending desks post (bitcoin collateral), one row per product: the representative APR and its range, term, maximum LTV, custody and liquidation model, and the card's effective date and source. Administered rates, not market-cleared; a card olde

  • get_debt_by_collateral

    What backs the dollar debt against bitcoin, by collateral and by venue type (pools, isolated markets, vaults, the auction, corporate, posted cards), as the site's "How these loans are backed" panel shows it, with each observer named and the collateral rule stated. days (30 to 150

  • list_indicators

    Returns the catalogue of Aletheia indicators measured across the Bitcoin-collateralised credit markets and the Bitcoin chain: id, name, family, units, description, and whether the indicator is currently live on this network. Three families: 'credit' (credit-market assessments), '

  • get_indicator

    Returns the current value of a single Aletheia indicator by id, with its methodology reference. This server serves the venue-independent indicator set; an indicator anchored on a single venue's own rate is served by that venue's own MCP and answers here with a pointer to it. Call

  • get_verification_bundle

    Covers one venue's contracts only: the registry's auction venue (venue_id 'gavel_arbitrum'), the one venue whose deployed contracts this dataset checks itself. It is served here as a source for that venue's quality criteria; no other venue has a bundle yet. What can be checked ab

  • list_venues

    Which credit venues does this dataset cover, and what is known about each? Returns the registry rows matching the filters you supply. One row per venue, each with its coverage state per pillar and how many of its criteria cells have been researched. Two vocabularies, never mixed:

  • get_venue

    What is known about this venue, criterion by criterion? The three pillars — Price, Quality, Composition — each cell with its value and the source it came from. The criteria are published and versioned before any venue is measured against them, applied evenly to every row, and the

  • compare_venues

    What does credit at this tenor and LTV cost across every venue Aletheia covers? One row per venue in coverage-matrix order — no ranking, no default sort, no "best". Standard questions this tool answers (get_guide with question): SQ-C2.

  • get_lens

    Returns a READING LENS: a presentation procedure for this dataset, written for a particular kind of reader. A lens selects which tools to use and frames how their output is presented; it never concludes, never ranks, and carries no write tool — this server has none. Call with no

  • get_guide

    What does this server cover, and how much of it? The tools; the venues by registry scope, venue type, status and credit class; the credit-state reading's coverage; the indicators served, retired and not published here; the series; and the lenses — every count read from the data w

  • get_credit_state

    What does Bitcoin-collateralised credit cost and how much of it is outstanding, across the venues this dataset covers? One reading aggregated over the venue universe, not any single venue's book. Carries the term structure, outstanding quantity, valuation, collateral mix and qual

  • get_credit_state_history

    How has the Bitcoin credit surface moved? The same cross-venue reading as get_credit_state, as a daily series. Each point carries the coverage that produced it, so a change in the series and a change in which venues were observable can be told apart. This is descriptive data; it

  • get_market_composition

    What kinds of credit make up this market, and in what proportions? ⚠ These series are computed from MORPHO BLUE ONLY, on Ethereum and Base. They are not market-wide. Composition by rate type, recourse and instrument, reported as observed shares with the scope that produced them.

  • get_market_flows

    How much credit was created and retired, and over what period? Latest, trailing 30 days, and since inception. ⚠ These series are computed from MORPHO BLUE ONLY, on Ethereum and Base. They are not market-wide. Counts and amounts as observed, with the scope, coverage and validation

  • get_liquidation_map

    How much bitcoin-secured dollar debt is liquidated at which bitcoin price, for the market, a class or a venue? An identity on observed positions: each bitcoin-only position at the price its OWN venue's rule liquidates it, summed into $1,000 buckets, with the debt within 10/20/30%

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 11. Nov. 2026

  • ! Vorsicht

    Entwickler passt zum Repo

    Der Herausgeber (bitcoincreditstack.com) ist nicht der Repo-Inhaber (JamieFrame); vielleicht hat jemand anderes ihn eingetragen

  • ✓ Bestanden

    Wird noch gepflegt

    Code zuletzt geändert: vor 9 Tagen

  • ✕ Nicht bestanden

    Hat eine Lizenz

    Keine Lizenzdatei im Repo gefunden

  • ✓ Bestanden

    Endpunkt antwortet

    Antwort in 364 ms (HTTP 200)

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Keine Anmeldung nötig

  • ✓ Bestanden

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Wir haben 28 Tool-Beschreibungen gelesen und keine versteckten Anweisungen an die KI gefunden

Diskussion

Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.

Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.

Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.

Mit Google anmelden, um zu posten

Nutzerbewertungen

Noch keine Bewertungen

Mit Google anmelden, um zu bewerten

Im Vergleich mit anderen in Krypto & Blockchaini

  • Mehr Sterne als 0 % der anderen 1643 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 40 % der anderen 1643 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 18 % der anderen 1643 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Bitcoincreditstack MCP sicher?

Er hat 3 von 5 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt vor 9 Tagen geändert, und die neueste Version (0.1.0) kam vor 2 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL und funktioniert daher auch in Apps mit Remote-MCP, etwa ChatGPT Business und höher.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Solana MCP by Vybe, Oracle3 prediction-market arbitrage checks, Polymarket Paper Trader

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Solana MCP by Vybe

Solana MCP developer toolkit: wallets, trades, markets, PnL, transfers, onchain, swaps & API tools.

von vybenetworkWeit verbreitet★ 2599 Sterne des ganzen ReposAktualisiert vor 6 Monaten

Läuft in der Cloud

Polymarket Paper Trader

Polymarket paper trading for AI agents: $10k paper money, real order books, official fees.

von agent-nextWachsend↓ 226/Wo.★ 504Aktualisiert vor 26 Tagen

Läuft auf deinem Computer

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

gavel-mcp-server

Aletheia Analytics MCP server — agent-native interface over the Gavel data product.

Thin TypeScript wrapper around api.thegavel.io. Exposes Gavel credit data and Bitcoin on-chain indicators as MCP tools so LLM-driven agents (Claude Desktop, IDE clients, custom agents) can read the data product without hand-rolling REST glue.

Status

All three layers of the AI concierge spec (aletheia-docs data/specs/mcp/ai_concierge.md) are live, plus the indicator surface and real key→tier resolution. Delivered by Runbook R18 and governed by the decisions note data/specs/mcp/tier_and_scope_decisions_v1.md (MD1–MD12).

Layer A — read state

ToolUpstream
check_wallet_statusdirect RPC (balances, allowances, readiness blockers)
find_auctions_matching_criteria/v1/auctions
get_user_positions/v1/user/:address/positions
get_loan_status/v1/loans/:id/status

Layer B — factory model (unsigned blueprints; the user signs)

ToolEncodes
prepare_bid_calldataplaceBid + approval when allowance is short
prepare_create_auction_calldatacreateAuction + collateral approval
prepare_repay_loan_calldatarepayLoan + repayment approval
prepare_claim_collateral_calldataclaimCollateral
prepare_claim_refund_calldataclaimRefund

Layer C — catalogues

ToolNotes
list_wallet_optionsstatic catalogue, no ranking
recommend_fiat_onrampstatic catalogue; carries the two-purchase gas requirement

Data surface

ToolUpstream
list_gavel_indicatorsstatic catalogue of 32 indicators
get_gavel_indicator/v1/credit/*, /v1/onchain/*, /v1/market/*
get_yield_curve/v1/yield-curve
get_mvrv/v1/onchain/mvrv
get_protocol_referencestatic — addresses, signatures, conventions
list_onchain_indicatorsstatic catalogue
The invariant

Aletheia builds; the user signs. There is no signing surface in this codebase — no wallet client, no account, no key material. viem is imported for encodeFunctionData only. That is what makes "Aletheia never signs" an architectural fact rather than a policy promise, and it must stay that way.

Equally load-bearing: no tool ranks, scores, or selects on the user's behalf. Filtering by user-supplied criteria is an information service; ranking by an internal model is investment advice. find_auctions_matching_criteria is named as it is deliberately, and the naming is not cosmetic.

Architecture

LLM Client → mcp.thegavel.io (this server) → api.thegavel.io (REST) → PostgreSQL

[tool catalog, descriptions, [authoritative endpoints] response shaping, auth, limits]

Single source of truth: the REST API. The MCP server never queries Postgres directly. Tools shape responses for LLM consumption (JSON-stringified text content) but never re-implement business logic. When the REST API upgrades, MCP inherits the upgrade automatically.

Local development

# Install deps (Node 20+)

npm install

Copy and edit env file

cp .env.example .env nano .env # set GAVEL_API_BASE_URL etc.

Dev mode (tsx watch)

npm run dev

Type check

npm run typecheck

Build to dist/

npm run build

Point a development MCP client (MCP Inspector, Claude Desktop with an HTTP connector) at http://localhost:3002/mcp to exercise tools.

Deployment

Target: gavel-btc Hetzner host, alongside gavel-api.

# Local — build and stage

npm install npm run build

Copy to server

scp -r dist/ package.json package-lock.json deployment/ \ root@gavel-btc:/root/gavel-mcp/

On server — install runtime deps (not the full dev set)

ssh root@gavel-btc cd /root/gavel-mcp npm install --omit=dev

Configure

cp .env.example .env nano .env

Set:

GAVEL_API_BASE_URL=https://api.thegavel.io (public API, for tool reads)

GAVEL_API_INTERNAL_URL=http://127.0.0.1:4012 (loopback, for tier lookup)

INTERNAL_API_SECRET=

PORT=3002

NODE_ENV=production

Install systemd unit

cp deployment/gavel-mcp.service /etc/systemd/system/ systemctl daemon-reload systemctl enable gavel-mcp.service systemctl start gavel-mcp.service

Verify

journalctl -u gavel-mcp -n 50 --no-pager curl http://localhost:3002/health

Reverse proxy

cp deployment/nginx-mcp.conf /etc/nginx/sites-available/mcp.thegavel.io ln -s /etc/nginx/sites-available/mcp.thegavel.io \ /etc/nginx/sites-enabled/mcp.thegavel.io nginx -t && systemctl reload nginx

TLS (Let's Encrypt)

certbot --nginx -d mcp.thegavel.io

End-to-end check

curl https://mcp.thegavel.io/health

Configuration

All knobs live in .env:

VarDefaultPurpose
PORT3002HTTP listen port
NODE_ENV—production for JSON logs
LOG_LEVELinfopino level (trace/debug/info/warn/error)
GAVEL_API_BASE_URLhttp://localhost:3001Upstream REST base URL
RATE_LIMIT_ANONYMOUS_PER_MINUTE60Anonymous bucket size
RATE_LIMIT_PAID_PER_MINUTE300Paid bucket size
CORS_ALLOWED_ORIGINSemptyComma-separated; empty = no CORS
HEALTH_CHECK_SECRETemptyIf set, /health requires ?secret=...
GAVEL_API_INTERNAL_URLhttp://127.0.0.1:4012Key→tier lookup. Must be the loopback address — /internal/resolve-tier refuses any request carrying an X-Forwarded-For, so the public api.thegavel.io host will not work
INTERNAL_API_SECRETemptyShared secret for the tier lookup. Must match gavel-indexer/.env.mainnet. Unset ⇒ every caller resolves to free
MCP_TIER_ENFORCEMENTfalseEnforce per-tool tiers. Leave false until Gate B — see *Tier model*
ARBITRUM_RPC_URLpublic RPCChain reads for Layer A/B. Point at a paid endpoint in production
ARBITRUM_SEPOLIA_RPC_URLpublic RPCTestnet equivalent

Tier model

The ladder is free / pro / enterprise — identical to the product's (gavel-indexer/lib/tiers.js) and to what Stripe sells. The scaffold's original anonymous / developer / professional / enterprise was a second vocabulary for one entitlement and is retired (MD1).

gavel-indexer/lib/api-keys.js is the authority on what tier a key is. The MCP does not open its own database pool; it asks GET /internal/resolve-tier over loopback, caches the answer for 60 s, and fails open to `free` on any error. A data MCP that 500s because the key database hiccuped is worse than one that briefly serves anonymous.

Enforcement is authored but OFF

MCP_TIER_ENFORCEMENT defaults to false, and that is the correct state today. Monetisation is gated until Gate B (D16–D18): *do not build a paywall until someone has asked to pay*. Runbook A2 withdrew the commercial surface, and www.thegavel.io/pricing currently states that data access is free and open — so refusing a tool and pointing the user at a page which denies tiers exist would be a self-refuting journey.

With the flag off, requireTier still resolves the caller's real tier and logs what it would have refused. That log is the evidence for M6, the "has anyone actually asked to pay?" gate condition.

Before flipping it on, read MD2. There are two incompatible readings of what a paid MCP means — whole-surface-paid (lib/tiers.js carries mcp: false on free) versus depth-paid (MD3, the endorsed one). They are very different products.

What is free, and why

Per MD3, inheriting the D5 route/depth map: raw on-chain state, auction discovery, wallet status, commodity on-chain indicators, the current value of any Gavel-derived assessment, and history are all free. History is free because D9 retired the 30-day REST cap, and the MCP must not reintroduce a fence the surface it mirrors has abandoned. The paid boundary is bulk delivery, which this server does not offer.

Participation is never gated (D3). Every Layer A/B/C tool is free: a would-be bidder must never meet a paywall between deciding to bid and being able to.

Rate limits are infrastructure protection, not a billing meter (D2), and apply irrespective of the enforcement flag.

Redeploying a change

npm run build            # tsc -> dist/ ; must be clean

systemctl restart gavel-mcp systemctl is-active gavel-mcp journalctl -u gavel-mcp -n 30 --no-pager

This service is systemd, not pm2. pm2 on this host carries quorum-mcp-testnet, a different service — pm2 restart gavel-mcp is a no-op that looks like a successful deploy. R18 v1 had this wrong; it is recorded in that runbook's §8.

The service runs dist/, not src/, so a change that is not built is a change that is not deployed.

Adding a tool

  1. Create src/tools/ / .ts. Copy credit/yield-curve.ts as the template — it's the cleanest worked example.
  2. Define a Zod schema for inputs with .describe() on every field; that description is what the LLM sees during tool discovery.
  3. Write the tool description as a multi-line string. Lead with what the indicator is, give interpretive context (without recommending anything), and document the response shape. The MCP SDK uses this verbatim in the catalog.
  4. Body: requireTier(...) → upstreamGet(...) → return { content: [{ type: 'text', text: JSON.stringify(...) }] }.
  5. Register the tool in src/tools/index.ts.
  6. Add an entry to src/tools/discovery/list-onchain.ts (or the equivalent discovery catalog for that domain).

Testing manually

# 1. Health

curl -s http://localhost:3002/health | jq

2. MCP Inspector

npx @modelcontextprotocol/inspector

Connect to http://localhost:3002/mcp

Verify: tools/list returns 3 tools, get_yield_curve returns live data,

get_mvrv returns a structured McpError "not found".

License

Proprietary © 2026 Aletheia Analytics SASU. All rights reserved.