@aibtc/mcp-server 1.36.1 → 1.37.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.
Files changed (32) hide show
  1. package/dist/tools/index.d.ts.map +1 -1
  2. package/dist/tools/index.js +15 -0
  3. package/dist/tools/index.js.map +1 -1
  4. package/dist/tools/jingswap.tools.d.ts +3 -0
  5. package/dist/tools/jingswap.tools.d.ts.map +1 -0
  6. package/dist/tools/jingswap.tools.js +471 -0
  7. package/dist/tools/jingswap.tools.js.map +1 -0
  8. package/dist/tools/nostr.tools.d.ts +3 -0
  9. package/dist/tools/nostr.tools.d.ts.map +1 -0
  10. package/dist/tools/nostr.tools.js +409 -0
  11. package/dist/tools/nostr.tools.js.map +1 -0
  12. package/dist/tools/ordinals-p2p.tools.d.ts +21 -0
  13. package/dist/tools/ordinals-p2p.tools.d.ts.map +1 -0
  14. package/dist/tools/ordinals-p2p.tools.js +621 -0
  15. package/dist/tools/ordinals-p2p.tools.js.map +1 -0
  16. package/dist/tools/skill-mappings.d.ts.map +1 -1
  17. package/dist/tools/skill-mappings.js +13 -1
  18. package/dist/tools/skill-mappings.js.map +1 -1
  19. package/dist/tools/stacks-market.tools.d.ts +22 -0
  20. package/dist/tools/stacks-market.tools.d.ts.map +1 -0
  21. package/dist/tools/stacks-market.tools.js +630 -0
  22. package/dist/tools/stacks-market.tools.js.map +1 -0
  23. package/dist/tools/taproot-multisig.tools.d.ts +17 -0
  24. package/dist/tools/taproot-multisig.tools.d.ts.map +1 -0
  25. package/dist/tools/taproot-multisig.tools.js +236 -0
  26. package/dist/tools/taproot-multisig.tools.js.map +1 -0
  27. package/dist/transactions/builder.d.ts +23 -0
  28. package/dist/transactions/builder.d.ts.map +1 -1
  29. package/dist/transactions/builder.js +41 -1
  30. package/dist/transactions/builder.js.map +1 -1
  31. package/package.json +4 -1
  32. package/skill/SKILL.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwDpE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4ExD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6DpE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2FxD"}
@@ -21,8 +21,13 @@ import { registerPillarTools } from "./pillar.tools.js";
21
21
  import { registerPillarDirectTools } from "./pillar-direct.tools.js";
22
22
  import { registerBitcoinTools } from "./bitcoin.tools.js";
23
23
  import { registerMempoolTools } from "./mempool.tools.js";
24
+ import { registerNostrTools } from "./nostr.tools.js";
24
25
  import { registerRelayDiagnosticTools } from "./relay-diagnostic.tools.js";
26
+ import { registerStacksMarketTools } from "./stacks-market.tools.js";
25
27
  import { registerTeneroTools } from "./tenero.tools.js";
28
+ import { registerOrdinalsP2PTools } from "./ordinals-p2p.tools.js";
29
+ import { registerTaprootMultisigTools } from "./taproot-multisig.tools.js";
30
+ import { registerJingswapTools } from "./jingswap.tools.js";
26
31
  import { getSkillForTool } from "./skill-mappings.js";
27
32
  /**
28
33
  * Wraps server.registerTool to inject _meta.skill from TOOL_SKILL_MAP when a mapping exists.
@@ -100,10 +105,20 @@ export function registerAllTools(server) {
100
105
  registerBitcoinTools(server);
101
106
  // Mempool Watch (read-only: mempool stats, tx status, address tx history)
102
107
  registerMempoolTools(server);
108
+ // Nostr protocol (publish notes, read feed, manage profile)
109
+ registerNostrTools(server);
103
110
  // Relay Diagnostics (sponsor relay health, nonce status, stuck transactions)
104
111
  registerRelayDiagnosticTools(server);
112
+ // Stacks Market prediction market trading
113
+ registerStacksMarketTools(server);
105
114
  // Tenero market analytics (token info, gainers/losers, trending pools, wallet trades)
106
115
  registerTeneroTools(server);
116
+ // Ordinals P2P trading (ledger.drx4.xyz — offers, counters, transfers, PSBT swaps)
117
+ registerOrdinalsP2PTools(server);
118
+ // Taproot Multisig (M-of-N coordination via OP_CHECKSIGADD, BIP-341/342)
119
+ registerTaprootMultisigTools(server);
120
+ // Jingswap Auction (blind batch auctions for STX/sBTC)
121
+ registerJingswapTools(server);
107
122
  restoreRegisterTool();
108
123
  }
109
124
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,+DAA+D;AAC/D,6DAA6D;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,SAAS,aAAa,CAAC,MAAiB;IACtC,8DAA8D;IAC9D,MAAM,QAAQ,GAAI,MAAc,CAAC,YAAY,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5E,8DAA8D;IAC7D,MAAc,CAAC,YAAY,GAAG,UAAU,IAAY,EAAE,MAA+B,EAAE,EAAW;QACjG,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,KAA4C,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACjG,CAAC,CAAC,MAAM,CAAC;QACX,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,GAAG,EAAE;QACV,IAAI,MAAM,EAAE,CAAC;YACX,8DAA8D;YAC7D,MAAc,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,8DAA8D;YAC9D,OAAQ,MAAc,CAAC,YAAY,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAElD,mBAAmB;IACnB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,yDAAyD;IACzD,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAEtC,YAAY;IACZ,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,kBAAkB;IAClB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO;IACP,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,mBAAmB;IACnB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,iBAAiB;IACjB,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,iBAAiB;IACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,wDAAwD;IACxD,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,cAAc;IACd,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,qBAAqB;IACrB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,iBAAiB;IACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,iCAAiC;IACjC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,+DAA+D;IAC/D,gCAAgC;IAEhC,2BAA2B;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,gDAAgD;IAChD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,0CAA0C;IAC1C,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,+CAA+C;IAC/C,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,yCAAyC;IACzC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,mDAAmD;IACnD,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,+CAA+C;IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,0EAA0E;IAC1E,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,4DAA4D;IAC5D,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,6EAA6E;IAC7E,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAErC,0CAA0C;IAC1C,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,sFAAsF;IACtF,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,mFAAmF;IACnF,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,yEAAyE;IACzE,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAErC,uDAAuD;IACvD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,mBAAmB,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerJingswapTools(server: McpServer): void;
3
+ //# sourceMappingURL=jingswap.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jingswap.tools.d.ts","sourceRoot":"","sources":["../../src/tools/jingswap.tools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+iB7D"}
@@ -0,0 +1,471 @@
1
+ // Jingswap Auction MCP Tools
2
+ // Query + deposit/cancel tools for the STX/sBTC blind auction on Stacks.
3
+ // Contract: SPV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RCJDC22.sbtc-stx-jingswap
4
+ import { z } from "zod";
5
+ import { uintCV, bufferCV, contractPrincipalCV, PostConditionMode, Pc } from "@stacks/transactions";
6
+ import { getAccount, NETWORK } from "../services/x402.service.js";
7
+ import { callContract } from "../transactions/builder.js";
8
+ import { getExplorerTxUrl } from "../config/networks.js";
9
+ import { createJsonResponse, createErrorResponse } from "../utils/index.js";
10
+ const JINGSWAP_API = process.env.JINGSWAP_API_URL || "https://faktory-dao-backend.vercel.app";
11
+ // Public default key: rate-limited per IP on the backend, same model as Hiro's public API tier.
12
+ // Set JINGSWAP_API_KEY env var for higher limits.
13
+ const JINGSWAP_API_KEY = process.env.JINGSWAP_API_KEY || "jc_b058d7f2e0976bd4ee34be3e5c7ba7ebe45289c55d3f5e45f666ebc14b7ebfd0";
14
+ async function jingswapGet(path) {
15
+ const res = await fetch(`${JINGSWAP_API}${path}`, {
16
+ headers: { "x-api-key": JINGSWAP_API_KEY },
17
+ });
18
+ if (!res.ok)
19
+ throw new Error(`Jingswap API ${res.status}: ${await res.text()}`);
20
+ const json = await res.json();
21
+ if (!json.success)
22
+ throw new Error(json.message || "API returned failure");
23
+ return json.data;
24
+ }
25
+ export function registerJingswapTools(server) {
26
+ // ── Cycle State ──────────────────────────────────────────────
27
+ server.registerTool("jingswap_get_cycle_state", {
28
+ description: "Get the current Jingswap auction cycle state including phase (deposit/buffer/settle), " +
29
+ "blocks elapsed, cycle totals (STX + sBTC deposited), and minimum deposit requirements. " +
30
+ "Use this to understand where the auction currently stands.",
31
+ }, async () => {
32
+ try {
33
+ const data = await jingswapGet("/api/auction/cycle-state");
34
+ return createJsonResponse({
35
+ ...data,
36
+ _hint: {
37
+ phases: "0=deposit (open for deposits, min 150 blocks), 1=buffer (30 blocks ~1 min, no actions), 2=settle (call settle-with-refresh)",
38
+ blockTime: "Stacks blocks average ~2 seconds each (Nakamoto)",
39
+ depositMinBlocks: "150 blocks (~5 minutes) before deposits can be closed",
40
+ bufferBlocks: "30 blocks (~1 minute) after close before settlement is possible",
41
+ stxUnits: "micro-STX (÷1e6 for STX)",
42
+ sbtcUnits: "satoshis (÷1e8 for sBTC)",
43
+ },
44
+ });
45
+ }
46
+ catch (error) {
47
+ return createErrorResponse(error);
48
+ }
49
+ });
50
+ // ── Depositors ───────────────────────────────────────────────
51
+ server.registerTool("jingswap_get_depositors", {
52
+ description: "Get the list of STX and sBTC depositors for a specific auction cycle. " +
53
+ "Returns arrays of Stacks addresses on each side. Max 50 depositors per side.",
54
+ inputSchema: {
55
+ cycle: z.number().describe("Cycle number to query"),
56
+ },
57
+ }, async ({ cycle }) => {
58
+ try {
59
+ const data = await jingswapGet(`/api/auction/depositors/${cycle}`);
60
+ return createJsonResponse(data);
61
+ }
62
+ catch (error) {
63
+ return createErrorResponse(error);
64
+ }
65
+ });
66
+ // ── User Deposit ─────────────────────────────────────────────
67
+ server.registerTool("jingswap_get_user_deposit", {
68
+ description: "Get a specific user's deposit amounts (STX and sBTC) for a given auction cycle.",
69
+ inputSchema: {
70
+ cycle: z.number().describe("Cycle number"),
71
+ address: z.string().describe("Stacks address of the depositor"),
72
+ },
73
+ }, async ({ cycle, address }) => {
74
+ try {
75
+ const data = await jingswapGet(`/api/auction/deposit/${cycle}/${address}`);
76
+ return createJsonResponse(data);
77
+ }
78
+ catch (error) {
79
+ return createErrorResponse(error);
80
+ }
81
+ });
82
+ // ── Settlement ───────────────────────────────────────────────
83
+ server.registerTool("jingswap_get_settlement", {
84
+ description: "Get settlement details for a completed auction cycle. Returns clearing price (STX/BTC), " +
85
+ "amounts cleared, fees, and the block height at which settlement occurred. " +
86
+ "Returns null settlement if the cycle hasn't been settled yet.",
87
+ inputSchema: {
88
+ cycle: z.number().describe("Cycle number to query"),
89
+ },
90
+ }, async ({ cycle }) => {
91
+ try {
92
+ const data = await jingswapGet(`/api/auction/settlement/${cycle}`);
93
+ return createJsonResponse(data);
94
+ }
95
+ catch (error) {
96
+ return createErrorResponse(error);
97
+ }
98
+ });
99
+ // ── Cycles History ───────────────────────────────────────────
100
+ server.registerTool("jingswap_get_cycles_history", {
101
+ description: "Get the full history of all auction cycles from cycle 0 to the current cycle. " +
102
+ "Each entry includes settlement data (if settled) and cycle totals. " +
103
+ "Useful for analyzing historical auction performance and volume.",
104
+ }, async () => {
105
+ try {
106
+ const data = await jingswapGet("/api/auction/cycles-history");
107
+ return createJsonResponse(data);
108
+ }
109
+ catch (error) {
110
+ return createErrorResponse(error);
111
+ }
112
+ });
113
+ // ── User Activity ────────────────────────────────────────────
114
+ server.registerTool("jingswap_get_user_activity", {
115
+ description: "Get a user's auction activity history — deposits, cancellations, fills, and settlements. " +
116
+ "Indexed from on-chain contract events.",
117
+ inputSchema: {
118
+ address: z.string().describe("Stacks address to query"),
119
+ },
120
+ }, async ({ address }) => {
121
+ try {
122
+ const data = await jingswapGet(`/api/auction/activity/${address}`);
123
+ return createJsonResponse({
124
+ ...data,
125
+ _hint: {
126
+ "distribute-stx-depositor": "stxAmount = unswapped STX rolled to next cycle, sbtcAmount = sBTC received from swap",
127
+ "distribute-sbtc-depositor": "sbtcAmount = unswapped sats rolled to next cycle, stxAmount = STX received from swap",
128
+ "refund-stx": "deposit rejected (e.g. duplicate or below minimum)",
129
+ "refund-sbtc": "deposit rejected (e.g. duplicate or below minimum)",
130
+ },
131
+ });
132
+ }
133
+ catch (error) {
134
+ return createErrorResponse(error);
135
+ }
136
+ });
137
+ // ── Deposit STX ─────────────────────────────────────────────
138
+ const JINGSWAP_CONTRACT_ADDRESS = "SPV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RCJDC22";
139
+ const JINGSWAP_CONTRACT_NAME = "sbtc-stx-jingswap";
140
+ const SBTC_CONTRACT = "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token";
141
+ async function assertDepositPhase() {
142
+ const data = await jingswapGet("/api/auction/cycle-state");
143
+ if (data.phase !== 0) {
144
+ const phaseNames = ["deposit", "buffer", "settle"];
145
+ throw new Error(`Cannot deposit/cancel — auction is in ${phaseNames[data.phase] || "unknown"} phase (must be in deposit phase)`);
146
+ }
147
+ }
148
+ server.registerTool("jingswap_deposit_stx", {
149
+ description: "Deposit STX into the current Jingswap auction cycle. " +
150
+ "Only works during the deposit phase. Amount is in STX (e.g. 10 for 10 STX).",
151
+ inputSchema: {
152
+ amount: z.number().positive().describe("Amount of STX to deposit"),
153
+ },
154
+ }, async ({ amount }) => {
155
+ try {
156
+ await assertDepositPhase();
157
+ const account = await getAccount();
158
+ const microStx = BigInt(Math.floor(amount * 1_000_000));
159
+ const result = await callContract(account, {
160
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
161
+ contractName: JINGSWAP_CONTRACT_NAME,
162
+ functionName: "deposit-stx",
163
+ functionArgs: [uintCV(microStx)],
164
+ postConditionMode: PostConditionMode.Deny,
165
+ postConditions: [
166
+ Pc.principal(account.address).willSendEq(microStx).ustx(),
167
+ ],
168
+ });
169
+ return createJsonResponse({
170
+ success: true,
171
+ txid: result.txid,
172
+ action: "deposit-stx",
173
+ amount: `${amount} STX`,
174
+ network: NETWORK,
175
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
176
+ });
177
+ }
178
+ catch (error) {
179
+ return createErrorResponse(error);
180
+ }
181
+ });
182
+ // ── Deposit sBTC ────────────────────────────────────────────
183
+ server.registerTool("jingswap_deposit_sbtc", {
184
+ description: "Deposit sBTC into the current Jingswap auction cycle. " +
185
+ "Only works during the deposit phase. Amount is in satoshis (e.g. 1000 for 1000 sats).",
186
+ inputSchema: {
187
+ amount: z.number().int().positive().describe("Amount of sBTC in satoshis"),
188
+ },
189
+ }, async ({ amount }) => {
190
+ try {
191
+ await assertDepositPhase();
192
+ const account = await getAccount();
193
+ const sats = BigInt(amount);
194
+ const result = await callContract(account, {
195
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
196
+ contractName: JINGSWAP_CONTRACT_NAME,
197
+ functionName: "deposit-sbtc",
198
+ functionArgs: [uintCV(sats)],
199
+ postConditionMode: PostConditionMode.Deny,
200
+ postConditions: [
201
+ Pc.principal(account.address)
202
+ .willSendEq(sats)
203
+ .ft(SBTC_CONTRACT, "sbtc-token"),
204
+ ],
205
+ });
206
+ return createJsonResponse({
207
+ success: true,
208
+ txid: result.txid,
209
+ action: "deposit-sbtc",
210
+ amount: `${amount} sats`,
211
+ network: NETWORK,
212
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
213
+ });
214
+ }
215
+ catch (error) {
216
+ return createErrorResponse(error);
217
+ }
218
+ });
219
+ // ── Cancel STX Deposit ──────────────────────────────────────
220
+ server.registerTool("jingswap_cancel_stx", {
221
+ description: "Cancel your STX deposit from the current Jingswap auction cycle and get a full refund. " +
222
+ "Only works during the deposit phase.",
223
+ }, async () => {
224
+ try {
225
+ await assertDepositPhase();
226
+ const account = await getAccount();
227
+ const result = await callContract(account, {
228
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
229
+ contractName: JINGSWAP_CONTRACT_NAME,
230
+ functionName: "cancel-stx-deposit",
231
+ functionArgs: [],
232
+ postConditionMode: PostConditionMode.Allow,
233
+ postConditions: [],
234
+ });
235
+ return createJsonResponse({
236
+ success: true,
237
+ txid: result.txid,
238
+ action: "cancel-stx-deposit",
239
+ network: NETWORK,
240
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
241
+ });
242
+ }
243
+ catch (error) {
244
+ return createErrorResponse(error);
245
+ }
246
+ });
247
+ // ── Cancel sBTC Deposit ─────────────────────────────────────
248
+ server.registerTool("jingswap_cancel_sbtc", {
249
+ description: "Cancel your sBTC deposit from the current Jingswap auction cycle and get a full refund. " +
250
+ "Only works during the deposit phase.",
251
+ }, async () => {
252
+ try {
253
+ await assertDepositPhase();
254
+ const account = await getAccount();
255
+ const result = await callContract(account, {
256
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
257
+ contractName: JINGSWAP_CONTRACT_NAME,
258
+ functionName: "cancel-sbtc-deposit",
259
+ functionArgs: [],
260
+ postConditionMode: PostConditionMode.Allow,
261
+ postConditions: [],
262
+ });
263
+ return createJsonResponse({
264
+ success: true,
265
+ txid: result.txid,
266
+ action: "cancel-sbtc-deposit",
267
+ network: NETWORK,
268
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
269
+ });
270
+ }
271
+ catch (error) {
272
+ return createErrorResponse(error);
273
+ }
274
+ });
275
+ // ── Close Deposits ───────────────────────────────────────────
276
+ server.registerTool("jingswap_close_deposits", {
277
+ description: "Close the deposit phase of the current Jingswap auction cycle. " +
278
+ "Before calling, check jingswap_get_cycle_state to verify: phase is 0 (deposit), " +
279
+ "blocksElapsed >= 150 (DEPOSIT_MIN_BLOCKS), and both sides meet minimums " +
280
+ "(min 1 STX = 1,000,000 micro-STX and min 1,000 sats sBTC). " +
281
+ "Anyone can call this. Transitions to buffer phase.",
282
+ }, async () => {
283
+ try {
284
+ const data = await jingswapGet("/api/auction/cycle-state");
285
+ if (data.phase !== 0) {
286
+ throw new Error("Cannot close deposits — auction is not in deposit phase");
287
+ }
288
+ const account = await getAccount();
289
+ const result = await callContract(account, {
290
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
291
+ contractName: JINGSWAP_CONTRACT_NAME,
292
+ functionName: "close-deposits",
293
+ functionArgs: [],
294
+ postConditionMode: PostConditionMode.Allow,
295
+ postConditions: [],
296
+ });
297
+ return createJsonResponse({
298
+ success: true,
299
+ txid: result.txid,
300
+ action: "close-deposits",
301
+ cycle: data.currentCycle,
302
+ network: NETWORK,
303
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
304
+ });
305
+ }
306
+ catch (error) {
307
+ return createErrorResponse(error);
308
+ }
309
+ });
310
+ // ── Settle (stored prices) ──────────────────────────────────
311
+ server.registerTool("jingswap_settle", {
312
+ description: "Settle the current auction cycle using stored Pyth oracle prices (free). " +
313
+ "WARNING: This will almost always fail because stored prices go stale quickly. " +
314
+ "Prefer jingswap_settle_with_refresh instead — it fetches fresh prices and is much more reliable. " +
315
+ "Only works after deposits have been closed (buffer/settle phase).",
316
+ }, async () => {
317
+ try {
318
+ const data = await jingswapGet("/api/auction/cycle-state");
319
+ if (data.phase === 0) {
320
+ throw new Error("Cannot settle — auction is still in deposit phase. Close deposits first.");
321
+ }
322
+ const account = await getAccount();
323
+ const result = await callContract(account, {
324
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
325
+ contractName: JINGSWAP_CONTRACT_NAME,
326
+ functionName: "settle",
327
+ functionArgs: [],
328
+ postConditionMode: PostConditionMode.Allow,
329
+ postConditions: [],
330
+ });
331
+ return createJsonResponse({
332
+ success: true,
333
+ txid: result.txid,
334
+ action: "settle",
335
+ cycle: data.currentCycle,
336
+ network: NETWORK,
337
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
338
+ });
339
+ }
340
+ catch (error) {
341
+ return createErrorResponse(error);
342
+ }
343
+ });
344
+ // ── Settle with Refresh (fresh Pyth VAAs) ───────────────────
345
+ const PYTH_CONTRACTS = {
346
+ storage: { address: "SP1CGXWEAMG6P6FT04W66NVGJ7PQWMDAC19R7PJ0Y", name: "pyth-storage-v4" },
347
+ decoder: { address: "SP1CGXWEAMG6P6FT04W66NVGJ7PQWMDAC19R7PJ0Y", name: "pyth-pnau-decoder-v3" },
348
+ wormhole: { address: "SP1CGXWEAMG6P6FT04W66NVGJ7PQWMDAC19R7PJ0Y", name: "wormhole-core-v2" },
349
+ };
350
+ server.registerTool("jingswap_settle_with_refresh", {
351
+ description: "Settle the current auction cycle by first refreshing Pyth oracle prices with fresh VAAs. " +
352
+ "This is the recommended settlement method — stored prices are almost always stale. " +
353
+ "Costs ~2 µSTX for the Pyth update. Automatically fetches fresh VAAs from the backend. " +
354
+ "Settlement distributes funds to all depositors so post conditions are in Allow mode. " +
355
+ "There is no guarantee settlement succeeds (e.g. if oracle update fails), but this is " +
356
+ "the most reliable path. Only works after deposits have been closed (buffer/settle phase).",
357
+ }, async () => {
358
+ try {
359
+ const data = await jingswapGet("/api/auction/cycle-state");
360
+ if (data.phase === 0) {
361
+ throw new Error("Cannot settle — auction is still in deposit phase. Close deposits first.");
362
+ }
363
+ // Fetch fresh Pyth VAAs from backend
364
+ const vaas = await jingswapGet("/api/auction/pyth-vaas");
365
+ const btcVaaBuffer = bufferCV(Buffer.from(vaas.btcVaaHex, "hex"));
366
+ const stxVaaBuffer = bufferCV(Buffer.from(vaas.stxVaaHex, "hex"));
367
+ const account = await getAccount();
368
+ const result = await callContract(account, {
369
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
370
+ contractName: JINGSWAP_CONTRACT_NAME,
371
+ functionName: "settle-with-refresh",
372
+ functionArgs: [
373
+ btcVaaBuffer,
374
+ stxVaaBuffer,
375
+ contractPrincipalCV(PYTH_CONTRACTS.storage.address, PYTH_CONTRACTS.storage.name),
376
+ contractPrincipalCV(PYTH_CONTRACTS.decoder.address, PYTH_CONTRACTS.decoder.name),
377
+ contractPrincipalCV(PYTH_CONTRACTS.wormhole.address, PYTH_CONTRACTS.wormhole.name),
378
+ ],
379
+ postConditionMode: PostConditionMode.Allow,
380
+ postConditions: [],
381
+ });
382
+ return createJsonResponse({
383
+ success: true,
384
+ txid: result.txid,
385
+ action: "settle-with-refresh",
386
+ cycle: data.currentCycle,
387
+ network: NETWORK,
388
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
389
+ });
390
+ }
391
+ catch (error) {
392
+ return createErrorResponse(error);
393
+ }
394
+ });
395
+ // ── Cancel Cycle ─────────────────────────────────────────────
396
+ server.registerTool("jingswap_cancel_cycle", {
397
+ description: "Cancel the current auction cycle if settlement has failed for too long. " +
398
+ "Can only be called 530 blocks (~17.5 min) after deposits were closed " +
399
+ "(BUFFER_BLOCKS 30 + CANCEL_THRESHOLD 500). " +
400
+ "Rolls all deposits into the next cycle — no refunds, users can withdraw " +
401
+ "individually during the next deposit phase. This is the safety valve.",
402
+ }, async () => {
403
+ try {
404
+ const data = await jingswapGet("/api/auction/cycle-state");
405
+ if (data.phase === 0) {
406
+ throw new Error("Cannot cancel cycle — auction is still in deposit phase");
407
+ }
408
+ const account = await getAccount();
409
+ const result = await callContract(account, {
410
+ contractAddress: JINGSWAP_CONTRACT_ADDRESS,
411
+ contractName: JINGSWAP_CONTRACT_NAME,
412
+ functionName: "cancel-cycle",
413
+ functionArgs: [],
414
+ postConditionMode: PostConditionMode.Allow,
415
+ postConditions: [],
416
+ });
417
+ return createJsonResponse({
418
+ success: true,
419
+ txid: result.txid,
420
+ action: "cancel-cycle",
421
+ cycle: data.currentCycle,
422
+ network: NETWORK,
423
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
424
+ });
425
+ }
426
+ catch (error) {
427
+ return createErrorResponse(error);
428
+ }
429
+ });
430
+ // ── Oracle Prices ────────────────────────────────────────────
431
+ server.registerTool("jingswap_get_prices", {
432
+ description: "Get current oracle and DEX prices used by the Jingswap auction. " +
433
+ "Returns Pyth oracle prices (BTC/USD, STX/USD with confidence and freshness), " +
434
+ "on-chain DEX prices (XYK pool with TVL, DLMM), and the derived STX/BTC price.",
435
+ }, async () => {
436
+ try {
437
+ const [pyth, dex] = await Promise.all([
438
+ jingswapGet("/api/auction/pyth-prices"),
439
+ jingswapGet("/api/auction/dex-price"),
440
+ ]);
441
+ // Compute human-readable STX/BTC prices
442
+ const xykStxPerBtc = dex.xykBalances && dex.xykBalances.xBalance > 0
443
+ ? (dex.xykBalances.yBalance / dex.xykBalances.xBalance / 1e6) * 1e8
444
+ : null;
445
+ // dlmmPrice is fixed-point: multiply by 1e-10 to get STX/BTC ratio, then invert
446
+ const dlmmStxPerBtc = dex.dlmmPrice && dex.dlmmPrice > 0
447
+ ? Math.round((1 / (dex.dlmmPrice * 1e-10)) * 100) / 100
448
+ : null;
449
+ return createJsonResponse({
450
+ pyth,
451
+ dex: {
452
+ ...dex,
453
+ xykStxPerBtc: xykStxPerBtc ? Math.round(xykStxPerBtc * 100) / 100 : null,
454
+ dlmmStxPerBtc,
455
+ },
456
+ _hint: {
457
+ xykStxPerBtc: "STX per BTC from XYK pool",
458
+ dlmmStxPerBtc: "STX per BTC from DLMM pool",
459
+ xykPrice: "Raw contract value — use xykStxPerBtc instead",
460
+ dlmmPrice: "Raw fixed-point (×1e-10 = STX/BTC ratio) — use dlmmStxPerBtc instead",
461
+ xBalance: "sBTC in sats (÷1e8 for BTC)",
462
+ yBalance: "STX in micro-STX (÷1e6 for STX)",
463
+ },
464
+ });
465
+ }
466
+ catch (error) {
467
+ return createErrorResponse(error);
468
+ }
469
+ });
470
+ }
471
+ //# sourceMappingURL=jingswap.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jingswap.tools.js","sourceRoot":"","sources":["../../src/tools/jingswap.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerNostrTools(server: McpServer): void;
3
+ //# sourceMappingURL=nostr.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nostr.tools.d.ts","sourceRoot":"","sources":["../../src/tools/nostr.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoGpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgZ1D"}