BoltHub logoBoltHub
SDKs & Tools

MCP Registry

@bolthub/mcp-registry: one MCP config, every API on the bolthub marketplace.

Overview

The MCP Registry gives AI agents access to every API on the bolthub marketplace through a single config entry. New APIs are instantly available, with no config changes needed.

This is the recommended way to connect AI agents to bolthub.

Install

Use directly with npx (no install required):

npx @bolthub/mcp-registry

Or install globally:

npm install -g @bolthub/mcp-registry

No install-time dependencies. Everything ships in one bundle — including NWC wallet support (as of v0.1.4), the MCP SDK, and the core @bolthub/agent client.

The server is also listed in the official MCP registry as ai.bolthub/registry — the namespace is cryptographically verified against the bolthub.ai domain, so MCP clients that support registry discovery can find and install it by that name.

Configuration

Add to your MCP client config (Cursor, Claude Desktop, Claude Code, etc.):

{
  "mcpServers": {
    "bolthub": {
      "command": "npx",
      "args": ["@bolthub/mcp-registry"],
      "env": {
        "LND_REST_HOST": "https://your-lnd-node:8080",
        "LND_MACAROON": "<hex-admin-or-pay-macaroon>"
      }
    }
  }
}

Every API on bolthub.ai is now available to your agent.

Client-specific setup

Cursor: Open Settings > Features > MCP Servers > Add new MCP server. Or paste the JSON config into .cursor/mcp.json in your project root.

Claude Desktop: Open Settings > Developer > Edit Config. Paste into the mcpServers section.

Claude Code: Run claude mcp add bolthub -- npx @bolthub/mcp-registry and export your wallet env vars in your shell.

Environment variables

The registry needs a Lightning wallet to pay for API calls. You only need one wallet type.

VariableDescription
LND_REST_HOSTRecommended. LND REST API URL (bolthub Node Launcher or your own node). Fast payment path (<200ms) for agents. Use a pay-scoped macaroon in production (see Agent wallet security).
LND_MACAROONHex-encoded macaroon for LND. Required with LND_REST_HOST.
NWC_URIRecommended for easy setup. Free start: CoinOS — no-KYC signup, copy the connection string, done. Set a per-connection budget and keep only a few thousand sats (custodial); its single relay refuses connections intermittently, so retry if a payment fails to connect. Reliability upgrade: Alby Hub (v1.21.5+, hosted or free self-hosted) puts two relays in every connection string and our client fails over automatically. Expect 2–15s per payment over NWC. Bundled as of v0.1.4 — no extra packages needed.
LNBITS_URLLNbits instance URL. Fast (<300ms). Accounts system built on any Lightning funding source. Use if you already run LNbits.
LNBITS_ADMIN_KEYAdmin API key for LNbits. Required with LNBITS_URL.
PHOENIXD_URLPhoenixd HTTP API URL. Supported if you already run Phoenixd for outbound payments.
PHOENIXD_PASSWORDHTTP password for Phoenixd. Required with PHOENIXD_URL.
BUDGET_SATSOptional. Maximum sats the MCP can spend per session. When exceeded, API calls are refused. Unset = unlimited.

Which wallet should I use?

Pick by how your wallet will be used, not by brand:

  • Interactive use (you're present): Zeus — free, non-custodial, well-known. Great for trying APIs from the playground or manual CLI calls. Not for unattended agents: its wallet service runs on your phone, so payments only succeed while the app is running.
  • Unattended agents, free start: NWC with CoinOS — the only zero-cost always-on option; about 2 minutes to a working wallet. Set a per-connection budget and keep only a few thousand sats there (it's custodial). Its relay refuses connections intermittently; retry the call if it fails to connect (clients built on @bolthub/agent ≥ 0.1.3 retry automatically).
  • Unattended agents, reliable: Alby Hub (v1.21.5+) — non-custodial, two relays in every connection string with automatic failover in our client. Hosted plan or free self-hosted.
  • Production / power users: LND via the bolthub Node Launcher or your own node with a pay-scoped macaroon — payments in under 200ms. Pairs naturally with Lightning Labs' agent stack (lnget, lightning-agent-tools), which speaks the same standard L402 as every bolthub API.
  • Whatever the wallet: always set a budget on connections an agent can spend from.

Spending budget

Set BUDGET_SATS to cap total spending per session (the session lasts as long as the MCP server process runs, typically the lifetime of your Cursor or Claude Desktop window).

"env": { "LND_REST_HOST": "...", "LND_MACAROON": "...", "BUDGET_SATS": "1000" }
BudgetUse case
100–500Testing and light use
1000–5000Typical daily development
10000+Heavy or production use
UnsetNo limit (pays any invoice as long as the wallet has funds)

Tools

The registry exposes six tools to your AI agent — four for using marketplace APIs and two for deploying your own Lightning node via the bolthub Node Launcher:

search_apis

Search the marketplace for APIs by keyword or tag.

search_apis({ query: "weather" })
search_apis({ tag: "finance" })
search_apis()  // list all available APIs

get_api_details

Get full details for a specific API: endpoints, pricing, examples.

get_api_details({ slug: "btc-intel" })

preview_cost

Preview the cost of calling an API endpoint without making the request or paying. Use this to check pricing before committing.

preview_cost({ slug: "btc-intel", path: "/v1/history/candles" })

call_api

Call any API endpoint. Lightning payments are handled automatically.

call_api({ slug: "btc-intel", path: "/v1/history/candles", method: "GET" })
call_api({ slug: "my-api", path: "/analyze", method: "POST", body: { text: "hello" }, max_cost_sats: 50 })

The optional max_cost_sats parameter rejects invoices above the specified amount.

After each call, the response includes spending information: how many sats were spent and how much budget remains.

deploy_node

Deploy a new non-custodial Lightning node on a VPS via the bolthub Node Launcher. Useful when the agent needs its own receiving wallet but doesn't have one yet.

deploy_node({ provider: "hetzner", api_key: "<vps-api-key>" })
deploy_node({ provider: "scaleway", api_key: "<vps-api-key>", region: "fr-par", tor: true })

Supported provider values: hetzner, digitalocean, lunanode, vultr, scaleway. Returns a node_id that you can pass to node_status. The user must complete wallet setup (writing down their seed phrase) on the deployed node's Lightning Terminal UI before the node can receive payments.

node_status

Check the status of a node deployed via deploy_node. Returns the current state (provisioninginstallingwallet_pendingsyncingready), IP address, sync progress, and setup instructions when applicable.

node_status({ node_id: "<node-id-from-deploy_node>" })

How it works

  1. search_apis queries the live bolthub directory, and new APIs appear immediately
  2. get_api_details fetches endpoint specs so the agent knows how to call them
  3. preview_cost checks pricing without paying
  4. call_api hits the gateway, pays any L402 invoice automatically, and returns the response
  5. deploy_node / node_status let the agent (or a user it's helping) spin up a fresh Lightning node when one isn't already available

vs MCP Bridge

Registry (mcp-registry)Bridge (mcp-bridge)
ConfigOne entry, every APIOne entry per API
New APIsInstantRequires config change
Tool count6 (fixed)N (one per endpoint)
Best forGeneral-purpose agentsDedicated single-API agents

Use the registry for most cases. Use the MCP Bridge when you want direct, named tools for a specific API.

If you want @bolthub/mcp-registry (or any MCP server) discoverable in public registries, use this process:

  1. Publish a stable package first (npm/PyPI/Docker) with a clear install command (npx ..., uvx ..., or container run command).
  2. Ship complete metadata in your repo and package docs:
    • What the server does (one-line value prop)
    • Transport (stdio and/or http)
    • Required env vars (and which are optional)
    • Authentication model
    • Tool list with short descriptions and examples
  3. Keep startup friction near zero:
    • Works with one command
    • Fast startup (<2-3s on cold start)
    • Clear error messages for missing env vars
  4. Add trust signals:
    • OSS license
    • README with quickstart + troubleshooting
    • Automated tests and CI
    • Versioned releases/changelog
  5. Submit to target registries and follow each registry's contribution rules exactly.

Official MCP Registry

@bolthub/mcp-registry is published in the official MCP registry as ai.bolthub/registry. The ai.bolthub/* namespace is verified via a DNS proof on the bolthub.ai apex, and each listing version maps to the matching @bolthub/mcp-registry release on npm (which itself carries the mcpName field the registry validates against).

GitHub MCP Registry

GitHub maintains a public MCP Registry where servers can be submitted and discovered: MCP Registry on GitHub.

Typical acceptance blockers are incomplete docs, unclear auth requirements, and install commands that fail on a clean machine. Before submission, test your setup from scratch on macOS and Linux with only the published instructions.

Practical checklist before you submit

  • Verify npx @bolthub/mcp-registry runs without local repo files
  • Document all wallet env var combinations users can choose from
  • Ensure tool names/descriptions are stable and backwards-compatible
  • Add an explicit security section (secrets handling, network access, spending limits)
  • Include at least one end-to-end example config for Cursor/Claude clients
  • Keep release notes current so registry reviewers can evaluate maintenance health

Registry submission package (copy/paste)

Use this as your baseline package when submitting @bolthub/mcp-registry to registries.

1) Short listing blurb

`@bolthub/mcp-registry` is an MCP server that gives AI agents access to every API on the bolthub marketplace through one MCP config entry.

It exposes six stable tools:
- `search_apis`: discover APIs by query/tag
- `get_api_details`: fetch endpoint and pricing metadata
- `preview_cost`: estimate sats before calling
- `call_api`: execute API requests with automatic L402 payment
- `deploy_node`: provision a self-custodial Lightning node via the Node Launcher
- `node_status`: check deployment progress for a Node Launcher node

Install:
`npx @bolthub/mcp-registry`

2) Compatibility + setup block

## Compatibility
- Transport: `stdio`
- Clients tested: Cursor, Claude Desktop, Claude Code
- Runtime: Node.js LTS with `npx`

## Required configuration
Set one wallet integration:
- LND: `LND_REST_HOST`, `LND_MACAROON` (recommended)
- NWC: `NWC_URI` (easiest setup, no node required)
- LNbits: `LNBITS_URL`, `LNBITS_ADMIN_KEY` (if you already run LNbits)
- Phoenixd: `PHOENIXD_URL`, `PHOENIXD_PASSWORD` (if you already run Phoenixd)

Optional:
- `BUDGET_SATS` to cap per-session spending

3) Security disclosure block

## Security model
- The server can make outbound HTTP calls to APIs selected by the user/agent.
- Payment is explicit and auditable through Lightning invoice settlement.
- `BUDGET_SATS` provides a hard cap to prevent overspend.
- Secrets are read from environment variables; never hardcode credentials.
- Tool schema is intentionally small and stable to reduce prompt-surface risk.

4) Reproducible smoke test

# Clean environment
node -v
npx @bolthub/mcp-registry --help || true

# With wallet env configured, validate startup
LND_REST_HOST=... LND_MACAROON=... npx @bolthub/mcp-registry

5) Registry PR template

## MCP server submission: @bolthub/mcp-registry

### What it does
Provides a single MCP server entry that exposes every API listed on bolthub.ai.

### Install
`npx @bolthub/mcp-registry`

### Transport
`stdio`

### Authentication / secrets
Uses wallet credentials via environment variables (LND or NWC recommended; LNbits and Phoenixd also supported). Supports optional spend cap with `BUDGET_SATS`.

### Tools
- `search_apis`
- `get_api_details`
- `preview_cost`
- `call_api`
- `deploy_node`
- `node_status`

### Quick validation performed
- [ ] Starts on a clean machine with the documented command
- [ ] Env var requirements documented and verified
- [ ] README includes examples for Cursor/Claude setup
- [ ] Security considerations documented
- [ ] License and CI checks present

Registry-specific variants

A) GitHub MCP Registry variant

Use this when opening a PR to the GitHub MCP Registry: MCP Registry on GitHub.

## Server name
bolthub

## Package
@bolthub/mcp-registry

## Install command
npx @bolthub/mcp-registry

## Category
Developer tools / API marketplace

## Description
One MCP config entry that gives AI agents discover + call access to every API on the bolthub marketplace.

## Transport
stdio

## Auth and secrets
Configured via env vars for one wallet type:
- LND_REST_HOST + LND_MACAROON (recommended)
- NWC_URI (easiest, no node required)
- LNBITS_URL + LNBITS_ADMIN_KEY
- PHOENIXD_URL + PHOENIXD_PASSWORD

Optional:
- BUDGET_SATS (session spending cap)

## Exposed tools
- search_apis
- get_api_details
- preview_cost
- call_api
- deploy_node
- node_status

## Verification notes
- Validated startup from clean environment
- README includes Cursor/Claude setup
- Security section documents secrets handling and spend limits

B) JSON metadata variant (generic registries)

Some directories ask for a machine-readable metadata object. Use this as a starter:

{
  "name": "bolthub",
  "display_name": "bolthub MCP Registry",
  "package": {
    "manager": "npm",
    "name": "@bolthub/mcp-registry",
    "install": "npx @bolthub/mcp-registry"
  },
  "description": "One MCP config entry to discover and call every API on the bolthub marketplace.",
  "transport": ["stdio"],
  "documentation_url": "https://bolthub.ai/docs/sdks/mcp-registry",
  "repository_url": "https://github.com/signaltech-org/bolthub-sdk",
  "license": "MIT",
  "tools": [
    {
      "name": "search_apis",
      "description": "Search marketplace APIs by query or tag."
    },
    {
      "name": "get_api_details",
      "description": "Get endpoint specs, examples, and pricing metadata."
    },
    {
      "name": "preview_cost",
      "description": "Estimate sats cost before making a paid request."
    },
    {
      "name": "call_api",
      "description": "Call an endpoint with automatic L402 Lightning payment."
    },
    {
      "name": "deploy_node",
      "description": "Deploy a non-custodial Lightning node on a VPS via the Node Launcher."
    },
    {
      "name": "node_status",
      "description": "Check progress and connection details for a Node Launcher deployment."
    }
  ],
  "env": {
    "one_of": [
      ["LND_REST_HOST", "LND_MACAROON"],
      ["NWC_URI"],
      ["LNBITS_URL", "LNBITS_ADMIN_KEY"],
      ["PHOENIXD_URL", "PHOENIXD_PASSWORD"]
    ],
    "optional": ["BUDGET_SATS"]
  },
  "security": {
    "secrets_source": "environment variables",
    "network_access": "outbound HTTP requests to selected APIs",
    "cost_controls": ["BUDGET_SATS"]
  },
  "compatibility": {
    "clients_tested": ["Cursor", "Claude Desktop", "Claude Code"]
  }
}

Final filled submission draft (ready to paste)

GitHub MCP Registry PR (filled)

## MCP server submission: bolthub

### Package
`@bolthub/mcp-registry`

### Repository
`https://github.com/signaltech-org/bolthub-sdk` (directory: `packages/mcp-registry`)

### Documentation
`https://docs.bolthub.ai/docs/sdks/mcp-registry`

### Install
`npx @bolthub/mcp-registry`

### Description
`@bolthub/mcp-registry` is an MCP server that gives AI agents discover + call access to every API on the bolthub marketplace via one MCP config entry.

### Transport
`stdio`

### Authentication / secrets
One wallet integration is required (via env vars):
- `LND_REST_HOST` + `LND_MACAROON` (recommended)
- `NWC_URI` (easiest, no node required)
- `LNBITS_URL` + `LNBITS_ADMIN_KEY`
- `PHOENIXD_URL` + `PHOENIXD_PASSWORD`

Optional:
- `BUDGET_SATS` (hard spend cap per MCP server session)

### Exposed tools
- `search_apis` (discover APIs by query/tag)
- `get_api_details` (fetch endpoint/pricing metadata)
- `preview_cost` (estimate sats cost before execution)
- `call_api` (execute endpoint with automatic L402 payment)
- `deploy_node` (provision a non-custodial Lightning node via the Node Launcher)
- `node_status` (check provisioning progress for a Node Launcher node)

### License
`MIT`

### Validation checklist
- [x] Install command works on clean machine: `npx @bolthub/mcp-registry`
- [x] Env var requirements documented for all wallet modes
- [x] Cursor/Claude setup examples documented
- [x] Cost control documented (`BUDGET_SATS`)
- [x] Open-source license declared

Generic registry JSON payload (filled)

{
  "name": "bolthub",
  "display_name": "bolthub MCP Registry",
  "package": {
    "manager": "npm",
    "name": "@bolthub/mcp-registry",
    "version": "0.1.4",
    "install": "npx @bolthub/mcp-registry"
  },
  "description": "MCP server that gives AI agents discover and call access to every API on the bolthub marketplace through a single config entry.",
  "transport": ["stdio"],
  "documentation_url": "https://docs.bolthub.ai/docs/sdks/mcp-registry",
  "repository_url": "https://github.com/signaltech-org/bolthub-sdk",
  "repository_subdirectory": "packages/mcp-registry",
  "license": "MIT",
  "tools": [
    {
      "name": "search_apis",
      "description": "Search marketplace APIs by query or tag."
    },
    {
      "name": "get_api_details",
      "description": "Get endpoint specs, examples, and pricing metadata for a slug."
    },
    {
      "name": "preview_cost",
      "description": "Preview sats cost before making a paid endpoint request."
    },
    {
      "name": "call_api",
      "description": "Call an API endpoint with automatic L402 Lightning payment handling."
    },
    {
      "name": "deploy_node",
      "description": "Deploy a non-custodial Lightning node on a VPS via the bolthub Node Launcher."
    },
    {
      "name": "node_status",
      "description": "Check the deployment status and connection details for a Node Launcher node."
    }
  ],
  "env": {
    "one_of": [
      ["LND_REST_HOST", "LND_MACAROON"],
      ["NWC_URI"],
      ["LNBITS_URL", "LNBITS_ADMIN_KEY"],
      ["PHOENIXD_URL", "PHOENIXD_PASSWORD"]
    ],
    "optional": ["BUDGET_SATS"]
  },
  "security": {
    "secrets_source": "environment variables",
    "network_access": "outbound HTTP requests to selected marketplace APIs",
    "cost_controls": ["BUDGET_SATS"]
  },
  "compatibility": {
    "clients_tested": ["Cursor", "Claude Desktop", "Claude Code"]
  }
}