@nanogpt/mcp 1.1.5 → 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 (48) hide show
  1. package/dist/config.d.ts +6 -3
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +23 -17
  4. package/dist/config.js.map +1 -1
  5. package/dist/httpClient.d.ts +13 -0
  6. package/dist/httpClient.d.ts.map +1 -1
  7. package/dist/httpClient.js +94 -4
  8. package/dist/httpClient.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +49 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/resources.d.ts +9 -2
  14. package/dist/resources.d.ts.map +1 -1
  15. package/dist/resources.js +14 -5
  16. package/dist/resources.js.map +1 -1
  17. package/dist/tools/applicationScrapers.d.ts +922 -0
  18. package/dist/tools/applicationScrapers.d.ts.map +1 -0
  19. package/dist/tools/applicationScrapers.js +306 -0
  20. package/dist/tools/applicationScrapers.js.map +1 -0
  21. package/dist/tools/chat.d.ts.map +1 -1
  22. package/dist/tools/chat.js +4 -1
  23. package/dist/tools/chat.js.map +1 -1
  24. package/dist/tools/generationExtras.d.ts +432 -0
  25. package/dist/tools/generationExtras.d.ts.map +1 -0
  26. package/dist/tools/generationExtras.js +419 -0
  27. package/dist/tools/generationExtras.js.map +1 -0
  28. package/dist/tools/index.d.ts +4 -0
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +4 -0
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/listModels.d.ts +2 -2
  33. package/dist/tools/listModels.d.ts.map +1 -1
  34. package/dist/tools/listModels.js +41 -2
  35. package/dist/tools/listModels.js.map +1 -1
  36. package/dist/tools/researchTools.d.ts +88 -0
  37. package/dist/tools/researchTools.d.ts.map +1 -0
  38. package/dist/tools/researchTools.js +241 -0
  39. package/dist/tools/researchTools.js.map +1 -0
  40. package/dist/tools/vision.d.ts +78 -0
  41. package/dist/tools/vision.d.ts.map +1 -0
  42. package/dist/tools/vision.js +155 -0
  43. package/dist/tools/vision.js.map +1 -0
  44. package/dist/tools/webSearch.d.ts +102 -7
  45. package/dist/tools/webSearch.d.ts.map +1 -1
  46. package/dist/tools/webSearch.js +143 -8
  47. package/dist/tools/webSearch.js.map +1 -1
  48. package/package.json +14 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationScrapers.d.ts","sourceRoot":"","sources":["../../src/tools/applicationScrapers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwClB,CAAC;AAEjB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAYzB,CAAC;AAEjB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAQtB,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA+Bd,CAAC;AAgBjB,eAAO,MAAM,yBAAyB,sCAAyC,CAAC;AAChF,eAAO,MAAM,gCAAgC,sCAAgD,CAAC;AAC9F,eAAO,MAAM,6BAA6B,sCAA6C,CAAC;AACxF,eAAO,MAAM,qBAAqB,sCAAqC,CAAC;AACxE,eAAO,MAAM,gBAAgB,sCAAuC,CAAC;AAErE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwFe,OAAO;;;;CA1E5C,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwEQ,OAAO;;;;CA1D5C,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwDW,OAAO;;;;CA1C5C,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwCmB,OAAO;;;;CA1B5C,CAAC"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * NanoGPT application scraper tools.
3
+ *
4
+ * These tools expose paid NanoGPT application scraper endpoints through MCP.
5
+ */
6
+ import { z } from 'zod';
7
+ import { requestJson } from '../httpClient.js';
8
+ import { handleToolError, processRawResponse, buildContent, zodToJsonSchema } from '../toolUtils.js';
9
+ const startUrlSchema = z.union([
10
+ z.string().min(1),
11
+ z.object({ url: z.string().min(1) }).passthrough(),
12
+ ]);
13
+ const socialProfilesSchema = z.object({
14
+ facebooks: z.boolean().optional(),
15
+ instagrams: z.boolean().optional(),
16
+ youtubes: z.boolean().optional(),
17
+ tiktoks: z.boolean().optional(),
18
+ twitters: z.boolean().optional(),
19
+ }).passthrough();
20
+ const commonControlsSchema = z.object({
21
+ maxTotalChargeUsd: z.number().positive().optional()
22
+ .describe('Maximum billed USD charge allowed for this run. Required by the API for unbounded runs.'),
23
+ waitForFinishSecs: z.number().int().min(5).max(240).optional()
24
+ .describe('Maximum time to wait for the scraper run to finish. Default/maximum: 240.'),
25
+ resultLimit: z.number().int().min(1).max(5000).optional()
26
+ .describe('Maximum number of dataset items to return from the completed run.'),
27
+ resultOffset: z.number().int().min(0).optional()
28
+ .describe('Dataset item offset for pagination.'),
29
+ clean: z.boolean().optional()
30
+ .describe('Return Apify clean dataset items. Default: true.'),
31
+ include_raw: z.boolean().optional().default(false)
32
+ .describe('Include the raw NanoGPT API response for debugging. Large raw responses are returned as a resource link.'),
33
+ });
34
+ export const googleMapsInputSchema = commonControlsSchema.extend({
35
+ searchStringsArray: z.array(z.string().min(1)).optional()
36
+ .describe('Google Maps search terms, e.g. ["coffee shops in Amsterdam"].'),
37
+ locationQuery: z.string().optional(),
38
+ maxCrawledPlacesPerSearch: z.number().int().positive().optional()
39
+ .describe('Limit places crawled per search term. Use this to keep search runs bounded.'),
40
+ language: z.string().optional(),
41
+ categoryFilterWords: z.array(z.string()).optional(),
42
+ searchMatching: z.string().optional(),
43
+ placeMinimumStars: z.string().optional(),
44
+ website: z.string().optional(),
45
+ skipClosedPlaces: z.boolean().optional(),
46
+ scrapePlaceDetailPage: z.boolean().optional(),
47
+ scrapeTableReservationProvider: z.boolean().optional(),
48
+ includeWebResults: z.boolean().optional(),
49
+ scrapeDirectories: z.boolean().optional(),
50
+ maxQuestions: z.number().int().min(0).optional(),
51
+ scrapeContacts: z.boolean().optional(),
52
+ scrapeSocialMediaProfiles: socialProfilesSchema.optional(),
53
+ maximumLeadsEnrichmentRecords: z.number().int().min(0).optional(),
54
+ leadsEnrichmentDepartments: z.array(z.string()).optional(),
55
+ verifyLeadsEnrichmentEmails: z.boolean().optional(),
56
+ maxReviews: z.number().int().min(0).optional(),
57
+ reviewsStartDate: z.string().optional(),
58
+ reviewsSort: z.string().optional(),
59
+ reviewsFilterString: z.string().optional(),
60
+ reviewsOrigin: z.string().optional(),
61
+ scrapeReviewsPersonalData: z.boolean().optional(),
62
+ maxImages: z.number().int().min(0).optional(),
63
+ scrapeImageAuthors: z.boolean().optional(),
64
+ countryCode: z.string().optional(),
65
+ city: z.string().optional(),
66
+ state: z.string().optional(),
67
+ county: z.string().optional(),
68
+ postalCode: z.string().optional(),
69
+ customGeolocation: z.record(z.unknown()).optional(),
70
+ startUrls: z.array(startUrlSchema).optional()
71
+ .describe('Google Maps place/list URLs. Strings or objects like { "url": "..." } are accepted.'),
72
+ placeIds: z.array(z.string().min(1)).optional(),
73
+ allPlacesNoSearchAction: z.string().optional(),
74
+ }).passthrough();
75
+ export const googleMapsReviewsInputSchema = commonControlsSchema.extend({
76
+ startUrls: z.array(startUrlSchema).optional()
77
+ .describe('Google Maps place URLs. Strings or objects like { "url": "..." } are accepted.'),
78
+ placeIds: z.array(z.string().min(1)).optional(),
79
+ maxReviews: z.number().int().positive().optional()
80
+ .describe('Maximum reviews per place. Required to make estimates bounded unless maxTotalChargeUsd is set.'),
81
+ reviewsSort: z.string().optional()
82
+ .describe('Review sort mode. If reviewsStartDate is set, use newest.'),
83
+ reviewsStartDate: z.string().optional(),
84
+ language: z.string().optional(),
85
+ reviewsOrigin: z.string().optional(),
86
+ personalData: z.boolean().optional(),
87
+ }).passthrough();
88
+ export const instagramPostsInputSchema = commonControlsSchema.extend({
89
+ username: z.array(z.string().min(1)).min(1)
90
+ .describe('Instagram usernames, profile URLs, or post/reel/TV URLs. Usernames may include @.'),
91
+ resultsLimit: z.number().int().positive().optional()
92
+ .describe('Posts per profile. Required for bounded profile runs unless maxTotalChargeUsd is set.'),
93
+ skipPinnedPosts: z.boolean().optional(),
94
+ onlyPostsNewerThan: z.string().optional(),
95
+ dataDetailLevel: z.enum(['basicData', 'detailedData']).optional(),
96
+ }).passthrough();
97
+ export const tiktokInputSchema = commonControlsSchema.extend({
98
+ hashtags: z.array(z.string().min(1)).optional(),
99
+ resultsPerPage: z.number().int().positive().optional(),
100
+ profiles: z.array(z.string().min(1)).optional(),
101
+ profileScrapeSections: z.array(z.string()).optional(),
102
+ profileSorting: z.string().optional(),
103
+ excludePinnedPosts: z.boolean().optional(),
104
+ oldestPostDateUnified: z.string().optional(),
105
+ newestPostDate: z.string().optional(),
106
+ mostDiggs: z.number().int().positive().optional(),
107
+ leastDiggs: z.number().int().positive().optional(),
108
+ maxFollowersPerProfile: z.number().int().min(0).optional(),
109
+ maxFollowingPerProfile: z.number().int().min(0).optional(),
110
+ searchQueries: z.array(z.string().min(1)).optional(),
111
+ searchSection: z.string().optional(),
112
+ maxProfilesPerQuery: z.number().int().positive().optional(),
113
+ videoSearchSorting: z.string().optional(),
114
+ videoSearchDateFilter: z.string().optional(),
115
+ postURLs: z.array(z.string().min(1)).optional(),
116
+ scrapeRelatedVideos: z.boolean().optional(),
117
+ shouldDownloadVideos: z.boolean().optional(),
118
+ shouldDownloadCovers: z.boolean().optional(),
119
+ shouldDownloadSlideshowImages: z.boolean().optional(),
120
+ shouldDownloadAvatars: z.boolean().optional(),
121
+ shouldDownloadMusicCovers: z.boolean().optional(),
122
+ videoKvStoreIdOrName: z.string().optional(),
123
+ downloadSubtitlesOptions: z.string().optional(),
124
+ commentsPerPost: z.number().int().min(0).optional(),
125
+ topLevelCommentsPerPost: z.number().int().min(0).optional(),
126
+ maxRepliesPerComment: z.number().int().min(0).optional(),
127
+ proxyCountryCode: z.string().optional(),
128
+ }).passthrough();
129
+ const scraperOutputSchema = z.object({
130
+ object: z.string().optional(),
131
+ actor: z.string().optional(),
132
+ name: z.string().optional(),
133
+ model: z.string().optional(),
134
+ status: z.string().optional(),
135
+ runId: z.string().optional(),
136
+ defaultDatasetId: z.string().optional(),
137
+ items: z.array(z.unknown()),
138
+ usage: z.record(z.unknown()),
139
+ metadata: z.record(z.unknown()),
140
+ raw: z.union([z.record(z.unknown()), z.string()]).optional(),
141
+ });
142
+ export const googleMapsInputJsonSchema = zodToJsonSchema(googleMapsInputSchema);
143
+ export const googleMapsReviewsInputJsonSchema = zodToJsonSchema(googleMapsReviewsInputSchema);
144
+ export const instagramPostsInputJsonSchema = zodToJsonSchema(instagramPostsInputSchema);
145
+ export const tiktokInputJsonSchema = zodToJsonSchema(tiktokInputSchema);
146
+ export const outputJsonSchema = zodToJsonSchema(scraperOutputSchema);
147
+ export const googleMaps = {
148
+ name: 'nanogpt_google_maps_scrape',
149
+ description: 'Scrape Google Maps places, place details, contacts, reviews, images, and lead enrichment through NanoGPT billing.',
150
+ inputSchema: googleMapsInputSchema,
151
+ inputJsonSchema: googleMapsInputJsonSchema,
152
+ outputJsonSchema,
153
+ annotations: { readOnlyHint: false, openWorldHint: true },
154
+ handler: makeScraperHandler({
155
+ path: '/api/v1/googlemaps',
156
+ label: 'Google Maps',
157
+ itemName: 'place',
158
+ schema: googleMapsInputSchema,
159
+ }),
160
+ };
161
+ export const googleMapsReviews = {
162
+ name: 'nanogpt_google_maps_reviews_scrape',
163
+ description: 'Scrape Google Maps reviews, reviewer metadata, and structured review records through NanoGPT billing.',
164
+ inputSchema: googleMapsReviewsInputSchema,
165
+ inputJsonSchema: googleMapsReviewsInputJsonSchema,
166
+ outputJsonSchema,
167
+ annotations: { readOnlyHint: false, openWorldHint: true },
168
+ handler: makeScraperHandler({
169
+ path: '/api/v1/googlemaps/reviews',
170
+ label: 'Google Maps reviews',
171
+ itemName: 'review',
172
+ schema: googleMapsReviewsInputSchema,
173
+ }),
174
+ };
175
+ export const instagramPosts = {
176
+ name: 'nanogpt_instagram_posts_scrape',
177
+ description: 'Scrape Instagram posts, reels, captions, media metadata, and engagement data through NanoGPT billing.',
178
+ inputSchema: instagramPostsInputSchema,
179
+ inputJsonSchema: instagramPostsInputJsonSchema,
180
+ outputJsonSchema,
181
+ annotations: { readOnlyHint: false, openWorldHint: true },
182
+ handler: makeScraperHandler({
183
+ path: '/api/v1/instagram/posts',
184
+ label: 'Instagram posts',
185
+ itemName: 'post',
186
+ schema: instagramPostsInputSchema,
187
+ }),
188
+ };
189
+ export const tiktok = {
190
+ name: 'nanogpt_tiktok_scrape',
191
+ description: 'Scrape TikTok hashtags, profiles, searches, video URLs, comments, subtitles, media downloads, and metadata through NanoGPT billing.',
192
+ inputSchema: tiktokInputSchema,
193
+ inputJsonSchema: tiktokInputJsonSchema,
194
+ outputJsonSchema,
195
+ annotations: { readOnlyHint: false, openWorldHint: true },
196
+ handler: makeScraperHandler({
197
+ path: '/api/v1/tiktok',
198
+ label: 'TikTok',
199
+ itemName: 'item',
200
+ schema: tiktokInputSchema,
201
+ }),
202
+ };
203
+ function makeScraperHandler({ path, label, itemName, schema, }) {
204
+ return async function handler(args) {
205
+ try {
206
+ const input = schema.parse(args);
207
+ const { include_raw: includeRaw, ...requestBody } = input;
208
+ const response = await requestJson({
209
+ method: 'POST',
210
+ path,
211
+ body: requestBody,
212
+ timeoutMs: getScraperTimeoutMs(requestBody),
213
+ });
214
+ const data = response.json;
215
+ const items = Array.isArray(data.items) ? data.items : [];
216
+ const usage = data.usage || {};
217
+ const metadata = data.metadata || {};
218
+ const output = {
219
+ object: data.object,
220
+ actor: data.actor,
221
+ name: data.name,
222
+ model: data.model,
223
+ status: data.status,
224
+ runId: data.runId,
225
+ defaultDatasetId: data.defaultDatasetId,
226
+ items,
227
+ usage,
228
+ metadata,
229
+ };
230
+ const { raw, resourceLink } = processRawResponse({ status: response.status, headers: response.headers, body: data }, includeRaw);
231
+ if (raw !== undefined)
232
+ output.raw = raw;
233
+ return {
234
+ content: buildContent(formatScraperDisplayText(label, itemName, data, items), resourceLink),
235
+ structuredContent: output,
236
+ };
237
+ }
238
+ catch (err) {
239
+ return handleToolError(err);
240
+ }
241
+ };
242
+ }
243
+ function getScraperTimeoutMs(requestBody) {
244
+ const waitForFinishSecs = typeof requestBody.waitForFinishSecs === 'number'
245
+ ? requestBody.waitForFinishSecs
246
+ : 240;
247
+ return (waitForFinishSecs * 1000) + 30_000;
248
+ }
249
+ function formatScraperDisplayText(label, itemName, data, items) {
250
+ const plural = items.length === 1 ? itemName : `${itemName}s`;
251
+ let text = `${label} scrape returned ${items.length} ${plural}.`;
252
+ if (data.status)
253
+ text += ` Status: ${data.status}.`;
254
+ if (data.runId)
255
+ text += ` Run ID: ${data.runId}.`;
256
+ const usage = data.usage || {};
257
+ const actualCostUsd = typeof usage.actualCostUsd === 'number' ? usage.actualCostUsd : undefined;
258
+ const estimatedMaxChargeUsd = typeof usage.estimatedMaxChargeUsd === 'number'
259
+ ? usage.estimatedMaxChargeUsd
260
+ : undefined;
261
+ if (actualCostUsd !== undefined)
262
+ text += ` Actual cost: $${actualCostUsd.toFixed(6)}.`;
263
+ if (estimatedMaxChargeUsd !== undefined)
264
+ text += ` Estimated max charge: $${estimatedMaxChargeUsd.toFixed(6)}.`;
265
+ const preview = items.slice(0, 3).map((item, index) => summarizeItem(item, index + 1));
266
+ if (preview.length > 0) {
267
+ text += `\n\nPreview:\n${preview.join('\n')}`;
268
+ }
269
+ return text;
270
+ }
271
+ function summarizeItem(item, index) {
272
+ if (!item || typeof item !== 'object') {
273
+ return `- ${index}: ${String(item)}`;
274
+ }
275
+ const obj = item;
276
+ const candidateKeys = [
277
+ 'title',
278
+ 'name',
279
+ 'text',
280
+ 'caption',
281
+ 'shortCode',
282
+ 'url',
283
+ 'postUrl',
284
+ 'videoUrl',
285
+ 'placeId',
286
+ 'reviewId',
287
+ 'username',
288
+ ];
289
+ const parts = candidateKeys
290
+ .map((key) => {
291
+ const value = obj[key];
292
+ if (typeof value !== 'string' && typeof value !== 'number')
293
+ return null;
294
+ const text = String(value).replace(/\s+/g, ' ').trim();
295
+ if (!text)
296
+ return null;
297
+ return `${key}: ${text.slice(0, 120)}${text.length > 120 ? '...' : ''}`;
298
+ })
299
+ .filter((part) => Boolean(part))
300
+ .slice(0, 3);
301
+ if (parts.length > 0)
302
+ return `- ${index}: ${parts.join(', ')}`;
303
+ const keys = Object.keys(obj).slice(0, 8);
304
+ return `- ${index}: ${keys.length ? `fields: ${keys.join(', ')}` : 'empty object'}`;
305
+ }
306
+ //# sourceMappingURL=applicationScrapers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationScrapers.js","sourceRoot":"","sources":["../../src/tools/applicationScrapers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAGH,eAAO,MAAM,eAAe,sCAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,sCAAgC,CAAC;AAG9D,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,WAAW,oGAC2E,CAAC;AAGpG,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAaF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,OAAO;;;GAiF1C"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAGH,eAAO,MAAM,eAAe,sCAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,sCAAgC,CAAC;AAG9D,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,WAAW,oGAC2E,CAAC;AAGpG,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAaF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,OAAO;;;GAuF1C"}
@@ -54,8 +54,11 @@ export async function handler(args) {
54
54
  // Validate input
55
55
  const input = inputSchema.parse(args);
56
56
  const config = getConfig();
57
- // Use provided model or fall back to default (claude-sonnet-4-5-20250929)
57
+ // Determine model
58
58
  const model = input.model || config.defaultModel;
59
+ if (!model) {
60
+ throw new McpError(ErrorCode.InvalidRequest, 'No model specified. Either provide a "model" parameter or set NANOGPT_DEFAULT_MODEL environment variable.');
61
+ }
59
62
  // Build request body
60
63
  const requestBody = {
61
64
  model,
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"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"}