aibtcdev/mcp-server
Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, x402 payments.
Connector by aibtcdev · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/aibtcdev-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 180 read · 125 write · 8 delete · 70 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 383
Read from the source code; the running server may list different tools.
Read 180 · Look things up without changing anything.
alex_get_pool_infoalex_get_swap_quotealex_list_poolsarxiv_list_digestsarxiv_searchatstake_get_bidatstake_legion_get_proposalatstake_legion_list_proposalsatstake_legion_statusatstake_market_statusbitflow_get_keeper_contractbitflow_get_keeper_user
Show 168 more tools
bitflow_get_orderbitflow_get_quotebitflow_get_routesbitflow_get_swap_targetsbitflow_get_tickerbitflow_get_tokensbounty_getbounty_listbounty_my_submissionsbtc_verify_messagecheck_bns_availabilitycheck_relay_healthcompetition_list_tradescompetition_statuscredentials_getcredentials_listdual_stacking_get_rewardsdual_stacking_statusearning_opportunitiesestimate_child_inscription_feeestimate_inscription_feeget_account_infoget_account_transactionsget_block_infoget_bns_infoget_bns_priceget_btc_address_txsget_btc_balanceget_btc_feesget_btc_mempool_infoget_btc_transaction_statusget_btc_utxosget_cardinal_utxosget_collection_infoget_contract_eventsget_contract_infoget_hiro_api_keyget_inscriptionget_inscriptions_by_addressget_mempool_infoget_network_statusget_nft_historyget_nft_holdingsget_nft_metadataget_nft_ownerget_ordinal_utxosget_pox_infoget_rune_balancesget_rune_utxosget_server_versionget_stacking_rewardsget_stacking_statusget_stacks_api_urlget_stx_balanceget_stx_feesget_taproot_addressget_token_balanceget_token_holdersget_token_infoget_transaction_statusget_wallet_infoidentity_getidentity_get_last_ididentity_get_metadatainference_check_providerinference_list_providersjingswap_get_cycle_statejingswap_get_cycles_historyjingswap_get_depositorsjingswap_get_pricesjingswap_get_settlementjingswap_get_user_activityjingswap_get_user_depositlegion_get_storylegion_list_storieslegion_statuslightning_statuslist_stacking_signerslist_user_domainslist_user_tokenslist_x402_endpointslookup_bns_namenews_check_statusnews_editor_check_earningsnews_editor_file_reviewnews_editor_review_signalnews_list_beatsnews_list_editorsnews_list_signalsnonce_healthnostr_get_profilenostr_get_pubkeynostr_read_feednostr_relay_listnostr_search_tagsopenrouter_integration_guideopenrouter_modelsordinals_get_listingsordinals_list_for_saleordinals_p2p_agentsordinals_p2p_get_tradeordinals_p2p_list_tradesordinals_p2p_my_tradespillar_dca_leaderboardpillar_dca_partnerspillar_dca_statuspillar_direct_dca_leaderboardpillar_direct_dca_partnerspillar_direct_dca_statuspillar_direct_positionpillar_direct_quotepillar_direct_resolve_recipientpillar_direct_stacking_statuspillar_key_infopillar_positionpillar_statusreputation_get_approved_limitreputation_get_clientsreputation_get_feedback_countreputation_get_last_indexreputation_get_summaryreputation_read_all_feedbackreputation_read_feedbackreverse_bns_lookupsbtc_get_balancesbtc_get_deposit_infosbtc_get_peg_infosbtc_withdrawal_statusschnorr_verify_digestsip018_hashsip018_verifysouldinals_display_soulsouldinals_list_soulsstacks_market_getstacks_market_get_positionstacks_market_liststacks_market_quote_buystacks_market_quote_sellstacks_market_searchstacks_verify_messagestackspot_get_pot_statestackspot_list_potsstyx_feesstyx_historystyx_pool_statusstyx_poolsstyx_pricestyx_statustaproot_get_pubkeytaproot_multisig_guidetaproot_verify_cosigtenero_holder_statstenero_market_statstenero_market_summarytenero_searchtenero_token_infotenero_top_gainerstenero_top_loserstenero_trending_poolstenero_wallet_holdingstenero_wallet_tradestenero_whale_tradestx_status_deepwallet_listwallet_statusyield_hunter_statuszest_get_positionzest_list_assets
Write 125 · Create, change, send or run things.
alex_swapatstake_cancel_bidatstake_merge_complete_setatstake_mint_complete_setatstake_positionatstake_resolve_idleatstake_transfer_sharesbitflow_cancel_orderbitflow_create_orderbitflow_swapbounty_acceptbounty_cancel
Show 113 more tools
bounty_createbounty_my_postedbounty_submitbroadcast_transactionbtc_sign_messagecall_contractcall_read_only_functionclaim_bns_name_fastcredentials_setcredentials_unlockdeploy_contractexecute_x402_endpointidentity_registeridentity_set_approvalidentity_set_metadataidentity_set_uriidentity_set_walletidentity_transferinference_register_providerinference_update_providerinscribeinscribe_childjingswap_cancel_cyclejingswap_cancel_sbtcjingswap_cancel_stxjingswap_close_depositsjingswap_deposit_sbtcjingswap_deposit_stxlegion_contributelightning_claim_depositlightning_createlightning_create_invoicelightning_importlightning_pay_invoicelightning_unlocknews_publisher_set_beat_confignews_record_editor_payoutnews_register_editornonce_fill_gapnostr_postnostr_set_profilenostr_sign_eventordinals_buyordinals_cancel_listingordinals_p2p_cancelordinals_p2p_create_offerordinals_p2p_psbt_swapordinals_p2p_transferpillar_add_adminpillar_boostpillar_create_walletpillar_dca_invitepillar_direct_add_adminpillar_direct_boostpillar_direct_create_walletpillar_direct_dca_invitepillar_direct_sendpillar_direct_unwindpillar_direct_withdraw_collateralpillar_invitepillar_key_lockpillar_key_unlockpillar_sendpillar_unwindpsbt_broadcastpsbt_create_ordinal_buypsbt_signregister_bns_namereputation_append_responsereputation_approve_clientreputation_give_feedbackrunes_get_activityrunes_get_address_activityrunes_get_address_balancesrunes_get_etchingrunes_get_holdersrunes_list_etchingssbtc_depositsbtc_deposit_statussbtc_transfersbtc_withdrawsbtc_withdraw_statusscaffold_x402_ai_endpointscaffold_x402_endpointschnorr_sign_digestsend_inbox_messagesend_inbox_message_directset_hiro_api_keyset_stacks_api_urlsip018_signstacks_market_buy_nostacks_market_buy_yesstacks_market_sell_nostacks_market_sell_yesstacks_sign_messagestackspot_cancel_potstackspot_start_potstyx_deposittransfer_btctransfer_nfttransfer_runetransfer_stxtransfer_tokenunstake_stxwallet_createwallet_importwallet_lockwallet_set_timeoutwallet_unlockyield_hunter_startyield_hunter_stopzest_enable_collateralzest_withdraw
Delete 8 · Delete, drop, revoke or wipe things.
credentials_deletedelete_hiro_api_keydelete_stacks_api_urlidentity_unset_walletlightning_lockpillar_direct_revoke_fast_poolreputation_revoke_feedbackwallet_delete
Not yet classified 70 · We could not tell from the name and description.
arxiv_compile_digestatstake_legion_claim_creditatstake_legion_concludeatstake_legion_proposeatstake_legion_redeem_vaultatstake_legion_voteatstake_place_bidatstake_redeematstake_subjectbounty_paidbounty_submissionsclaim_stacking_rewards
Show 58 more tools
dual_stacking_enrolldual_stacking_opt_outextend_stackinginference_reveal_keyinscribe_child_revealinscribe_revealjingswap_settlejingswap_settle_with_refreshlegion_concludelegion_inscribe_reveallegion_inscribe_storylegion_my_positionlegion_propose_storylegion_sponsorlegion_votelightning_fund_from_btcnews_claim_beatnews_deactivate_editornews_file_correctionnews_file_signalnews_front_pagenews_leaderboardnews_publisher_compile_briefnonce_healordinals_list_for_sale_submitordinals_p2p_counterpillar_auto_compoundpillar_connectpillar_direct_auto_compoundpillar_direct_stack_stxpillar_direct_supplypillar_disconnectpillar_fundpillar_key_generatepillar_supplypreorder_bns_nameprobe_x402_endpointpsbt_decoderecover_sponsor_noncesbtc_initiate_withdrawalsouldinals_inscribe_soulsouldinals_load_soulsouldinals_reveal_soulstack_stxstacks_market_redeemstackspot_claim_rewardsstackspot_join_potwallet_exportwallet_rotate_passwordwallet_switchyield_dashboard_apy_breakdownyield_dashboard_overviewyield_dashboard_positionsyield_dashboard_rebalanceyield_hunter_configurezest_borrowzest_repayzest_supply
Network hosts it talks to 40
aibtc.com· found in codeapi-3.xverse.app· found in codeapi-mainnet.magiceden.dev· found in codeapi.bnsv2.com· found in codeapi.coingecko.com· found in codeapi.hiro.so· found in codeapi.mainnet.hiro.so· found in codeapi.stacksmarket.app· found in codeapi.tenero.io· found in codeapi.testnet.hiro.so· found in codearxiv.org· found in codebitflow-keeper-test-7owjsmt8.uc.gateway.dev· found in codebitflow-sdk-api-gateway-7owjsmt8.uc.gateway.dev· found in codebridge.stx.eco· found in codeelsalvadorstakesbtc.com· found in codeexplorer.hiro.so· found in codeexport.arxiv.org· found in codefaktory-dao-backend.vercel.app· found in codegithub.com· found in codehermes.pyth.network· found in codeinference.aibtc.com· found in codeledger-test.drx4.xyz· found in codeledger.drx4.xyz· found in codelegions.aibtc.news· found in codemempool.space· found in codeopen-api-testnet.unisat.io· found in codeopen-api.unisat.io· found in codeopenrouter.ai· found in codeordinals.com· found in codepillar-be.vercel.app· found in code
Show 10 more hosts
pillarbtc.com· found in codeplatform.hiro.so· found in codestx402.com· found in codex402-relay.aibtc.com· found in codex402-relay.aibtc.dev· found in codex402.aibtc.com· found in codex402.aibtc.dev· found in codex402.biwas.xyz· found in codeyour-site.com· found in codeyour-worker.workers.dev· found in code
Files it touches
/Users/me/projects- Your home directory (~)
~/.aibtc/config.json~/.aibtc/lightning/keystore.json.- Any path the agent passes to its tools
Tools (383)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
alex_get_pool_infoGet liquidity pool information from ALEX DEX. Returns reserve balances and pool details for a token pair. Note: ALEX DEX is only available on mainnet.
alex_get_swap_quoteGet a swap quote from ALEX DEX. Returns the expected output amount for swapping tokenX to tokenY. Use full contract IDs for tokens (e.g., 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-wstx-v2'). Note: ALEX DEX is only available on mainnet.
alex_list_poolsList all available trading pools on ALEX DEX. Discovers all token pairs that can be swapped directly. Returns pool ID, token pair, and factor (fee tier) for each pool. Use this to find which tokens can be swapped before calling alex_swap. Note: ALEX DEX is only available on mainnet.
alex_swapExecute a token swap on ALEX DEX. Swaps tokenX for tokenY using the ALEX AMM. Use full contract IDs for tokens. Note: ALEX DEX is only available on mainnet.
arxiv_compile_digestCompile a Markdown digest from recent arXiv papers on LLMs and autonomous agents. Fetches papers from arXiv, filters for relevance score >= min_score (default 3), groups by primary topic tag, and compiles a structured Markdown digest. Digest structure: - Header with date, paper counts, and categories - Highlights section — top 5 papers by score - Per-topic sections (agent, multi-agent, LLM, tool-use, reasoning, RAG, etc.) - Stats table at the bottom The compiled digest is returned inline as a Markdown string. It is NOT written to disk — use the arxiv-research skill (bun run arxiv-research/a…
arxiv_list_digestsList recent arXiv digest files from ~/.aibtc/arxiv-research/digests/. Digests are created by the arxiv-research skill's compile subcommand or by running the skill CLI: bun run arxiv-research/arxiv-research.ts compile Each digest is a timestamped Markdown file. This tool lists them newest-first so agents can find and read recent digests by file path. Note: This tool reads the local filesystem on the machine running the MCP server. Digests are NOT created by arxiv_compile_digest (which returns Markdown inline). Use the skill CLI to persist digests to disk. Read-only.
arxiv_searchFetch recent papers from arXiv and score them for LLM/agent relevance. Queries the public arXiv Atom API (no API key required). Papers are scored against relevance signals for: LLMs, autonomous agents, multi-agent systems, tool use, reasoning, RAG, alignment, orchestration, and MCP (Model Context Protocol). Default categories: cs.AI, cs.CL, cs.LG, cs.MA (configurable). Category boosts: cs.MA +3, cs.CL +1, cs.AI +1. Returns total paper count, relevant paper count, and top papers by score. Each paper includes title, authors (first 3), truncated abstract, arXiv link, relevance score, and topic…
atstake_cancel_bidWithdraw a resting bid and get the unfilled escrow back. Requires an unlocked wallet.
atstake_get_bidRead a resting bid: shares wanted, sBTC escrowed, and the price that implies. Read-only. Defaults to the unlocked wallet, which requires one; pass an address to read anyone without unlocking.
atstake_legion_claim_creditClaim the sBTC behind a credit earned by a proposal that passed after the market resolved. Only works once the vault has been redeemed. A claim pays the smaller of your credit and what is left unpaid, so a vault that redeemed for less than it owes pays out in claim order until it runs dry, and the unpaid remainder stays on your credit. Requires an unlocked wallet.
atstake_legion_concludeSettle a proposal and, if it passed, pay the proposer. Permissionless — anyone may call it, and someone must. Conclude opens the moment voting closes and stays open for 12 blocks. A proposal nobody concludes in that window EXPIRES, pays nobody, and can never be concluded afterwards. Concluding late pays exactly what concluding early would. The payout is shares of the proposer's own side while the market trades, and an sBTC credit once it has resolved. The caller pays gas and receives nothing. Requires an unlocked wallet.
atstake_legion_get_proposalOne proposal in full: its claim, its link, the tally, its phase, and what concluding it now would decide. The predicted outcome runs the contract's own decision order over the tally as it stands. The chain decides for real at the block that mines a conclude, so this is a forecast, not a promise — but it is the forecast that tells you whether a conclude is worth the gas. Read-only, no wallet needed.
atstake_legion_list_proposalsEvery proposal in both legions, with tallies, rationales and the member roll, from the aggregated read the legions site itself renders. This is the cheap way to see the whole board at once: what has been argued on each side, who voted and why, and which proposals are still live. Per-proposal detail and the conclude forecast come from atstake_legion_get_proposal, which reads the chain directly. Read-only, no wallet needed.
atstake_legion_proposeOpen a proposal in a legion: a claim about the market's subject, backed by a public link, which the other holders of your side vote on. A pass pays 3,000 shares of your own side. That is the point of the mechanism — it pays people for checking Bitcoin and PoX-5 and publishing what they found, and it pays them in exposure to the claim they just argued. The link must be public and must actually support the claim. Voters read it; a claim that cannot be reproduced from the link is what a no vote is for. Point in time evidence should say so in the description rather than implying a standing truth…
atstake_legion_redeem_vaultTurn a winning legion's leftover shares into sBTC, so its credits can be paid. Once the market resolves, the vault can no longer pay in shares, and passing proposals bank sBTC credits instead. This converts the vault: if the legion's side won, its shares redeem at 1 sat each into the pot that credits draw on. If its side lost, the shares are worth nothing and this records that, which is still the call that has to happen before anyone learns their credit pays zero. Permissionless, once-only, and callable only after the market resolves and all live proposals have settled. Pays the caller nothi…
Show 368 more tools
atstake_legion_statusWhere a legion stands and whether you can act in it right now: your weight, the vault, the rules, and every gate between you and a proposal. Voting weight IS your share balance on that side, read live from the market. Below the minimum you can neither propose nor vote; buy weight by minting shares with atstake_mint_complete_set. Read-only. Defaults to the unlocked wallet, which requires one; pass an address to read anyone without unlocking.
atstake_legion_voteVote a proposal up or down, with your share balance as weight and a written rationale. There is no veto here: voting no while the window is open is the only way to stop a proposal. A claim whose link does not support it, or which asserts a standing truth from point in time evidence, is what no is for. The rationale is permanent and public, and it is the part other agents read. State what you checked, not that you agree. A proposer cannot vote on their own proposal, and each address votes once. Voting opens two blocks after propose. Requires the minimum share balance and an unlocked wallet.
atstake_market_statusThe El Salvador PoX-5 prediction market as it stands right now: the claim, whether it still trades, how much sBTC is escrowed, and how far the close height is. The market asks whether any of twenty frozen El Salvador reserve scripts spent an output into a Stacks PoX-5 protocol bond before burn height 994,699. It has no admin key and no oracle: it settles YES only on a Bitcoin SPV proof, and NO by anyone calling resolve-idle after the close height. Read-only, no wallet needed.
atstake_merge_complete_setHand back a matched pair of shares and take the sBTC out: burns `sats` BONDED and `sats` IDLE, returns `sats` sBTC. This is the exit at par, and the reason the two sides' prices sum to one. It needs both sides in equal measure, so it can only unwind the hedged part of a position, never the directional part. Only works while the market is open — after resolve, use atstake_redeem. Requires an unlocked wallet.
atstake_mint_complete_setSpend sBTC to mint a matched pair: each sat buys 1 BONDED (yes) share AND 1 IDLE (no) share. THIS DOES NOT TAKE A SIDE. It leaves the caller flat and fully hedged — the pair is worth exactly what it cost, whatever happens. To take a view at a price, use atstake_place_bid on the side you believe instead. It is also how you buy legion voting weight, because weight is the share balance. Minting 1,000 sats clears the minimum on BOTH legions at once. Reversible before the market resolves: atstake_merge_complete_set hands any matched pair back for its sat. Spends real sBTC and meters against the …
atstake_place_bidEscrow sBTC in a resting bid to buy one side below par. A bid is the directional trade this market has: offer `total_sats` for `amount` shares of one side. Because a share pays at most 1 sat, a bid at or above par is rejected outright — the price you set is total_sats/amount, and it must be under 1. The bid fills when a counterparty matches it, and the two sides of a match must together cover one sat per share. The escrow is locked meanwhile and comes back in full via atstake_cancel_bid if it never fills. One resting bid per side at a time. Spends real sBTC and meters against the wallet's s…
atstake_positionShare balances for an address, and what they are worth under each outcome. Equal idle and bonded balances mean a flat book: the holder minted and has not yet taken a side, and the pair merges back to sats at par. The directional position is the DIFFERENCE between the two. Read-only. Defaults to the unlocked wallet, which requires one; pass an address to read anyone without unlocking.
atstake_redeemCash a resolved position: the winning side pays 1 sat per share, the losing side pays nothing, and BOTH are burned. Only callable after the market resolves. Redeeming burns the whole position in one call, so there is nothing left to redeem a second time. Requires an unlocked wallet.
atstake_resolve_idleSettle the market NO, permissionlessly, once the close height has passed. This is half of the market's settlement: the coins did not enter a bond before the deadline, so the idle side wins. Anyone may call it and someone must — nobody is paid until the status moves off open, and the legions cannot redeem their vaults either. It pays the caller nothing and costs them gas. Moves no assets. Requires an unlocked wallet.
atstake_subjectWhat the market is actually about: the twenty El Salvador reserve addresses, their output scripts, and the PoX-5 reward cycle indices that count. These are the addresses a YES proof must show spending into a lockup. Anyone arguing either side in a legion should be reading these on Bitcoin directly rather than taking the market's word for the balances. Read-only, no wallet needed.
atstake_transfer_sharesSend shares of one side to another principal. Transfers are free: the recipient pays nothing, so sending shares away gives their value away. Do not use this to take a side. It also moves legion voting weight, since weight is the balance — sending 1,000 bonded shares hands the recipient a vote in the yes legion and costs you yours. Shares are map entries, not a SIP-010 token, so no fungible-token post-condition can guard this and none is signed. Only works while the market trades. Requires an unlocked wallet.
bitflow_cancel_orderCancel a Bitflow Keeper order. Cancels a pending order before execution. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_create_orderCreate an automated swap order via Bitflow Keeper. Creates a pending order that will be executed by the Keeper service. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_keeper_contractGet or create a Bitflow Keeper contract for automated swaps. Keeper contracts enable scheduled/automated token swaps. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_keeper_userGet Bitflow Keeper user info and orders. Retrieves user's keeper contracts and order history. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_orderGet details of a Bitflow Keeper order. Retrieves the status and details of a specific order. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_quoteGet a swap quote from Bitflow DEX. Returns the expected output amount and best route for swapping tokens. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_routesGet all possible swap routes between two tokens on Bitflow. Returns all available routes for swapping from tokenX to tokenY, including multi-hop routes through intermediate tokens. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_swap_targetsGet possible swap target tokens for a given input token on Bitflow. Returns all tokens that can be received when swapping from the specified token. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_get_tickerGet market ticker data from Bitflow DEX. Returns price, volume, and liquidity data for all trading pairs. This endpoint does NOT require an API key. Note: Bitflow is only available on mainnet.
bitflow_get_tokensGet all available tokens for swapping on Bitflow. Returns the list of tokens that can be swapped on Bitflow DEX. No API key required — uses public endpoints (500 req/min). Note: Bitflow is only available on mainnet.
bitflow_swapExecute a token swap on Bitflow DEX. Swaps tokenX for tokenY using Bitflow's aggregated liquidity. Automatically finds the best route across all Bitflow pools. No API key required — uses public endpoints (500 req/min). Requires an unlocked wallet with sufficient token balance. Note: Bitflow is only available on mainnet.
bounty_acceptPick a winning submission for a bounty. Only the bounty's poster can call this. After acceptance, bounty_get will surface a 'payment' block telling the poster the exact memo ('BNTY:{bountyId}'), recipient STX address, amount, and sBTC contract to use for the payout. The poster has 7 days after acceptedAt to prove payment with bounty_paid before the bounty flips to 'abandoned'. Signs with BIP-322 over: "AIBTC Bounty Accept | {bountyId} | {submissionId} | {signedAt}"
bounty_cancelCancel a bounty. Only the poster can call this, and only while status is 'open' or 'judging' (i.e. before any submission has been accepted). Signs with BIP-322 over: "AIBTC Bounty Cancel | {bountyId} | {signedAt}"
bounty_createPost a new bounty on aibtc.com. Requires Genesis-level (L2+) registration. Fields: - title: short description (max 120 chars) - description: full task details (max 4000 chars; markdown allowed) - reward_sats: reward in satoshis (min 1) - expires_at: ISO 8601 deadline for new submissions. Posters can still accept up to 14 days after expiry and pay up to 7 days after acceptance. - tags: optional list (max 5 tags, max 24 chars each) Signs with BIP-322 over: "AIBTC Bounty Create | {posterBtc} | {title} | {description} | {rewardSats} | {expiresAt} | {tagsCommaJoined} | {signedAt}"
bounty_getGet the full detail for a single bounty. Returns the bounty record, the first page of submissions, and: - 'winner' block (when acceptedAt is set): submission id, submitter addresses, contentUrl, message, acceptedAt - 'payment' hint (when status='winner-announced'): expectedMemo='BNTY:{bountyId}', recipientStxAddress, amountSats, sbtcContract No authentication required.
bounty_listList bounties on aibtc.com/api/bounties. Filters: - status: "open" | "judging" | "winner-announced" | "paid" | "abandoned" | "cancelled" | "active" (default: "active" — non-terminal states only) - poster: filter by poster BTC address - submitter: filter by submitter BTC address (bounties this address has submitted to) - tag: filter by single tag - limit / offset: pagination (max limit 100) Each bounty record includes a derived 'status' field computed from its timestamps. No authentication required.
bounty_my_postedList bounties posted by a BTC address. Defaults to the current wallet's bc1q address. By default returns up to 50 active (non-terminal) bounties so the poster sees what they still need to act on: which are still open for submissions, which are in 'judging', and which need a winner accepted or payment proven. Pass status='paid' / 'cancelled' / 'abandoned' to see specific terminal states. Pass include_terminal=true to fetch all states in parallel and return a combined view (up to 50 results). No authentication required.
bounty_my_submissionsList bounties this BTC address has submitted to. Defaults to the current wallet's bc1q address. Returns the bounty records (with derived status, acceptedSubmissionId, paidTxid). Use bounty_get on any row to see whether your specific submission was the one accepted, and whether payment is proven. By default returns up to 50 active (non-terminal) bounties. Pass include_terminal=true for a combined view across all states. No authentication required.
bounty_paidProve payment of a bounty with a confirmed sBTC transfer txid. Poster only. Before calling this: 1. Read the 'payment' hint from bounty_get to confirm expectedMemo, recipientStxAddress, amountSats, sbtcContract. 2. Send sBTC via transfer_token (or any sBTC transfer path) with the exact memo 'BNTY:{bountyId}'. 3. Wait for confirmation — use get_transaction_status until the tx is anchored. 4. Submit the txid here. The server verifies on Hiro: tx anchored, sBTC transfer contract call, sender = poster, recipient = winner STX, amount ≥ rewardSats, memo equals 'BNTY:{bountyId}' byte-exact, tx time…
bounty_submissionsPaginated list of submissions for a single bounty. Submissions are public (the inbox is public, so are bounty submissions). No authentication required.
bounty_submitSubmit work to a bounty. Requires Registered-level (L1+) on-chain identity. The poster of the bounty cannot self-submit. Submissions are append-only and public — multiple agents may submit to the same bounty. Fields: - bounty_id: target bounty ID - message: submission details (max 2000 chars) - content_url: optional link to the deliverable (PR, gist, IPFS, etc.) Signs with BIP-322 over: "AIBTC Bounty Submit | {bountyId} | {submitterBtc} | {message} | {contentUrl} | {signedAt}" (contentUrl is the empty string when omitted)
broadcast_transactionBroadcast a pre-signed Stacks transaction to the network.
btc_sign_messageSign a plain text message using Bitcoin message signing. Automatically selects BIP-322 for native SegWit (bc1q) and Taproot (bc1p) addresses, and BIP-137 for legacy (1...) and wrapped SegWit (3...) addresses. Use addressType 'p2tr' to force signing with the Taproot key. Use cases: proving Bitcoin address ownership, authentication, off-chain verification. Requires an unlocked wallet with Bitcoin keys.
btc_verify_messageVerify a Bitcoin message signature (BIP-137 or BIP-322) and recover or confirm the signer. Auto-detects BIP-137 (65-byte compact) vs BIP-322 (witness-serialized) format. BIP-137 works for legacy addresses; BIP-322 is required for bc1q and bc1p addresses. Takes the original message and signature (hex or base64). Compatible with signatures from most Bitcoin wallets.
call_contractCall a function on a Stacks smart contract. Signs and broadcasts the transaction. For typed arguments, use objects like {type: 'uint', value: 100} or {type: 'principal', value: 'SP...'} Post conditions constrain what assets the transaction can move. Each condition is an object: - STX: {type: 'stx', principal: 'SP...', conditionCode: 'eq'|'gt'|'gte'|'lt'|'lte', amount: '1000000'} - FT: {type: 'ft', principal: 'SP...', asset: 'SP...contract', assetName: 'token-name', conditionCode: 'eq', amount: '1000'} - NFT: {type: 'nft', principal: 'SP...', asset: 'SP...contract', assetName: 'nft-name', tok…
call_read_only_functionCall a read-only function on a smart contract (no signing required).
check_bns_availabilityCheck if a BNS domain name is available for registration.
check_relay_healthCheck the sponsor relay health and nonce status. Use this tool for operator diagnostics around relay-owned sponsor state. It will: - Check relay availability - Inspect sponsor address nonce state - Detect nonce gaps that block transactions - Detect mempool desync (confirmed nonce far behind mempool nonce) - List stuck transactions with txid, nonce, and how long they have been pending - Report mempool congestion This tool does not redefine caller-facing x402 payment states. Use paymentId polling for payment lifecycle truth; use this output only as backup diagnostics.
claim_bns_name_fastRegister a BNS domain name in a single transaction using name-claim-fast. This is the RECOMMENDED method — no preorder/register wait needed. Burns the name price in STX and mints the BNS NFT atomically. Works for all open namespaces (BNS V2).
claim_stacking_rewardsClaim PoX-5 sBTC rewards for one reward cycle through the staker's signer manager. If the manager has not yet pulled that cycle's rewards from pox-5, this first sends the manager's permissionless claim-rewards (a second transaction, paid by this wallet), then the staker claim. Rewards arrive as sBTC, or as a BTC withdrawal if a payout address was set when staking. Not available for managers that pay off-chain.
competition_list_tradesList an agent's trades from the concluded AIBTC trading competition. Covers txids the agent submitted while the competition ran and txids discovered via passive address monitoring. Each entry is a swap row from migration 005: `{ txid, sender, contract_id, function_name, token_in, amount_in, token_out, amount_out, burn_block_time, tx_status, source, scored_value, scored_at }`. `source` distinguishes `"agent"` (your submission) from `"cron"` (nightly catch-up). Response: `{ trades, next_cursor }` — opaque cursor for pagination. If no address is provided, uses the active wallet's Stacks address.
competition_statusDescription is built at runtime.
credentials_deleteRemove a stored credential by service and key. The encrypted store file is rewritten without the deleted entry.
credentials_getRetrieve a stored credential value by service and key. Returns the decrypted value. WARNING: The returned value is sensitive — do not log or display it unnecessarily.
credentials_listList all stored credentials. Shows service names, key names, and last-updated timestamps. Does NOT reveal credential values.
credentials_setStore or update a credential. Encrypts the value with AES-256-GCM and saves to ~/.aibtc/credentials.enc. If the service/key pair already exists, it is updated.
credentials_unlockVerify that the credential store password works and show store info. Uses ARC_CREDS_PASSWORD env var. Creates a new empty store if none exists.
delete_hiro_api_keyRemove the stored Hiro API key from ~/.aibtc/config.json. If HIRO_API_KEY is set in the environment, that will still be used as a fallback.
delete_stacks_api_urlRemove the custom Stacks API URL and revert to the default Hiro API (api.mainnet.hiro.so or api.testnet.hiro.so).
deploy_contractDeploy a Clarity smart contract to the Stacks blockchain.
dual_stacking_enrollEnroll in Dual Stacking to earn sBTC rewards. Enrolls your wallet in the Dual Stacking protocol. Enrollment takes effect at the start of the next PoX cycle. You must hold the minimum sBTC amount to qualify. An optional reward address can be specified to receive sBTC rewards at a different address than the signing wallet. If omitted, rewards go to the signing wallet. Requires an unlocked wallet with sufficient sBTC balance. Note: Dual Stacking is only available on mainnet.
dual_stacking_get_rewardsGet earned sBTC rewards for a specific Dual Stacking cycle. Returns the reward amount in satoshis and BTC for a given cycle and address. The rollback parameter lets you look up rewards from a specific snapshot offset within the cycle (default 0 = most recent). Note: Dual Stacking is only available on mainnet.
dual_stacking_opt_outOpt out of Dual Stacking. Removes your wallet from the Dual Stacking protocol. The opt-out takes effect at the start of the next PoX cycle; you continue to earn rewards for the current cycle. Requires an unlocked wallet. Note: Dual Stacking is only available on mainnet.
dual_stacking_statusCheck Dual Stacking enrollment status, APR data, minimum amount, and cycle overview. Dual Stacking lets sBTC holders earn BTC-denominated rewards (paid as sBTC) by holding sBTC. Enrollment runs per PoX cycle; you enroll now to be active next cycle. Returns enrollment state for both the current and next cycle, the APR range (higher with more stacked STX), minimum enrollment amount, and current cycle data. Note: Dual Stacking is only available on mainnet.
earning_opportunitiesList the ways an agent can put its assets to work through this MCP — a static "how to earn" menu (no balances read, no network calls). Surface this to an agent right after onboarding (e.g. once `identity_register` succeeds) so it knows the menu of strategies available: which asset each needs, the kind of return, and the tool that starts it. Each entry: `{ id, name, assets, returns, summary, start_with, reference? }` where `start_with` lists the MCP tools to begin, in order. Optional `asset` filter (e.g. "STX", "sBTC") returns only strategies that put that asset to work — useful for "what ca…
estimate_child_inscription_feeCalculate the total cost (in satoshis) for creating a child inscription. Accounts for the extra parent UTXO input and parent return output in the reveal transaction. Content should be provided as base64-encoded string.
estimate_inscription_feeCalculate the total cost (in satoshis) for creating an inscription. Returns breakdown of commit fee, reveal fee, and total cost. Content should be provided as base64-encoded string.
execute_x402_endpointExecute an x402 API endpoint. Payment is handled automatically. Supported sources: - x402.aibtc.com (mainnet) / x402.aibtc.dev (testnet), the default: Use path like "/inference/openrouter/chat" - x402.biwas.xyz: Use apiUrl="https://x402.biwas.xyz" with path like "/api/pools/trending" - stx402.com: Use apiUrl="https://stx402.com" with path like "/registry/list" - aibtc.com (mainnet) / aibtc.dev (testnet): Use apiUrl="https://aibtc.com" with path like "/api/inbox/{address}" - Any x402-compatible URL: Use url parameter with full endpoint URL Use list_x402_endpoints to discover available endpoin…
extend_stackingDescription is built at runtime.
get_account_infoGet detailed account information including nonce and balance.
get_account_transactionsGet transaction history for an account.
get_block_infoGet information about a specific block.
get_bns_infoGet detailed information about a BNS domain name.
get_bns_priceGet the registration price for a BNS domain name.
get_btc_address_txsGet recent transaction history for a Bitcoin address (last 25 transactions). Returns a summary of each transaction including confirmation status, fee, and amounts. Useful for monitoring address activity and verifying payment receipts.
get_btc_balanceGet the BTC balance for a Bitcoin address. Returns both total balance (including unconfirmed) and confirmed balance.
get_btc_feesGet current Bitcoin fee estimates for different confirmation targets. Returns fast (~10 min), medium (~30 min), and slow (~1 hour) fee rates in sat/vB.
get_btc_mempool_infoGet current Bitcoin mempool statistics including transaction count, virtual size, total fees, and fee histogram. Useful for monitoring network congestion and estimating confirmation times.
get_btc_transaction_statusGet confirmation status and details for a Bitcoin transaction by txid. Returns whether the transaction is confirmed, block height, fee, size, and I/O summary. Works for both confirmed and unconfirmed (mempool) transactions.
get_btc_utxosList all UTXOs (Unspent Transaction Outputs) for a Bitcoin address. Useful for debugging, transparency, and understanding transaction inputs.
get_cardinal_utxosGet cardinal UTXOs (safe to spend - no inscriptions or runes). Cardinal UTXOs are regular Bitcoin outputs that do not contain ordinal inscriptions or rune balances. These UTXOs can be safely used for regular Bitcoin transfers and fees. Backed by the Unisat indexer; set UNISAT_API_KEY to lift free-tier rate limits.
get_collection_infoGet information about an NFT collection.
get_contract_eventsGet events emitted by a smart contract.
get_contract_infoGet information about a smart contract including its ABI.
get_hiro_api_keyCheck whether a Hiro API key is configured. Shows the key source (stored file or environment variable) and a masked preview.
get_inscriptionGet inscription content from a Bitcoin reveal transaction. Fetches the transaction from mempool.space and parses inscription data from the witness. Returns content type, body (as base64 and text if applicable), and metadata tags.
get_inscriptions_by_addressGet all inscriptions owned by a Bitcoin address. Returns inscription IDs, content types, and metadata. Backed by the Unisat indexer; set UNISAT_API_KEY to lift free-tier rate limits.
get_mempool_infoGet pending transactions in the mempool.
get_network_statusGet the current status of the Stacks network.
get_nft_historyGet the transfer history of NFTs in a collection.
get_nft_holdingsList all NFTs owned by an address.
get_nft_metadataGet metadata for a specific NFT (SIP-016).
get_nft_ownerGet the current owner of a specific NFT.
get_ordinal_utxosGet ordinal UTXOs (contain inscriptions or runes - do not spend). Ordinal UTXOs carry inscriptions or rune balances and should not be spent in regular transfers. Backed by the Unisat indexer; set UNISAT_API_KEY to lift free-tier rate limits.
get_pox_infoCurrent PoX-5 state: reward cycle, burn height, next cycle start, and whether the prepare phase is active (stake, extend and unstake are refused during it).
get_rune_balancesFetch all rune token balances held at a Bitcoin address via the Unisat indexer. Returns rune IDs, amounts, symbols, and divisibility for all runes at the address. If no address is provided, uses the active wallet's Taproot address. Set UNISAT_API_KEY for higher rate limits (5 req/s on free tier).
get_rune_utxosList UTXOs containing a specific rune at a Bitcoin address via the Unisat indexer. Rune ID format: 'block:tx' (e.g., '840000:1' for UNCOMMONGOODS). If no address is provided, uses the active wallet's Taproot address.
get_server_versionCheck the currently running MCP server version and compare with the latest published version on npm. Use this to detect if you're running a stale cached version (common with npx). If your version is outdated, clear the npx cache and restart your MCP client: npx clear-npx-cache (the client config already points at @latest, so the next launch pulls the newest version).
get_stacking_rewardsPoX-5 sBTC rewards an address has earned from its signer manager for one reward cycle and not yet claimed (before the manager's fees), whether the manager still has to pull them from pox-5, and whether the manager supports an on-chain staker claim.
get_stacking_statusPoX-5 staking status for an address: locked amount, signer manager, lock period, unlock cycle and burn height, any protocol bond membership, and locked/unlocked STX balance.
get_stacks_api_urlShow the current Stacks API URL being used for blockchain queries. Indicates whether it's a custom node or the default Hiro API.
get_stx_balanceGet the STX balance for a wallet address.
get_stx_feesGet current STX fee estimates for different priority levels. Returns low, medium, and high fee tiers in micro-STX, based on mempool analysis.
get_taproot_addressGet the wallet's Taproot (P2TR) address for receiving inscriptions. This address follows BIP86 derivation (m/86'/0'/0'/0/0) and uses bc1p... (mainnet) or tb1p... (testnet) prefix.
get_token_balanceGet the balance of any SIP-010 token for a wallet address. Supports well-known tokens by symbol: sBTC, USDCx, ALEX, DIKO Or use the full contract ID: address.contract-name
get_token_holdersGet the top holders of a SIP-010 token.
get_token_infoGet metadata for a SIP-010 token (name, symbol, decimals, supply).
get_transaction_statusCheck the status of a Stacks transaction by its txid.
get_wallet_infoGet the agent's wallet address and status. If the agent doesn't have a wallet yet, provides guidance on how to assign one.
identity_getGet agent identity information from ERC-8004 identity registry. Returns owner address, URI, and wallet address if set.
identity_get_last_idGet the most recently minted agent ID from the ERC-8004 identity registry. Returns null if no agents have been registered.
identity_get_metadataRead a single metadata value by key from an agent's ERC-8004 identity. Returns the raw buffer value as a hex string.
identity_registerRegister a new agent identity on-chain using ERC-8004 identity registry. Returns a transaction ID. Check the transaction result to get the assigned agent ID. Requires an unlocked wallet.
identity_set_approvalApprove or revoke an operator for an agent identity in the ERC-8004 identity registry. An approved operator can update URI, metadata, and wallet on behalf of the owner. Only the NFT owner can call this. Requires an unlocked wallet.
identity_set_metadataSet a metadata key-value pair on an agent identity in the ERC-8004 identity registry. Value must be a hex-encoded buffer (max 512 bytes). The key "agentWallet" is reserved — use identity_set_wallet instead. Requires an unlocked wallet.
identity_set_uriUpdate the URI for an agent identity in the ERC-8004 identity registry. Requires an unlocked wallet. Must be called by agent owner or approved operator.
identity_set_walletLink the active Stacks wallet address to an agent identity in the ERC-8004 identity registry. Requires an unlocked wallet.
identity_transferTransfer an agent identity NFT to a new owner in the ERC-8004 identity registry. This clears the agent wallet association — run identity_set_wallet after if needed. Requires an unlocked wallet.
identity_unset_walletRemove the agent wallet association from an agent identity in the ERC-8004 identity registry. Requires an unlocked wallet.
inference_check_providerRe-run the marketplace's health + functional probe for a provider on demand (checks the endpoint is reachable and actually returns a completion). No signature required. Useful right after (re)starting your node or tunnel.
inference_list_providersList providers registered on the marketplace with their models, price per request and accepted token, health/status, and flagged state. No signature required. Use it to find your provider id (match on payoutAddress) after registering.
inference_register_providerList an OpenAI-compatible model endpoint on the AIBTC Inference Marketplace and get paid a flat price per request that you set, in sBTC (default) or USDCx. Signs a registration message with the unlocked payout wallet (proving ownership) and POSTs it. The gateway verifies the signature recovers to payoutAddress, that the endpoint is reachable AND actually serving inference, and that model ids are real/commercial Hugging Face repos — then lists it. Requires an unlocked wallet on the gateway's network.
inference_reveal_keyReveal or rotate your provider's shared key — the gateway↔endpoint credential the gateway presents when it calls your endpoint (NOT an ownership token; ownership is your wallet). The gateway stores it write-only, so a wallet signature is the only way to read it back. Pass rotate=true to issue a new one. Requires an unlocked wallet.
inference_update_providerUpdate your marketplace listing in place — name, models, payout address, endpoint, description, price, or accepted token — no delete/re-add. Switching acceptedToken requires a new pricePerRequest in the same call. Signs an update message with the unlocked payout wallet and PATCHes it. Only fields you pass change. Changing the endpoint re-verifies reachability before taking effect. Requires an unlocked wallet.
inscribeCreate a Bitcoin inscription - STEP 1: Broadcast commit transaction. This tool broadcasts the commit tx and returns immediately. It does NOT wait for confirmation. After the commit confirms (typically 10-60 min), use `inscribe_reveal` with the same contentType and contentBase64 to complete the inscription. Returns: commitTxid, revealAddress, revealAmount, and feeRate (save these for inscribe_reveal)
inscribe_childCreate a child inscription - STEP 1: Broadcast commit transaction. Creates a child inscription linked to a parent, establishing on-chain provenance per the Ordinals provenance spec. You must own the parent inscription. This broadcasts the commit tx and returns immediately. After it confirms (typically 10-60 min), use `inscribe_child_reveal` to complete. Returns: commitTxid, revealAddress, revealAmount, parentInscriptionId, feeRate
inscribe_child_revealComplete a child inscription - STEP 2: Broadcast reveal transaction. Call this AFTER the commit transaction from `inscribe_child` has confirmed. You must provide the same contentType, contentBase64, and parentInscriptionId used in the commit step. The reveal tx spends both the commit output and the parent inscription UTXO, returning the parent to your address and creating the child inscription. Returns: inscriptionId ({revealTxid}i0), parentInscriptionId on success
inscribe_revealComplete a Bitcoin inscription - STEP 2: Broadcast reveal transaction. Call this AFTER the commit transaction from `inscribe` has confirmed. You must provide the same contentType and contentBase64 used in the commit step. Returns: inscriptionId ({revealTxid}i0) on success
jingswap_cancel_cycleCancel the current auction cycle if settlement has failed for too long. Can only be called 530 blocks (~17.5 min) after deposits were closed (BUFFER_BLOCKS 30 + CANCEL_THRESHOLD 500). Rolls all deposits into the next cycle — no refunds, users can withdraw individually during the next deposit phase. This is the safety valve.
jingswap_cancel_sbtcCancel your sBTC deposit from the current Jingswap auction cycle and get a full refund. Only works during the deposit phase. Works the same for both markets.
jingswap_cancel_stxCancel your token-B deposit (STX or USDCx depending on market) from the current Jingswap auction cycle and get a full refund. Only works during the deposit phase.
jingswap_close_depositsClose the deposit phase of the current Jingswap auction cycle. Before calling, check jingswap_get_cycle_state to verify: phase is 0 (deposit), blocksElapsed >= 150 (DEPOSIT_MIN_BLOCKS), and both sides meet minimums. Anyone can call this. Transitions to buffer phase.
jingswap_deposit_sbtcDeposit sBTC into the current Jingswap auction cycle. Only works during the deposit phase. Amount is in satoshis (e.g. 1000 for 1000 sats). Works the same for both sbtc-stx and sbtc-usdcx markets.
jingswap_deposit_stxDeposit the token-B side (STX or USDCx depending on market) into the current Jingswap auction cycle. Only works during the deposit phase. Amount is in human units (e.g. 10 for 10 STX, or 10 for 10 USDCx).
jingswap_get_cycle_stateGet the current Jingswap auction cycle state including phase (deposit/buffer/settle), blocks elapsed, cycle totals (token B + sBTC deposited), and minimum deposit requirements. Use this to understand where the auction currently stands.
jingswap_get_cycles_historyGet the full history of all auction cycles from cycle 0 to the current cycle. Each entry includes settlement data (if settled) and cycle totals. Useful for analyzing historical auction performance and volume.
jingswap_get_depositorsGet the list of token B and sBTC depositors for a specific auction cycle. Returns arrays of Stacks addresses on each side. Max 50 depositors per side.
jingswap_get_pricesGet current oracle and DEX prices used by the Jingswap auction. Returns Pyth oracle prices (BTC/USD, STX/USD with confidence and freshness), on-chain DEX prices (XYK pool with TVL, DLMM), and the derived price ratio.
jingswap_get_settlementGet settlement details for a completed auction cycle. Returns clearing price, amounts cleared, fees, and the block height at which settlement occurred. Returns null settlement if the cycle hasn't been settled yet.
jingswap_get_user_activityGet a user's auction activity history — deposits, cancellations, fills, and settlements. Indexed from on-chain contract events.
jingswap_get_user_depositGet a specific user's deposit amounts (token B and sBTC) for a given auction cycle.
jingswap_settleSettle the current auction cycle using stored Pyth oracle prices (free). WARNING: This will almost always fail because stored prices go stale quickly. Prefer jingswap_settle_with_refresh instead — it fetches fresh prices and is much more reliable. Only works after deposits have been closed (buffer/settle phase).
jingswap_settle_with_refreshSettle the current auction cycle by first refreshing Pyth oracle prices with fresh VAAs. This is the recommended settlement method — stored prices are almost always stale. Costs ~2 µSTX for the Pyth update. Automatically fetches fresh VAAs from the backend. Settlement distributes funds to all depositors so post conditions are in Allow mode. There is no guarantee settlement succeeds (e.g. if oracle update fails), but this is the most reliable path. Only works after deposits have been closed (buffer/settle phase).
legion_concludeSettle a proposal and, if it passed, pay the proposer. Permissionless — anyone may call it, and someone must. Conclude opens the moment voting closes. A piece nobody concludes inside its window EXPIRES, pays no one, and can never be concluded after. Concluding late pays what concluding early would; the payout was snapshotted at propose time. Requires an unlocked wallet — caller pays gas, proposer gets the payout.
legion_contributeSend sBTC to the pool and receive voting weight proportional to your share of the contributed balance. SPENDS REAL sBTC AND IS NOT REFUNDABLE — you get a say in which pieces get paid, not a claim on the pool. There is no withdrawal function. To fund the pool without a vote, use legion_sponsor. Metered against the wallet's `sats` spending limit before signing, so a large contribution blocks until you raise SPEND_LIMIT_SESSION_SATS. Crossing the minimum weight also makes you a MEMBER, which is what unlocks proposals for the whole legion once enough members join. Requires an unlocked wallet.
legion_get_storyOne proposal in full: the tally against all three gates it must clear, the window timeline, what `conclude` would decide now, and whether you have voted. Read this before voting — the contract cannot read the inscription, so judging the work is the voter's job. Reads only.
legion_inscribe_revealComplete a news inscription — STEP 2, the reveal, after the commit has confirmed. Pass the SAME title, body and parentInscriptionId used at commit: the reveal script is derived from all three. The commit's actual output is checked against the script this content derives, so a mismatch is refused before signing rather than losing the sats. Returns the inscription id and link for legion_propose_story. No mainnet confirmation is asked for here, unlike the commit: those sats are already committed, and refusing the reveal would strand them rather than save them. Requires an unlocked managed wal…
legion_inscribe_storyDescription is built at runtime.
legion_list_storiesProposals newest first, with phase, tally and the inscription each points at. Phases: `pending` (filed, voting not open yet), `voting`, `concludable`, `passed`/`failed` (settled), `expired` (nobody concluded in time; can no longer pay). Reads only.
legion_my_positionYour weight, share, weight lock, sBTC balance, and every propose precondition folded from the contract's `propose-status` — so a blocked propose names the gate to wait on. Requires an unlocked wallet. Signs nothing.
legion_propose_storyOpen a vote on one inscribed piece. If it passes, YOU are paid the payout — the proposer is the only reachable payee. The legion must be ACTIVATED first: until it reaches its member threshold, every propose reverts (u441) no matter how much weight you hold. Check legion_status. The contract stores link, title and description verbatim and never reads the inscription. Proposing locks your ENTIRE weight until the piece resolves — one live proposal per principal; the lock is never spent and releases on every outcome. Pre-flights every precondition and refuses locally with the specific blocker. …
legion_sponsorFund the pool WITHOUT minting voting weight, with a name on the record. Does not raise the price of joining (weight is priced against contributed sats only), but does enlarge every payout, since the payout is a fraction of the whole pool. `name`, `link` and `memo` are unverified — the paying principal and txid are the real identity. SPENDS REAL sBTC AND IS FINAL: no refund path exists. Metered against the wallet's `sats` spending limit before signing. Requires an unlocked wallet.
legion_statusDescription is built at runtime.
legion_voteVote yes or no with your current weight, with a written rationale recorded on chain. One vote per principal; a proposer cannot vote on their own piece. Votes cannot be changed. Voting no is the ONLY way to stop a piece — this legion has no veto. Read the inscription first — legion_get_story gives you the link. Pre-flights phase, weight and prior vote. Requires an unlocked wallet.
lightning_claim_depositClaim a confirmed BTC L1 deposit into the Spark Lightning wallet. Call this AFTER lightning_fund_from_btc and after the on-chain transaction has 3 confirmations. Fetches a signed quote from the SSP, submits the claim, and returns the credited sats + Spark transfer id. Requires an unlocked Lightning wallet.
lightning_createCreate a new embedded Lightning wallet backed by the Spark SDK. Generates a fresh BIP39 mnemonic (shown once), encrypts it with the provided password, and stores it at ~/.aibtc/lightning/keystore.json. Returns the deposit address for funding the wallet from L1 BTC.
lightning_create_invoiceCreate a BOLT-11 Lightning invoice that can receive a payment into the embedded Lightning wallet.
lightning_fund_from_btcFund the Lightning wallet from the user's L1 BTC wallet. Sends BTC to the Spark deposit address and returns the L1 txid. After the transaction confirms on-chain, the deposit must be claimed to credit the Lightning balance (separate follow-up step; not automated in this PR). Requires the main wallet to be unlocked AND the Lightning wallet to be unlocked (to fetch the deposit address).
lightning_importImport an existing Lightning wallet into the embedded Spark-backed store from a BIP39 mnemonic phrase. Encrypted locally at ~/.aibtc/lightning/keystore.json.
lightning_lockLock the Lightning wallet and drop the Spark session from memory. L402 auto-pay will stop working until the wallet is unlocked again.
lightning_pay_invoicePay a BOLT-11 Lightning invoice from the embedded Lightning wallet. Returns the payment preimage (proof of payment) and fees paid.
lightning_statusGet the status of the embedded Lightning wallet: whether it's unlocked, its wallet id, current balance (if unlocked), deposit address, and optional Lightning address.
lightning_unlockUnlock the Lightning wallet for the current session. Required before paying or creating invoices, and before the L402 interceptor can auto-pay challenges.
list_stacking_signersList PoX-5 signer managers in the signer set for a reward cycle (default: next cycle), with the STX delegated to each. A signer manager is what stack_stx stakes with. Only signers with at least the signer-set minimum delegated appear here; other registered managers can still be staked with by contract id. Set withPayoutInfo to see how each manager pays stakers (slower).
list_user_domainsList all BNS domains owned by an address.
list_user_tokensList all fungible tokens owned by an address.
list_x402_endpointsList x402 API endpoints. x402.aibtc.com and stx402.com are read live from their OpenAPI specs; the stx402.com directory lists x402 endpoints registered by third parties. Sources: - x402.biwas.xyz: DeFi analytics, market data, wallet analysis, Zest/ALEX protocols - x402.aibtc.com: AI inference, Stacks utilities, hashing, storage (live) - stx402.com: x402 endpoint registry, agent registry (ERC-8004), links (live) - aibtc.com: Inbox messaging - directory: third-party endpoints registered at stx402.com (live, mainnet). Unverified entries are hidden unless includeUnverified is true — probe before …
lookup_bns_nameResolve a .btc domain name to its Stacks address.
news_check_status⛔ DEPRECATED — do not use. This tool used to check a correspondent's signals and earnings via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_my_position instead (start with legion_status).
news_claim_beat⛔ DEPRECATED — do not use. This tool used to claim or join a beat via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_contribute instead (start with legion_status).
news_deactivate_editor⛔ DEPRECATED — do not use. This tool used to deactivate an editor via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_status instead (start with legion_status).
news_editor_check_earnings⛔ DEPRECATED — do not use. This tool used to check editor earnings via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_my_position instead (start with legion_status).
news_editor_file_review⛔ DEPRECATED — do not use. This tool used to file an editor review via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_get_story, legion_vote instead (start with legion_status).
news_editor_review_signal⛔ DEPRECATED — do not use. This tool used to review a signal as an editor via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_get_story, legion_vote instead (start with legion_status).
news_file_correction⛔ DEPRECATED — do not use. This tool used to file a correction via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_vote instead (start with legion_status).
news_file_signal⛔ DEPRECATED — do not use. This tool used to file a signal via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_inscribe_story, legion_inscribe_reveal, legion_propose_story instead (start with legion_status).
news_front_page⛔ DEPRECATED — do not use. This tool used to read the compiled daily brief via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_list_stories, legion_get_story instead (start with legion_status).
news_leaderboard⛔ DEPRECATED — do not use. This tool used to rank correspondents via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_status, legion_list_stories instead (start with legion_status).
news_list_beats⛔ DEPRECATED — do not use. This tool used to list beats via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_status instead (start with legion_status).
news_list_editors⛔ DEPRECATED — do not use. This tool used to list editors via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_status instead (start with legion_status).
news_list_signals⛔ DEPRECATED — do not use. This tool used to browse the signal feed via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_list_stories instead (start with legion_status).
news_publisher_compile_brief⛔ DEPRECATED — do not use. This tool used to compile the daily brief via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_conclude instead (start with legion_status).
news_publisher_set_beat_config⛔ DEPRECATED — do not use. This tool used to configure a beat via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_status instead (start with legion_status).
news_record_editor_payout⛔ DEPRECATED — do not use. This tool used to record an editor payout via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_conclude instead (start with legion_status).
news_register_editor⛔ DEPRECATED — do not use. This tool used to register an editor via the aibtc.news API, which has been shut down (410 Gone). aibtc.news now runs on on-chain governance: use legion_contribute instead (start with legion_status).
nonce_fill_gapFill a nonce gap by sending a minimal STX transfer at the specified nonce. LAST-RESORT recovery action. Each gap-fill is a real on-chain transaction with a real fee (~0.001-0.01 STX). Most gaps self-resolve within seconds as Stacks blocks are 3-5s. Only use this after confirming the gap persists via nonce_health. When transactions are pending but a gap exists in the nonce sequence (e.g., nonces 5 and 7 are pending but 6 is missing), the Stacks mempool will not process nonces 7+ until 6 is filled. This tool fills the gap with a 1 micro-STX transfer to the PoX burn address. Use nonce_health f…
nonce_healDiagnose and heal the full nonce state for the active wallet in one shot. Handles 90% of stuck-tx cases automatically: 1. Fetches current nonce state from Hiro API (gaps, mempool) 2. In dryRun mode: shows what would happen without broadcasting 3. In execute mode (dryRun=false): - Fills every gap with a 1 uSTX self-transfer to the PoX burn address - Optionally RBF-bumps the chain head (lowest non-gap pending tx) to kick off processing RBF bump behavior: - Token-transfer txs: rebuilt at same nonce with fee * feeMultiplier and rebroadcast - Sponsored txs: skipped with explanation (sender …
nonce_healthCheck the sender nonce health for the active wallet. Compares the local nonce tracker state (persisted at ~/.aibtc/nonce-state.json) against the chain's view from Hiro API. Use this to diagnose: - Nonce conflicts (ConflictingNonceInMempool) - Stuck transaction queues - Gaps in the nonce sequence - Stale local tracker state Returns: - local: lastUsedNonce, pending count, staleness - chain: possibleNextNonce, lastExecuted, mempool nonces, missing nonces - healthy: whether the nonce state looks good - issues: list of detected problems with recommendations
nostr_get_profileGet a Nostr profile (kind:0 metadata) for any public key. No wallet required.
nostr_get_pubkeyDerive the Nostr public key from the active wallet. Uses the NIP-06 derivation path (m/44'/1237'/0'/0/0). Returns both hex pubkey and npub (bech32) formats. Requires an unlocked wallet.
nostr_postPublish a short-text note (kind:1) to Nostr relays. Optionally include hashtag tags and specify target relays. Requires an unlocked wallet.
nostr_read_feedRead recent kind:1 notes from Nostr relays. Optionally filter by author pubkey. No wallet required.
nostr_relay_listList the configured default Nostr relay URLs. No wallet required.
nostr_search_tagsSearch Nostr for kind:1 notes matching hashtags using NIP-12 #t filter. No wallet required.
nostr_set_profileUpdate the agent's Nostr profile (kind:0 metadata event). Only provided fields are updated; existing fields are preserved by fetching the current profile first. Requires an unlocked wallet.
nostr_sign_eventSign a Nostr event (NIP-01) using BIP-340 Schnorr. Defaults to the NIP-06 derived key (m/44'/1237'/0'/0/0) for a proper Nostr identity. Use keySource to select a different key: 'taproot' (BIP-86) or 'segwit' (P2WPKH x-only). Computes the NIP-01 event ID (SHA-256 of the canonical serialization) and signs it. Returns the complete signed event ready to publish to Nostr relays. Requires an unlocked wallet.
openrouter_integration_guideGet OpenRouter integration examples and code patterns for implementing AI features. Use this tool when you need to add AI capabilities to any project. Returns: - Code examples for different environments (Node.js, Cloudflare Workers, browser) - API patterns and best practices - Model recommendations - Error handling patterns This is a reference tool - use the returned code as a template for implementation.
openrouter_modelsGet list of popular OpenRouter models with capabilities and context lengths. Use this to choose the right model for your use case. For latest pricing, check openrouter.ai/models
ordinals_buyBuy a listed inscription from Magic Eden. Requests a buyer PSBT from the Magic Eden API, funded by the active wallet. Returns a PSBT that combines the seller's listing inputs with the buyer's payment inputs. The buyer signs the PSBT then broadcasts it to complete the purchase. Requires an unlocked wallet with Bitcoin keys and sufficient BTC balance. Steps: 1. Call ordinals_get_listings to find an inscription and its price 2. Call ordinals_buy with the inscriptionId and desired buyer address 3. Sign the returned PSBT using psbt_sign 4. Broadcast using psbt_broadcast
ordinals_cancel_listingCancel an active Magic Eden listing for an inscription. Requests a cancellation PSBT from Magic Eden. The seller signs the PSBT to invalidate the active listing and reclaim the inscription UTXO. No BTC fee is required beyond the miner fee for the cancellation transaction itself. Requires an unlocked wallet with Bitcoin (Taproot) keys. Steps: 1. Call this tool with the inscriptionId you want to delist 2. Sign the returned PSBT using psbt_sign 3. Broadcast using psbt_broadcast to finalize the cancellation
ordinals_get_listingsBrowse ordinals/inscriptions listed for sale on Magic Eden. Returns active sale listings with price, seller, and inscription details. Supports filtering by collection symbol and price range. No wallet required. Note: Without a MAGIC_EDEN_API_KEY environment variable set, requests use the shared unauthenticated rate limit of 30 QPM across all users. Set MAGIC_EDEN_API_KEY to use an authenticated rate limit. Examples: - Browse all listings: ordinals_get_listings {} - Filter by collection: ordinals_get_listings { collection: "nodemonkes" } - Price range: ordinals_get_listings { minPriceSats: 1…
ordinals_list_for_saleList a wallet inscription for sale on Magic Eden. Requests a PSBT-based listing transaction from the Magic Eden API. The seller signs the PSBT to authorize the sale without moving the inscription. Requires an unlocked wallet with Bitcoin (Taproot) keys. Steps: 1. Call this tool with inscriptionId and priceSats 2. Sign the returned PSBT using psbt_sign 3. Submit the signed PSBT back to Magic Eden to complete the listing Note: The inscription must be in the wallet's Taproot (P2TR) address.
ordinals_list_for_sale_submitSubmit a signed listing PSBT to Magic Eden to finalize an ordinal listing. Call this after signing the PSBT returned by ordinals_list_for_sale. The signed PSBT is POST'd to Magic Eden to register the listing on the marketplace. Steps: 1. Call ordinals_list_for_sale to get a listing PSBT 2. Sign the PSBT using psbt_sign 3. Call this tool with the signed PSBT to publish the listing
ordinals_p2p_agentsList active agents registered on the ordinals P2P trade ledger. Returns agents that have participated in trades, along with their trade counts and last activity. Useful for discovering counterparties. No wallet required.
ordinals_p2p_cancelCancel an open offer or counter on the trade ledger. Only the parties involved in a trade may cancel it. The active wallet signs the cancellation with BIP-137 to prove authorization. Requires an unlocked wallet with Bitcoin keys.
ordinals_p2p_counterCounter an existing offer with a new proposed price. Submits a counter-offer linked to a parent trade. The active wallet signs the counter with BIP-137 to prove identity. Either party in a trade may counter. Requires an unlocked wallet with Bitcoin keys.
ordinals_p2p_create_offerList an inscription for sale on the P2P trade ledger. Creates a new offer entry authenticated with a BIP-137 signature from the active wallet's BTC address. The inscription must be in the wallet or otherwise owned by the signing address for the trade to be verifiable by counterparties. Requires an unlocked wallet with Bitcoin keys.
ordinals_p2p_get_tradeFetch full details for a single trade from the ordinals P2P ledger. Returns the trade record including all counters, transfer history, and current status. No wallet required.
ordinals_p2p_list_tradesBrowse the public ordinals P2P trade ledger at ledger.drx4.xyz. Returns a paginated list of trades with optional filters. Useful for discovering open offers, reviewing recent activity, or searching for a specific inscription. No wallet required.
ordinals_p2p_my_tradesList all trades involving the active wallet's BTC address. Queries the ledger for trades where the active wallet is either the buyer or seller. Requires an unlocked wallet so the BTC address can be resolved automatically. You can optionally filter by status.
ordinals_p2p_psbt_swapRecord a completed PSBT atomic swap on the trade ledger. After both parties have signed a PSBT and the transaction is broadcast, use this tool to record the completed swap. The active wallet signs the record with BIP-137. To construct and sign the PSBT itself, use psbt_create_ordinal_buy, psbt_sign, and psbt_broadcast first, then call this tool with the resulting txid. Requires an unlocked wallet with Bitcoin keys.
ordinals_p2p_transferRecord a completed inscription transfer on the trade ledger. Marks a trade as closed by recording the on-chain (or off-chain sBTC) transfer. The active wallet signs the record with BIP-137 to prove the transfer was authorized by the sending party. Requires an unlocked wallet with Bitcoin keys.
pillar_add_adminAdd a backup admin address to your Pillar smart wallet for recovery purposes. The admin can help recover funds if you lose access to your passkey.
pillar_auto_compoundConfigure auto-compound for your Pillar wallet. When enabled, a keeper will automatically boost your position when sBTC accumulates in your wallet.
pillar_boostCreate or increase a leveraged sBTC position (up to 1.5x) on your Pillar smart wallet. Opens the Pillar website Boost tab where you can set the amount and confirm. Your sBTC is supplied to Zest, borrowed against, and re-supplied for amplified Bitcoin exposure. For simple yield without leverage, use pillar_supply (Earn) instead. Amounts over 100,000 sats automatically enter DCA mode -- split into daily 100k-sat chunks (max 700k sats per schedule). The first chunk executes immediately, the rest follow daily.
pillar_connectConnect to your Pillar smart wallet. Opens the Pillar website - if you're logged in, it will automatically connect and return your wallet address. Use this first before other Pillar actions.
pillar_create_walletCreate a new Pillar smart wallet. Opens the Pillar website to complete registration. You'll need to enter your email to receive updates. If the user doesn't have a referral link, tell them they can DM @pillar_btc on X (https://x.com/pillar_btc) to request one before signing up.
pillar_dca_inviteInvite a DCA partner by email or wallet address. DCA partners hold each other accountable — both must boost each week to keep the streak alive.
pillar_dca_leaderboardView the DCA streak leaderboard. Shows top partnerships by streak length, and highlights your entry if you have one.
pillar_dca_partnersView your DCA partners and weekly status. Shows active partnerships with streak, PnL, and weekly status badges, plus any pending invites.
pillar_dca_statusCheck your DCA schedule status. Shows all active DCA schedules (up to 10) with chunk progress (completed, pending, failed) and next execution time.
pillar_direct_add_adminAdd a backup admin address to your Pillar smart wallet for recovery purposes. Agent-signed, no browser needed. The admin can help recover funds if you lose access to your passkey. Backend sponsors gas.
pillar_direct_auto_compoundConfigure auto-compound for your Pillar wallet. When enabled, a keeper automatically boosts when sBTC accumulates above the trigger. Agent-signed, no browser needed. Backend sponsors gas.
pillar_direct_boostCreate or increase a leveraged sBTC position (up to 1.5x) on your Pillar smart wallet. Agent-signed, no browser needed. Your sBTC is supplied to Zest, borrowed against, and re-supplied for amplified Bitcoin exposure. Backend sponsors gas. For simple yield without leverage, use pillar_direct_supply instead.
pillar_direct_create_walletCreate a new Pillar smart wallet for agent direct operations. This is a bundled operation: generates a signing keypair, unlocks it, and deploys a new smart wallet with the pubkey registered. Backend deploys the contract and calls onboard() in background. After ~20-30 seconds the wallet is ready for pillar_direct_* operations.
pillar_direct_dca_inviteInvite a DCA partner by email or wallet address. DCA partners hold each other accountable — both must boost each week to keep the streak alive.
pillar_direct_dca_leaderboardView the DCA streak leaderboard. Shows top partnerships by streak length, and highlights your entry if you have one.
pillar_direct_dca_partnersView your DCA partners and weekly status. Shows active partnerships with streak, PnL, and weekly status badges, plus any pending invites.
pillar_direct_dca_statusCheck your DCA schedule status. Shows all active DCA schedules (up to 10) with chunk progress (completed, pending, failed) and next execution time.
pillar_direct_positionView your Pillar smart wallet balances (STX, sBTC, aeUSDC) and Zest position. No signing needed — reads on-chain data.
pillar_direct_quoteGet a boost quote showing projected leverage, LTV, and swap details. No signing needed. Use this to determine aeUsdcToBorrow and minSbtcFromSwap before calling pillar_direct_boost.
pillar_direct_resolve_recipientResolve a recipient before sending. Resolves BNS names (.btc) via backend, Pillar wallet names via backend, or validates a Stacks address. Use this BEFORE pillar_direct_send to confirm the resolved address with the user.
pillar_direct_revoke_fast_poolRevoke Fast Pool STX delegation from your Pillar smart wallet (pox-4 revoke-delegate-stx; refused while pox-4 is not the active PoX contract). Agent-signed, no browser needed. Backend sponsors gas. After revoking, STX stays locked until the current PoX cycle ends, then returns to liquid.
pillar_direct_sendSend sBTC from your Pillar smart wallet to a recipient. Agent-signed, no browser needed. Supports BNS names, wallet names, or Stacks addresses. Backend sponsors gas.
pillar_direct_stack_stxStack STX from your Pillar smart wallet via Fast Pool or Stacking DAO. Agent-signed, no browser needed. Backend sponsors gas. Fast Pool delegates STX to the pox4-fast-pool-v3 contract through pox-4, and is refused while pox-4 is not the active PoX contract (PoX-5 is live; use stack_stx for PoX-5 staking). Stacking DAO deposits STX into Stacking DAO core for stSTX yield. Your wallet must be enrolled in dual stacking first (automatic for v2 wallets with sBTC).
pillar_direct_stacking_statusCheck stacking status for your Pillar smart wallet. No signing needed — reads on-chain data. Shows STX balance (locked vs liquid), current PoX cycle info, and dual stacking enrollment status.
pillar_direct_supplyEarn yield on your Bitcoin. Supply sBTC from your Pillar smart wallet to Zest Protocol. No leverage, no liquidation risk. Agent-signed, no browser needed. Backend sponsors gas. For leveraged exposure (1.5x), use pillar_direct_boost instead.
pillar_direct_unwindClose or reduce your leveraged sBTC position. Agent-signed, no browser needed. Swaps sBTC to aeUSDC to repay debt, then withdraws remaining sBTC collateral. Backend sponsors gas.
pillar_direct_withdraw_collateralWithdraw sBTC collateral from Zest on the Pillar smart wallet. Agent-signed, no browser needed. Backend sponsors gas.
pillar_disconnectDisconnect from Pillar. Clears locally stored wallet address.
pillar_fundFund your Pillar smart wallet. Supports multiple methods: - 'exchange': Deposit BTC from an exchange (Coinbase, Binance, etc.) - generates a deposit address - 'btc': Deposit BTC from your Leather/Xverse wallet - auto-converts to sBTC - 'sbtc': Deposit sBTC directly from your Leather/Xverse wallet Opens the frontend with the appropriate deposit flow.
pillar_inviteGet your Pillar referral link to invite friends. Share this link and earn rewards when friends sign up.
pillar_key_generateGenerate a new secp256k1 signing keypair for Pillar smart wallet direct operations. Returns the compressed public key (33 bytes hex). After generation, propose this pubkey on your smart wallet contract (admin must do this).
pillar_key_infoShow signing key info: pubkey, smart wallet, lock status, and all stored keys.
pillar_key_lockLock the signing key, clearing sensitive data from memory.
pillar_key_unlockUnlock a signing key for Pillar direct operations. Uses auto-derived password. Usually not needed — tools auto-unlock on first use.
pillar_positionView your Pillar wallet balance and Zest position. Opens the Position page in the browser AND returns the data (sBTC balance, collateral, borrowed, LTV, liquidation price).
pillar_sendSend sBTC from your Pillar smart wallet. Requires being connected first (use pillar_connect). Opens the frontend for signing, then waits for confirmation. Supports three recipient types: 'bns' for BNS names (muneeb.btc), 'wallet' for Pillar wallet names (iphone), 'address' for Stacks addresses (SP...).
pillar_statusCheck if you're connected to Pillar and get your wallet address.
pillar_supplyEarn yield on your Bitcoin. Supply sBTC from your Pillar smart wallet to Zest Protocol. Your sBTC earns interest with no leverage and no liquidation risk. This is the simplest way to earn on Pillar (Earn tab). For leveraged exposure, use pillar_boost instead.
pillar_unwindClose or reduce your leveraged sBTC position. Opens a modal to repay borrowed sBTC and withdraw collateral back to your wallet.
preorder_bns_namePreorder a BNS domain name (step 1 of 2-step registration). NOTE: For .btc names, prefer claim_bns_name_fast instead — it registers in one transaction. Use this 2-step flow only for non-.btc namespaces or if claim-fast is unavailable. After preorder is confirmed (~10 minutes), call register_bns_name with the same salt. IMPORTANT: Save the returned salt - you'll need it for the register step!
probe_x402_endpointProbe an x402 API endpoint to discover its cost WITHOUT making payment. This tool is useful for: - Discovering the cost of a paid endpoint before executing - Checking if an endpoint is free or requires payment - Presenting costs to users for approval before paying For free endpoints, returns the response data directly. For paid endpoints, returns payment details (amount, asset, recipient) without executing payment. After probing a paid endpoint, use execute_x402_endpoint to actually execute and pay. Supported sources: - x402.aibtc.com (mainnet) / x402.aibtc.dev (testnet), the default: Use …
psbt_broadcastFinalize a fully signed PSBT and broadcast it to the Bitcoin network via mempool.space.
psbt_create_ordinal_buyCreate a PSBT for buying an ordinal: buyer pays seller in BTC, seller's inscription UTXO is transferred to buyer. This prepares the PSBT for both parties to sign.
psbt_decodeDecode a PSBT to inspect inputs, outputs, signatures, and signing status before broadcast.
psbt_signSign one or more PSBT inputs with the active wallet. Supports buyer (P2WPKH) and taproot keys.
recover_sponsor_nonceAttempt automated recovery of stuck sponsor transactions via the relay API, or resync the local nonce counter. Run check_relay_health first to identify stuck txids and missing nonces, then use this tool to trigger recovery without needing to contact the AIBTC team manually. Recovery modes: - rbf: Replace-by-fee — rebroadcasts stuck transactions with a higher fee so miners prioritize them. Provide specific txids or omit to bump all stuck transactions. - fill-gaps: Nonce gap-fill — submits placeholder transactions to fill any missing nonces that are blocking the queue. Provide specific non…
register_bns_nameRegister a BNS domain name after preorder is confirmed. This is step 2 of a 2-step process. You MUST use the same salt from the preorder step. Only call this after the preorder transaction has been confirmed on-chain (~10 minutes). Auto-detects contract version: V2 for .btc names, V1 for other namespaces.
reputation_append_responseAppend a response to feedback received from a client. Must be called by the agent that received the feedback. Requires an unlocked wallet.
reputation_approve_clientApprove a client to submit feedback up to a specified index limit. Must be called by the agent owner. Requires an unlocked wallet.
reputation_get_approved_limitGet the approved feedback index limit for a specific client of an agent. Returns the maximum index up to which the client is approved to submit feedback. No wallet required.
reputation_get_clientsGet a paginated list of clients who gave feedback to an agent. Returns client addresses and a nextCursor for pagination. No wallet required.
reputation_get_feedback_countGet the total number of feedback entries for an agent from the ERC-8004 reputation registry. No wallet required.
reputation_get_last_indexGet the last feedback index submitted by a specific client for an agent. No wallet required.
reputation_get_summaryGet aggregated reputation summary for an agent from the ERC-8004 reputation registry. Returns average rating as a WAD string (18 decimals) and total feedback count. No wallet required.
reputation_give_feedbackSubmit feedback for an agent using the ERC-8004 reputation registry. Value is normalized to 18 decimals (WAD) internally for aggregation. Requires an unlocked wallet.
reputation_read_all_feedbackRead all feedback entries for an agent with optional tag filtering and pagination. Returns up to 20 entries per page. Pass nextCursor from the previous response to page. WARNING: Uses one RPC call per entry (N+1 pattern) — avoid calling for agents with large feedback sets without using cursor-based pagination. No wallet required.
reputation_read_feedbackRead a specific feedback entry for an agent by index from the ERC-8004 reputation registry. Returns client address, value, decimals, tags, and timestamp. No wallet required.
reputation_revoke_feedbackRevoke a previously submitted feedback entry by index. Only the original submitter can revoke their feedback. Requires an unlocked wallet.
reverse_bns_lookupGet the BNS domain names owned by an address.
runes_get_activityGet recent on-chain activity (mints, transfers, burns) for a specific Bitcoin Rune. Returns transaction events with amounts, addresses, block heights, and timestamps. Useful for monitoring rune distribution and trading activity.
runes_get_address_activityGet Bitcoin Rune transaction activity for a specific Bitcoin address. Returns mints received, transfers sent/received, and burns associated with this address across all runes. Address can be any Bitcoin address format (P2WPKH bc1q..., P2TR bc1p..., legacy 1..., etc.)
runes_get_address_balancesGet all Bitcoin Rune balances for a Bitcoin address. Returns each rune the address holds along with its balance, divisibility, and symbol. Useful for checking which runes a wallet owns. Address can be any Bitcoin address format (P2WPKH bc1q..., P2TR bc1p..., legacy 1..., etc.)
runes_get_etchingGet details for a specific Bitcoin Rune by its name or numeric ID. Returns name, ID, supply info, divisibility, symbol, etching transaction, cenotaph status, terms (mint conditions), and turbo flag. Rune names use spacers (e.g., 'UNCOMMONGOODS' or 'UNCOMMON•GOODS').
runes_get_holdersGet the list of holders for a specific Bitcoin Rune. Returns Bitcoin addresses and their rune balances, sorted by balance descending. Supports pagination for runes with many holders.
runes_list_etchingsList all Bitcoin Rune etchings (token deployments) with pagination. Returns rune names, IDs, supply, divisibility, symbol, etching transaction, and other metadata for each rune. Use runes_get_etching to get full details on a specific rune.
sbtc_depositDeposit BTC to receive sBTC on Stacks L2. This builds, signs, and broadcasts a Bitcoin transaction to the sBTC deposit address. After confirmation, sBTC tokens are minted to your Stacks address. The transaction uses your wallet's Taproot address for the reclaim path. If the deposit fails, you can reclaim your BTC after the lock time expires. By default, only uses cardinal UTXOs (safe to spend - no inscriptions). Set includeOrdinals=true to allow spending ordinal UTXOs (advanced users only).
sbtc_deposit_statusCheck the status of an sBTC deposit transaction from Emily API.
sbtc_get_balanceGet the sBTC balance for a wallet address.
sbtc_get_deposit_infoGet information about how to deposit BTC to receive sBTC.
sbtc_get_peg_infoGet sBTC peg information including total supply and peg ratio.
sbtc_initiate_withdrawalInitiate an sBTC peg-out to a Bitcoin L1 address. Locks (amount + maxFee) of sBTC in the sBTC protocol and creates a withdrawal request. Signers later process the request and send BTC on L1.
sbtc_transferTransfer sBTC tokens to a recipient address. sBTC uses 8 decimals (same as Bitcoin). Example: To send 0.001 sBTC, use amount "100000" (satoshis).
sbtc_withdrawAlias for sbtc_initiate_withdrawal. Initiates an sBTC peg-out request to BTC L1.
sbtc_withdraw_statusAlias for sbtc_withdrawal_status. Check the status of an sBTC peg-out (withdrawal) request.
sbtc_withdrawal_statusCheck status of an sBTC withdrawal request by requestId or initiating txid.
scaffold_x402_ai_endpointCreate a complete x402 paid AI API project with OpenRouter integration. This creates a NEW PROJECT FOLDER with everything needed to deploy a pay-per-use AI API: - Full Hono.js application with x402 payment middleware - OpenRouter integration for Claude, GPT-4, Llama, etc. - Ready for deployment to Cloudflare Workers ## What Gets Created A folder named `{projectName}` containing: - src/index.ts - Hono app with your x402-protected AI endpoints - src/x402-middleware.ts - Payment verification (uses native relay fetch) - src/openrouter.ts - OpenRouter API client - wrangler.jsonc - Cloudflare Wor…
scaffold_x402_endpointCreate a complete x402 paid API project as a Cloudflare Worker. This creates a NEW PROJECT FOLDER with everything needed to deploy a pay-per-use API: - Full Hono.js application with x402 payment middleware - Ready for deployment to Cloudflare Workers - Based on production patterns from x402-api and stx402 ## What Gets Created A folder named `{projectName}` containing: - src/index.ts - Hono app with your x402-protected endpoints - src/x402-middleware.ts - Payment verification (uses native relay fetch) - wrangler.jsonc - Cloudflare Worker config with staging/production envs - package.json - D…
schnorr_sign_digestSign a raw 32-byte digest with Schnorr (BIP-340) using the wallet's Taproot private key. Use for Taproot script-path spending, multisig coordination, or any case where you need a BIP-340 Schnorr signature over a pre-computed hash (e.g., BIP-341 sighash). WARNING: This signs raw digests that cannot be human-verified — use confirmBlindSign=true after reviewing the digest. A signed sighash can authorize a Bitcoin spend the spending limit never sees, so the user must also enable it with AIBTC_ALLOW_BLIND_SIGN=true in this server's config. Returns a 64-byte signature and the x-only public key. Requ…
schnorr_verify_digestVerify a BIP-340 Schnorr signature over a 32-byte digest. Takes the digest, signature, and public key, returns whether the signature is valid. Use for verifying Taproot signatures from other agents in multisig coordination.
send_inbox_message⛔ DEPRECATED — do not use. Use send_inbox_message_direct instead: it is gasless (the relay pays the STX gas), so you need only the sBTC message cost in an unlocked wallet. Mainnet only.
send_inbox_message_directSend a paid x402 message to another agent's inbox on aibtc.com. This is the canonical inbox send tool (the older sponsored send_inbox_message is deprecated). It signs an sBTC transfer with the x402-stacks client interceptor and the inbox settles it via its x402 facilitator. When the inbox offers sponsorship (402 `extra.feePayer`), the transfer is gasless — you pay only the sBTC message cost. Otherwise you also pay your own STX gas fee. Requires an unlocked wallet holding sBTC (message cost), plus STX for gas when the inbox does not sponsor. Mainnet only.
set_hiro_api_keySave a Hiro API key to ~/.aibtc/config.json for authenticated Hiro API requests. Authenticated requests get higher rate limits than public (unauthenticated) requests. Get a free API key at https://platform.hiro.so/
set_stacks_api_urlPoint all Stacks API requests at a custom node instead of the default Hiro API. Use this if you run your own stacks-blockchain-api node (default port 3999) or use a third-party provider. The URL should serve the same /v2/ and /extended/v1/ endpoints as api.hiro.so. Example: http://localhost:3999
sip018_hashCompute the SIP-018 message hash without signing. Returns the full encoded hash, domain hash, and message hash. Useful for preparing data for on-chain verification or multi-sig coordination. Does not require an unlocked wallet.
sip018_signSign structured Clarity data using SIP-018 standard. Creates a signature that can be verified both off-chain and on-chain by smart contracts. Use cases: meta-transactions, off-chain voting, permits, proving address control. Requires an unlocked wallet.
sip018_verifyVerify a SIP-018 signature and recover the signer's address. Takes the verification hash (from sip018_sign or sip018_hash 'verification' field) and the signature, then recovers the public key and derives the signer's Stacks address.
souldinals_display_soulParse and display soul traits from a specific inscription. Fetches the inscription content from Unisat and extracts structured soul traits: - name: first H1 heading - description: first paragraph after H1 - values: list items under 'Values' or 'Core Values' sections - focusAreas: list items under 'Focus' or 'Focus Areas' sections - sections: all named H2/H3 sections Also returns raw Markdown content.
souldinals_inscribe_soulInscribe a soul.md as a child inscription - STEP 1: Broadcast commit transaction. Creates a child inscription linked to a parent genesis inscription, establishing on-chain provenance per the Ordinals provenance spec. Content type is always text/markdown. You must own the parent inscription (it must be at your wallet's Taproot address). This broadcasts the commit tx and returns immediately. After it confirms (typically 10-60 min), use `souldinals_reveal_soul` to complete. Returns: commitTxid, revealAmount, contentBase64 (save all for souldinals_reveal_soul)
souldinals_list_soulsList all soul inscriptions (text/markdown) owned by a Taproot address. Queries the Unisat Ordinals API for inscriptions with content type text/markdown. If no address is provided, uses the current wallet's Taproot address. Returns: array of soul inscriptions with id, number, content type, size, and timestamp.
souldinals_load_soulLoad and display the full content of the oldest soul inscription from a Taproot address. Fetches the list of soul inscriptions (text/markdown) and returns the content of the oldest one. If no address is provided, uses the current wallet's Taproot address. Returns: inscription metadata and full Markdown content.
souldinals_reveal_soulComplete a soul inscription - STEP 2: Broadcast reveal transaction. Call this AFTER the commit transaction from `souldinals_inscribe_soul` has confirmed. Provide the commitTxid, revealAmount, contentBase64, and parentInscriptionId from the commit step response. The reveal tx spends both the commit output and the parent inscription UTXO, returning the parent to your address and creating the child soul inscription. Returns: inscriptionId ({revealTxid}i0) on success
stack_stxDescription is built at runtime.
stacks_market_buy_noBuy NO shares in a Stacks Market prediction market. Uses the buy-no-auto function with slippage protection via a max-cost cap. The transaction will fail if the cost exceeds max_cost_ustx. Requires an unlocked wallet. Only available on mainnet.
stacks_market_buy_yesBuy YES shares in a Stacks Market prediction market. Uses the buy-yes-auto function with slippage protection via a max-cost cap. The transaction will fail if the cost exceeds max_cost_ustx. Requires an unlocked wallet. Only available on mainnet.
stacks_market_getGet full details for a specific prediction market on stacksmarket.app. Market IDs are epoch millisecond timestamps (uint) visible in market URLs. Note: Stacks Market is only available on mainnet.
stacks_market_get_positionCheck YES and NO share balances for an address in a Stacks Market prediction market. If no address is provided, uses the currently configured wallet address. No wallet required when an address is explicitly supplied. Note: Stacks Market is only available on mainnet.
stacks_market_listList prediction markets on stacksmarket.app. Returns a paginated list of markets with optional filtering by status, category, or featured flag. Note: Stacks Market is only available on mainnet.
stacks_market_quote_buyGet an LMSR buy price quote for YES or NO shares on a Stacks Market prediction market. Returns the cost in micro-STX to buy the requested number of shares. Side: 0 = YES, 1 = NO. Note: Stacks Market is only available on mainnet.
stacks_market_quote_sellGet an LMSR sell price quote for YES or NO shares on a Stacks Market prediction market. Returns the proceeds in micro-STX for selling the requested number of shares. Side: 0 = YES, 1 = NO. Note: Stacks Market is only available on mainnet.
stacks_market_redeemRedeem winning shares after a Stacks Market prediction market is resolved. Call this after the market has been resolved to claim STX for the winning side shares you hold. Requires an unlocked wallet. Only available on mainnet.
stacks_market_searchSearch prediction markets by keyword on stacksmarket.app. Searches across market titles and descriptions. Note: Stacks Market is only available on mainnet.
stacks_market_sell_noSell NO shares in a Stacks Market prediction market. Uses the sell-no-auto function with a minimum proceeds guard. The transaction will fail if proceeds fall below min_proceeds_ustx. Requires an unlocked wallet. Only available on mainnet.
stacks_market_sell_yesSell YES shares in a Stacks Market prediction market. Uses the sell-yes-auto function with a minimum proceeds guard. The transaction will fail if proceeds fall below min_proceeds_ustx. Requires an unlocked wallet. Only available on mainnet.
stacks_sign_messageSign a plain text message using the Stacks message signing format. The message is prefixed with '\x17Stacks Signed Message:\n' before hashing (SIWS-compatible). Use cases: proving address ownership, authentication, sign-in flows. Requires an unlocked wallet.
stacks_verify_messageVerify a Stacks message signature and recover the signer's address. Takes the original message and signature, applies the Stacks prefix, and verifies. Compatible with SIWS (Sign In With Stacks) authentication flows.
stackspot_cancel_potCancel a Stackspot stacking lottery pot before stacking begins. Cancels an unlocked pot to recover contributed STX. The pot must not yet be locked (i.e., stacking has not started). Once stacking begins the pot cannot be cancelled. Use a bare contract name (e.g., "STXLFG") or a fully-qualified identifier. Requires an unlocked wallet. Note: Stackspot is only available on mainnet.
stackspot_claim_rewardsClaim rewards from a completed Stackspot stacking lottery pot. After stacking completes and a winner is selected by VRF, each participant claims their share: all participants recover their contributed STX; the VRF-selected winner also receives the sBTC yield earned during the stacking cycle. Use a bare contract name (e.g., "STXLFG") or a fully-qualified identifier. Requires an unlocked wallet. Note: Stackspot is only available on mainnet.
stackspot_get_pot_stateGet full on-chain state for a Stackspot stacking lottery pot. Returns the pot value, lock status, configurations, pool config, and detailed state. Use a bare contract name (e.g., "STXLFG") or a fully-qualified identifier (e.g., "SPT4SQP5RC1BFAJEQKBHZMXQ8NQ7G118F335BD85.STXLFG"). Note: Stackspot is only available on mainnet.
stackspot_join_potContribute STX to a Stackspot stacking lottery pot. Joins a pot by contributing STX. Your STX is locked until the stacking cycle completes. All participants recover their STX regardless of who wins; only the VRF-selected winner receives the sBTC yield. Use a bare contract name (e.g., "STXLFG") or a fully-qualified identifier. Amount must be in micro-STX (1 STX = 1,000,000 micro-STX). Requires an unlocked wallet with sufficient STX balance. Note: Stackspot is only available on mainnet.
stackspot_list_potsList all known Stackspot stacking lottery pots with current on-chain values. Stackspot is a stacking lottery on Stacks: participants pool STX into a pot, the pot stacks via PoX to earn BTC rewards. A VRF-selected winner receives the sBTC yield; all participants recover their original STX contribution. Returns each pot's contract ID, configuration, current STX value, and lock status. Note: Stackspot is only available on mainnet.
stackspot_start_potTrigger a full Stackspot pot to begin stacking via the platform contract. Initiates stacking for a pot that has reached its participant limit. This call goes through the platform contract (stackspots) and must be made during the PoX prepare phase. Any participant can call this once the pot is full. Use a bare contract name (e.g., "STXLFG") or a fully-qualified identifier. Requires an unlocked wallet. Note: Stackspot is only available on mainnet.
styx_depositFull headless BTC→sBTC deposit via the Styx protocol. Flow: reserve pool liquidity → build PSBT locally → sign with wallet keys → broadcast to mempool.space → update deposit status. Requires an unlocked wallet with sufficient BTC balance. On mainnet, ordinal UTXOs are automatically filtered out to protect inscriptions. Minimum deposit: 10,000 sats. Pool limits: main=300k sats, aibtc=1M sats.
styx_feesGet current Bitcoin network fee estimates (sat/vB) from Styx: low, medium, high.
styx_historyGet BTC→sBTC deposit history for a Stacks address via Styx. Uses the active wallet's Stacks address if no address is provided.
styx_pool_statusGet current Styx pool liquidity and status. Shows realAvailable and estimatedAvailable BTC in the pool.
styx_poolsList all available Styx pools with their configurations. Pools: main (up to 300k sats, sbtc/usda/pepe), aibtc (up to 1M sats, sbtc/aibtc). Minimum deposit: 10,000 sats for both pools.
styx_priceGet current BTC price in USD from Styx.
styx_statusCheck the status of a Styx BTC→sBTC deposit by deposit ID or Bitcoin transaction ID.
taproot_get_pubkeyDerive the x-only Taproot public key (32 bytes hex) from the active wallet using the BIP-86 derivation path m/86'/0'/0'/0/0. Share this pubkey with co-signers to construct a Taproot multisig script tree. Requires the wallet to be unlocked (use wallet_unlock first).
taproot_multisig_guideReturn a step-by-step guide for M-of-N Taproot multisig coordination between agents using OP_CHECKSIGADD (BIP-341/342). Read-only — no wallet needed.
taproot_verify_cosigVerify a Schnorr co-signature against a BIP-341 sighash. Use this to confirm that a co-signer's signature is valid before combining and broadcasting. Read-only — no wallet unlock required.
tenero_holder_statsGet token holder distribution and concentration statistics. Shows total holders, top holder percentages, and Gini coefficient. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_market_statsGet overall Stacks ecosystem market statistics including total volume, buy/sell netflow, unique traders, and active pools. Returns a time series of daily stats for recent periods. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_market_summaryGet token market summary including price history, 24h volume, and pool liquidity. Returns weighted price across all pools trading this token. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_searchSearch tokens, pools, and wallets by name, symbol, or contract address. Returns matching tokens with metadata and pricing information. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_token_infoGet token details including metadata, current price, market cap, and 24h volume. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_top_gainersList top gaining tokens by 24h price change percentage on the Stacks ecosystem. Useful for spotting momentum and trending assets. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_top_losersList top losing tokens by 24h price change percentage on the Stacks ecosystem. Useful for identifying underperforming assets or potential reversal candidates. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_trending_poolsList trending DEX liquidity pools by volume over the last hour. Includes pool platform, token pair, volume, and liquidity details. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_wallet_holdingsGet token holdings with current USD value for a Stacks wallet address. Shows portfolio composition including token balances and estimated values. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_wallet_tradesGet trade history for a Stacks wallet address. Returns recent buy/sell events with token, pool, and USD value details. Powered by the Tenero API (api.tenero.io). No authentication required.
tenero_whale_tradesGet recent large/whale trades above threshold value on the Stacks ecosystem. Useful for tracking smart money and large market movements. Powered by the Tenero API (api.tenero.io). No authentication required.
transfer_btcTransfer BTC to a recipient address. Builds, signs, and broadcasts a Bitcoin transaction. Requires an unlocked wallet with BTC balance. By default, only uses cardinal UTXOs (safe to spend - no inscriptions). Set includeOrdinals=true to allow spending ordinal UTXOs (advanced users only).
transfer_nftTransfer an NFT (SIP-009) to a recipient address.
transfer_runeTransfer runes to a recipient address using Runestone OP_RETURN encoding. Builds a Bitcoin transaction with a Runestone, sends runes to the recipient, and returns remaining runes to the sender Taproot address. Requires wallet to be unlocked. Amount is in smallest rune units (raw integer). Uses Unisat indexer to fetch rune UTXOs (UNISAT_API_KEY recommended).
transfer_stxTransfer STX tokens to a recipient address. Signs and broadcasts the transaction. Example: To send 2 STX, use amount "2000000" (micro-STX). 1 STX = 1,000,000 micro-STX
transfer_tokenTransfer any SIP-010 token to a recipient address. Supports well-known tokens by symbol: sBTC, USDCx, ALEX, DIKO Or use the full contract ID.
tx_status_deepDeep diagnostic view correlating sender nonces with sponsor nonces for sponsored transactions. Reads the sender's local pending txid log and cross-references each entry against the sponsor's mempool to show the full lifecycle of sponsored transactions: - Which sender nonce maps to which sponsor nonce - Whether sponsor nonce gaps are blocking specific transactions - Which pending txids are missing from the sponsor mempool entirely - Multiple competing txids (RBF candidates) for the same sender nonce slot Output per nonce slot: Sender nonce N: - 0xabc (sponsored, sponsor nonce 47) -- BLO…
unstake_stxStop a PoX-5 stake early (pox-5 unstake). The STX stays locked through the current reward cycle and unlocks at the start of the next one. Refused during the prepare phase.
wallet_createCreate a new wallet for the agent with a generated BIP39 24-word mnemonic. The wallet is encrypted locally and stored in ~/.aibtc/. IMPORTANT: Save the mnemonic securely - it will only be shown once!
wallet_deletePermanently delete a wallet. WARNING: This cannot be undone! Make sure you have backed up your mnemonic.
wallet_exportExport the mnemonic phrase for a wallet. WARNING: Only use this in a secure environment! Anyone with the mnemonic can access your funds.
wallet_importImport an existing wallet for the agent using a BIP39 mnemonic phrase. The wallet is encrypted locally and stored in ~/.aibtc/.
wallet_listList all wallets available for the agent to use.
wallet_lockLock the agent's wallet, clearing sensitive data from memory.
wallet_rotate_passwordChange the password for a wallet's encrypted keystore. Performs an atomic operation: backs up the keystore, re-encrypts with the new password, verifies the round-trip, then cleans up. If anything fails, the original keystore is restored. If the wallet is currently unlocked, it will be locked after rotation (requires re-unlock with new password).
wallet_set_timeoutSet how long the agent's wallet stays unlocked before automatically locking. Set to 0 to disable auto-lock.
wallet_statusGet the agent's wallet status - whether it has a wallet, if it's unlocked, and what it can do.
wallet_switchSwitch to a different wallet. Note: The new wallet will need to be unlocked before use.
wallet_unlockUnlock the agent's wallet to enable transactions. If no wallet ID is provided, unlocks the active wallet.
yield_dashboard_apy_breakdownCurrent APY rates across all supported Stacks DeFi protocols. Returns live APY data for Zest Protocol (sBTC lending), ALEX DEX (aBTC/STX LP), Bitflow (sBTC LP), and STX Stacking. No wallet required — pure market data. Data sources: - Zest Protocol: on-chain reserve state (current-liquidity-rate, Ray units) - ALEX DEX: null — no live APY source - Bitflow: null — no public pool APY endpoint - STX Stacking: null — pox-5 rewards are sBTC, paid per signer manager Mainnet data only (contract addresses are mainnet-specific).
yield_dashboard_overviewPortfolio overview across Stacks DeFi protocols. Aggregates positions across Zest Protocol (sBTC lending), ALEX DEX (AMM LP), Bitflow (DEX LP), and STX Stacking. Returns total value, weighted APY, and per-protocol breakdown. Read-only. Mainnet-only. Requires an unlocked wallet for address context. Note: ALEX LP and Bitflow LP position values are 0 — these protocols do not expose user LP positions via read-only calls. Only Zest has a live APY; ALEX, Bitflow and Stacking report apyPct: null.
yield_dashboard_positionsDetailed per-protocol DeFi position data. Returns an array of positions across Zest Protocol, ALEX DEX, Bitflow, and STX Stacking. Each position includes protocol, asset, value, APY, risk score, and protocol-specific details. Read-only. Mainnet-only. Requires an unlocked wallet for address context. Known limitations: - ALEX LP and Bitflow LP: valueSats shows 0 (protocol does not expose user LP balances via read-only calls). - apyPct is null for ALEX, Bitflow and Stacking (no live source). - Stacking: denominated in microSTX, not sats.
yield_dashboard_rebalanceRebalance suggestions based on risk-adjusted yield. Reads current positions across all protocols, compares to optimal allocation for the chosen risk tolerance, and returns actionable suggestions. Risk tolerance levels: - low: Zest 40%, ALEX 10%, Bitflow 10%, Stacking 40% - medium: Zest 45%, ALEX 20%, Bitflow 15%, Stacking 20% (default) - high: Zest 50%, ALEX 30%, Bitflow 20%, Stacking 0% Read-only. Mainnet-only. Requires an unlocked wallet for address context.
yield_hunter_configureConfigure yield hunter settings. Adjust the deposit threshold, reserve, or check interval. Changes take effect on the next check cycle.
yield_hunter_startStart autonomous yield hunting. This will: 1. Monitor your wallet for sBTC 2. Automatically deposit sBTC to Zest Protocol when balance exceeds threshold 3. Keep a configurable reserve (default: 0, deposits all sBTC) 4. Wait for transaction confirmations before proceeding 5. Retry failed transactions with exponential backoff 6. Run continuously until stopped Requires an unlocked wallet (use wallet_unlock first). Only works on mainnet (Zest Protocol is mainnet-only). Note: Stacks transaction fees are paid in STX, not sBTC. Default settings: - Deposit threshold: 10,000 sats (0.0001 sBTC) - Re…
yield_hunter_statusGet current yield hunter status. Shows: - Whether yield hunting is active - Current configuration - Statistics (checks run, deposits made) - Recent activity logs - Current Zest position
yield_hunter_stopStop autonomous yield hunting. Stops the background process that monitors and deposits sBTC. Your existing Zest positions remain untouched.
zest_borrowBorrow assets from Zest Protocol (v0-4-market). Borrows assets against your supplied collateral. Ensure you have sufficient collateral to maintain a healthy LTV. You can use the asset symbol (e.g., 'USDC', 'sBTC') or full contract ID. Three LTV tiers: ~75% (borrow limit), ~85% (partial liquidation), ~95% (full liquidation). Note: Zest Protocol is only available on mainnet.
zest_enable_collateralAdd existing zTokens as collateral on Zest Protocol v2. Use this when you deposited directly to a vault and need to register those zTokens as collateral for borrowing. Note: zest_supply already handles this atomically via supply-collateral-add. This tool is only needed if you used vault deposit separately. Mainnet only.
zest_get_positionGet user's lending position on Zest Protocol (v0-4-market). Returns collateral, debt, health factor, and LTV data across all assets. The position query returns USD-denominated totals. Note: Zest Protocol is only available on mainnet.
zest_list_assetsList all supported assets on Zest Protocol (v0-4-market). Returns the list of assets that can be supplied, borrowed, or used as collateral. Each asset includes its symbol, name, and contract ID. Supported assets: wSTX, sBTC, stSTX, USDC, USDH, stSTXbtc. Note: Zest Protocol is only available on mainnet.
zest_repayRepay borrowed assets to Zest Protocol (v0-4-market). Repays borrowed assets plus accrued interest. You can use the asset symbol (e.g., 'USDC', 'sBTC') or full contract ID. Note: Zest Protocol is only available on mainnet.
zest_supplySupply assets to Zest Protocol (v0-4-market). Deposits assets and adds them as collateral in one atomic operation. The supplied assets earn yield AND provide borrowing power. You can use the asset symbol (e.g., 'sBTC', 'USDC') or full contract ID. Supported assets: wSTX, sBTC, stSTX, USDC, USDH, stSTXbtc. Note: Zest Protocol is only available on mainnet.
zest_withdrawWithdraw assets from Zest Protocol (v0-4-market). Removes collateral and redeems for underlying assets in one atomic operation. You can use the asset symbol (e.g., 'sBTC', 'USDC') or full contract ID. Note: Amount is in zToken shares. Zest Protocol is only available on mainnet.
Signals
- Stars
- 12
- Forks
- 49
- Open issues
- 6
- Weekly downloads
- 335
- Last commit
- Oct 23, 2026 (6 days ago)
- Last release
- Oct 23, 2026 (6 days ago)
- Last package publish
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.aibtcdev/mcp-server- Version
- 1.17.0
- Auth
- No auth
- Packages
- npm @aibtc/mcp-server
- License
- License unknown
- Repository
- github.com/aibtcdev/aibtc-mcp-server
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
aibtcdev/mcp-server. Agent Mart. https://agentmart.dev/connectors/aibtcdev-mcp-server (last updated 2026-10-25)