@robinmordasiewicz/f5xc-terraform-mcp 2.14.10 → 2.15.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.
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Discovery Meta-Tool Handler
3
+ *
4
+ * Enables lazy loading of tool schemas for token efficiency.
5
+ * AI assistants can discover available tools without loading full schemas.
6
+ *
7
+ * Tool: f5xc_terraform_discover
8
+ */
9
+ import { ResponseFormat } from '../types.js';
10
+ import { DocsSchema, ApiSchema, SubscriptionSchema, AddonSchema } from '../schemas/common.js';
11
+ const TOOL_REGISTRY = [
12
+ {
13
+ name: 'f5xc_terraform_docs',
14
+ description: 'Search, get, list F5XC Terraform docs',
15
+ category: 'docs',
16
+ operations: ['search', 'get', 'list'],
17
+ },
18
+ {
19
+ name: 'f5xc_terraform_api',
20
+ description: 'Query 270+ OpenAPI specs and schemas',
21
+ category: 'api',
22
+ operations: ['search', 'get', 'find_endpoints', 'get_definition', 'list_definitions'],
23
+ },
24
+ {
25
+ name: 'f5xc_terraform_subscription',
26
+ description: 'Check resource subscription tiers',
27
+ category: 'subscription',
28
+ operations: ['resource', 'property'],
29
+ },
30
+ {
31
+ name: 'f5xc_terraform_addon',
32
+ description: 'List/check/activate addon services',
33
+ category: 'addon',
34
+ operations: ['list', 'check', 'workflow'],
35
+ },
36
+ {
37
+ name: 'f5xc_terraform_get_summary',
38
+ description: 'Get provider documentation summary',
39
+ category: 'summary',
40
+ },
41
+ ];
42
+ // =============================================================================
43
+ // HANDLER
44
+ // =============================================================================
45
+ /**
46
+ * Handles the f5xc_terraform_discover tool invocation
47
+ */
48
+ export async function handleDiscover(input) {
49
+ const { category, verbose, response_format } = input;
50
+ // Filter tools by category
51
+ const tools = category === 'all'
52
+ ? TOOL_REGISTRY
53
+ : TOOL_REGISTRY.filter((t) => t.category === category);
54
+ // Build response
55
+ const response = buildResponse(tools, verbose, response_format);
56
+ return response;
57
+ }
58
+ function buildResponse(tools, verbose, format) {
59
+ if (format === ResponseFormat.JSON) {
60
+ return JSON.stringify(buildJsonResponse(tools, verbose), null, 2);
61
+ }
62
+ return buildMarkdownResponse(tools, verbose);
63
+ }
64
+ function buildJsonResponse(tools, verbose) {
65
+ return {
66
+ tools: tools.map((t) => {
67
+ const tool = {
68
+ name: t.name,
69
+ description: t.description,
70
+ };
71
+ if (verbose) {
72
+ tool.operations = t.operations;
73
+ tool.schema = getSchemaForTool(t.name);
74
+ }
75
+ return tool;
76
+ }),
77
+ total_tools: tools.length,
78
+ token_estimate: verbose ? '~2,000 tokens' : '~150 tokens',
79
+ usage_hint: verbose
80
+ ? 'Full schemas included for reference'
81
+ : 'Use verbose=true for full schemas',
82
+ };
83
+ }
84
+ function buildMarkdownResponse(tools, verbose) {
85
+ const lines = [
86
+ '# F5XC Terraform MCP Tools',
87
+ '',
88
+ `**Available Tools**: ${tools.length}`,
89
+ `**Token Estimate**: ${verbose ? '~2,000' : '~150'} tokens`,
90
+ '',
91
+ '## Tools',
92
+ '',
93
+ ];
94
+ for (const tool of tools) {
95
+ lines.push(`### ${tool.name}`);
96
+ lines.push(tool.description);
97
+ if (tool.operations) {
98
+ lines.push(`- **Operations**: ${tool.operations.join(', ')}`);
99
+ }
100
+ if (verbose) {
101
+ lines.push('');
102
+ lines.push('**Schema**:');
103
+ lines.push('```json');
104
+ lines.push(JSON.stringify(getSchemaForTool(tool.name), null, 2));
105
+ lines.push('```');
106
+ }
107
+ lines.push('');
108
+ }
109
+ if (!verbose) {
110
+ lines.push('---');
111
+ lines.push('*Use `verbose=true` to see full schemas for each tool.*');
112
+ }
113
+ return lines.join('\n');
114
+ }
115
+ function getSchemaForTool(toolName) {
116
+ switch (toolName) {
117
+ case 'f5xc_terraform_docs':
118
+ return schemaToJson(DocsSchema);
119
+ case 'f5xc_terraform_api':
120
+ return schemaToJson(ApiSchema);
121
+ case 'f5xc_terraform_subscription':
122
+ return schemaToJson(SubscriptionSchema);
123
+ case 'f5xc_terraform_addon':
124
+ return schemaToJson(AddonSchema);
125
+ case 'f5xc_terraform_get_summary':
126
+ return { response_format: { type: 'string', enum: ['markdown', 'json'] } };
127
+ default:
128
+ return {};
129
+ }
130
+ }
131
+ /**
132
+ * Converts a Zod schema to a simplified JSON representation
133
+ * for documentation purposes
134
+ */
135
+ function schemaToJson(schema) {
136
+ if (!schema.shape) {
137
+ return { type: 'object' };
138
+ }
139
+ const result = {};
140
+ for (const [key, value] of Object.entries(schema.shape)) {
141
+ result[key] = describeZodType(value);
142
+ }
143
+ return result;
144
+ }
145
+ function describeZodType(zodType) {
146
+ // Extract type info from Zod schema
147
+ const desc = zodType.description;
148
+ const typeDef = zodType._def;
149
+ if (!typeDef) {
150
+ return { type: 'unknown' };
151
+ }
152
+ const result = {};
153
+ switch (typeDef.typeName) {
154
+ case 'ZodString':
155
+ result.type = 'string';
156
+ break;
157
+ case 'ZodNumber':
158
+ result.type = 'number';
159
+ break;
160
+ case 'ZodBoolean':
161
+ result.type = 'boolean';
162
+ break;
163
+ case 'ZodEnum':
164
+ result.type = 'string';
165
+ result.enum = typeDef.values;
166
+ break;
167
+ case 'ZodNativeEnum':
168
+ result.type = 'string';
169
+ result.enum = ['markdown', 'json'];
170
+ break;
171
+ case 'ZodOptional':
172
+ return { ...describeZodType(typeDef.innerType), optional: true };
173
+ case 'ZodDefault':
174
+ return { ...describeZodType(typeDef.innerType) };
175
+ default:
176
+ result.type = 'unknown';
177
+ }
178
+ if (desc) {
179
+ result.description = desc;
180
+ }
181
+ return result;
182
+ }
183
+ // =============================================================================
184
+ // TOOL DEFINITION
185
+ // =============================================================================
186
+ export const DISCOVER_TOOL_DEFINITION = {
187
+ name: 'f5xc_terraform_discover',
188
+ description: 'Discover available F5XC Terraform MCP tools with optional schema details',
189
+ };
190
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAa9F,MAAM,aAAa,GAAe;IAChC;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;KACtC;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;KACtF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;KACrC;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;KAC1C;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAoB;IACvD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAErD,2BAA2B;IAC3B,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK;QAC9B,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAEzD,iBAAiB;IACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAEhE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,KAAiB,EACjB,OAAgB,EAChB,MAAsB;IAEtB,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAcD,SAAS,iBAAiB,CAAC,KAAiB,EAAE,OAAgB;IAC5D,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,MAAM,IAAI,GAAiC;gBACzC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;gBAC/B,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa;QACzD,UAAU,EAAE,OAAO;YACjB,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,mCAAmC;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiB,EAAE,OAAgB;IAChE,MAAM,KAAK,GAAa;QACtB,4BAA4B;QAC5B,EAAE;QACF,wBAAwB,KAAK,CAAC,MAAM,EAAE;QACtC,uBAAuB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS;QAC3D,EAAE;QACF,UAAU;QACV,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,qBAAqB;YACxB,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,oBAAoB;YACvB,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,6BAA6B;YAChC,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC1C,KAAK,sBAAsB;YACzB,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;QACnC,KAAK,4BAA4B;YAC/B,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC7E;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAA0B;IAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,oCAAoC;IACpC,MAAM,IAAI,GAAI,OAAoC,CAAC,WAAW,CAAC;IAC/D,MAAM,OAAO,GAAI,OAAoF,CAAC,IAAI,CAAC;IAE3G,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,WAAW;YACd,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM;QACR,KAAK,WAAW;YACd,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM;QACR,KAAK,YAAY;YACf,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YACxB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7B,MAAM;QACR,KAAK,eAAe;YAClB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,aAAa;YAChB,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnE,KAAK,YAAY;YACf,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD;YACE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,0EAA0E;CACxF,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Consolidated Documentation Tool Handler
3
+ *
4
+ * Replaces: f5xc_terraform_search_docs, f5xc_terraform_get_doc, f5xc_terraform_list_docs
5
+ *
6
+ * Tool: f5xc_terraform_docs
7
+ */
8
+ import { DocsInput } from '../schemas/common.js';
9
+ /**
10
+ * Handles the f5xc_terraform_docs tool invocation
11
+ * Routes to appropriate operation based on input.operation
12
+ */
13
+ export declare function handleDocs(input: DocsInput): Promise<string>;
14
+ export declare const DOCS_TOOL_DEFINITION: {
15
+ name: string;
16
+ description: string;
17
+ };
18
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAalE;AAiKD,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Consolidated Documentation Tool Handler
3
+ *
4
+ * Replaces: f5xc_terraform_search_docs, f5xc_terraform_get_doc, f5xc_terraform_list_docs
5
+ *
6
+ * Tool: f5xc_terraform_docs
7
+ */
8
+ import { ResponseFormat } from '../types.js';
9
+ import { searchDocumentation, getDocumentation, listDocumentation, } from '../services/documentation.js';
10
+ // =============================================================================
11
+ // HANDLER
12
+ // =============================================================================
13
+ /**
14
+ * Handles the f5xc_terraform_docs tool invocation
15
+ * Routes to appropriate operation based on input.operation
16
+ */
17
+ export async function handleDocs(input) {
18
+ const { operation, response_format } = input;
19
+ switch (operation) {
20
+ case 'search':
21
+ return handleSearch(input, response_format);
22
+ case 'get':
23
+ return handleGet(input, response_format);
24
+ case 'list':
25
+ return handleList(input, response_format);
26
+ default:
27
+ throw new Error(`Unknown operation: ${operation}`);
28
+ }
29
+ }
30
+ // =============================================================================
31
+ // OPERATION HANDLERS
32
+ // =============================================================================
33
+ function handleSearch(input, format) {
34
+ const { query, type, limit = 20 } = input;
35
+ if (!query) {
36
+ throw new Error('query is required for search operation');
37
+ }
38
+ const results = searchDocumentation(query, type, limit);
39
+ if (format === ResponseFormat.JSON) {
40
+ return JSON.stringify({
41
+ operation: 'search',
42
+ query,
43
+ type: type || 'all',
44
+ results_count: results.length,
45
+ results,
46
+ }, null, 2);
47
+ }
48
+ // Markdown format
49
+ const lines = [
50
+ `# Search Results: "${query}"`,
51
+ '',
52
+ `**Found**: ${results.length} result(s)`,
53
+ type ? `**Type Filter**: ${type}` : '',
54
+ '',
55
+ ];
56
+ if (results.length === 0) {
57
+ lines.push('No matching documentation found.');
58
+ lines.push('');
59
+ lines.push('**Suggestions**:');
60
+ lines.push('- Try different search terms');
61
+ lines.push("- Use `operation: 'list'` to see all available documentation");
62
+ return lines.join('\n');
63
+ }
64
+ for (const result of results) {
65
+ lines.push(`## ${result.name}`);
66
+ lines.push(`- **Type**: ${result.type}`);
67
+ lines.push(`- **Score**: ${result.score.toFixed(2)}`);
68
+ if (result.snippet) {
69
+ lines.push(`- **Snippet**: ${result.snippet.slice(0, 100)}...`);
70
+ }
71
+ lines.push('');
72
+ }
73
+ return lines.join('\n');
74
+ }
75
+ function handleGet(input, format) {
76
+ const { name, type } = input;
77
+ if (!name) {
78
+ throw new Error('name is required for get operation');
79
+ }
80
+ const doc = getDocumentation(name, type);
81
+ if (!doc) {
82
+ const error = {
83
+ error: 'Documentation not found',
84
+ resource: name,
85
+ type: type || 'any',
86
+ suggestion: "Use operation: 'search' or 'list' to find available documentation",
87
+ };
88
+ return format === ResponseFormat.JSON
89
+ ? JSON.stringify(error, null, 2)
90
+ : `# Error: Documentation Not Found\n\n**Resource**: ${name}\n**Type**: ${type || 'any'}\n\nUse \`operation: 'list'\` to see available documentation.`;
91
+ }
92
+ if (format === ResponseFormat.JSON) {
93
+ return JSON.stringify({
94
+ operation: 'get',
95
+ name: doc.name,
96
+ type: doc.type,
97
+ path: doc.path,
98
+ content: doc.content,
99
+ }, null, 2);
100
+ }
101
+ // Return the full markdown content
102
+ return doc.content || `# ${doc.name}\n\nNo content available.`;
103
+ }
104
+ function handleList(input, format) {
105
+ const { type } = input;
106
+ const docs = listDocumentation(type);
107
+ if (format === ResponseFormat.JSON) {
108
+ return JSON.stringify({
109
+ operation: 'list',
110
+ type: type || 'all',
111
+ total: docs.length,
112
+ items: docs.map((d) => ({
113
+ name: d.name,
114
+ type: d.type,
115
+ subscriptionTier: d.subscriptionTier,
116
+ })),
117
+ }, null, 2);
118
+ }
119
+ // Markdown format
120
+ const lines = [
121
+ `# F5XC Terraform Documentation`,
122
+ '',
123
+ `**Total**: ${docs.length} items`,
124
+ type ? `**Type Filter**: ${type}` : '',
125
+ '',
126
+ ];
127
+ // Group by type
128
+ const byType = new Map();
129
+ for (const doc of docs) {
130
+ const t = doc.type;
131
+ if (!byType.has(t)) {
132
+ byType.set(t, []);
133
+ }
134
+ byType.get(t).push(doc);
135
+ }
136
+ for (const [docType, typeDocs] of byType) {
137
+ lines.push(`## ${docType}s (${typeDocs.length})`);
138
+ lines.push('');
139
+ for (const doc of typeDocs.slice(0, 20)) {
140
+ // Limit to 20 per type for readability
141
+ const tierInfo = doc.subscriptionTier ? ` [${doc.subscriptionTier}]` : '';
142
+ lines.push(`- **${doc.name}**${tierInfo}`);
143
+ }
144
+ if (typeDocs.length > 20) {
145
+ lines.push(`- *... and ${typeDocs.length - 20} more*`);
146
+ }
147
+ lines.push('');
148
+ }
149
+ return lines.join('\n');
150
+ }
151
+ // =============================================================================
152
+ // TOOL DEFINITION
153
+ // =============================================================================
154
+ export const DOCS_TOOL_DEFINITION = {
155
+ name: 'f5xc_terraform_docs',
156
+ description: 'F5XC Terraform docs - search, get, or list resources/data-sources/functions/guides',
157
+ };
158
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Consolidated Subscription Tool Handler
3
+ *
4
+ * Replaces: f5xc_terraform_get_subscription_info, f5xc_terraform_get_property_subscription_info
5
+ *
6
+ * Tool: f5xc_terraform_subscription
7
+ */
8
+ import { SubscriptionInput } from '../schemas/common.js';
9
+ /**
10
+ * Handles the f5xc_terraform_subscription tool invocation
11
+ * Routes to appropriate operation based on input.operation
12
+ */
13
+ export declare function handleSubscription(input: SubscriptionInput): Promise<string>;
14
+ export declare const SUBSCRIPTION_TOOL_DEFINITION: {
15
+ name: string;
16
+ description: string;
17
+ };
18
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAazD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlF;AAkPD,eAAO,MAAM,4BAA4B;;;CAGxC,CAAC"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Consolidated Subscription Tool Handler
3
+ *
4
+ * Replaces: f5xc_terraform_get_subscription_info, f5xc_terraform_get_property_subscription_info
5
+ *
6
+ * Tool: f5xc_terraform_subscription
7
+ */
8
+ import { ResponseFormat } from '../types.js';
9
+ import { getResourceSubscriptionInfo, getPropertySubscriptionInfo, getAdvancedTierResources, getSubscriptionSummary, } from '../services/documentation.js';
10
+ // =============================================================================
11
+ // HANDLER
12
+ // =============================================================================
13
+ /**
14
+ * Handles the f5xc_terraform_subscription tool invocation
15
+ * Routes to appropriate operation based on input.operation
16
+ */
17
+ export async function handleSubscription(input) {
18
+ const { operation, response_format } = input;
19
+ switch (operation) {
20
+ case 'resource':
21
+ return handleResource(input, response_format);
22
+ case 'property':
23
+ return handleProperty(input, response_format);
24
+ default:
25
+ throw new Error(`Unknown operation: ${operation}`);
26
+ }
27
+ }
28
+ // =============================================================================
29
+ // OPERATION HANDLERS
30
+ // =============================================================================
31
+ function handleResource(input, format) {
32
+ const { resource_name, tier } = input;
33
+ // If no resource specified, return summary or filtered list
34
+ if (!resource_name) {
35
+ return handleResourceSummary(tier, format);
36
+ }
37
+ const info = getResourceSubscriptionInfo(resource_name);
38
+ if (!info) {
39
+ const error = {
40
+ error: 'Resource not found in subscription metadata',
41
+ resource: resource_name,
42
+ suggestion: 'Use operation: "resource" without resource_name to see all resources',
43
+ };
44
+ return format === ResponseFormat.JSON
45
+ ? JSON.stringify(error, null, 2)
46
+ : `# Error: Resource Not Found\n\n**Resource**: ${resource_name}\n\nUse \`operation: 'resource'\` without resource_name to see all resources.`;
47
+ }
48
+ if (format === ResponseFormat.JSON) {
49
+ return JSON.stringify({
50
+ operation: 'resource',
51
+ resource_name,
52
+ tier: info.tier,
53
+ service: info.service,
54
+ advanced_features: info.advancedFeatures,
55
+ requires_advanced: info.tier === 'ADVANCED',
56
+ }, null, 2);
57
+ }
58
+ // Markdown format
59
+ const lines = [
60
+ `# Subscription Info: ${resource_name}`,
61
+ '',
62
+ `**Tier**: ${info.tier}`,
63
+ `**Service**: ${info.service}`,
64
+ '',
65
+ ];
66
+ if (info.tier === 'ADVANCED') {
67
+ lines.push('> ⚠️ This resource requires an **Advanced** subscription tier.');
68
+ lines.push('');
69
+ }
70
+ if (info.advancedFeatures && info.advancedFeatures.length > 0) {
71
+ lines.push('## Advanced Features');
72
+ lines.push('');
73
+ lines.push('The following features require Advanced tier:');
74
+ for (const feature of info.advancedFeatures) {
75
+ lines.push(`- ${feature}`);
76
+ }
77
+ lines.push('');
78
+ }
79
+ return lines.join('\n');
80
+ }
81
+ function handleResourceSummary(tier, format) {
82
+ const summary = getSubscriptionSummary();
83
+ const advancedResources = getAdvancedTierResources();
84
+ if (format === ResponseFormat.JSON) {
85
+ return JSON.stringify({
86
+ operation: 'resource',
87
+ filter: tier || 'all',
88
+ summary: {
89
+ total_resources: summary.totalResources,
90
+ advanced_only: summary.advancedOnlyResources,
91
+ with_advanced_features: summary.resourcesWithAdvancedFeatures,
92
+ },
93
+ advanced_resources: !tier || tier === 'ADVANCED'
94
+ ? advancedResources.map((r) => ({
95
+ name: r.name,
96
+ type: r.type,
97
+ }))
98
+ : undefined,
99
+ }, null, 2);
100
+ }
101
+ // Markdown format
102
+ const lines = [
103
+ '# F5XC Subscription Tiers Overview',
104
+ '',
105
+ '## Summary',
106
+ '',
107
+ `- **Total Resources**: ${summary.totalResources}`,
108
+ `- **Advanced Only**: ${summary.advancedOnlyResources} resources`,
109
+ `- **With Advanced Features**: ${summary.resourcesWithAdvancedFeatures} resources`,
110
+ '',
111
+ ];
112
+ if (!tier || tier === 'ADVANCED') {
113
+ lines.push('## Advanced Tier Resources');
114
+ lines.push('');
115
+ lines.push('These resources require an Advanced subscription:');
116
+ lines.push('');
117
+ for (const resource of advancedResources.slice(0, 30)) {
118
+ lines.push(`- **${resource.name}** (${resource.type})`);
119
+ }
120
+ if (advancedResources.length > 30) {
121
+ lines.push(`- *... and ${advancedResources.length - 30} more*`);
122
+ }
123
+ lines.push('');
124
+ }
125
+ return lines.join('\n');
126
+ }
127
+ function handleProperty(input, format) {
128
+ const { resource_name, property_path } = input;
129
+ if (!resource_name) {
130
+ throw new Error('resource_name is required for property operation');
131
+ }
132
+ // If no property specified, get all advanced properties for the resource
133
+ if (!property_path) {
134
+ return handleResourceProperties(resource_name, format);
135
+ }
136
+ const info = getPropertySubscriptionInfo(resource_name, property_path);
137
+ if (!info) {
138
+ const error = {
139
+ error: 'Resource not found in subscription metadata',
140
+ resource: resource_name,
141
+ property: property_path,
142
+ };
143
+ return format === ResponseFormat.JSON
144
+ ? JSON.stringify(error, null, 2)
145
+ : `# Error: Resource Not Found\n\n**Resource**: ${resource_name}`;
146
+ }
147
+ if (format === ResponseFormat.JSON) {
148
+ return JSON.stringify({
149
+ operation: 'property',
150
+ resource_name: info.resourceName,
151
+ property_path: info.propertyName,
152
+ requires_advanced: info.requiresAdvanced,
153
+ matched_feature: info.matchedFeature,
154
+ resource_tier: info.resourceTier,
155
+ service: info.service,
156
+ }, null, 2);
157
+ }
158
+ // Markdown format
159
+ const lines = [
160
+ `# Property Subscription Info`,
161
+ '',
162
+ `**Resource**: ${resource_name}`,
163
+ `**Property**: ${property_path}`,
164
+ '',
165
+ ];
166
+ if (info.requiresAdvanced) {
167
+ lines.push('> ⚠️ This property requires an **Advanced** subscription tier.');
168
+ lines.push('');
169
+ lines.push(`**Feature**: ${info.matchedFeature || property_path}`);
170
+ }
171
+ else {
172
+ lines.push('✅ This property is available on **Standard** tier.');
173
+ }
174
+ return lines.join('\n');
175
+ }
176
+ function handleResourceProperties(resourceName, format) {
177
+ const info = getResourceSubscriptionInfo(resourceName);
178
+ if (!info) {
179
+ const error = {
180
+ error: 'Resource not found',
181
+ resource: resourceName,
182
+ };
183
+ return format === ResponseFormat.JSON
184
+ ? JSON.stringify(error, null, 2)
185
+ : `# Error: Resource Not Found\n\n**Resource**: ${resourceName}`;
186
+ }
187
+ const advancedFeatures = info.advancedFeatures || [];
188
+ if (format === ResponseFormat.JSON) {
189
+ return JSON.stringify({
190
+ operation: 'property',
191
+ resource_name: resourceName,
192
+ resource_tier: info.tier,
193
+ advanced_properties: advancedFeatures,
194
+ advanced_count: advancedFeatures.length,
195
+ }, null, 2);
196
+ }
197
+ // Markdown format
198
+ const lines = [
199
+ `# Advanced Properties: ${resourceName}`,
200
+ '',
201
+ `**Resource Tier**: ${info.tier}`,
202
+ `**Advanced Properties**: ${advancedFeatures.length}`,
203
+ '',
204
+ ];
205
+ if (advancedFeatures.length === 0) {
206
+ lines.push('No advanced-tier properties found for this resource.');
207
+ lines.push('All properties are available on Standard tier.');
208
+ }
209
+ else {
210
+ lines.push('## Properties Requiring Advanced Tier');
211
+ lines.push('');
212
+ for (const feature of advancedFeatures) {
213
+ lines.push(`- ${feature}`);
214
+ }
215
+ }
216
+ return lines.join('\n');
217
+ }
218
+ // =============================================================================
219
+ // TOOL DEFINITION
220
+ // =============================================================================
221
+ export const SUBSCRIPTION_TOOL_DEFINITION = {
222
+ name: 'f5xc_terraform_subscription',
223
+ description: 'Check F5XC resource subscription tiers and advanced feature requirements',
224
+ };
225
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-terraform-mcp",
3
- "version": "2.14.10",
3
+ "version": "2.15.0",
4
4
  "description": "MCP server for F5 Distributed Cloud Terraform provider - documentation, 270+ OpenAPI specs, subscription info, and addon activation workflows for AI assistants",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",