@t2000/mcp 0.22.22 → 0.22.24
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/README.md +1 -4
- package/dist/bin.js +0 -99
- package/dist/bin.js.map +1 -1
- package/dist/index.js +0 -99
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -264,45 +264,6 @@ Call t2000_services first to discover the right endpoint, then t2000_pay to exec
|
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
);
|
|
267
|
-
server.tool(
|
|
268
|
-
"t2000_sentinel_list",
|
|
269
|
-
"List active Sui Sentinels \u2014 AI agents with prize pools you can attack. Shows name, attack fee, prize pool, and attack count. Use this for bounty hunting.",
|
|
270
|
-
{},
|
|
271
|
-
async () => {
|
|
272
|
-
try {
|
|
273
|
-
const sentinels = await agent.sentinelList();
|
|
274
|
-
const serializable = sentinels.map((s) => ({
|
|
275
|
-
...s,
|
|
276
|
-
attackFee: s.attackFee.toString(),
|
|
277
|
-
attackFeeSui: Number(s.attackFee) / 1e9,
|
|
278
|
-
prizePool: s.prizePool.toString(),
|
|
279
|
-
prizePoolSui: Number(s.prizePool) / 1e9
|
|
280
|
-
}));
|
|
281
|
-
return { content: [{ type: "text", text: JSON.stringify(serializable) }] };
|
|
282
|
-
} catch (err) {
|
|
283
|
-
return errorResult(err);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
);
|
|
287
|
-
server.tool(
|
|
288
|
-
"t2000_sentinel_info",
|
|
289
|
-
"Get detailed info about a specific Sui Sentinel \u2014 model, system prompt, prize pool, attack history. Use the sentinel ID or object ID from t2000_sentinel_list.",
|
|
290
|
-
{ id: z.string().describe("Sentinel agent ID or object ID") },
|
|
291
|
-
async ({ id }) => {
|
|
292
|
-
try {
|
|
293
|
-
const s = await agent.sentinelInfo(id);
|
|
294
|
-
return { content: [{ type: "text", text: JSON.stringify({
|
|
295
|
-
...s,
|
|
296
|
-
attackFee: s.attackFee.toString(),
|
|
297
|
-
attackFeeSui: Number(s.attackFee) / 1e9,
|
|
298
|
-
prizePool: s.prizePool.toString(),
|
|
299
|
-
prizePoolSui: Number(s.prizePool) / 1e9
|
|
300
|
-
}) }] };
|
|
301
|
-
} catch (err) {
|
|
302
|
-
return errorResult(err);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
);
|
|
306
267
|
server.tool(
|
|
307
268
|
"t2000_contacts",
|
|
308
269
|
"List saved contacts (name \u2192 address mappings). Use contact names with t2000_send instead of raw addresses. Use t2000_contact_add to save new contacts.",
|
|
@@ -878,24 +839,6 @@ ${text}`;
|
|
|
878
839
|
}
|
|
879
840
|
}
|
|
880
841
|
);
|
|
881
|
-
server.tool(
|
|
882
|
-
"t2000_sentinel_attack",
|
|
883
|
-
"Attack a Sui Sentinel with a prompt to try to breach its defenses and win the prize pool. Costs SUI (the attack fee). Use t2000_sentinel_list to find targets first.",
|
|
884
|
-
{
|
|
885
|
-
id: z.string().describe("Sentinel agent ID or object ID to attack"),
|
|
886
|
-
prompt: z.string().describe("Your attack prompt \u2014 try to make the AI do something its system prompt forbids"),
|
|
887
|
-
fee: z.number().optional().describe("Override attack fee in SUI (default: sentinel's listed fee)")
|
|
888
|
-
},
|
|
889
|
-
async ({ id, prompt, fee }) => {
|
|
890
|
-
try {
|
|
891
|
-
const feeMist = fee ? BigInt(Math.round(fee * 1e9)) : void 0;
|
|
892
|
-
const result = await mutex.run(() => agent.sentinelAttack(id, prompt, feeMist));
|
|
893
|
-
return { content: [{ type: "text", text: JSON.stringify(result) }] };
|
|
894
|
-
} catch (err) {
|
|
895
|
-
return errorResult(err);
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
);
|
|
899
842
|
server.tool(
|
|
900
843
|
"t2000_contact_add",
|
|
901
844
|
'Save a contact name \u2192 Sui address mapping. After saving, use the name with t2000_send instead of pasting addresses. Example: save "Tom" as 0x1234... then send to "Tom".',
|
|
@@ -1609,47 +1552,6 @@ ${context}
|
|
|
1609
1552
|
};
|
|
1610
1553
|
}
|
|
1611
1554
|
);
|
|
1612
|
-
server.prompt(
|
|
1613
|
-
"sentinel-hunt",
|
|
1614
|
-
"Browse sentinel bounties, pick the best target, and attack \u2014 guided bounty hunting workflow.",
|
|
1615
|
-
async () => ({
|
|
1616
|
-
messages: [{
|
|
1617
|
-
role: "user",
|
|
1618
|
-
content: {
|
|
1619
|
-
type: "text",
|
|
1620
|
-
text: [
|
|
1621
|
-
"You are a bounty hunting strategist for Sui Sentinel \u2014 a game where you try to jailbreak AI agents to win their prize pool.",
|
|
1622
|
-
"",
|
|
1623
|
-
"IMPORTANT: Call t2000_sentinel_list and t2000_balance in parallel.",
|
|
1624
|
-
"",
|
|
1625
|
-
"\u{1F3AF} SENTINEL BOUNTY HUNT",
|
|
1626
|
-
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
|
|
1627
|
-
"",
|
|
1628
|
-
"Step 1 \u2014 Show the best targets:",
|
|
1629
|
-
" Rank sentinels by reward-to-fee ratio (prize pool \xF7 attack fee)",
|
|
1630
|
-
" Show top 5 targets in a table: Name | Fee | Prize Pool | Ratio | Attacks",
|
|
1631
|
-
" Highlight the best value target",
|
|
1632
|
-
"",
|
|
1633
|
-
"Step 2 \u2014 Recommend a target:",
|
|
1634
|
-
" Explain WHY this target is good (high ratio, fewer attempts = less refined defense)",
|
|
1635
|
-
" Show the attack fee and confirm the user can afford it",
|
|
1636
|
-
"",
|
|
1637
|
-
"Step 3 \u2014 Craft the attack:",
|
|
1638
|
-
" If the user picks a target, call t2000_sentinel_info to see its system prompt",
|
|
1639
|
-
" Help the user craft a jailbreak prompt based on the sentinel's system prompt",
|
|
1640
|
-
" Common techniques: role-play scenarios, hypotheticals, emotional appeals, format tricks",
|
|
1641
|
-
" WARNING: Never suggest harmful content \u2014 this is a game about creative prompt engineering",
|
|
1642
|
-
"",
|
|
1643
|
-
"Step 4 \u2014 Execute:",
|
|
1644
|
-
" Run t2000_sentinel_attack with the chosen id and prompt",
|
|
1645
|
-
" Show: score, win/lose, agent response, jury verdict, fee paid",
|
|
1646
|
-
" If they won: celebrate and show the prize!",
|
|
1647
|
-
" If they lost: analyze the response and suggest a different approach for next attempt"
|
|
1648
|
-
].join("\n")
|
|
1649
|
-
}
|
|
1650
|
-
}]
|
|
1651
|
-
})
|
|
1652
|
-
);
|
|
1653
1555
|
server.prompt(
|
|
1654
1556
|
"onboarding",
|
|
1655
1557
|
"New user setup guide \u2014 deposit, first save, set safeguards, explore features.",
|
|
@@ -1694,7 +1596,6 @@ ${context}
|
|
|
1694
1596
|
" - Rebalance \u2014 auto-optimize yield across protocols",
|
|
1695
1597
|
" - Borrow against savings",
|
|
1696
1598
|
" - Send money to contacts",
|
|
1697
|
-
" - Hunt sentinel bounties (jailbreak AI agents for prizes)",
|
|
1698
1599
|
" - Safeguards: per-tx limits, daily caps, emergency lock"
|
|
1699
1600
|
].join("\n")
|
|
1700
1601
|
}
|