bolthub
NPM · @BOLTHUB/MCP · SCANNED SEP 20
The bolthub API marketplace, L402 gateways, and your other MCP servers, on one Lightning budget.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 1 of 10 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to signaltech-org/bolthub-sdk). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 57 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability73
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3871 tokens (~175/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety92
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 2 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "revoke_token" implies "revoke" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Partial
- An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the bolthub MCP server?
bolthub runs locally as an npm package, launched with npx -y @bolthub/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @bolthub/mcp
claude mcp add ai-bolthub-mcp -- npx -y @bolthub/mcp
{
"mcpServers": {
"ai-bolthub-mcp": {
"command": "npx",
"args": [
"-y",
"@bolthub/mcp"
]
}
}
} {
"servers": {
"ai-bolthub-mcp": {
"command": "npx",
"args": [
"-y",
"@bolthub/mcp"
]
}
}
} codex mcp add ai-bolthub-mcp -- npx -y @bolthub/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-bolthub-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@bolthub/mcp"
],
"enabled": true
}
}
} openclaw mcp add ai-bolthub-mcp --command npx --arg -y --arg @bolthub/mcp
mcp_servers:
ai-bolthub-mcp:
command: "npx"
args: ["-y", "@bolthub/mcp"] {
"McpServers": {
"ai-bolthub-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@bolthub/mcp"
]
}
}
} assistant mcp add ai-bolthub-mcp -t stdio -c npx -a -y @bolthub/mcp
{
"mcpServers": {
"ai-bolthub-mcp": {
"command": "npx",
"args": [
"-y",
"@bolthub/mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 −2
- Stability: pass → 0.83 functional
- 15 Sept 26 0
- Stability: 0.97 → pass security
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 −2
- Stability: pass → 0.80 functional
- 8 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/@bolthub/mcp@0.7.2
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | signaltech-org/bolthub-sdk |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/signaltech-org/bolthub-sdk/.github/workflows/publish.yml@refs/tags/v0.8.1 |
| Rekor log index | 2241433245 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:8d8b7516b543ebf12d0514efe8306d87063623465b6254f3ee882c6402e80d70f437bb2991f9452c56bbefc140d8d4876e3035db8fe6ca3cb03cb1b85 |
Background: How many MCP packages publish verified provenance →
Dependencies 10 packages
| Packages resolved | 10 |
|---|---|
| Stale | 1 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_listing ~153
Audit a bolthub listing you own against the seller-guide rubric and get a prioritized punch list (HIGH/MED/LOW findings with evidence and a fix pointer). Checks origin protection (is the paywall bypassable? is bolthub's signed traffic being rejected?), honest status codes, docs/examples quality, public schema visibility, uptime and p95 latency, pricing-model fit, samples, and free-try. Read-only — changes nothing. Useful before publish_listing and any time revenue looks off. Requires BOLTHUB_ACCOUNT_TOKEN.
| Name | Type | Req | Description |
|---|---|---|---|
| endpoint_id | string | – | Audit a single endpoint instead of the whole listing. |
| tenant_id | string | – | Workspace id. Omit when the account has exactly one workspace. |
No output schema declared.
No examples provided.
buy_credit ~248
Buy prepaid CREDIT for a bolthub provider: pay ONCE for a sats budget spendable across ALL of that provider's endpoints, then call_api to any of them draws the credit with no further Lightning payment until it runs out. Use this when you'll call SEVERAL of one provider's endpoints — sum their costs and buy that much credit in one payment. Credit is face-value (the provider charges exactly the sats you ask for, no discount tiers) and per-provider: it never covers a different provider (you'd buy separate credit for each). Unused credit at expiry is non-refundable, so size it to what you expect to spend.
| Name | Type | Req | Description |
|---|---|---|---|
| credit_sats | number | yes | Amount of credit to buy in sats (charged at face value) |
| max_cost_sats | number | – | Maximum sats to pay for the credit. If the price exceeds this, the purchase is refused and nothing is paid. |
| path | string | yes | Any endpoint path of the provider to buy against (e.g. '/v1/history/candles'); the credit covers all of the provider's endpoints |
| slug | string | yes | The provider's API slug (e.g. 'btc-intel') |
No output schema declared.
No examples provided.
call_api ~264
Call an API endpoint on the bolthub marketplace. Handles L402 Lightning payments automatically. Use get_api_details or preview_cost first to check pricing. Returns the response along with cost and budget information.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | JSON request body for POST/PUT/PATCH requests |
| headers | object | – | Additional HTTP headers |
| max_cost_sats | number | – | Maximum sats to pay for this request. If the invoice exceeds this amount, the call is refused and nothing is paid. |
| method | string | – | HTTP method — defaults to GET |
| path | string | yes | The endpoint path (e.g. '/v1/history/candles') |
| query_params | object | – | Query parameters as key-value pairs |
| slug | string | yes | The API slug (e.g. 'btc-intel') |
| stream_events | number | – | For streaming (SSE) endpoints only: return after this many live events (default 20, max 200). One call buys one stream window; zero events in a window is normal for event-driven feeds. For continuous… |
| stream_seconds | number | – | For streaming (SSE) endpoints only: return after this many seconds of listening (default 10, max 60). |
No output schema declared.
No examples provided.
close_stream ~72
Close a stream opened with open_stream and get a final summary (events, duration, cost). Closing does not refund the connection payment. Streams also close themselves on gateway limits, on the paid window ending, or after 10 minutes without a read.
| Name | Type | Req | Description |
|---|---|---|---|
| stream_id | string | yes | The id returned by open_stream |
No output schema declared.
No examples provided.
connect_account ~114
One-click connect this MCP server to the user's bolthub account. Starts a browser pairing: returns an approval link and a short confirmation code — show BOTH to the user and tell them to check the codes match before approving. After they approve, call connect_status to finish. The minted account token is stored locally and never appears in chat. Use when a seller tool reports no account token.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | – | Name shown on the approval page and in the dashboard token list. Defaults to 'Claude Desktop on <hostname>'. |
No output schema declared.
No examples provided.
connect_status ~52
Finish or check the account pairing started by connect_account. Call it after the user says they approved in the browser. On success the account token is stored locally (never shown in chat) and the seller tools start working.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
connect_wallet ~177
Check or set up the payout wallet for a workspace. A deployed bolthub node can be bound directly (pass node_id — the credential copy is server-side, nothing secret enters chat). Other wallets connect in the browser: the tool returns the dashboard link plus guidance for self-hosted LND (invoice-only macaroon) and always-on NWC services; the chat only ever sees connected yes/no and reachability. Re-run after the user connects to confirm. Non-custodial: sats settle directly to the user's wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| node_id | string | – | Bind this deployed bolthub node as the payout wallet (from deploy_node/node_status, or the list this tool shows). Server-side credential copy; changes where payouts land. |
| tenant_id | string | – | Workspace id. Omit when the account has exactly one workspace. |
No output schema declared.
No examples provided.
create_workspace ~233
Create a new bolthub workspace (tenant) for selling APIs. Secret-free and reversible: an empty workspace costs nothing and the 30-day trial only starts when a first endpoint is published. A wallet is OPTIONAL until you publish a paid endpoint — then it's required (publishing a paid endpoint without one is blocked). Bind a deployed node as the payout wallet now with wallet_node_id, or later with connect_wallet. Requires an account token (connect_account).
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional workspace description shown in the directory. |
| name | string | yes | Workspace display name. |
| slug | string | – | URL slug (lowercase letters, digits, hyphens; 3-63 chars). Omit to derive from the name; taken slugs get a numbered variant automatically. |
| tags | array | – | Optional directory tags (max 10). |
| wallet_node_id | string | – | Optionally bind this deployed bolthub node (from deploy_node/node_status) as the payout wallet in the same call. Server-side credential copy; nothing secret enters chat. Omit to stay walletless and c… |
No output schema declared.
No examples provided.
deploy_node ~340
Deploy a Lightning node (LND + Neutrino) on the user's own VPS — fully non-custodial. GUIDED FLOW, call it repeatedly as the conversation progresses: (1) no arguments → provider menu with prices; (2) provider chosen but no credential stored → sign-up + access-token steps for that provider (the token itself is entered at bolthub.ai/nodes/deploy in the browser, never in chat); (3) credential present → region menu; (4) region → server sizes with monthly prices; (5) region + size (or size 'recommended') → deploys and returns the node id. The user then creates the wallet + seed phrase on their own node page; bind it as the payout wallet afterwards with connect_wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | – | DEPRECATED: passing a VPS key here puts it into chat context, and agent sessions can't store keys anyway. The tool walks the user through adding it at bolthub.ai/nodes/deploy instead. |
| credential_id | string | – | Stored VPS credential id. Omit when the account has exactly one (it's used automatically); the tool lists them when there are several. |
| provider | string | – | Chosen provider. Omit to get the provider menu with prices. |
| region | string | – | Region slug from the region menu step. |
| size | string | – | Server size slug from the sizes step, or 'recommended' for the cheapest (a Lightning node runs fine on it). Deploy starts only when both region and size are given. |
| tor | boolean | – | Enable Tor-only mode for maximum privacy. Default: false. |
No output schema declared.
No examples provided.
get_api_details ~63
Get full details for a specific API including all endpoints, pricing, example requests/responses, and usage instructions. Use the slug from search_apis results.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | The API slug from search_apis results (e.g. 'btc-intel') |
No output schema declared.
No examples provided.
get_earnings ~103
Revenue report for a bolthub workspace you own: all-time and windowed earnings in sats, recent paid days, and top-earning endpoints. Read-only. Requires BOLTHUB_ACCOUNT_TOKEN.
| Name | Type | Req | Description |
|---|---|---|---|
| days | number | – | Reporting window in days for the recent-revenue figures (default 30, max 365). All-time totals are always included. |
| tenant_id | string | – | Workspace id. Omit when the account has exactly one workspace. |
No output schema declared.
No examples provided.
get_onboarding_state ~78
One-look onboarding checklist for a workspace: wallet connected, endpoints drafted/published, origin-protection verdict (live probe), listing live, trial state — plus the single next step. Use it to drive the seller onboarding conversation. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| tenant_id | string | – | Workspace id. Omit when the account has exactly one workspace. |
No output schema declared.
No examples provided.
list_api ~352
Turn an API spec into a DRAFT bolthub listing: parses OpenAPI/Swagger or Postman (JSON or YAML), creates the endpoints as unlisted drafts (never visible in the directory), and applies a default per-request price you can refine. Publishing is a separate explicit step — use publish_listing. Requires BOLTHUB_ACCOUNT_TOKEN (your bolthub account, dashboard → MCP setup). Re-importing a spec for an origin that already has endpoints shows a dry-run diff instead of duplicating anything.
| Name | Type | Req | Description |
|---|---|---|---|
| apply_sync | boolean | – | Re-import only: after reviewing the dry-run diff from a previous call, set true to apply it. Sync updates spec-owned fields only and never touches pricing. |
| origin_url | string | – | Base URL of the upstream API (e.g. https://api.example.com). Required when the spec declares no servers/base URL; overrides it when it does. |
| price_sats | number | – | Per-request price in sats applied to the draft (default 5, minimum 1). Per-endpoint refinement happens in the dashboard before publishing. |
| spec_content | string | – | Inline spec instead of a URL: OpenAPI/Swagger/Postman JSON or YAML, or a plain JSON array of rows like [{"method":"GET","path":"/v1/x","title":"...","description":"..."}] for manual assembly from a c… |
| spec_url | string | – | URL of the spec. Fetched server-side through bolthub's SSRF-safe proxy — never directly. |
| tenant_id | string | – | Workspace id to list into. Omit when the account has exactly one workspace; with several, the tool lists them so the user can pick. |
No output schema declared.
No examples provided.
mint_scoped_token ~309
Mint a scoped, capped child credential from a multi-use credential you already hold for an endpoint, to hand to a sub-agent. Attenuates OFFLINE (no payment, no round-trip): the child is a normal L402 token the worker spends with call_api or a plain client, and the gateway enforces every cap. Attenuation is tighten-only — a child can never widen scope or exceed the parent's remaining uses/sats. Give at least one restriction. Requires a held multi-use credential for this endpoint (a single-use payment has nothing to delegate). Revoke the whole tree with revoke_token.
| Name | Type | Req | Description |
|---|---|---|---|
| expiry | string | – | Child expiry as an ISO 8601 timestamp (e.g. '2026-08-01T00:00:00Z') or Unix milliseconds; must be no later than the parent's expiry |
| n_uses | number | – | Cap the child to this many requests (must not exceed the parent's remaining n_uses) |
| path | string | yes | The endpoint path the held bundle is for (e.g. '/v1/history/candles') |
| path_prefix | string | – | Restrict the child to request paths at or under this prefix (must be at or under the parent's path scope) |
| slug | string | yes | The API slug the credential is for (e.g. 'btc-intel') |
| spend_cap_sats | number | – | Cap the child's cumulative spend in sats (must not exceed the parent's max_sats) |
No output schema declared.
No examples provided.
node_status ~315
Check the status of a deployed Lightning node. Returns current state, IP address, sync progress, and setup instructions when applicable. Pass wait_for to BLOCK until a milestone is reached (for driving deploy → wallet → bind without babysitting): the call polls server-side state and returns as soon as the condition holds, errors loudly on timeout or a terminal state, and stops immediately when only user action can progress things (wallet creation is a browser step). One call blocks at most ~150s (desktop MCP clients abort longer calls); with a bigger timeout_s the tool returns WAIT PAUSED with the remaining budget — re-call with that budget to continue. That single re-call is expected; never wrap this tool in your own polling loop.
| Name | Type | Req | Description |
|---|---|---|---|
| node_id | string | yes | Node ID returned by deploy_node |
| timeout_s | number | – | Total wait budget in seconds, 5-600 (default 120). A single call blocks at most ~150s to stay under desktop MCP transport kill-timers; a larger budget is spent across re-calls (the WAIT PAUSED result… |
| wait_for | string | – | Block until: wallet_pending = VPS up, LND waiting for its wallet (next step is the user's seed ceremony); ready = wallet created and macaroon minted; payable = ready AND an active channel with inboun… |
No output schema declared.
No examples provided.
open_stream ~196
Open a live streaming (SSE) endpoint and hold the connection in the background. One Lightning payment buys the connection; read_stream then returns events for free until the stream closes. Use for continuous monitoring ("tell me when a big liquidation happens"); for a one-off taste use call_api with stream_events/stream_seconds instead. At most 3 streams can be open at once, and a stream nobody reads for 10 minutes closes itself.
| Name | Type | Req | Description |
|---|---|---|---|
| max_cost_sats | number | – | Maximum sats to pay for the connection. If the invoice exceeds this, nothing is paid. |
| path | string | yes | The streaming endpoint path (e.g. '/v1/derivatives/liquidations/stream') |
| query_params | object | – | Query parameters (e.g. { min_size_usd: '100000' } to filter server-side) |
| slug | string | yes | The API slug (e.g. 'btc-intel') |
No output schema declared.
No examples provided.
preview_cost ~87
Preview the cost of calling an API endpoint without making the actual request or paying. Use this to check pricing before committing to a call.
| Name | Type | Req | Description |
|---|---|---|---|
| method | string | – | HTTP method — defaults to GET |
| path | string | – | Specific endpoint path to check. If omitted, shows pricing for all endpoints. |
| slug | string | yes | The API slug (e.g. 'btc-intel') |
No output schema declared.
No examples provided.
publish_listing ~161
Take a workspace's draft endpoints live in the bolthub directory. Without confirm:true it is a DRY RUN that shows exactly what would go live (endpoints, prices, workspace activation) — show that to the user and get their go-ahead before re-calling with confirm:true. Publishing the first endpoint starts the workspace's 30-day free trial. Requires BOLTHUB_ACCOUNT_TOKEN.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Omitted/false = dry run (no changes). true = publish exactly what the dry run showed. |
| endpoint_ids | array | – | Specific endpoint ids to publish. Omit to publish every unlisted endpoint in the workspace. |
| tenant_id | string | – | Workspace id. Omit when the account has exactly one workspace. |
No output schema declared.
No examples provided.
read_stream ~130
Read new events from a stream opened with open_stream. Free (the connection is already paid). Returns events since your previous read; pass wait_seconds (max 25) to wait for the next event instead of returning immediately — "wake me when something happens". Zero events on a healthy connection is normal for event-driven feeds. After the stream ends, one final read returns the closing summary.
| Name | Type | Req | Description |
|---|---|---|---|
| stream_id | string | yes | The id returned by open_stream |
| wait_seconds | number | – | Seconds to wait for a new event when none are buffered (default 0 = return immediately, max 25) |
No output schema declared.
No examples provided.
revoke_token ~178
Revoke the grant behind a prepaid bundle this session bought, killing the whole delegation tree minted from it (every scoped child made with mint_scoped_token). Takes effect on the next request within ~15s, returning token_revoked. Use it to cut off a sub-agent (or all of them) after handing out children. Optionally pass released_sats to return child-cap budget you reserved back to your budget.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | The endpoint path the held bundle is for (e.g. '/v1/history/candles') |
| released_sats | number | – | Optional: sats of child-cap budget to return to your budget (what you reserved via mint_scoped_token for children of this grant) |
| slug | string | yes | The API slug whose bundle grant you want to revoke (e.g. 'btc-intel') |
No output schema declared.
No examples provided.
search_apis ~112
Search the bolthub API marketplace. Returns a list of available APIs with names, descriptions, tags, endpoint counts, and pricing. Use this to discover APIs that match your needs. Call without arguments to list all available APIs.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Search query — matches API names, descriptions, tags, and endpoint paths |
| tag | string | – | Filter by tag (e.g. 'weather', 'finance', 'ai'). Use search_apis() with no args to see all available tags. |
No output schema declared.
No examples provided.
usage_summary ~134
Operational usage for a bolthub workspace you own: billing status and projected platform fee for the current cycle, paid traffic by endpoint, and SDK-tool (facilitator) usage. Pass endpoint_id for one endpoint's latency/error detail. Read-only. Requires BOLTHUB_ACCOUNT_TOKEN.
| Name | Type | Req | Description |
|---|---|---|---|
| days | number | – | Window for SDK-tool usage figures (default 30, max 365). |
| endpoint_id | string | – | Drill into one endpoint: request count, success rate, avg/p95 latency, error breakdown. |
| tenant_id | string | – | Workspace id. Omit when the account has exactly one workspace. |
No output schema declared.
No examples provided.
What is the bolthub MCP server?
bolthub is an MCP server listed in the public MCP registry as ai.bolthub/mcp. The bolthub API marketplace, L402 gateways, and your other MCP servers, on one Lightning budget. This page covers its npm package (@bolthub/mcp).
Is the bolthub MCP server safe to use?
bolthub scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the bolthub MCP server expose?
bolthub exposes 22 tools: search_apis, get_api_details, preview_cost, call_api, buy_credit, and 17 more. Their descriptions and schemas cost roughly 3,871 tokens of context every time the server is loaded.
Is the bolthub MCP server still maintained?
bolthub is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the bolthub MCP server under?
bolthub declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.