@get-technology-inc/jamf-docs-mcp-server 1.1.0 → 1.3.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 (94) hide show
  1. package/README.md +233 -21
  2. package/dist/completions.d.ts +13 -0
  3. package/dist/completions.d.ts.map +1 -0
  4. package/dist/completions.js +31 -0
  5. package/dist/completions.js.map +1 -0
  6. package/dist/constants.d.ts +125 -1
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +187 -14
  9. package/dist/constants.js.map +1 -1
  10. package/dist/index.js +43 -7
  11. package/dist/index.js.map +1 -1
  12. package/dist/prompts/compare-versions.d.ts +7 -0
  13. package/dist/prompts/compare-versions.d.ts.map +1 -0
  14. package/dist/prompts/compare-versions.js +56 -0
  15. package/dist/prompts/compare-versions.js.map +1 -0
  16. package/dist/prompts/index.d.ts +6 -0
  17. package/dist/prompts/index.d.ts.map +1 -0
  18. package/dist/prompts/index.js +12 -0
  19. package/dist/prompts/index.js.map +1 -0
  20. package/dist/prompts/setup-guide.d.ts +7 -0
  21. package/dist/prompts/setup-guide.d.ts.map +1 -0
  22. package/dist/prompts/setup-guide.js +53 -0
  23. package/dist/prompts/setup-guide.js.map +1 -0
  24. package/dist/prompts/troubleshoot.d.ts +7 -0
  25. package/dist/prompts/troubleshoot.d.ts.map +1 -0
  26. package/dist/prompts/troubleshoot.js +52 -0
  27. package/dist/prompts/troubleshoot.js.map +1 -0
  28. package/dist/resources/index.d.ts.map +1 -1
  29. package/dist/resources/index.js +78 -2
  30. package/dist/resources/index.js.map +1 -1
  31. package/dist/schemas/index.d.ts +10 -7
  32. package/dist/schemas/index.d.ts.map +1 -1
  33. package/dist/schemas/index.js +18 -16
  34. package/dist/schemas/index.js.map +1 -1
  35. package/dist/schemas/output.d.ts +78 -0
  36. package/dist/schemas/output.d.ts.map +1 -0
  37. package/dist/schemas/output.js +78 -0
  38. package/dist/schemas/output.js.map +1 -0
  39. package/dist/services/cache.d.ts +37 -3
  40. package/dist/services/cache.d.ts.map +1 -1
  41. package/dist/services/cache.js +139 -15
  42. package/dist/services/cache.js.map +1 -1
  43. package/dist/services/metadata.d.ts +4 -0
  44. package/dist/services/metadata.d.ts.map +1 -1
  45. package/dist/services/metadata.js +52 -9
  46. package/dist/services/metadata.js.map +1 -1
  47. package/dist/services/scraper.d.ts +9 -1
  48. package/dist/services/scraper.d.ts.map +1 -1
  49. package/dist/services/scraper.js +171 -20
  50. package/dist/services/scraper.js.map +1 -1
  51. package/dist/services/tokenizer.d.ts +5 -0
  52. package/dist/services/tokenizer.d.ts.map +1 -1
  53. package/dist/services/tokenizer.js +20 -5
  54. package/dist/services/tokenizer.js.map +1 -1
  55. package/dist/tools/get-article.d.ts.map +1 -1
  56. package/dist/tools/get-article.js +37 -11
  57. package/dist/tools/get-article.js.map +1 -1
  58. package/dist/tools/get-toc.d.ts.map +1 -1
  59. package/dist/tools/get-toc.js +54 -10
  60. package/dist/tools/get-toc.js.map +1 -1
  61. package/dist/tools/list-products.d.ts.map +1 -1
  62. package/dist/tools/list-products.js +34 -15
  63. package/dist/tools/list-products.js.map +1 -1
  64. package/dist/tools/search.d.ts.map +1 -1
  65. package/dist/tools/search.js +83 -22
  66. package/dist/tools/search.js.map +1 -1
  67. package/dist/transport/http.d.ts +12 -0
  68. package/dist/transport/http.d.ts.map +1 -0
  69. package/dist/transport/http.js +297 -0
  70. package/dist/transport/http.js.map +1 -0
  71. package/dist/transport/index.d.ts +13 -0
  72. package/dist/transport/index.d.ts.map +1 -0
  73. package/dist/transport/index.js +40 -0
  74. package/dist/transport/index.js.map +1 -0
  75. package/dist/types.d.ts +30 -9
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/types.js.map +1 -1
  78. package/dist/utils/doc-type.d.ts +9 -0
  79. package/dist/utils/doc-type.d.ts.map +1 -0
  80. package/dist/utils/doc-type.js +16 -0
  81. package/dist/utils/doc-type.js.map +1 -0
  82. package/dist/utils/progress.d.ts +13 -0
  83. package/dist/utils/progress.d.ts.map +1 -0
  84. package/dist/utils/progress.js +18 -0
  85. package/dist/utils/progress.js.map +1 -0
  86. package/dist/utils/sanitize.d.ts +30 -0
  87. package/dist/utils/sanitize.d.ts.map +1 -0
  88. package/dist/utils/sanitize.js +57 -0
  89. package/dist/utils/sanitize.js.map +1 -0
  90. package/dist/utils/url.d.ts +11 -0
  91. package/dist/utils/url.d.ts.map +1 -0
  92. package/dist/utils/url.js +23 -0
  93. package/dist/utils/url.js.map +1 -0
  94. package/package.json +11 -4
@@ -3,8 +3,11 @@
3
3
  * Retrieve the full content of a specific Jamf documentation article.
4
4
  */
5
5
  import { GetArticleInputSchema } from '../schemas/index.js';
6
+ import { reportProgress } from '../utils/progress.js';
7
+ import { ArticleOutputSchema } from '../schemas/output.js';
6
8
  import { ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
7
9
  import { fetchArticle } from '../services/scraper.js';
10
+ import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
8
11
  function formatBreadcrumb(breadcrumb) {
9
12
  if (breadcrumb === undefined || breadcrumb.length === 0) {
10
13
  return '';
@@ -49,16 +52,17 @@ function formatRelatedArticles(articles) {
49
52
  }
50
53
  let result = '\n\n---\n\n## Related Articles\n\n';
51
54
  for (const related of articles) {
52
- result += `- [${related.title}](${related.url})\n`;
55
+ result += `- [${sanitizeMarkdownText(related.title)}](${sanitizeMarkdownUrl(related.url)})\n`;
53
56
  }
54
57
  return result;
55
58
  }
56
59
  function formatFooter(url, tokenInfo, compact = false) {
60
+ const safeUrl = sanitizeMarkdownUrl(url);
57
61
  if (compact) {
58
- return `\n---\n*[Source](${url}) | ${tokenInfo.tokenCount} tokens${tokenInfo.truncated ? ' (truncated)' : ''}*\n`;
62
+ return `\n---\n*[Source](${safeUrl}) | ${tokenInfo.tokenCount} tokens${tokenInfo.truncated ? ' (truncated)' : ''}*\n`;
59
63
  }
60
64
  let result = '\n\n---\n\n';
61
- result += `*Source: [${url}](${url})*\n`;
65
+ result += `*Source: [${sanitizeMarkdownText(url)}](${safeUrl})*\n`;
62
66
  result += `*${tokenInfo.tokenCount.toLocaleString()} tokens`;
63
67
  if (tokenInfo.truncated) {
64
68
  result += ` (truncated from original, max: ${tokenInfo.maxTokens.toLocaleString()})`;
@@ -69,7 +73,7 @@ function formatFooter(url, tokenInfo, compact = false) {
69
73
  /**
70
74
  * Format article in compact mode
71
75
  */
72
- function formatArticleAsCompact(article, tokenInfo, _sections) {
76
+ function formatArticleAsCompact(article, tokenInfo) {
73
77
  let markdown = `# ${article.title}\n\n`;
74
78
  // Compact metadata
75
79
  const meta = [];
@@ -118,7 +122,7 @@ Args:
118
122
  - section (string, optional): Extract only a specific section by title or ID (e.g., "Prerequisites", "Configuration")
119
123
  - summaryOnly (boolean, optional): Return only article summary and outline instead of full content (default: false). Token-efficient way to preview an article
120
124
  - includeRelated (boolean, optional): Include links to related articles (default: false)
121
- - maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
125
+ - maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)
122
126
  - outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief output
123
127
  - responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
124
128
 
@@ -167,13 +171,14 @@ export function registerGetArticleTool(server) {
167
171
  title: 'Get Jamf Documentation Article',
168
172
  description: TOOL_DESCRIPTION,
169
173
  inputSchema: GetArticleInputSchema,
174
+ outputSchema: ArticleOutputSchema,
170
175
  annotations: {
171
176
  readOnlyHint: true,
172
177
  destructiveHint: false,
173
178
  idempotentHint: true,
174
179
  openWorldHint: true
175
180
  }
176
- }, async (args) => {
181
+ }, async (args, extra) => {
177
182
  // Parse and validate input
178
183
  const parseResult = GetArticleInputSchema.safeParse(args);
179
184
  if (!parseResult.success) {
@@ -184,12 +189,14 @@ export function registerGetArticleTool(server) {
184
189
  }
185
190
  const params = parseResult.data;
186
191
  try {
192
+ await reportProgress(extra, 0, 100);
187
193
  const article = await fetchArticle(params.url, {
188
194
  includeRelated: params.includeRelated,
189
195
  summaryOnly: params.summaryOnly,
190
196
  ...(params.section !== undefined && { section: params.section }),
191
197
  maxTokens: params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS
192
198
  });
199
+ await reportProgress(extra, 70, 100);
193
200
  const { tokenInfo, sections } = article;
194
201
  // Build response
195
202
  const response = {
@@ -198,31 +205,50 @@ export function registerGetArticleTool(server) {
198
205
  tokenInfo,
199
206
  sections
200
207
  };
201
- // Format output
208
+ const structuredContent = {
209
+ title: article.title,
210
+ url: article.url,
211
+ content: article.content,
212
+ ...(article.product !== undefined ? { product: article.product } : {}),
213
+ ...(article.version !== undefined ? { version: article.version } : {}),
214
+ ...(article.lastUpdated !== undefined ? { lastUpdated: article.lastUpdated } : {}),
215
+ ...(article.breadcrumb !== undefined ? { breadcrumb: article.breadcrumb } : {}),
216
+ sections: sections.map(s => ({
217
+ id: s.id,
218
+ title: s.title,
219
+ level: s.level,
220
+ tokenCount: s.tokenCount
221
+ })),
222
+ truncated: tokenInfo.truncated
223
+ };
202
224
  if (params.responseFormat === ResponseFormat.JSON) {
225
+ await reportProgress(extra, 100, 100);
203
226
  return {
204
227
  content: [{
205
228
  type: 'text',
206
229
  text: JSON.stringify(response, null, 2)
207
- }]
230
+ }],
231
+ structuredContent
208
232
  };
209
233
  }
210
234
  // Markdown format (full or compact)
211
235
  const markdown = params.outputMode === OutputMode.COMPACT
212
- ? formatArticleAsCompact(article, tokenInfo, sections)
236
+ ? formatArticleAsCompact(article, tokenInfo)
213
237
  : formatArticleAsMarkdown(article, tokenInfo, sections, {
214
238
  section: params.section,
215
239
  includeRelated: params.includeRelated
216
240
  });
241
+ await reportProgress(extra, 100, 100);
217
242
  return {
218
243
  content: [{
219
244
  type: 'text',
220
245
  text: markdown
221
- }]
246
+ }],
247
+ structuredContent
222
248
  };
223
249
  }
224
250
  catch (error) {
225
- const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
251
+ const errorMessage = getSafeErrorMessage(error);
226
252
  // Provide helpful error messages
227
253
  let helpText = '';
228
254
  if (errorMessage.includes('404')) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../src/tools/get-article.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../src/tools/get-article.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-toc.d.ts","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkIzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0G1D"}
1
+ {"version":3,"file":"get-toc.d.ts","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmJzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2I1D"}
@@ -3,15 +3,18 @@
3
3
  * Get the table of contents for a Jamf product's documentation.
4
4
  */
5
5
  import { GetTocInputSchema } from '../schemas/index.js';
6
+ import { reportProgress } from '../utils/progress.js';
7
+ import { TocOutputSchema } from '../schemas/output.js';
6
8
  import { ResponseFormat, OutputMode, JAMF_PRODUCTS, TOKEN_CONFIG } from '../constants.js';
7
9
  import { fetchTableOfContents } from '../services/scraper.js';
8
10
  import { getAvailableVersions } from '../services/metadata.js';
11
+ import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
9
12
  /**
10
13
  * Render a single TOC entry as markdown
11
14
  */
12
15
  function renderTocEntry(entry, depth = 0, compact = false) {
13
16
  const indent = ' '.repeat(depth);
14
- let result = `${indent}- [${entry.title}](${entry.url})\n`;
17
+ let result = `${indent}- [${sanitizeMarkdownText(entry.title)}](${sanitizeMarkdownUrl(entry.url)})\n`;
15
18
  if (!compact && entry.children !== undefined && entry.children.length > 0) {
16
19
  for (const child of entry.children) {
17
20
  result += renderTocEntry(child, depth + 1, compact);
@@ -56,6 +59,19 @@ function formatTocFull(productName, version, toc, pagination, tokenInfo) {
56
59
  markdown += '\n\n*Use `jamf_docs_get_article` with any URL above to read the full content.*\n';
57
60
  return markdown;
58
61
  }
62
+ /**
63
+ * Flatten nested TOC entries into a flat list
64
+ */
65
+ function flattenTocEntries(entries) {
66
+ const flat = [];
67
+ for (const entry of entries) {
68
+ flat.push({ title: entry.title, url: entry.url });
69
+ if (entry.children !== undefined && entry.children.length > 0) {
70
+ flat.push(...flattenTocEntries(entry.children));
71
+ }
72
+ }
73
+ return flat;
74
+ }
59
75
  const TOOL_NAME = 'jamf_docs_get_toc';
60
76
  const TOOL_DESCRIPTION = `Get the table of contents for a Jamf product's documentation.
61
77
 
@@ -66,7 +82,7 @@ Args:
66
82
  - product (string, required): Product ID - one of: jamf-pro, jamf-school, jamf-connect, jamf-protect
67
83
  - version (string, optional): Specific version (defaults to latest)
68
84
  - page (number, optional): Page number for pagination 1-100 (default: 1)
69
- - maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
85
+ - maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)
70
86
  - outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for flat list without nested children
71
87
  - responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
72
88
 
@@ -110,13 +126,14 @@ export function registerGetTocTool(server) {
110
126
  title: 'Get Documentation Table of Contents',
111
127
  description: TOOL_DESCRIPTION,
112
128
  inputSchema: GetTocInputSchema,
129
+ outputSchema: TocOutputSchema,
113
130
  annotations: {
114
131
  readOnlyHint: true,
115
132
  destructiveHint: false,
116
133
  idempotentHint: true,
117
134
  openWorldHint: true
118
135
  }
119
- }, async (args) => {
136
+ }, async (args, extra) => {
120
137
  // Parse and validate input
121
138
  const parseResult = GetTocInputSchema.safeParse(args);
122
139
  if (!parseResult.success) {
@@ -154,10 +171,12 @@ export function registerGetTocTool(server) {
154
171
  };
155
172
  }
156
173
  }
174
+ await reportProgress(extra, 0, 100);
157
175
  const tocResult = await fetchTableOfContents(productId, version, {
158
176
  ...(params.page !== undefined && { page: params.page }),
159
177
  maxTokens: params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS
160
178
  });
179
+ await reportProgress(extra, 50, 100);
161
180
  const { toc, pagination, tokenInfo } = tocResult;
162
181
  // Build response
163
182
  const response = {
@@ -167,33 +186,58 @@ export function registerGetTocTool(server) {
167
186
  tokenInfo,
168
187
  pagination
169
188
  };
170
- // Format output
189
+ const structuredContent = {
190
+ product: productInfo.name,
191
+ version,
192
+ totalEntries: pagination.totalItems,
193
+ page: pagination.page,
194
+ totalPages: pagination.totalPages,
195
+ hasMore: pagination.hasNext,
196
+ entries: flattenTocEntries(toc)
197
+ };
198
+ // Version transparency note
199
+ const versionNote = (params.version !== undefined && params.version !== '' && params.version !== 'current')
200
+ ? 'The Jamf documentation API only provides current version content. Results shown are from the latest version.'
201
+ : undefined;
171
202
  if (params.responseFormat === ResponseFormat.JSON) {
203
+ await reportProgress(extra, 100, 100);
204
+ const jsonResponse = versionNote !== undefined
205
+ ? { ...response, versionNote }
206
+ : response;
172
207
  return {
173
208
  content: [{
174
209
  type: 'text',
175
- text: JSON.stringify(response, null, 2)
176
- }]
210
+ text: JSON.stringify(jsonResponse, null, 2)
211
+ }],
212
+ structuredContent: versionNote !== undefined
213
+ ? { ...structuredContent, versionNote }
214
+ : structuredContent
177
215
  };
178
216
  }
179
217
  // Format as markdown (compact or full)
180
- const markdown = params.outputMode === OutputMode.COMPACT
218
+ let markdown = params.outputMode === OutputMode.COMPACT
181
219
  ? formatTocCompact(productInfo.name, toc, pagination)
182
220
  : formatTocFull(productInfo.name, version, toc, pagination, tokenInfo);
221
+ if (versionNote !== undefined) {
222
+ markdown += `\n> **Version Note:** ${versionNote}\n`;
223
+ }
224
+ await reportProgress(extra, 100, 100);
183
225
  return {
184
226
  content: [{
185
227
  type: 'text',
186
228
  text: markdown
187
- }]
229
+ }],
230
+ structuredContent: versionNote !== undefined
231
+ ? { ...structuredContent, versionNote }
232
+ : structuredContent
188
233
  };
189
234
  }
190
235
  catch (error) {
191
- const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
192
236
  return {
193
237
  isError: true,
194
238
  content: [{
195
239
  type: 'text',
196
- text: `Error fetching table of contents: ${errorMessage}`
240
+ text: `Error fetching table of contents: ${getSafeErrorMessage(error)}`
197
241
  }]
198
242
  };
199
243
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-toc.js","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-toc.js","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyCzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4HhE"}
1
+ {"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+IhE"}
@@ -3,14 +3,17 @@
3
3
  * Lists all available Jamf products and their documentation versions.
4
4
  */
5
5
  import { ListProductsInputSchema } from '../schemas/index.js';
6
- import { JAMF_PRODUCTS, JAMF_TOPICS, ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
6
+ import { ProductListOutputSchema } from '../schemas/output.js';
7
+ import { JAMF_PRODUCTS, JAMF_TOPICS, DOC_TYPES, ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
7
8
  import { estimateTokens, createTokenInfo } from '../services/tokenizer.js';
9
+ import { getProductAvailability } from '../services/metadata.js';
10
+ import { getSafeErrorMessage } from '../utils/sanitize.js';
8
11
  const TOOL_NAME = 'jamf_docs_list_products';
9
12
  const TOOL_DESCRIPTION = `List all available Jamf products, topics, and their documentation versions.
10
13
 
11
14
  This tool returns information about all Jamf products with available documentation,
12
- including Jamf Pro, Jamf School, Jamf Connect, and Jamf Protect. Also lists available
13
- topic filters for search.
15
+ including Jamf Pro, Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet,
16
+ and more. Also lists available topic and docType filters for search.
14
17
 
15
18
  Args:
16
19
  - maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
@@ -43,13 +46,14 @@ export function registerListProductsTool(server) {
43
46
  title: 'List Jamf Products',
44
47
  description: TOOL_DESCRIPTION,
45
48
  inputSchema: ListProductsInputSchema,
49
+ outputSchema: ProductListOutputSchema,
46
50
  annotations: {
47
51
  readOnlyHint: true,
48
52
  destructiveHint: false,
49
53
  idempotentHint: true,
50
54
  openWorldHint: false
51
55
  }
52
- }, (args) => {
56
+ }, async (args) => {
53
57
  // Parse and validate input
54
58
  const parseResult = ListProductsInputSchema.safeParse(args);
55
59
  if (!parseResult.success) {
@@ -61,13 +65,16 @@ export function registerListProductsTool(server) {
61
65
  const params = parseResult.data;
62
66
  const maxTokens = params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS;
63
67
  try {
68
+ // Fetch product availability (cached)
69
+ const availability = await getProductAvailability();
64
70
  // Build product list
65
71
  const products = Object.values(JAMF_PRODUCTS).map(product => ({
66
72
  id: product.id,
67
73
  name: product.name,
68
74
  description: product.description,
69
75
  currentVersion: product.latestVersion,
70
- availableVersions: [...product.versions]
76
+ availableVersions: [...product.versions],
77
+ hasContent: availability[product.id] ?? true
71
78
  }));
72
79
  // Build topics list
73
80
  const topics = Object.entries(JAMF_TOPICS).map(([id, topic]) => ({
@@ -75,18 +82,19 @@ export function registerListProductsTool(server) {
75
82
  name: topic.name,
76
83
  keywords: topic.keywords
77
84
  }));
78
- // Format output based on requested format
85
+ const structuredContent = { products, topics };
79
86
  if (params.responseFormat === ResponseFormat.JSON) {
87
+ const jsonData = JSON.stringify(structuredContent);
80
88
  const jsonOutput = JSON.stringify({
81
- products,
82
- topics,
83
- tokenInfo: createTokenInfo(JSON.stringify({ products, topics }), maxTokens)
89
+ ...structuredContent,
90
+ tokenInfo: createTokenInfo(jsonData, maxTokens)
84
91
  }, null, 2);
85
92
  return {
86
93
  content: [{
87
94
  type: 'text',
88
95
  text: jsonOutput
89
- }]
96
+ }],
97
+ structuredContent
90
98
  };
91
99
  }
92
100
  // Compact mode: minimal output
@@ -103,7 +111,8 @@ export function registerListProductsTool(server) {
103
111
  content: [{
104
112
  type: 'text',
105
113
  text: markdown
106
- }]
114
+ }],
115
+ structuredContent
107
116
  };
108
117
  }
109
118
  // Full markdown format
@@ -113,7 +122,11 @@ export function registerListProductsTool(server) {
113
122
  markdown += `- **ID**: \`${product.id}\`\n`;
114
123
  markdown += `- **Description**: ${product.description}\n`;
115
124
  markdown += `- **Current Version**: ${product.currentVersion}\n`;
116
- markdown += `- **Available Versions**: ${product.availableVersions.join(', ')}\n\n`;
125
+ markdown += `- **Available Versions**: ${product.availableVersions.join(', ')}\n`;
126
+ if (!product.hasContent) {
127
+ markdown += '- **Status**: No documentation content available\n';
128
+ }
129
+ markdown += '\n';
117
130
  }
118
131
  markdown += '---\n\n';
119
132
  markdown += '# Available Topics for Filtering\n\n';
@@ -123,6 +136,12 @@ export function registerListProductsTool(server) {
123
136
  markdown += ` *Keywords: ${topic.keywords.slice(0, 4).join(', ')}${topic.keywords.length > 4 ? '...' : ''}*\n`;
124
137
  }
125
138
  markdown += '\n---\n\n';
139
+ markdown += '# Document Types for Filtering\n\n';
140
+ markdown += 'Use `docType` parameter in `jamf_docs_search` to filter by document type:\n\n';
141
+ for (const [id, dt] of Object.entries(DOC_TYPES)) {
142
+ markdown += `- **\`${id}\`**: ${dt.description}\n`;
143
+ }
144
+ markdown += '\n---\n\n';
126
145
  // Token info
127
146
  const tokenCount = estimateTokens(markdown);
128
147
  markdown += `*${tokenCount.toLocaleString()} tokens*\n\n`;
@@ -132,16 +151,16 @@ export function registerListProductsTool(server) {
132
151
  content: [{
133
152
  type: 'text',
134
153
  text: markdown
135
- }]
154
+ }],
155
+ structuredContent
136
156
  };
137
157
  }
138
158
  catch (error) {
139
- const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
140
159
  return {
141
160
  isError: true,
142
161
  content: [{
143
162
  type: 'text',
144
- text: `Error listing products: ${errorMessage}`
163
+ text: `Error listing products: ${getSafeErrorMessage(error)}`
145
164
  }]
146
165
  };
147
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8KzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwI1D"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiLzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuM1D"}