@gblin-protocol/mcp-server 0.1.21 → 0.2.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/config.d.ts CHANGED
@@ -16,6 +16,7 @@ export declare const GBLIN_TIMELOCK: Address;
16
16
  export declare const GBLIN_GUARDIAN: Address;
17
17
  export declare const EXPECTED_MIN_DELAY_SECONDS = 172800n;
18
18
  export declare const ETH_USD_FEED: Address;
19
+ export declare const GBLIN_ATTESTOR: Address;
19
20
  export declare const WETH_USDC_POOL_FEE = 500;
20
21
  export declare const MIN_DEPOSIT_WEI = 500000000000000n;
21
22
  export declare const COOLDOWN_SECONDS = 120;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMpC,eAAO,MAAM,eAAe,QAAc,CAAC;AAG3C,eAAO,MAAM,aAAa,OAAO,CAAC;AAGlC,eAAO,MAAM,eAAe,oCAAoC,CAAC;AAiBjE,eAAO,MAAM,OAAO,QAC4C,CAAC;AAGjE,eAAO,MAAM,QAAQ,EAAE,OAAsD,CAAC;AAC9E,eAAO,MAAM,IAAI,EAAE,OAAsD,CAAC;AAC1E,eAAO,MAAM,IAAI,EAAE,OAAsD,CAAC;AAI1E,eAAO,MAAM,cAAc,EAAE,OAAsD,CAAC;AAEpF,eAAO,MAAM,cAAc,EAAE,OAAsD,CAAC;AACpF,eAAO,MAAM,0BAA0B,UAAW,CAAC;AAGnD,eAAO,MAAM,YAAY,EAAE,OAAsD,CAAC;AAGlF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,eAAO,MAAM,eAAe,mBAAuB,CAAC;AACpD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAI/C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,eAAe,SAAU,CAAC;AAGvC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAG1C,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,QAAc,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMpC,eAAO,MAAM,eAAe,QAAc,CAAC;AAG3C,eAAO,MAAM,aAAa,OAAO,CAAC;AAGlC,eAAO,MAAM,eAAe,oCAAoC,CAAC;AAiBjE,eAAO,MAAM,OAAO,QAC4C,CAAC;AAGjE,eAAO,MAAM,QAAQ,EAAE,OAAsD,CAAC;AAC9E,eAAO,MAAM,IAAI,EAAE,OAAsD,CAAC;AAC1E,eAAO,MAAM,IAAI,EAAE,OAAsD,CAAC;AAI1E,eAAO,MAAM,cAAc,EAAE,OAAsD,CAAC;AAEpF,eAAO,MAAM,cAAc,EAAE,OAAsD,CAAC;AACpF,eAAO,MAAM,0BAA0B,UAAW,CAAC;AAGnD,eAAO,MAAM,YAAY,EAAE,OAAsD,CAAC;AASlF,eAAO,MAAM,cAAc,EAAE,OAGqB,CAAC;AAGnD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,eAAO,MAAM,eAAe,mBAAuB,CAAC;AACpD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAI/C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,eAAe,SAAU,CAAC;AAGvC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAG1C,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,QAAc,CAAC"}
package/dist/config.js CHANGED
@@ -40,6 +40,16 @@ export const GBLIN_GUARDIAN = "0x30590c0D05c26562d7296CE3D927d3418d2e6dcA";
40
40
  export const EXPECTED_MIN_DELAY_SECONDS = 172800n; // 48 hours
41
41
  // Chainlink ETH/USD price feed on Base
42
42
  export const ETH_USD_FEED = "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70";
43
+ // ─── Risk Attestation ────────────────────────────────────────────────────────
44
+ // GBLIN's published attestor address — the EOA that EIP-712-signs Risk
45
+ // Attestations served by https://gblin.digital/api/x402/attestation. This key
46
+ // only signs off-chain messages: it never holds funds and never sends txs.
47
+ // Agents treat this as the trusted signer when verifying attestations via
48
+ // verify_risk_attestation. Override with GBLIN_ATTESTOR_ADDRESS to rotate it.
49
+ const _attestorEnv = process.env.GBLIN_ATTESTOR_ADDRESS;
50
+ export const GBLIN_ATTESTOR = _attestorEnv && /^0x[0-9a-fA-F]{40}$/.test(_attestorEnv)
51
+ ? _attestorEnv
52
+ : "0x3ae65d36e8b1d82B0B80669E769A3dc300D543e4";
43
53
  // Uniswap V3 pool fee tier for the WETH->USDC leg of the JIT redemption
44
54
  export const WETH_USDC_POOL_FEE = 500; // 0.05%
45
55
  // ─── Protocol Constants (mirrors GBLIN_V6.sol) ──────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,sEAAsE;AACtE,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,iCAAiC,CAAC;AAEjE,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAC1C,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,KAAK,CACX,8BAA8B,OAAO,+CAA+C,eAAe,EAAE,CACtG,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,MAAM,OAAO,GAClB,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAEjE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAAY,4CAA4C,CAAC;AAC9E,MAAM,CAAC,MAAM,IAAI,GAAY,4CAA4C,CAAC;AAC1E,MAAM,CAAC,MAAM,IAAI,GAAY,4CAA4C,CAAC;AAE1E,2EAA2E;AAC3E,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAY,4CAA4C,CAAC;AACpF,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAY,4CAA4C,CAAC;AACpF,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAQ,CAAC,CAAC,WAAW;AAE/D,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAY,4CAA4C,CAAC;AAElF,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAC,QAAQ;AAE/C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAoB,CAAC,CAAC,aAAa;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,kCAAkC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,CAAC,0BAA0B;AAE1E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,CAAC,qBAAqB;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAO,CAAC;AAEvC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,aAAa;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,aAAa;AAExD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/init.js CHANGED
@@ -62,11 +62,12 @@ if x402_invoice_arrives AND usdc_balance < invoice_amount:
62
62
  call swap_gblin_to_usdc_jit, then pay
63
63
  \`\`\`
64
64
 
65
- ## The 9 tools
65
+ ## The 10 tools
66
66
 
67
67
  | Tool | When to call it |
68
68
  | --- | --- |
69
69
  | \`get_market_risk_regime\` | BTC/ETH risk regime (calm/elevated/crash) + posture — $0.002 |
70
+ | \`verify_risk_attestation\` | Verify a peer's Risk Attestation (integrity + signature + freshness) — free |
70
71
  | \`get_treasury_state\` | Read live NAV, basket weights, Crash Shield status |
71
72
  | \`quote_safe_swap\` | Preview a buy/sell with MEV-safe \`minOut\` |
72
73
  | \`swap_gblin_to_usdc_jit\` | Pay an x402 invoice — atomic GBLIN→USDC swap |
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
package/dist/paywall.d.ts CHANGED
@@ -26,7 +26,11 @@ export interface PaywallDef {
26
26
  /**
27
27
  * Tool pricing.
28
28
  * Free tools (get_treasury_state, quote_safe_swap, get_governance_state,
29
- * share_skill_with_peer) are not in this table.
29
+ * share_skill_with_peer, verify_risk_attestation) are not in this table.
30
+ *
31
+ * Note: verify_risk_attestation is deliberately FREE — verifying a peer's
32
+ * attestation exposes that agent to GBLIN and drives PAID calls to the
33
+ * /api/x402/attestation minting endpoint on the webapp (adoption flywheel).
30
34
  */
31
35
  export declare const TOOL_PRICES: Record<string, PaywallDef>;
32
36
  declare const PaymentProofSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"paywall.d.ts","sourceRoot":"","sources":["../src/paywall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAQlD,CAAC;AAIF,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAa9D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,IAE9B,SAAS,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC,CA+ClD"}
1
+ {"version":3,"file":"paywall.d.ts","sourceRoot":"","sources":["../src/paywall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAQlD,CAAC;AAIF,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAa9D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,IAE9B,SAAS,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC,CA+ClD"}
package/dist/paywall.js CHANGED
@@ -26,7 +26,11 @@ const DEFAULT_RECIPIENT = "0x0ebA5d314F4f5Dcb7A094953Fa9311a45172dd1B";
26
26
  /**
27
27
  * Tool pricing.
28
28
  * Free tools (get_treasury_state, quote_safe_swap, get_governance_state,
29
- * share_skill_with_peer) are not in this table.
29
+ * share_skill_with_peer, verify_risk_attestation) are not in this table.
30
+ *
31
+ * Note: verify_risk_attestation is deliberately FREE — verifying a peer's
32
+ * attestation exposes that agent to GBLIN and drives PAID calls to the
33
+ * /api/x402/attestation minting endpoint on the webapp (adoption flywheel).
30
34
  */
31
35
  export const TOOL_PRICES = {
32
36
  get_market_risk_regime: { priceUsdc: "0.002", priceLabel: "$0.002 USDC per call" },
@@ -1 +1 @@
1
- {"version":3,"file":"paywall.js","sourceRoot":"","sources":["../src/paywall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paywall.js","sourceRoot":"","sources":["../src/paywall.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -1,16 +1,18 @@
1
1
  /**
2
2
  * GBLIN MCP — Tool Implementations
3
3
  *
4
- * Eight focused tools. Each returns structured JSON the LLM can parse:
4
+ * Ten focused tools. Each returns structured JSON the LLM can parse:
5
5
  *
6
- * 1. get_treasury_state → NAV, basket, Crash Shield (snapshot)
7
- * 2. quote_safe_swap → preview a buy/sell with safe minOut
8
- * 3. swap_gblin_to_usdc_jit → calldata for Just-In-Time x402 payment
9
- * 4. invest_usdc_to_gblin → calldata to convert USDC earnings → GBLIN
10
- * 5. analyze_treasury_health → balances + gas check + runway estimate
11
- * 6. get_governance_state → verify 48h timelock ownership + pending ops
12
- * 7. share_skill_with_peer → portable JSON skill seed + referral code
13
- * 8. find_keeper_bounty → check rebalance bounty availability + calldata
6
+ * 1. get_treasury_state → NAV, basket, Crash Shield (snapshot)
7
+ * 2. quote_safe_swap → preview a buy/sell with safe minOut
8
+ * 3. swap_gblin_to_usdc_jit → calldata for Just-In-Time x402 payment
9
+ * 4. invest_usdc_to_gblin → calldata to convert USDC earnings → GBLIN
10
+ * 5. analyze_treasury_health → balances + gas check + runway estimate (PAID)
11
+ * 6. get_governance_state → verify 48h timelock ownership + pending ops
12
+ * 7. share_skill_with_peer → portable JSON skill seed + referral code
13
+ * 8. find_keeper_bounty → check rebalance bounty availability + calldata (PAID)
14
+ * 9. get_market_risk_regime → on-chain BTC/ETH risk regime signal (PAID)
15
+ * 10. verify_risk_attestation → verify a perishable Risk Attestation (FREE)
14
16
  */
15
17
  export declare const GET_TREASURY_STATE_DEFINITION: {
16
18
  name: string;
@@ -165,6 +167,26 @@ export declare const MARKET_RISK_DEFINITION: {
165
167
  additionalProperties: boolean;
166
168
  };
167
169
  };
170
+ export declare const VERIFY_ATTESTATION_DEFINITION: {
171
+ name: string;
172
+ description: string;
173
+ inputSchema: {
174
+ type: "object";
175
+ properties: {
176
+ attestation: {
177
+ type: string;
178
+ description: string;
179
+ };
180
+ expected_attestor: {
181
+ type: string;
182
+ description: string;
183
+ pattern: string;
184
+ };
185
+ };
186
+ required: string[];
187
+ additionalProperties: boolean;
188
+ };
189
+ };
168
190
  export declare const TOOL_DEFINITIONS: ({
169
191
  name: string;
170
192
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0GH,eAAO,MAAM,6BAA6B;;;;;;;;CASzC,CAAC;AAEF,wBAAsB,sBAAsB;;;;;GAgC3C;AAaD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;CAgBtC,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO;;;;;GAoEtD;AAeD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;CAgB/B,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO;;;;;GAsGhD;AAWD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;CAmB7B,CAAC;AAEF,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO;;;;;GA0F/C;AAeD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;CAoBvC,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,OAAO;;;;;GAsGxD;AAgBD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;CAe3C,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,OAAO;;;;;GAqP3D;AAyMD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAclC,CAAC;AA0DF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAU5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAgB7E,CAAC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA6GH,eAAO,MAAM,6BAA6B;;;;;;;;CASzC,CAAC;AAEF,wBAAsB,sBAAsB;;;;;GAgC3C;AAaD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;CAgBtC,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO;;;;;GAoEtD;AAeD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;CAgB/B,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO;;;;;GAsGhD;AAWD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;CAmB7B,CAAC;AAEF,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO;;;;;GA0F/C;AAeD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;CAoBvC,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,OAAO;;;;;GAsGxD;AAgBD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;CAe3C,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,OAAO;;;;;GAqP3D;AA2MD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAclC,CAAC;AAuFF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;CAsBzC,CAAC;AAmLF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAW5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAiB7E,CAAC"}
package/dist/tools.js CHANGED
@@ -1,24 +1,26 @@
1
1
  /**
2
2
  * GBLIN MCP — Tool Implementations
3
3
  *
4
- * Eight focused tools. Each returns structured JSON the LLM can parse:
4
+ * Ten focused tools. Each returns structured JSON the LLM can parse:
5
5
  *
6
- * 1. get_treasury_state → NAV, basket, Crash Shield (snapshot)
7
- * 2. quote_safe_swap → preview a buy/sell with safe minOut
8
- * 3. swap_gblin_to_usdc_jit → calldata for Just-In-Time x402 payment
9
- * 4. invest_usdc_to_gblin → calldata to convert USDC earnings → GBLIN
10
- * 5. analyze_treasury_health → balances + gas check + runway estimate
11
- * 6. get_governance_state → verify 48h timelock ownership + pending ops
12
- * 7. share_skill_with_peer → portable JSON skill seed + referral code
13
- * 8. find_keeper_bounty → check rebalance bounty availability + calldata
6
+ * 1. get_treasury_state → NAV, basket, Crash Shield (snapshot)
7
+ * 2. quote_safe_swap → preview a buy/sell with safe minOut
8
+ * 3. swap_gblin_to_usdc_jit → calldata for Just-In-Time x402 payment
9
+ * 4. invest_usdc_to_gblin → calldata to convert USDC earnings → GBLIN
10
+ * 5. analyze_treasury_health → balances + gas check + runway estimate (PAID)
11
+ * 6. get_governance_state → verify 48h timelock ownership + pending ops
12
+ * 7. share_skill_with_peer → portable JSON skill seed + referral code
13
+ * 8. find_keeper_bounty → check rebalance bounty availability + calldata (PAID)
14
+ * 9. get_market_risk_regime → on-chain BTC/ETH risk regime signal (PAID)
15
+ * 10. verify_risk_attestation → verify a perishable Risk Attestation (FREE)
14
16
  */
15
- import { encodeFunctionData, formatUnits, getAddress, isAddress, parseUnits, } from "viem";
17
+ import { encodeFunctionData, formatUnits, getAddress, hashTypedData, isAddress, parseUnits, recoverTypedDataAddress, } from "viem";
16
18
  import { parseAbi } from "viem";
17
19
  import { z } from "zod";
18
20
  import { ERC20_ABI, GBLIN_ABI, TIMELOCK_ABI } from "./abi.js";
19
- import { client } from "./client.js";
21
+ import { client, getOnChainTimestamp } from "./client.js";
20
22
  import { requirePayment } from "./paywall.js";
21
- import { EXPECTED_MIN_DELAY_SECONDS, GBLIN_GUARDIAN, GBLIN_TIMELOCK, GBLIN_V6, MIN_DEPOSIT_WEI, USDC, WETH, WETH_USDC_POOL_FEE, } from "./config.js";
23
+ import { EXPECTED_MIN_DELAY_SECONDS, GBLIN_ATTESTOR, GBLIN_GUARDIAN, GBLIN_TIMELOCK, GBLIN_V6, MIN_DEPOSIT_WEI, USDC, WETH, WETH_USDC_POOL_FEE, } from "./config.js";
22
24
  import { applySlippageBuffer, checkCooldown, getBasketState, getDynamicSlippage, getEthPriceUsd, getNavUsd, getWalletBalances, quoteGblinForUsdc, } from "./helpers.js";
23
25
  import { PACKAGE_VERSION } from "./config.js";
24
26
  import { findKeeperBounty } from "./keeper.js";
@@ -883,6 +885,8 @@ async function handleShareSkillWithPeer(args) {
883
885
  "get_governance_state",
884
886
  "share_skill_with_peer",
885
887
  "find_keeper_bounty",
888
+ "get_market_risk_regime",
889
+ "verify_risk_attestation",
886
890
  ],
887
891
  chain: "Base mainnet (8453)",
888
892
  contract: GBLIN_V6,
@@ -932,7 +936,7 @@ async function handleShareSkillWithPeer(args) {
932
936
  " 3. Set the GBLIN_REFERRER environment variable to: " + referralCode,
933
937
  " 4. Restart the MCP client to load the new server",
934
938
  "",
935
- "Once installed, the peer agent has the same 9 tools available. Every transaction it executes will include your referral code in the Builder Code ERC-8021 attribution, redirecting a small share of the protocol fee to your wallet (" +
939
+ "Once installed, the peer agent has the same 10 tools available. Every transaction it executes will include your referral code in the Builder Code ERC-8021 attribution, redirecting a small share of the protocol fee to your wallet (" +
936
940
  caller_wallet +
937
941
  ").",
938
942
  "",
@@ -1036,6 +1040,203 @@ async function handleMarketRiskRegime() {
1036
1040
  }
1037
1041
  }
1038
1042
  // ───────────────────────────────────────────────────────────────────────────
1043
+ // TOOL 10 — verify_risk_attestation (FREE public-good verifier — adoption flywheel)
1044
+ //
1045
+ // The counterpart to the paid /api/x402/attestation endpoint. Verifying a peer's
1046
+ // attestation is FREE on purpose: every agent that verifies one is exposed to
1047
+ // GBLIN and learns it can mint its own → drives paid calls to the attestation
1048
+ // endpoint. Keyless integrity + EIP-712 recover + live-drift, no RPC secrets.
1049
+ // ───────────────────────────────────────────────────────────────────────────
1050
+ // EIP-712 schema — MUST stay byte-for-byte identical to the webapp signer
1051
+ // (GBLIN_WEBAPP/src/app/api/x402/attestation/route.ts). Do not reorder fields.
1052
+ const ATTESTATION_EIP712_DOMAIN = {
1053
+ name: "GBLIN Risk Attestation",
1054
+ version: "1",
1055
+ chainId: 8453,
1056
+ verifyingContract: GBLIN_V6,
1057
+ };
1058
+ const ATTESTATION_EIP712_TYPES = {
1059
+ RiskAttestation: [
1060
+ { name: "regime", type: "uint8" },
1061
+ { name: "severityBps", type: "uint16" },
1062
+ { name: "defensiveCashBps", type: "uint16" },
1063
+ { name: "blockNumber", type: "uint64" },
1064
+ { name: "issuedAt", type: "uint64" },
1065
+ { name: "expiresAt", type: "uint64" },
1066
+ { name: "basketHash", type: "bytes32" },
1067
+ ],
1068
+ };
1069
+ const REGIME_LABELS = ["calm", "elevated", "crash"];
1070
+ const ZERO_ADDR = "0x0000000000000000000000000000000000000000";
1071
+ export const VERIFY_ATTESTATION_DEFINITION = {
1072
+ name: "verify_risk_attestation",
1073
+ description: "Verify a GBLIN Risk Attestation — the object returned by GBLIN's /api/x402/attestation, or a proof-of-diligence a peer agent attached to its action. FREE, no payment. Runs four checks: (1) INTEGRITY — recomputes the EIP-712 attestation_id and detects tampering; (2) AUTHENTICITY — if a signature is present, recovers the signer and checks it is GBLIN's published attestor; (3) FRESHNESS — whether it expired (10-minute TTL), using on-chain time; (4) LIVE DRIFT — compares the attested regime to the CURRENT on-chain regime and flags if it changed. Use before you trust any counterparty/peer that claims it 'checked market risk via GBLIN'.",
1074
+ inputSchema: {
1075
+ type: "object",
1076
+ properties: {
1077
+ attestation: {
1078
+ type: "object",
1079
+ description: "The full attestation object from /api/x402/attestation (must include `eip712`; `attestation_id`, `signature`, `attestor` are used when present). A JSON string of that object is also accepted.",
1080
+ },
1081
+ expected_attestor: {
1082
+ type: "string",
1083
+ description: "Optional 0x address to check the signature against. Defaults to the GBLIN attestor address baked into this MCP build (GBLIN_ATTESTOR_ADDRESS env).",
1084
+ pattern: "^0x[a-fA-F0-9]{40}$",
1085
+ },
1086
+ },
1087
+ required: ["attestation"],
1088
+ additionalProperties: false,
1089
+ },
1090
+ };
1091
+ async function handleVerifyRiskAttestation(args) {
1092
+ const a = (args ?? {});
1093
+ // Accept either a parsed object or a JSON string.
1094
+ let att = a.attestation;
1095
+ if (typeof att === "string") {
1096
+ try {
1097
+ att = JSON.parse(att);
1098
+ }
1099
+ catch {
1100
+ return toolError("`attestation` string is not valid JSON.");
1101
+ }
1102
+ }
1103
+ if (!att || typeof att !== "object") {
1104
+ return toolError("Missing `attestation` object.", "Pass the whole object returned by /api/x402/attestation.");
1105
+ }
1106
+ const eip712 = att.eip712;
1107
+ if (!eip712 || !eip712.message || !eip712.domain || !eip712.types) {
1108
+ return toolError("Attestation is missing its `eip712` payload (domain/types/message).", "Pass the whole object returned by /api/x402/attestation, including the `eip712` field.");
1109
+ }
1110
+ // Rebuild the typed message (uint64 fields as bigint for viem).
1111
+ const m = eip712.message;
1112
+ let message;
1113
+ try {
1114
+ message = {
1115
+ regime: Number(m.regime),
1116
+ severityBps: Number(m.severityBps),
1117
+ defensiveCashBps: Number(m.defensiveCashBps),
1118
+ blockNumber: BigInt(m.blockNumber),
1119
+ issuedAt: BigInt(m.issuedAt),
1120
+ expiresAt: BigInt(m.expiresAt),
1121
+ basketHash: String(m.basketHash),
1122
+ };
1123
+ }
1124
+ catch {
1125
+ return toolError("Attestation `eip712.message` fields are malformed.");
1126
+ }
1127
+ // 1. INTEGRITY — recompute the id using the CANONICAL schema from this build
1128
+ // (never trust the schema embedded in the payload for hashing).
1129
+ const recomputedId = hashTypedData({
1130
+ domain: ATTESTATION_EIP712_DOMAIN,
1131
+ types: ATTESTATION_EIP712_TYPES,
1132
+ primaryType: "RiskAttestation",
1133
+ message,
1134
+ });
1135
+ const claimedId = typeof att.attestation_id === "string" ? att.attestation_id : "";
1136
+ const integrityOk = claimedId ? recomputedId.toLowerCase() === claimedId.toLowerCase() : null;
1137
+ // The payload's OWN domain must match the canonical GBLIN domain, else it is
1138
+ // a different (untrusted) schema even if internally consistent.
1139
+ const schemaMatches = eip712.domain?.name === ATTESTATION_EIP712_DOMAIN.name &&
1140
+ String(eip712.domain?.version) === ATTESTATION_EIP712_DOMAIN.version &&
1141
+ Number(eip712.domain?.chainId) === ATTESTATION_EIP712_DOMAIN.chainId;
1142
+ // 2. AUTHENTICITY — signature recover
1143
+ const expectedAttestor = typeof a.expected_attestor === "string" && isAddress(a.expected_attestor)
1144
+ ? getAddress(a.expected_attestor)
1145
+ : GBLIN_ATTESTOR;
1146
+ let signatureOk = null;
1147
+ let recoveredSigner = null;
1148
+ let isGblinAttestor = null;
1149
+ const signature = typeof att.signature === "string" ? att.signature : null;
1150
+ if (signature) {
1151
+ try {
1152
+ recoveredSigner = await recoverTypedDataAddress({
1153
+ domain: ATTESTATION_EIP712_DOMAIN,
1154
+ types: ATTESTATION_EIP712_TYPES,
1155
+ primaryType: "RiskAttestation",
1156
+ message,
1157
+ signature: signature,
1158
+ });
1159
+ signatureOk = true;
1160
+ if (expectedAttestor.toLowerCase() !== ZERO_ADDR) {
1161
+ isGblinAttestor = recoveredSigner.toLowerCase() === expectedAttestor.toLowerCase();
1162
+ }
1163
+ }
1164
+ catch {
1165
+ signatureOk = false;
1166
+ }
1167
+ }
1168
+ // 3. FRESHNESS — prefer on-chain time
1169
+ let nowSec;
1170
+ try {
1171
+ nowSec = Number(await getOnChainTimestamp());
1172
+ }
1173
+ catch {
1174
+ nowSec = Math.floor(Date.now() / 1000);
1175
+ }
1176
+ const expiresAtNum = Number(message.expiresAt);
1177
+ const expired = nowSec >= expiresAtNum;
1178
+ const secondsToExpiry = expired ? 0 : expiresAtNum - nowSec;
1179
+ // 4. LIVE DRIFT — is the attested regime still the current on-chain regime?
1180
+ let liveRegime = null;
1181
+ let stillCurrent = null;
1182
+ try {
1183
+ const basket = await getBasketState();
1184
+ const maxCut = basket.entries
1185
+ .filter((e) => !e.isStable)
1186
+ .reduce((mx, e) => {
1187
+ const cut = e.baseWeightBps > 0
1188
+ ? Math.max(0, ((e.baseWeightBps - e.dynamicWeightBps) / e.baseWeightBps) * 100)
1189
+ : 0;
1190
+ return Math.max(mx, cut);
1191
+ }, 0);
1192
+ const liveCode = maxCut <= 0 ? 0 : maxCut < 40 ? 1 : 2;
1193
+ liveRegime = REGIME_LABELS[liveCode];
1194
+ stillCurrent = liveCode === message.regime;
1195
+ }
1196
+ catch {
1197
+ /* leave null — RPC hiccup shouldn't fail the crypto verification */
1198
+ }
1199
+ // Overall verdict: integrity not falsified, canonical schema, not expired, and
1200
+ // (if signed) a valid signature from the expected attestor when one is known.
1201
+ const trustable = integrityOk !== false &&
1202
+ schemaMatches &&
1203
+ !expired &&
1204
+ (signature ? signatureOk === true && isGblinAttestor !== false : true);
1205
+ const guidance = !signature
1206
+ ? "Unsigned attestation: integrity + freshness verified, but authenticity relies on the gblin.digital TLS origin. Prefer signed attestations for counterparty gating."
1207
+ : isGblinAttestor === null
1208
+ ? "Signature is cryptographically valid, but this MCP build has no published GBLIN attestor to compare against. Pass expected_attestor or set GBLIN_ATTESTOR_ADDRESS."
1209
+ : isGblinAttestor
1210
+ ? "Signed by GBLIN's published attestor."
1211
+ : "WARNING: signature does NOT match GBLIN's published attestor — do not trust this attestation.";
1212
+ return toolResult({
1213
+ valid: trustable,
1214
+ checks: {
1215
+ integrity: integrityOk === null ? "no_id_to_compare" : integrityOk,
1216
+ schema_matches_gblin: schemaMatches,
1217
+ signed: !!signature,
1218
+ signature_valid: signatureOk,
1219
+ recovered_signer: recoveredSigner,
1220
+ is_gblin_attestor: isGblinAttestor,
1221
+ expected_attestor: expectedAttestor.toLowerCase() === ZERO_ADDR ? "not_published_in_this_build" : expectedAttestor,
1222
+ expired,
1223
+ seconds_to_expiry: secondsToExpiry,
1224
+ },
1225
+ attested: {
1226
+ regime: REGIME_LABELS[message.regime] ?? "unknown",
1227
+ severity_pct: message.severityBps / 100,
1228
+ defensive_cash_pct: message.defensiveCashBps / 100,
1229
+ block_number: Number(message.blockNumber),
1230
+ issued_at: Number(message.issuedAt),
1231
+ expires_at: expiresAtNum,
1232
+ },
1233
+ live: { regime: liveRegime, still_current: stillCurrent },
1234
+ recomputed_attestation_id: recomputedId,
1235
+ guidance,
1236
+ source: "GBLIN Risk Attestation verifier — keyless integrity + EIP-712 recover + live drift",
1237
+ });
1238
+ }
1239
+ // ───────────────────────────────────────────────────────────────────────────
1039
1240
  // REGISTRY
1040
1241
  // ───────────────────────────────────────────────────────────────────────────
1041
1242
  export const TOOL_DEFINITIONS = [
@@ -1048,6 +1249,7 @@ export const TOOL_DEFINITIONS = [
1048
1249
  SHARE_SKILL_DEFINITION,
1049
1250
  FIND_KEEPER_BOUNTY_DEFINITION,
1050
1251
  MARKET_RISK_DEFINITION,
1252
+ VERIFY_ATTESTATION_DEFINITION,
1051
1253
  ];
1052
1254
  export const TOOL_HANDLERS = {
1053
1255
  // ── FREE tools ─────────────────────────────────────────────────────────────
@@ -1059,6 +1261,7 @@ export const TOOL_HANDLERS = {
1059
1261
  share_skill_with_peer: handleShareSkillWithPeer,
1060
1262
  swap_gblin_to_usdc_jit: handleJitSwap,
1061
1263
  invest_usdc_to_gblin: handleInvest,
1264
+ verify_risk_attestation: handleVerifyRiskAttestation,
1062
1265
  // ── PAID tools (x402 intelligence layer) ──────────────────────────────────
1063
1266
  // Analysis and keeper discovery — these are "advice", not transport.
1064
1267
  analyze_treasury_health: requirePayment({ priceUsdc: "0.003", priceLabel: "$0.003 USDC per call" }, handleAnalyzeTreasury),