Aibtc MCP Server

@aibtc/mcp-server npm v1.69.0 Source verified

Published by aibtcdev — publish provenance cryptographically ties this package to that repository. That is proof of origin, not an official vendor package.

Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.

Trust grade
A
90/100
Last scanned get badge →
Trust
A · 90/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
Critical
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
Share this Trust Score
𝕏 Share LinkedIn Reddit
A Why this grade threat 100 − adoption risk = 90/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:

The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.

2. Client adoption risk — 100 − 10 = 90. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−10 capability blast radius (critical) — client exposure if the model is manipulated

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 7

critical Completed toxic-flow trifecta across toolsMTC-FLOW-002

This server (without client built-ins) exposes a complete data-exfiltration chain: arxiv_search → bitflow_get_swap_targets → identity_transfer. Untrusted input is ingested, private data is read, and it can be sent to an external sink via the agent composing the tools (→). Static analysis proves the primitive exists, not that a specific run will occur.

Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.

Location: flow arxiv_search → bitflow_get_swap_targets → identity_transfer

high Shell/command execution in server code (dist/tools/pillar.tools.js)MTC-SRC-002

In the server's implementation (`dist/tools/pillar.tools.js:5`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: ; import { exec } from "child_process"; import * as fs from "fs/promises"; import * as path from "path"; import * as os

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/pillar.tools.js

medium Hardcoded egress to an external endpoint (dist/services/defi.service.js)MTC-SRC-003

In the server's implementation (`dist/services/defi.service.js:265`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: const res = await fetch(`https://hermes.pyth.network/v2/updates/price/latest?ids[]=${id}&encoding=hex`);

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/services/defi.service.js

medium Hardcoded egress to an external endpoint (dist/services/scaffold.service.js)MTC-SRC-003

In the server's implementation (`dist/services/scaffold.service.js:1029`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: const response = await fetch('https://openrouter.ai/api/v1/chat/completions', { method: 'POST', headers: {

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/services/scaffold.service.js

medium Hardcoded egress to an external endpoint (dist/tools/openrouter.tools.js)MTC-SRC-003

In the server's implementation (`dist/tools/openrouter.tools.js:112`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: const response = await fetch('https://openrouter.ai/api/v1/chat/completions', { method: 'POST', headers: {

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/openrouter.tools.js

medium Hardcoded egress to an external endpoint (dist/tools/pillar.tools.js)MTC-SRC-003

In the server's implementation (`dist/tools/pillar.tools.js:544`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: onst balanceRes = await fetch(`https://api.hiro.so/extended/v1/address/${walletAddress}/balances`); let sbtc

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/pillar.tools.js

medium Hardcoded egress to an external endpoint (dist/tools/settings.tools.js)MTC-SRC-003

In the server's implementation (`dist/tools/settings.tools.js:209`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: const response = await fetch("https://registry.npmjs.org/@aibtc/mcp-server/latest"); if (response.ok) {

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/settings.tools.js

Tools 200

Each tool and what it can reach — statically extracted from the published source.

  • arxiv_searchingests untrusted input
  • bitflow_get_swap_targetsreads sensitive data
  • bitflow_get_tokensreads sensitive data
  • bounty_my_postedingests untrusted input
  • identity_transfernetwork egress
  • news_list_signalsingests untrusted input
  • ordinals_get_listingsingests untrusted input
  • ordinals_p2p_get_tradeingests untrusted input
  • ordinals_p2p_list_tradesingests untrusted input
  • transfer_btcnetwork egress
Show 190 more tools ↓
  • transfer_nftnetwork egress
  • alex_get_pool_infono sensitive capability
  • alex_get_swap_quoteno sensitive capability
  • alex_list_poolsno sensitive capability
  • alex_swapno sensitive capability
  • arxiv_compile_digestno sensitive capability
  • arxiv_list_digestsno sensitive capability
  • bitflow_cancel_orderno sensitive capability
  • bitflow_create_orderno sensitive capability
  • bitflow_get_keeper_contractno sensitive capability
  • bitflow_get_keeper_userno sensitive capability
  • bitflow_get_orderno sensitive capability
  • bitflow_get_quoteno sensitive capability
  • bitflow_get_routesno sensitive capability
  • bitflow_get_tickerno sensitive capability
  • bitflow_swapno sensitive capability
  • bounty_acceptno sensitive capability
  • bounty_cancelno sensitive capability
  • bounty_createno sensitive capability
  • bounty_getno sensitive capability
  • bounty_listno sensitive capability
  • bounty_my_submissionsno sensitive capability
  • bounty_paidno sensitive capability
  • bounty_submissionsno sensitive capability
  • bounty_submitno sensitive capability
  • call_contractno sensitive capability
  • call_read_only_functionno sensitive capability
  • check_bns_availabilityno sensitive capability
  • claim_bns_name_fastno sensitive capability
  • competition_allowlistno sensitive capability
  • competition_list_tradesno sensitive capability
  • competition_statusno sensitive capability
  • competition_submit_tradeno sensitive capability
  • credentials_deleteno sensitive capability
  • credentials_getno sensitive capability
  • credentials_listno sensitive capability
  • credentials_setno sensitive capability
  • credentials_unlockno sensitive capability
  • deploy_contractno sensitive capability
  • dual_stacking_enrollno sensitive capability
  • dual_stacking_get_rewardsno sensitive capability
  • dual_stacking_opt_outno sensitive capability
  • dual_stacking_statusno sensitive capability
  • earning_opportunitiesno sensitive capability
  • estimate_child_inscription_feeno sensitive capability
  • estimate_inscription_feeno sensitive capability
  • execute_x402_endpointno sensitive capability
  • get_bns_infono sensitive capability
  • get_bns_priceno sensitive capability
  • get_btc_address_txsno sensitive capability
  • get_btc_balanceno sensitive capability
  • get_btc_feesno sensitive capability
  • get_btc_mempool_infono sensitive capability
  • get_btc_transaction_statusno sensitive capability
  • get_btc_utxosno sensitive capability
  • get_cardinal_utxosno sensitive capability
  • get_collection_infono sensitive capability
  • get_identityno sensitive capability
  • get_inscriptionno sensitive capability
  • get_inscriptions_by_addressno sensitive capability
  • get_nft_historyno sensitive capability
  • get_nft_holdingsno sensitive capability
  • get_nft_metadatano sensitive capability
  • get_nft_ownerno sensitive capability
  • get_ordinal_utxosno sensitive capability
  • get_reputationno sensitive capability
  • get_taproot_addressno sensitive capability
  • get_transaction_statusno sensitive capability
  • get_validation_statusno sensitive capability
  • get_validation_summaryno sensitive capability
  • give_feedbackno sensitive capability
  • identity_getno sensitive capability
  • identity_get_last_idno sensitive capability
  • identity_get_metadatano sensitive capability
  • identity_registerno sensitive capability
  • identity_set_approvalno sensitive capability
  • identity_set_metadatano sensitive capability
  • identity_set_urino sensitive capability
  • identity_set_walletno sensitive capability
  • identity_unset_walletno sensitive capability
  • inference_check_providerno sensitive capability
  • inference_list_providersno sensitive capability
  • inference_register_providerno sensitive capability
  • inference_reveal_keyno sensitive capability
  • inference_update_providerno sensitive capability
  • inscribeno sensitive capability
  • inscribe_childno sensitive capability
  • inscribe_child_revealno sensitive capability
  • inscribe_revealno sensitive capability
  • jingswap_cancel_cycleno sensitive capability
  • jingswap_cancel_sbtcno sensitive capability
  • jingswap_cancel_stxno sensitive capability
  • jingswap_close_depositsno sensitive capability
  • jingswap_deposit_sbtcno sensitive capability
  • jingswap_deposit_stxno sensitive capability
  • jingswap_get_cycle_stateno sensitive capability
  • jingswap_get_cycles_historyno sensitive capability
  • jingswap_get_depositorsno sensitive capability
  • jingswap_get_pricesno sensitive capability
  • jingswap_get_settlementno sensitive capability
  • jingswap_get_user_activityno sensitive capability
  • jingswap_get_user_depositno sensitive capability
  • jingswap_settleno sensitive capability
  • jingswap_settle_with_refreshno sensitive capability
  • legion_concludeno sensitive capability
  • legion_contributeno sensitive capability
  • legion_get_storyno sensitive capability
  • legion_inscribe_revealno sensitive capability
  • legion_inscribe_storyno sensitive capability
  • legion_list_storiesno sensitive capability
  • legion_my_positionno sensitive capability
  • legion_propose_storyno sensitive capability
  • legion_sponsorno sensitive capability
  • legion_statusno sensitive capability
  • legion_voteno sensitive capability
  • lightning_claim_depositno sensitive capability
  • lightning_createno sensitive capability
  • lightning_create_invoiceno sensitive capability
  • lightning_fund_from_btcno sensitive capability
  • lightning_importno sensitive capability
  • lightning_lockno sensitive capability
  • lightning_pay_invoiceno sensitive capability
  • lightning_statusno sensitive capability
  • lightning_unlockno sensitive capability
  • list_user_domainsno sensitive capability
  • list_x402_endpointsno sensitive capability
  • lookup_bns_nameno sensitive capability
  • news_check_statusno sensitive capability
  • news_claim_beatno sensitive capability
  • news_deactivate_editorno sensitive capability
  • news_editor_check_earningsno sensitive capability
  • news_editor_file_reviewno sensitive capability
  • news_editor_review_signalno sensitive capability
  • news_file_correctionno sensitive capability
  • news_file_signalno sensitive capability
  • news_front_pageno sensitive capability
  • news_leaderboardno sensitive capability
  • news_list_beatsno sensitive capability
  • news_list_editorsno sensitive capability
  • news_publisher_compile_briefno sensitive capability
  • news_publisher_set_beat_configno sensitive capability
  • news_record_editor_payoutno sensitive capability
  • news_register_editorno sensitive capability
  • nonce_fill_gapno sensitive capability
  • nonce_healno sensitive capability
  • nonce_healthno sensitive capability
  • nostr_get_profileno sensitive capability
  • nostr_get_pubkeyno sensitive capability
  • nostr_postno sensitive capability
  • nostr_read_feedno sensitive capability
  • nostr_relay_listno sensitive capability
  • nostr_search_tagsno sensitive capability
  • nostr_set_profileno sensitive capability
  • openrouter_integration_guideno sensitive capability
  • openrouter_modelsno sensitive capability
  • ordinals_buyno sensitive capability
  • ordinals_cancel_listingno sensitive capability
  • ordinals_list_for_saleno sensitive capability
  • ordinals_list_for_sale_submitno sensitive capability
  • ordinals_p2p_agentsno sensitive capability
  • ordinals_p2p_cancelno sensitive capability
  • ordinals_p2p_counterno sensitive capability
  • ordinals_p2p_create_offerno sensitive capability
  • ordinals_p2p_my_tradesno sensitive capability
  • ordinals_p2p_psbt_swapno sensitive capability
  • ordinals_p2p_transferno sensitive capability
  • pillar_direct_boostno sensitive capability
  • pillar_direct_sendno sensitive capability
  • pillar_direct_supplyno sensitive capability
  • pillar_direct_unwindno sensitive capability
  • pillar_key_generateno sensitive capability
  • pillar_key_infono sensitive capability
  • pillar_key_lockno sensitive capability
  • pillar_key_unlockno sensitive capability
  • preorder_bns_nameno sensitive capability
  • probe_x402_endpointno sensitive capability
  • register_bns_nameno sensitive capability
  • register_identityno sensitive capability
  • request_validationno sensitive capability
  • reverse_bns_lookupno sensitive capability
  • send_inbox_messageno sensitive capability
  • send_inbox_message_directno sensitive capability
  • tx_status_deepno sensitive capability
  • zest_borrowno sensitive capability
  • zest_enable_collateralno sensitive capability
  • zest_get_positionno sensitive capability
  • zest_list_assetsno sensitive capability
  • zest_repayno sensitive capability
  • zest_supplyno sensitive capability
  • zest_withdrawno sensitive capability

Toxic flows 1

Cross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).

What this scan could not see

Versions 6

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v1.69.0 latest A 90/100 7 1.13.0 2026-09-07
v1.68.0 A 90/100 7 1.13.0 2026-09-01
v1.67.0 A 90/100 7 1.12.1 2026-08-16
v1.66.0 A 90/100 7 1.12.1 2026-08-06
v1.65.1 A 90/100 7 1.12.1 2026-08-03
Show 1 more version ↓
v1.65.0 A 90/100 7 1.12.1 2026-07-29

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: A · 90/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/aibtc-mcp-server/badge.svg)](https://mcptrustchecker.com/registry/aibtc-mcp-server)
HTML
<a href="https://mcptrustchecker.com/registry/aibtc-mcp-server"><img src="https://mcptrustchecker.com/registry/aibtc-mcp-server/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/aibtc-mcp-server/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan @aibtc/mcp-server --online

Use the free API → How scoring works

More in Files & Storage