@aibtc/mcp-server 1.52.0 → 1.54.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.
@@ -7,12 +7,22 @@
7
7
  * Endpoint pattern: /v1/{chain}/{resource}
8
8
  * Default chain: stacks
9
9
  */
10
+ export interface TeneroFetchOptions {
11
+ /**
12
+ * Abort signal for caller-controlled cancellation/timeouts. Tenero has
13
+ * been observed to stall 15-30s on tokens that haven't traded recently;
14
+ * callers that fan out parallel lookups should bound each call with
15
+ * `AbortSignal.timeout(...)`.
16
+ */
17
+ signal?: AbortSignal;
18
+ }
10
19
  /**
11
20
  * Get token details including metadata, price, and volume.
12
21
  * @param contractId - Token contract address (e.g. SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex)
13
22
  * @param chain - Chain to query (default: stacks)
23
+ * @param options - Optional fetch controls (e.g. `signal` for timeouts).
14
24
  */
15
- export declare function getTokenInfo(contractId: string, chain?: string): Promise<unknown>;
25
+ export declare function getTokenInfo(contractId: string, chain?: string, options?: TeneroFetchOptions): Promise<unknown>;
16
26
  /**
17
27
  * Get token market summary including price history, volume, and pool liquidity.
18
28
  * @param contractId - Token contract address
@@ -1 +1 @@
1
- {"version":3,"file":"tenero-api.d.ts","sourceRoot":"","sources":["../../src/services/tenero-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAIlB"}
1
+ {"version":3,"file":"tenero-api.d.ts","sourceRoot":"","sources":["../../src/services/tenero-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAqBD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAW,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,KAAK,SAAK,EACV,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,SAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAIlB"}
@@ -8,8 +8,10 @@
8
8
  * Default chain: stacks
9
9
  */
10
10
  const TENERO_BASE = "https://api.tenero.io";
11
- async function fetchTenero(path) {
12
- const response = await fetch(`${TENERO_BASE}${path}`);
11
+ async function fetchTenero(path, options) {
12
+ const response = await fetch(`${TENERO_BASE}${path}`, {
13
+ signal: options?.signal,
14
+ });
13
15
  if (!response.ok) {
14
16
  const text = await response.text().catch(() => "Unknown error");
15
17
  throw new Error(`Tenero API error ${response.status}: ${text}`);
@@ -21,9 +23,10 @@ async function fetchTenero(path) {
21
23
  * Get token details including metadata, price, and volume.
22
24
  * @param contractId - Token contract address (e.g. SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex)
23
25
  * @param chain - Chain to query (default: stacks)
26
+ * @param options - Optional fetch controls (e.g. `signal` for timeouts).
24
27
  */
25
- export async function getTokenInfo(contractId, chain = "stacks") {
26
- return fetchTenero(`/v1/${chain}/tokens/${contractId}`);
28
+ export async function getTokenInfo(contractId, chain = "stacks", options) {
29
+ return fetchTenero(`/v1/${chain}/tokens/${contractId}`, options);
27
30
  }
28
31
  /**
29
32
  * Get token market summary including price history, volume, and pool liquidity.
@@ -1 +1 @@
1
- {"version":3,"file":"tenero-api.js","sourceRoot":"","sources":["../../src/services/tenero-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenero-api.js","sourceRoot":"","sources":["../../src/services/tenero-api.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,39 @@
1
1
  /**
2
- * Bounty Scanner Tools
2
+ * Bounty Tools — native aibtc.com/api/bounties
3
3
  *
4
- * Tools for interacting with the bounty.drx4.xyz sBTC bounty board.
5
- * Agents can list open bounties, view details, score against their capabilities,
6
- * claim tasks, check status, and review their submission history.
4
+ * First-party bounty board on aibtc.com. Replaces the prior bounty.drx4.xyz proxy
5
+ * (issue #524). Status is derived from timestamps at response time, not stored:
7
6
  *
8
- * Read-only tools (no auth required):
9
- * - bounty_list — List bounties with optional filters
10
- * - bounty_get — Full detail for a single bounty by ID
11
- * - bounty_match — Score open bounties against agent capability tags
12
- * - bounty_status — Check claim/submission status for a bounty
13
- * - bounty_my_claims — List all claims/submissions for current wallet
14
- * - bounty_stats — Platform aggregate stats
7
+ * open → judging → winner-announced paid (terminal)
8
+ * cancelled / abandoned (terminal)
15
9
  *
16
- * Authenticated tool (requires unlocked wallet with bc1q address):
17
- * - bounty_claim Claim a bounty (BIP-322 signed)
10
+ * Read tools (no auth):
11
+ * - bounty_list list with filters (status, poster, submitter, tag)
12
+ * - bounty_get — detail with winner block + payment hint
13
+ * - bounty_submissions — paginated submissions for a bounty
18
14
  *
19
- * Authentication: BIP-322 simple signature (P2WPKH, bc1q addresses preferred).
20
- * Message format: "agent-bounties | {action} | {btc_address} | {resource} | {timestamp}"
21
- * Headers: X-BTC-Address, X-Signature, X-Timestamp
15
+ * Signed write tools (BIP-322 over P2WPKH, embedded in request body):
16
+ * - bounty_create — poster posts a bounty (Genesis L2+)
17
+ * - bounty_submit — submitter posts work (Registered L1+)
18
+ * - bounty_accept — poster picks a winner
19
+ * - bounty_paid — poster proves payment with a confirmed sBTC txid
20
+ * - bounty_cancel — poster cancels before any acceptance
22
21
  *
23
- * Status flow: open claimed submitted approved → paid (or cancelled)
22
+ * Convenience views (read-only, default to current wallet's bc1q address):
23
+ * - bounty_my_posted — bounties this wallet has posted
24
+ * - bounty_my_submissions — bounties this wallet has submitted to
24
25
  *
25
- * Reference: https://bounty.drx4.xyz/api
26
+ * Signed-message format (no hashing — fields are inlined with " | "):
27
+ * AIBTC Bounty Create | {posterBtc} | {title} | {description} | {rewardSats} | {expiresAt} | {tagsCommaJoined} | {signedAt}
28
+ * AIBTC Bounty Submit | {bountyId} | {submitterBtc} | {message} | {contentUrl} | {signedAt}
29
+ * AIBTC Bounty Accept | {bountyId} | {submissionId} | {signedAt}
30
+ * AIBTC Bounty Paid | {bountyId} | {txid} | {signedAt}
31
+ * AIBTC Bounty Cancel | {bountyId} | {signedAt}
32
+ *
33
+ * `tagsCommaJoined` is `tags.join(",")` or `""` when no tags. `contentUrl` is `""`
34
+ * when omitted. `signedAt` is ISO 8601 within ±5 minutes of server time.
35
+ *
36
+ * Reference: https://aibtc.com/docs/bounties.txt, https://aibtc.com/api/openapi.json
26
37
  */
27
38
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
28
39
  export declare function registerBountyScannerTools(server: McpServer): void;
@@ -1 +1 @@
1
- {"version":3,"file":"bounty-scanner.tools.d.ts","sourceRoot":"","sources":["../../src/tools/bounty-scanner.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkEpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAselE"}
1
+ {"version":3,"file":"bounty-scanner.tools.d.ts","sourceRoot":"","sources":["../../src/tools/bounty-scanner.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6GpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4alE"}