@fuul/mcp-server 1.7.0 → 1.9.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 (31) hide show
  1. package/dist/incentives/incentive-create-payload-guide.d.ts +47 -0
  2. package/dist/incentives/incentive-create-payload-guide.d.ts.map +1 -0
  3. package/dist/incentives/incentive-create-payload-guide.js +157 -0
  4. package/dist/incentives/incentive-create-payload-guide.js.map +1 -0
  5. package/dist/incentives/incentive-write-handlers.d.ts +5 -0
  6. package/dist/incentives/incentive-write-handlers.d.ts.map +1 -0
  7. package/dist/incentives/incentive-write-handlers.js +34 -0
  8. package/dist/incentives/incentive-write-handlers.js.map +1 -0
  9. package/dist/index.js +62 -5
  10. package/dist/index.js.map +1 -1
  11. package/dist/referral-attribution/referral-attribution-handlers.d.ts +6 -1
  12. package/dist/referral-attribution/referral-attribution-handlers.d.ts.map +1 -1
  13. package/dist/referral-attribution/referral-attribution-handlers.js +23 -0
  14. package/dist/referral-attribution/referral-attribution-handlers.js.map +1 -1
  15. package/dist/tools/tool-descriptions.d.ts +8 -2
  16. package/dist/tools/tool-descriptions.d.ts.map +1 -1
  17. package/dist/tools/tool-descriptions.js +49 -4
  18. package/dist/tools/tool-descriptions.js.map +1 -1
  19. package/dist/tools/tool-schemas.d.ts +206 -0
  20. package/dist/tools/tool-schemas.d.ts.map +1 -1
  21. package/dist/tools/tool-schemas.js +51 -0
  22. package/dist/tools/tool-schemas.js.map +1 -1
  23. package/dist/triggers/trigger-create-payload-guide.d.ts +33 -0
  24. package/dist/triggers/trigger-create-payload-guide.d.ts.map +1 -0
  25. package/dist/triggers/trigger-create-payload-guide.js +171 -0
  26. package/dist/triggers/trigger-create-payload-guide.js.map +1 -0
  27. package/dist/triggers/trigger-write-handlers.d.ts +5 -0
  28. package/dist/triggers/trigger-write-handlers.d.ts.map +1 -0
  29. package/dist/triggers/trigger-write-handlers.js +38 -0
  30. package/dist/triggers/trigger-write-handlers.js.map +1 -0
  31. package/package.json +1 -1
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Maps list_trigger_types `id` values to POST /triggers body shape.
3
+ * Aligned with fuul-webapp `encodeByTriggerType` / `encode.ts` and fuul-server
4
+ * `CreateTriggerCommand.parseTriggerContext`.
5
+ */
6
+ /** Server copies the whole DTO into stored context (fields must be at trigger root, not only in context). */
7
+ const FLAT_DTO_TRIGGER_TYPES = new Set(['custom', 'classic']);
8
+ /** Preset types: type-specific fields live only under trigger.context (no root identifier fields). */
9
+ const CONTEXT_ONLY_TRIGGER_TYPES = new Set(['token-holder', 'liquidity-pool-v2']);
10
+ export const CREATE_TRIGGER_GLOBAL_GUIDE = {
11
+ endpoint: 'POST /api/v1/projects/:projectId/triggers',
12
+ always_required: ['name', 'description', 'type'],
13
+ type_field: 'Set trigger.type to the trigger_types[].id from list_trigger_types (e.g. "token-holder", "custom", "hibachi-trading").',
14
+ layouts: {
15
+ flat_dto: {
16
+ applies_to: [...FLAT_DTO_TRIGGER_TYPES],
17
+ rule: 'Put every field from context_json_schema on the trigger object ROOT (siblings of name, description, type). ' +
18
+ 'Do NOT nest signature, event_type, or expressions only inside trigger.context — the API validates them at the root. ' +
19
+ 'The server persists them as trigger context internally.',
20
+ },
21
+ context_only: {
22
+ applies_to: [...CONTEXT_ONLY_TRIGGER_TYPES],
23
+ rule: 'Put type-specific fields under trigger.context only. Required: name, description, type, and context per context_json_schema.',
24
+ },
25
+ context_and_root_fields: {
26
+ applies_to: 'All other trigger type ids (protocol presets, liquidity v3, social, trading, etc.).',
27
+ rule: 'Put type-specific fields under trigger.context per context_json_schema. ' +
28
+ 'Also set end_user_identifier_property (and end_user_identifier_expression when needed) at the trigger ROOT when the schema or webapp form requires it.',
29
+ },
30
+ },
31
+ workflow: [
32
+ 'Call list_trigger_types and read create_payload_layout + create_payload_example for the chosen id.',
33
+ 'Call list_chains when the trigger needs chain_id.',
34
+ 'Build trigger object; use create_trigger with dry_run then confirmed.',
35
+ ],
36
+ reference: 'fuul-webapp src/modules/triggers/infra/encode.ts (encodeByTriggerType)',
37
+ };
38
+ /** Minimal create_trigger.trigger examples (dashboard-aligned). */
39
+ export const CREATE_PAYLOAD_EXAMPLES = {
40
+ 'token-holder': {
41
+ name: 'Hold TOKEN',
42
+ description: 'Daily holding of TOKEN on Ethereum',
43
+ type: 'token-holder',
44
+ context: {
45
+ token_address: '0x0000000000000000000000000000000000000000',
46
+ chain_id: 1,
47
+ volume_currency_expression: '0x0000000000000000000000000000000000000000',
48
+ },
49
+ },
50
+ custom: {
51
+ name: 'My off-chain event',
52
+ description: 'Tracks a custom SDK / off-chain event',
53
+ type: 'custom',
54
+ signature: 'my_event_name',
55
+ event_type: 'off-chain-event',
56
+ end_user_identifier_property: 'address',
57
+ payable: true,
58
+ volume_expression: 'extractedValueAmount',
59
+ revenue_expression: 'extractedRevenueAmount',
60
+ currency_expression: 'extractedVolumeCurrencyAddress',
61
+ volume_currency_expression: 'extractedVolumeCurrencyAddress',
62
+ revenue_currency_expression: 'extractedRevenueCurrencyAddress',
63
+ },
64
+ 'hibachi-trading': {
65
+ name: 'Hibachi Trades',
66
+ description: 'Trades from Hibachi platform',
67
+ type: 'hibachi-trading',
68
+ context: { chainId: 8453 },
69
+ end_user_identifier_property: 'address',
70
+ end_user_identifier_expression: null,
71
+ },
72
+ 'hibachi-affiliate-referred-fees': {
73
+ name: 'Hibachi Affiliates - Base - Level1',
74
+ description: 'Hibachi affiliate referred fees',
75
+ type: 'hibachi-affiliate-referred-fees',
76
+ context: { chainId: 8453, referredFeesLevel: 'level1' },
77
+ end_user_identifier_property: 'address',
78
+ end_user_identifier_expression: null,
79
+ },
80
+ 'follow-on-x': {
81
+ name: 'Follow @handle on X',
82
+ description: 'Follow on X',
83
+ type: 'follow-on-x',
84
+ context: { usernameToFollow: 'handle' },
85
+ end_user_identifier_property: 'twitter_username',
86
+ end_user_identifier_expression: null,
87
+ },
88
+ 'liquidity-pool-v2': {
89
+ name: 'Hold TOKEN - Ethereum',
90
+ description: 'Daily holding on Ethereum',
91
+ type: 'liquidity-pool-v2',
92
+ context: {
93
+ token_address: '0x0000000000000000000000000000000000000000',
94
+ chain_id: 1,
95
+ volume_currency_expression: '0x0000000000000000000000000000000000000000',
96
+ },
97
+ },
98
+ 'uniswap-liquidity-v3': {
99
+ name: 'Uniswap WETH-USDC',
100
+ description: 'Deposit into WETH-USDC pool on Uniswap',
101
+ type: 'uniswap-liquidity-v3',
102
+ context: {
103
+ liquidityPoolId: '<pool-uuid>',
104
+ strategy: 'ActiveLiquidity',
105
+ activeLiquidityArgs: { tokenDenominator: 'token0' },
106
+ },
107
+ end_user_identifier_property: 'address',
108
+ end_user_identifier_expression: null,
109
+ },
110
+ 'solana-token-holder': {
111
+ name: 'Hold TOKEN - Solana',
112
+ description: 'Daily holding of Solana token',
113
+ type: 'solana-token-holder',
114
+ context: {
115
+ token_address: '<mint-address>',
116
+ volume_currency_expression: '<optional-mint-or-price-ref>',
117
+ chain_identifier: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
118
+ },
119
+ end_user_identifier_property: 'address',
120
+ end_user_identifier_expression: null,
121
+ },
122
+ };
123
+ export function getCreatePayloadLayout(triggerTypeId) {
124
+ if (FLAT_DTO_TRIGGER_TYPES.has(triggerTypeId)) {
125
+ return 'flat_dto';
126
+ }
127
+ if (CONTEXT_ONLY_TRIGGER_TYPES.has(triggerTypeId)) {
128
+ return 'context_only';
129
+ }
130
+ return 'context_and_root_fields';
131
+ }
132
+ export function getCreatePayloadNotes(layout) {
133
+ switch (layout) {
134
+ case 'flat_dto':
135
+ return CREATE_TRIGGER_GLOBAL_GUIDE.layouts.flat_dto.rule;
136
+ case 'context_only':
137
+ return CREATE_TRIGGER_GLOBAL_GUIDE.layouts.context_only.rule;
138
+ case 'context_and_root_fields':
139
+ return CREATE_TRIGGER_GLOBAL_GUIDE.layouts.context_and_root_fields.rule;
140
+ }
141
+ }
142
+ export function enrichTriggerTypesResponse(raw) {
143
+ if (!raw || typeof raw !== 'object') {
144
+ return raw;
145
+ }
146
+ const payload = raw;
147
+ if (!Array.isArray(payload.trigger_types)) {
148
+ return raw;
149
+ }
150
+ const trigger_types = payload.trigger_types.map((row) => {
151
+ if (!row || typeof row !== 'object') {
152
+ return row;
153
+ }
154
+ const typed = row;
155
+ const id = typeof typed.id === 'string' ? typed.id : '';
156
+ const layout = id ? getCreatePayloadLayout(id) : 'context_and_root_fields';
157
+ const example = id ? CREATE_PAYLOAD_EXAMPLES[id] : undefined;
158
+ return {
159
+ ...typed,
160
+ create_payload_layout: layout,
161
+ create_payload_notes: getCreatePayloadNotes(layout),
162
+ ...(example ? { create_payload_example: example } : {}),
163
+ };
164
+ });
165
+ return {
166
+ ...payload,
167
+ create_trigger_payload_guide: CREATE_TRIGGER_GLOBAL_GUIDE,
168
+ trigger_types,
169
+ };
170
+ }
171
+ //# sourceMappingURL=trigger-create-payload-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-create-payload-guide.js","sourceRoot":"","sources":["../../src/triggers/trigger-create-payload-guide.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type FuulApiClient } from '../http/fuul-api-client.js';
2
+ import type { CreateTriggerInput, DeleteTriggerInput } from '../tools/tool-schemas.js';
3
+ export declare function runCreateTrigger(api: FuulApiClient, input: CreateTriggerInput): Promise<unknown>;
4
+ export declare function runDeleteTrigger(api: FuulApiClient, input: DeleteTriggerInput): Promise<unknown>;
5
+ //# sourceMappingURL=trigger-write-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-write-handlers.d.ts","sourceRoot":"","sources":["../../src/triggers/trigger-write-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAOvF,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CActG;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBtG"}
@@ -0,0 +1,38 @@
1
+ import { assertWriteConfirmedOrDryRun } from '../agent/write-confirmation.js';
2
+ import { ApiRequestError } from '../http/fuul-api-client.js';
3
+ const TRIGGER_IN_USE_HINT = 'This trigger is linked to one or more incentives. Delete those incentives first with delete_incentive ' +
4
+ '(use list_incentives to find draft_conversion_id), or create a replacement trigger with create_trigger ' +
5
+ 'without deleting the old one. Never delete a trigger without explicit user confirmation.';
6
+ export async function runCreateTrigger(api, input) {
7
+ assertWriteConfirmedOrDryRun(input);
8
+ const path = `/api/v1/projects/${input.project_id}/triggers`;
9
+ const body = input.trigger;
10
+ if (input.dry_run === true) {
11
+ return {
12
+ dry_run: true,
13
+ would_post: path,
14
+ body,
15
+ };
16
+ }
17
+ return api.postJson(path, body);
18
+ }
19
+ export async function runDeleteTrigger(api, input) {
20
+ assertWriteConfirmedOrDryRun(input);
21
+ const path = `/api/v1/projects/${input.project_id}/triggers/${input.trigger_id}`;
22
+ if (input.dry_run === true) {
23
+ return {
24
+ dry_run: true,
25
+ would_delete: path,
26
+ };
27
+ }
28
+ try {
29
+ return await api.deleteJson(path);
30
+ }
31
+ catch (e) {
32
+ if (e instanceof ApiRequestError && e.status === 422) {
33
+ throw new Error(`${e.message} ${TRIGGER_IN_USE_HINT}`);
34
+ }
35
+ throw e;
36
+ }
37
+ }
38
+ //# sourceMappingURL=trigger-write-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-write-handlers.js","sourceRoot":"","sources":["../../src/triggers/trigger-write-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAsB,MAAM,4BAA4B,CAAC;AAGjF,MAAM,mBAAmB,GACvB,wGAAwG;IACxG,yGAAyG;IACzG,0FAA0F,CAAC;AAE7F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAkB,EAAE,KAAyB;IAClF,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,oBAAoB,KAAK,CAAC,UAAU,WAAW,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;IAE3B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,IAAI;SACL,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAkB,EAAE,KAAyB;IAClF,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,oBAAoB,KAAK,CAAC,UAAU,aAAa,KAAK,CAAC,UAAU,EAAE,CAAC;IAEjF,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuul/mcp-server",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Fuul MCP server for program management via MCP-compatible clients",
5
5
  "keywords": [
6
6
  "Fuul",