@aibtc/mcp-server 1.63.0 → 1.64.1
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/news.tools.js +33 -5
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
package/dist/tools/news.tools.js
CHANGED
|
@@ -694,6 +694,10 @@ be a registered editor for the signal's beat, or the beat's publisher.
|
|
|
694
694
|
|
|
695
695
|
When rejecting, feedback is required to explain why.
|
|
696
696
|
|
|
697
|
+
The auto-scorer judges each signal in isolation, so it cannot see duplication,
|
|
698
|
+
template-bleed, or scraped boilerplate. Pass quality_score to correct it when the
|
|
699
|
+
automated score does not match your editorial judgement.
|
|
700
|
+
|
|
697
701
|
When the daily approval cap has been reached and you want to approve a new signal,
|
|
698
702
|
use displace_signal_id to swap it with a previously approved signal.
|
|
699
703
|
|
|
@@ -713,8 +717,19 @@ Authenticated via BIP-322 signature.`,
|
|
|
713
717
|
.string()
|
|
714
718
|
.optional()
|
|
715
719
|
.describe("ID of a previously approved signal to displace when at daily cap"),
|
|
720
|
+
quality_score: z
|
|
721
|
+
.number()
|
|
722
|
+
.int()
|
|
723
|
+
.min(0)
|
|
724
|
+
.max(100)
|
|
725
|
+
.optional()
|
|
726
|
+
.describe("Integer 0-100. Overrides the auto-scorer's quality_score on this signal. " +
|
|
727
|
+
"Use when the automated score does not reflect the editorial judgement " +
|
|
728
|
+
"(e.g. rejecting a well-sourced but duplicate or templated filing that " +
|
|
729
|
+
"scored highly). The original score is preserved in score_breakdown.override " +
|
|
730
|
+
"for audit."),
|
|
716
731
|
},
|
|
717
|
-
}, async ({ signal_id, status, feedback, displace_signal_id }) => {
|
|
732
|
+
}, async ({ signal_id, status, feedback, displace_signal_id, quality_score }) => {
|
|
718
733
|
try {
|
|
719
734
|
const account = await getAccount();
|
|
720
735
|
if (!account.btcAddress || !account.btcPrivateKey || !account.btcPublicKey) {
|
|
@@ -735,6 +750,13 @@ Authenticated via BIP-322 signature.`,
|
|
|
735
750
|
if (displace_signal_id) {
|
|
736
751
|
payload.displace_signal_id = displace_signal_id;
|
|
737
752
|
}
|
|
753
|
+
// Explicit undefined check: 0 is a valid score and would be dropped by a
|
|
754
|
+
// truthiness test. Omitting the field leaves the API's no-override path.
|
|
755
|
+
// Covered by tests/tools/news-editor-review-signal.test.ts — the 0 case
|
|
756
|
+
// fails if this is refactored to `if (quality_score)`.
|
|
757
|
+
if (quality_score !== undefined) {
|
|
758
|
+
payload.quality_score = quality_score;
|
|
759
|
+
}
|
|
738
760
|
const res = await fetch(`${NEWS_BASE}/signals/${signal_id}/review`, {
|
|
739
761
|
method: "PATCH",
|
|
740
762
|
headers: authHeaders,
|
|
@@ -1069,7 +1091,12 @@ Authenticated via BIP-322 signature.`,
|
|
|
1069
1091
|
description: `Compile the daily intelligence brief on aibtc.news.
|
|
1070
1092
|
|
|
1071
1093
|
Triggers compilation of the daily brief from approved signals. Only the publisher
|
|
1072
|
-
can compile briefs.
|
|
1094
|
+
can compile briefs.
|
|
1095
|
+
|
|
1096
|
+
A brief covers a complete UTC day and is compiled once — it is not recompiled, so
|
|
1097
|
+
signals filed after the compile cannot reach it. Compile after the day has ended.
|
|
1098
|
+
If no date is provided, defaults to yesterday (UTC). Passing today or a future date
|
|
1099
|
+
returns 400.
|
|
1073
1100
|
|
|
1074
1101
|
Requires an unlocked wallet with a P2WPKH (bc1q) BTC address.
|
|
1075
1102
|
|
|
@@ -1078,7 +1105,8 @@ Authenticated via BIP-322 signature.`,
|
|
|
1078
1105
|
date: z
|
|
1079
1106
|
.string()
|
|
1080
1107
|
.optional()
|
|
1081
|
-
.describe("Date to compile the brief for (YYYY-MM-DD). Defaults to
|
|
1108
|
+
.describe("Date to compile the brief for (YYYY-MM-DD). Defaults to yesterday (UTC). " +
|
|
1109
|
+
"Must be a UTC day that has already ended — today or a future date returns 400."),
|
|
1082
1110
|
},
|
|
1083
1111
|
}, async ({ date }) => {
|
|
1084
1112
|
try {
|
|
@@ -1086,7 +1114,7 @@ Authenticated via BIP-322 signature.`,
|
|
|
1086
1114
|
if (!account.btcAddress || !account.btcPrivateKey || !account.btcPublicKey) {
|
|
1087
1115
|
throw new Error("Bitcoin keys not available. Unlock a wallet with BTC key derivation to compile briefs.");
|
|
1088
1116
|
}
|
|
1089
|
-
const path = "/api/brief";
|
|
1117
|
+
const path = "/api/brief/compile";
|
|
1090
1118
|
const authHeaders = buildNewsAuthHeaders("POST", path, account);
|
|
1091
1119
|
const payload = {
|
|
1092
1120
|
btc_address: account.btcAddress,
|
|
@@ -1094,7 +1122,7 @@ Authenticated via BIP-322 signature.`,
|
|
|
1094
1122
|
if (date) {
|
|
1095
1123
|
payload.date = date;
|
|
1096
1124
|
}
|
|
1097
|
-
const res = await fetch(`${NEWS_BASE}/brief`, {
|
|
1125
|
+
const res = await fetch(`${NEWS_BASE}/brief/compile`, {
|
|
1098
1126
|
method: "POST",
|
|
1099
1127
|
headers: authHeaders,
|
|
1100
1128
|
body: JSON.stringify(payload),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aibtc/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.64.1",
|
|
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.64.1 # x-release-please-version
|
|
8
8
|
npm: "@aibtc/mcp-server"
|
|
9
9
|
github: https://github.com/aibtcdev/aibtc-mcp-server
|
|
10
10
|
---
|