@aibtc/mcp-server 1.66.0 → 1.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tools/legion.tools.js +24 -2
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
|
@@ -1023,7 +1023,9 @@ export function registerLegionTools(server) {
|
|
|
1023
1023
|
"Content type is text/markdown; the title is prepended as an H1 unless the body already " +
|
|
1024
1024
|
"starts with one.\n\n" +
|
|
1025
1025
|
`SPENDS REAL BITCOIN, on the Bitcoin network NETWORK names (currently ${NETWORK}) — ` +
|
|
1026
|
-
`not the Stacks ${LEGION_NETWORK} the rest of the legion_* tools use
|
|
1026
|
+
`not the Stacks ${LEGION_NETWORK} the rest of the legion_* tools use. A mainnet ` +
|
|
1027
|
+
"inscription therefore needs `confirmMainnetSpend: true`; without it the tool prices " +
|
|
1028
|
+
"the piece and refuses, so real BTC is never spent by accident.\n\n" +
|
|
1027
1029
|
"Optional `parentInscriptionId` files the piece as a child of a parent you own, binding " +
|
|
1028
1030
|
"your pieces to one inscribed identity. That is authorship, not originality.\n\n" +
|
|
1029
1031
|
"Pre-flights content size, fee estimate, parent ownership, funding and network before " +
|
|
@@ -1050,6 +1052,11 @@ export function registerLegionTools(server) {
|
|
|
1050
1052
|
.optional()
|
|
1051
1053
|
.describe("Run every pre-flight check and price the inscription, but sign nothing. " +
|
|
1052
1054
|
"Use this to see the cost before spending it."),
|
|
1055
|
+
confirmMainnetSpend: z
|
|
1056
|
+
.boolean()
|
|
1057
|
+
.optional()
|
|
1058
|
+
.describe("Acknowledge that this spends real BTC. Required on mainnet — without it the " +
|
|
1059
|
+
"tool returns the exact cost and refuses."),
|
|
1053
1060
|
allowNonMainnet: z
|
|
1054
1061
|
.boolean()
|
|
1055
1062
|
.optional()
|
|
@@ -1060,7 +1067,7 @@ export function registerLegionTools(server) {
|
|
|
1060
1067
|
.optional()
|
|
1061
1068
|
.describe("Fee rate: 'fast', 'medium', 'slow', or a number in sat/vB (default: medium)"),
|
|
1062
1069
|
},
|
|
1063
|
-
}, async ({ title, body, parentInscriptionId, dryRun, allowNonMainnet, feeRate }) => {
|
|
1070
|
+
}, async ({ title, body, parentInscriptionId, dryRun, confirmMainnetSpend, allowNonMainnet, feeRate }) => {
|
|
1064
1071
|
try {
|
|
1065
1072
|
// A testnet inscription is almost always a misconfiguration here: the
|
|
1066
1073
|
// legion's governance is testnet but its links are read on mainnet
|
|
@@ -1184,6 +1191,19 @@ export function registerLegionTools(server) {
|
|
|
1184
1191
|
nextStep: "Nothing was signed. Re-call without dryRun to broadcast the commit.",
|
|
1185
1192
|
});
|
|
1186
1193
|
}
|
|
1194
|
+
// The legion itself is testnet, so an agent working through it has no
|
|
1195
|
+
// reason to expect real money to move. Inscription is the one step that
|
|
1196
|
+
// does, and it cannot be moved off mainnet (ordinals.com indexes mainnet
|
|
1197
|
+
// only), so the cost is quoted and consent taken instead.
|
|
1198
|
+
if (NETWORK === "mainnet" && !confirmMainnetSpend) {
|
|
1199
|
+
const total = commitResult.fee + commitResult.revealAmount;
|
|
1200
|
+
return createErrorResponse(new Error(`This would spend ${total} sats of REAL BITCOIN on mainnet — ` +
|
|
1201
|
+
`${commitResult.fee} commit fee plus ${commitResult.revealAmount} locked for ` +
|
|
1202
|
+
`the reveal. The legion's governance is Stacks ${LEGION_NETWORK}, but the ` +
|
|
1203
|
+
`inscription is mainnet Bitcoin because ordinals.com indexes mainnet only. ` +
|
|
1204
|
+
`Nothing was signed. Re-call with confirmMainnetSpend: true to proceed, or ` +
|
|
1205
|
+
`dryRun: true for the full breakdown.`));
|
|
1206
|
+
}
|
|
1187
1207
|
const commitSigned = signBtcTransaction(commitResult.tx, account.btcPrivateKey);
|
|
1188
1208
|
const commitTxid = await mempoolApi.broadcastTransaction(commitSigned.txHex);
|
|
1189
1209
|
return createJsonResponse({
|
|
@@ -1225,6 +1245,8 @@ export function registerLegionTools(server) {
|
|
|
1225
1245
|
"derived from all three. The commit's actual output is checked against the script this " +
|
|
1226
1246
|
"content derives, so a mismatch is refused before signing rather than losing the sats.\n\n" +
|
|
1227
1247
|
"Returns the inscription id and link for legion_propose_story.\n\n" +
|
|
1248
|
+
"No mainnet confirmation is asked for here, unlike the commit: those sats are already " +
|
|
1249
|
+
"committed, and refusing the reveal would strand them rather than save them.\n\n" +
|
|
1228
1250
|
"Requires an unlocked managed wallet.",
|
|
1229
1251
|
inputSchema: {
|
|
1230
1252
|
commitTxid: z
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aibtc/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.67.0",
|
|
4
4
|
"description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
|
|
5
5
|
"mcpName": "io.github.aibtcdev/mcp-server",
|
|
6
6
|
"type": "module",
|
package/skill/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Bitcoin L1 wallet for agents - check balances, send BTC, manage UTX
|
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: aibtcdev
|
|
7
|
-
version: 1.
|
|
7
|
+
version: 1.67.0 # x-release-please-version
|
|
8
8
|
npm: "@aibtc/mcp-server"
|
|
9
9
|
github: https://github.com/aibtcdev/aibtc-mcp-server
|
|
10
10
|
---
|