@robinmordasiewicz/f5xc-api-mcp 2.0.21-2601081307 → 2.0.21-2601081732

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.
@@ -0,0 +1,427 @@
1
+ /**
2
+ * Parameter Suggestion Module
3
+ *
4
+ * Provides pre-built example payloads for common F5XC API operations
5
+ * to help AI assistants construct correct request bodies without guessing.
6
+ *
7
+ * Enhanced with schema-based generation and smart defaults fallback.
8
+ */
9
+ import { getToolByName } from "../registry.js";
10
+ import { getMinimumConfiguration, getRequiredFields, getMutuallyExclusiveFields, generateSmartExamplePayload, } from "./schema.js";
11
+ /**
12
+ * Pre-defined example payloads for common F5XC operations
13
+ * These are based on real-world usage patterns and cover the most common scenarios
14
+ */
15
+ const COMMON_EXAMPLES = {
16
+ // HTTP Load Balancer examples
17
+ "f5xc-api-virtual-http-loadbalancer-create": {
18
+ metadata: {
19
+ name: "my-http-lb",
20
+ namespace: "default",
21
+ labels: {
22
+ "ves.io/site": "aws-us-west-2",
23
+ },
24
+ },
25
+ spec: {
26
+ domains: ["example.com"],
27
+ http: {
28
+ port: 80,
29
+ },
30
+ routes: [
31
+ {
32
+ match: {
33
+ http_method: "ANY",
34
+ },
35
+ route: {
36
+ destinations: [
37
+ {
38
+ host: "backend.example.com",
39
+ port: 80,
40
+ },
41
+ ],
42
+ },
43
+ },
44
+ ],
45
+ },
46
+ },
47
+ // Origin Pool examples
48
+ "f5xc-api-virtual-origin-pool-create": {
49
+ metadata: {
50
+ name: "my-origin-pool",
51
+ namespace: "default",
52
+ },
53
+ spec: {
54
+ origins: [
55
+ {
56
+ public_name: {
57
+ dns_name: "backend.example.com",
58
+ },
59
+ port: 80,
60
+ method: "GET",
61
+ },
62
+ ],
63
+ healthcheck: [
64
+ {
65
+ name: "default-health-check",
66
+ http_health_check: {
67
+ use_http_path: "/health",
68
+ use_http_port: 80,
69
+ expected_status_codes: ["200"],
70
+ },
71
+ },
72
+ ],
73
+ },
74
+ },
75
+ // TCP Load Balancer examples
76
+ "f5xc-api-virtual-tcp-loadbalancer-create": {
77
+ metadata: {
78
+ name: "my-tcp-lb",
79
+ namespace: "default",
80
+ },
81
+ spec: {
82
+ listen_port: 3306,
83
+ tcp: {
84
+ port: 3306,
85
+ },
86
+ routes: [
87
+ {
88
+ match: {
89
+ any: true,
90
+ },
91
+ route: {
92
+ destinations: [
93
+ {
94
+ host: "mysql.example.com",
95
+ port: 3306,
96
+ },
97
+ ],
98
+ },
99
+ },
100
+ ],
101
+ },
102
+ },
103
+ // DNS Zone examples
104
+ "f5xc-api-dns-zone-create": {
105
+ metadata: {
106
+ name: "example-com-zone",
107
+ namespace: "system",
108
+ },
109
+ spec: {
110
+ primary: {
111
+ allowed_sig_ips: [],
112
+ default_soa_parameters: {
113
+ refresh: 86400,
114
+ retry: 7200,
115
+ expire: 3600000,
116
+ negative_ttl: 300,
117
+ ttl: 3600,
118
+ },
119
+ default_ttl: 3600,
120
+ },
121
+ zone_name: "example.com",
122
+ },
123
+ },
124
+ // DNS Load Balancer examples
125
+ "f5xc-api-dns-load-balancer-create": {
126
+ metadata: {
127
+ name: "my-dns-lb",
128
+ namespace: "system",
129
+ },
130
+ spec: {
131
+ dns_lb_type: "DNS_LB_TYPE_ROUND_ROBIN",
132
+ dns_policy: {
133
+ rules: [
134
+ {
135
+ rule_name: "default-rule",
136
+ rule_type: "DNS_LB_RULE_TYPE_STATIC",
137
+ static_route: {
138
+ destinations: [
139
+ {
140
+ ip: "192.168.1.100",
141
+ port: 80,
142
+ },
143
+ ],
144
+ },
145
+ },
146
+ ],
147
+ },
148
+ },
149
+ },
150
+ // Certificate examples
151
+ "f5xc-api-certificates-certificate-create": {
152
+ metadata: {
153
+ name: "my-certificate",
154
+ namespace: "system",
155
+ },
156
+ spec: {
157
+ certificate_url: {
158
+ url: "string:///<base64-encoded-certificate>",
159
+ },
160
+ private_key: {
161
+ blindfold_secret_info: {
162
+ location: "string:///<base64-encoded-private-key>",
163
+ },
164
+ },
165
+ },
166
+ },
167
+ // Namespace examples
168
+ "f5xc-api-system-namespace-create": {
169
+ metadata: {
170
+ name: "my-namespace",
171
+ namespace: "system",
172
+ },
173
+ spec: {},
174
+ },
175
+ // WAF Policy examples
176
+ "f5xc-api-app-firewall-policy-create": {
177
+ metadata: {
178
+ name: "my-waf-policy",
179
+ namespace: "default",
180
+ },
181
+ spec: {
182
+ blocking: true,
183
+ default_action: {
184
+ deny: {},
185
+ },
186
+ enforcement_mode: "ENFORCEMENT_MODE_ACTIVE",
187
+ },
188
+ },
189
+ // Service Policy examples
190
+ "f5xc-api-network-security-service-policy-create": {
191
+ metadata: {
192
+ name: "my-service-policy",
193
+ namespace: "default",
194
+ },
195
+ spec: {
196
+ algo: "FIRST_MATCH",
197
+ any_server: {},
198
+ rule_list: {
199
+ rules: [
200
+ {
201
+ metadata: {
202
+ name: "allow-internal",
203
+ },
204
+ spec: {
205
+ action: "ALLOW",
206
+ any_client: {},
207
+ label_matcher: {
208
+ keys: ["app"],
209
+ },
210
+ },
211
+ },
212
+ ],
213
+ },
214
+ },
215
+ },
216
+ // Network Firewall examples
217
+ "f5xc-api-network-security-network-firewall-create": {
218
+ metadata: {
219
+ name: "my-network-firewall",
220
+ namespace: "system",
221
+ },
222
+ spec: {
223
+ active_service_policies: {
224
+ policies: [
225
+ {
226
+ name: "my-service-policy",
227
+ namespace: "default",
228
+ },
229
+ ],
230
+ },
231
+ },
232
+ },
233
+ // Rate Limiter examples
234
+ "f5xc-api-rate-limiting-rate-limiter-create": {
235
+ metadata: {
236
+ name: "my-rate-limiter",
237
+ namespace: "default",
238
+ },
239
+ spec: {
240
+ limits: [
241
+ {
242
+ total_number: 100,
243
+ unit: "MINUTE",
244
+ },
245
+ ],
246
+ },
247
+ },
248
+ };
249
+ /**
250
+ * Get suggested parameters for a tool with fallback chain
251
+ *
252
+ * Priority order:
253
+ * 1. x-f5xc-minimum-configuration.example_json (from spec)
254
+ * 2. COMMON_EXAMPLES (curated)
255
+ * 3. Schema-generated with smart defaults
256
+ *
257
+ * @param toolName - The exact tool name
258
+ * @returns Suggested parameters with metadata or null if unavailable
259
+ */
260
+ export function suggestParameters(toolName) {
261
+ const tool = getToolByName(toolName);
262
+ if (!tool) {
263
+ return null;
264
+ }
265
+ // Collect metadata that applies to all sources
266
+ const requiredFields = getRequiredFields(toolName);
267
+ const mutuallyExclusiveGroups = getMutuallyExclusiveFields(toolName);
268
+ // Priority 1: Check for x-f5xc-minimum-configuration example
269
+ const minConfig = getMinimumConfiguration(toolName);
270
+ if (minConfig?.example_json) {
271
+ try {
272
+ const payload = JSON.parse(minConfig.example_json);
273
+ return {
274
+ examplePayload: payload,
275
+ description: minConfig.description || `Example payload for ${tool.resource} ${tool.operation}`,
276
+ source: "spec",
277
+ requiredFields: requiredFields.length > 0 ? requiredFields : undefined,
278
+ mutuallyExclusiveGroups: mutuallyExclusiveGroups.length > 0 ? mutuallyExclusiveGroups : undefined,
279
+ notes: buildNotesFromMinConfig(minConfig),
280
+ curlExample: minConfig.example_curl,
281
+ yamlExample: minConfig.example_yaml,
282
+ };
283
+ }
284
+ catch {
285
+ // Invalid JSON, fall through to next source
286
+ }
287
+ }
288
+ // Priority 2: Check for curated example
289
+ const curatedExample = COMMON_EXAMPLES[toolName];
290
+ if (curatedExample) {
291
+ return {
292
+ examplePayload: JSON.parse(JSON.stringify(curatedExample)), // Deep copy
293
+ description: `Curated example payload for ${tool.resource} ${tool.operation}`,
294
+ source: "curated",
295
+ requiredFields: requiredFields.length > 0 ? requiredFields : undefined,
296
+ mutuallyExclusiveGroups: mutuallyExclusiveGroups.length > 0 ? mutuallyExclusiveGroups : undefined,
297
+ notes: [
298
+ "This is a complete, working example based on common usage patterns",
299
+ "Modify the values to match your specific requirements",
300
+ "Required fields are already included",
301
+ ],
302
+ };
303
+ }
304
+ // Priority 3: Generate from schema with smart defaults
305
+ const generatedPayload = generateSmartExamplePayload(toolName);
306
+ if (generatedPayload) {
307
+ return {
308
+ examplePayload: generatedPayload,
309
+ description: `Auto-generated example payload for ${tool.resource} ${tool.operation}`,
310
+ source: "generated",
311
+ requiredFields: requiredFields.length > 0 ? requiredFields : undefined,
312
+ mutuallyExclusiveGroups: mutuallyExclusiveGroups.length > 0 ? mutuallyExclusiveGroups : undefined,
313
+ notes: [
314
+ "This example was auto-generated from the schema",
315
+ "Review and modify values before using in production",
316
+ "Some nested objects may need additional configuration",
317
+ ],
318
+ };
319
+ }
320
+ return null;
321
+ }
322
+ /**
323
+ * Build usage notes from minimum configuration
324
+ */
325
+ function buildNotesFromMinConfig(minConfig) {
326
+ const notes = [];
327
+ if (minConfig.description) {
328
+ notes.push(minConfig.description);
329
+ }
330
+ if (minConfig.required_fields && minConfig.required_fields.length > 0) {
331
+ notes.push(`Required fields: ${minConfig.required_fields.join(", ")}`);
332
+ }
333
+ if (minConfig.mutually_exclusive_groups && minConfig.mutually_exclusive_groups.length > 0) {
334
+ for (const group of minConfig.mutually_exclusive_groups) {
335
+ notes.push(`Mutually exclusive: ${group.fields.join(" OR ")} - ${group.reason}`);
336
+ }
337
+ }
338
+ if (notes.length === 0) {
339
+ notes.push("Example from official F5XC API specification");
340
+ }
341
+ return notes;
342
+ }
343
+ /**
344
+ * Get suggested parameters (legacy interface for backward compatibility)
345
+ *
346
+ * @deprecated Use suggestParameters() for richer metadata
347
+ */
348
+ export function suggestParametersLegacy(toolName) {
349
+ const result = suggestParameters(toolName);
350
+ if (!result) {
351
+ return null;
352
+ }
353
+ return {
354
+ examplePayload: result.examplePayload,
355
+ description: result.description,
356
+ notes: result.notes,
357
+ };
358
+ }
359
+ /**
360
+ * Get all available example tools (curated only)
361
+ *
362
+ * @returns List of tool names that have curated pre-built examples
363
+ */
364
+ export function getAvailableExamples() {
365
+ return Object.keys(COMMON_EXAMPLES);
366
+ }
367
+ /**
368
+ * Check if a tool has suggested parameters (from any source)
369
+ *
370
+ * @param toolName - The exact tool name
371
+ * @returns True if examples are available from any source
372
+ */
373
+ export function hasSuggestedParameters(toolName) {
374
+ // Check curated examples first (fastest)
375
+ if (toolName in COMMON_EXAMPLES) {
376
+ return true;
377
+ }
378
+ // Check if tool has a request body schema (can generate)
379
+ const tool = getToolByName(toolName);
380
+ if (tool?.requestBodySchema) {
381
+ return true;
382
+ }
383
+ return false;
384
+ }
385
+ /**
386
+ * Check if a tool has curated examples (not generated)
387
+ *
388
+ * @param toolName - The exact tool name
389
+ * @returns True if curated examples exist
390
+ */
391
+ export function hasCuratedExample(toolName) {
392
+ return toolName in COMMON_EXAMPLES;
393
+ }
394
+ /**
395
+ * Get suggestion source for a tool
396
+ *
397
+ * @param toolName - The exact tool name
398
+ * @returns Source type or null if no suggestions available
399
+ */
400
+ export function getSuggestionSource(toolName) {
401
+ // Check minimum configuration first
402
+ const minConfig = getMinimumConfiguration(toolName);
403
+ if (minConfig?.example_json) {
404
+ return "spec";
405
+ }
406
+ // Check curated examples
407
+ if (toolName in COMMON_EXAMPLES) {
408
+ return "curated";
409
+ }
410
+ // Check if can generate
411
+ const tool = getToolByName(toolName);
412
+ if (tool?.requestBodySchema) {
413
+ return "generated";
414
+ }
415
+ return null;
416
+ }
417
+ /**
418
+ * Get statistics about available suggestions
419
+ */
420
+ export function getSuggestionStats() {
421
+ const curatedTools = Object.keys(COMMON_EXAMPLES);
422
+ return {
423
+ curatedCount: curatedTools.length,
424
+ curatedTools,
425
+ };
426
+ }
427
+ //# sourceMappingURL=suggest-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-params.js","sourceRoot":"","sources":["../../../src/tools/discovery/suggest-params.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,aAAa,CAAC;AAwBrB;;;GAGG;AACH,MAAM,eAAe,GAA4C;IAC/D,8BAA8B;IAC9B,2CAA2C,EAAE;QAC3C,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE;gBACN,aAAa,EAAE,eAAe;aAC/B;SACF;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE;aACT;YACD,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE;wBACL,WAAW,EAAE,KAAK;qBACnB;oBACD,KAAK,EAAE;wBACL,YAAY,EAAE;4BACZ;gCACE,IAAI,EAAE,qBAAqB;gCAC3B,IAAI,EAAE,EAAE;6BACT;yBACF;qBACF;iBACF;aACF;SACF;KACF;IAED,uBAAuB;IACvB,qCAAqC,EAAE;QACrC,QAAQ,EAAE;YACR,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,SAAS;SACrB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE;gBACP;oBACE,WAAW,EAAE;wBACX,QAAQ,EAAE,qBAAqB;qBAChC;oBACD,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,KAAK;iBACd;aACF;YACD,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,iBAAiB,EAAE;wBACjB,aAAa,EAAE,SAAS;wBACxB,aAAa,EAAE,EAAE;wBACjB,qBAAqB,EAAE,CAAC,KAAK,CAAC;qBAC/B;iBACF;aACF;SACF;KACF;IAED,6BAA6B;IAC7B,0CAA0C,EAAE;QAC1C,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,SAAS;SACrB;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE;gBACH,IAAI,EAAE,IAAI;aACX;YACD,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE;wBACL,GAAG,EAAE,IAAI;qBACV;oBACD,KAAK,EAAE;wBACL,YAAY,EAAE;4BACZ;gCACE,IAAI,EAAE,mBAAmB;gCACzB,IAAI,EAAE,IAAI;6BACX;yBACF;qBACF;iBACF;aACF;SACF;KACF;IAED,oBAAoB;IACpB,0BAA0B,EAAE;QAC1B,QAAQ,EAAE;YACR,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,QAAQ;SACpB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE;gBACP,eAAe,EAAE,EAAE;gBACnB,sBAAsB,EAAE;oBACtB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO;oBACf,YAAY,EAAE,GAAG;oBACjB,GAAG,EAAE,IAAI;iBACV;gBACD,WAAW,EAAE,IAAI;aAClB;YACD,SAAS,EAAE,aAAa;SACzB;KACF;IAED,6BAA6B;IAC7B,mCAAmC,EAAE;QACnC,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,QAAQ;SACpB;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,yBAAyB;YACtC,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL;wBACE,SAAS,EAAE,cAAc;wBACzB,SAAS,EAAE,yBAAyB;wBACpC,YAAY,EAAE;4BACZ,YAAY,EAAE;gCACZ;oCACE,EAAE,EAAE,eAAe;oCACnB,IAAI,EAAE,EAAE;iCACT;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF;IAED,uBAAuB;IACvB,0CAA0C,EAAE;QAC1C,QAAQ,EAAE;YACR,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,QAAQ;SACpB;QACD,IAAI,EAAE;YACJ,eAAe,EAAE;gBACf,GAAG,EAAE,wCAAwC;aAC9C;YACD,WAAW,EAAE;gBACX,qBAAqB,EAAE;oBACrB,QAAQ,EAAE,wCAAwC;iBACnD;aACF;SACF;KACF;IAED,qBAAqB;IACrB,kCAAkC,EAAE;QAClC,QAAQ,EAAE;YACR,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,QAAQ;SACpB;QACD,IAAI,EAAE,EAAE;KACT;IAED,sBAAsB;IACtB,qCAAqC,EAAE;QACrC,QAAQ,EAAE;YACR,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,SAAS;SACrB;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE;gBACd,IAAI,EAAE,EAAE;aACT;YACD,gBAAgB,EAAE,yBAAyB;SAC5C;KACF;IAED,0BAA0B;IAC1B,iDAAiD,EAAE;QACjD,QAAQ,EAAE;YACR,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,SAAS;SACrB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,EAAE;YACd,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL;wBACE,QAAQ,EAAE;4BACR,IAAI,EAAE,gBAAgB;yBACvB;wBACD,IAAI,EAAE;4BACJ,MAAM,EAAE,OAAO;4BACf,UAAU,EAAE,EAAE;4BACd,aAAa,EAAE;gCACb,IAAI,EAAE,CAAC,KAAK,CAAC;6BACd;yBACF;qBACF;iBACF;aACF;SACF;KACF;IAED,4BAA4B;IAC5B,mDAAmD,EAAE;QACnD,QAAQ,EAAE;YACR,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,QAAQ;SACpB;QACD,IAAI,EAAE;YACJ,uBAAuB,EAAE;gBACvB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,mBAAmB;wBACzB,SAAS,EAAE,SAAS;qBACrB;iBACF;aACF;SACF;KACF;IAED,wBAAwB;IACxB,4CAA4C,EAAE;QAC5C,QAAQ,EAAE;YACR,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,SAAS;SACrB;QACD,IAAI,EAAE;YACJ,MAAM,EAAE;gBACN;oBACE,YAAY,EAAE,GAAG;oBACjB,IAAI,EAAE,QAAQ;iBACf;aACF;SACF;KACF;CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAErC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAErE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,SAAS,EAAE,YAAY,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAA4B,CAAC;YAC9E,OAAO;gBACL,cAAc,EAAE,OAAO;gBACvB,WAAW,EACT,SAAS,CAAC,WAAW,IAAI,uBAAuB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;gBACnF,MAAM,EAAE,MAAM;gBACd,cAAc,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;gBACtE,uBAAuB,EACrB,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;gBAC1E,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC;gBACzC,WAAW,EAAE,SAAS,CAAC,YAAY;gBACnC,WAAW,EAAE,SAAS,CAAC,YAAY;aACpC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY;YACxE,WAAW,EAAE,+BAA+B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YAC7E,MAAM,EAAE,SAAS;YACjB,cAAc,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YACtE,uBAAuB,EACrB,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;YAC1E,KAAK,EAAE;gBACL,oEAAoE;gBACpE,uDAAuD;gBACvD,sCAAsC;aACvC;SACF,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,cAAc,EAAE,gBAAgB;YAChC,WAAW,EAAE,sCAAsC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACpF,MAAM,EAAE,WAAW;YACnB,cAAc,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YACtE,uBAAuB,EACrB,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;YAC1E,KAAK,EAAE;gBACL,iDAAiD;gBACjD,qDAAqD;gBACrD,uDAAuD;aACxD;SACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,SAA+B;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,SAAS,CAAC,yBAAyB,IAAI,SAAS,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1F,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,yBAAyB,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IAKtD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,yCAAyC;IACzC,IAAI,QAAQ,IAAI,eAAe,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yDAAyD;IACzD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,QAAQ,IAAI,eAAe,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,oCAAoC;IACpC,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,SAAS,EAAE,YAAY,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACzB,IAAI,QAAQ,IAAI,eAAe,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wBAAwB;IACxB,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAIhC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO;QACL,YAAY,EAAE,YAAY,CAAC,MAAM;QACjC,YAAY;KACb,CAAC;AACJ,CAAC"}
package/dist/version.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * The version comes from package.json to ensure consistency.
9
9
  */
10
10
  /** Package version from package.json */
11
- export declare const VERSION = "2.0.21-2601081307";
11
+ export declare const VERSION = "2.0.21-2601081732";
12
12
  /** Package name */
13
13
  export declare const PACKAGE_NAME = "@robinmordasiewicz/f5xc-api-mcp";
14
14
  /** Upstream F5 XC API version from specs */
package/dist/version.js CHANGED
@@ -8,7 +8,7 @@
8
8
  * The version comes from package.json to ensure consistency.
9
9
  */
10
10
  /** Package version from package.json */
11
- export const VERSION = "2.0.21-2601081307";
11
+ export const VERSION = "2.0.21-2601081732";
12
12
  /** Package name */
13
13
  export const PACKAGE_NAME = "@robinmordasiewicz/f5xc-api-mcp";
14
14
  /** Upstream F5 XC API version from specs */
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "f5xc-api-mcp",
4
4
  "display_name": "F5 Distributed Cloud API",
5
- "version": "2.0.21-2601081307",
5
+ "version": "2.0.21-2601081732",
6
6
  "description": "MCP server for F5 Distributed Cloud API - AI-powered infrastructure management with 1548 tools across 38 domains",
7
7
  "long_description": "Enables AI assistants to manage F5 Distributed Cloud resources including HTTP load balancers, origin pools, WAF policies, DNS zones, and multi-cloud sites. Works in dual mode: documentation mode (no auth) or execution mode (with auth). Provides CURL examples for all API operations.",
8
8
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-api-mcp",
3
- "version": "2.0.21-2601081307",
3
+ "version": "2.0.21-2601081732",
4
4
  "description": "F5 Distributed Cloud API MCP Server - Exposes F5XC APIs to AI assistants via Model Context Protocol",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",