@hotscots/mcp 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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Give AI assistants like Claude direct access to the [Hots&Cots](https://hotscots.app) military quality-of-life database — barracks conditions, DFAC ratings, and on-base facility reviews from service members across the DoD.
4
4
 
5
- **Requires an H&CPro API key** (`hc_live_...`) — generate yours at [hotscots.app/subscription/dashboard](https://hotscots.app/subscription/dashboard).
5
+ **Requires an H&CPro API key** (`hc_` followed by 64 hex characters) — generate yours at [hotscots.app/subscription/dashboard](https://hotscots.app/subscription/dashboard).
6
6
 
7
7
  ---
8
8
 
@@ -20,7 +20,7 @@ No cloning or building required. Add this to your Claude Desktop config file:
20
20
  "command": "npx",
21
21
  "args": ["-y", "@hotscots/mcp"],
22
22
  "env": {
23
- "HOTSCOTS_API_KEY": "hc_live_YOUR_KEY_HERE"
23
+ "HOTSCOTS_API_KEY": "hc_YOUR_KEY_HERE"
24
24
  }
25
25
  }
26
26
  }
@@ -45,6 +45,8 @@ Same config block — check your client's documentation for the config file loca
45
45
  - *"What percentage of barracks reviews at Fort Hood report mold?"*
46
46
  - *"How do service members rate the DFACs at Camp Lejeune?"*
47
47
  - *"Show medical and CDC facility reviews for Army bases in Texas."*
48
+ - *"How do official ICE satisfaction scores compare to Hots&Cots reviews at the same base?"*
49
+ - *"What's on the breakfast menu at Stackhouse today, and what does it cost?"*
48
50
 
49
51
  ---
50
52
 
@@ -57,6 +59,10 @@ Same config block — check your client's documentation for the config file loca
57
59
  | `hotscots_get_barracks_reviews` | Paginated barracks / housing (Cots) reviews |
58
60
  | `hotscots_get_dfac_reviews` | Paginated dining facility / DFAC (Hots) reviews |
59
61
  | `hotscots_get_other_reviews` | Reviews for medical, CDC, gym, PX/BX, lodging, and moving services |
62
+ | `hotscots_list_ice_facilities` | Installations with ICE survey data, by dining / public-works kind |
63
+ | `hotscots_get_ice_ratings` | Official DoD ICE satisfaction scores for DFACs and public works |
64
+ | `hotscots_list_menu_locations` | CSDV dining venues with menu coverage dates |
65
+ | `hotscots_get_menu_items` | Dining menu items with prices, nutrition, allergens, and G4G tags |
60
66
 
61
67
  ---
62
68
 
@@ -80,7 +86,7 @@ The server runs locally on your machine — your API key never leaves your devic
80
86
 
81
87
  | Variable | Required | Description |
82
88
  |---|---|---|
83
- | `HOTSCOTS_API_KEY` | ✅ | Your API key (`hc_live_...`) |
89
+ | `HOTSCOTS_API_KEY` | ✅ | Your API key (`hc_` + 64 hex characters) |
84
90
  | `HOTSCOTS_API_URL` | ❌ | Override the API base URL |
85
91
  | `TRANSPORT` | ❌ | `stdio` (default) or `http` for remote/multi-user mode |
86
92
  | `PORT` | ❌ | HTTP port when `TRANSPORT=http` (default: `3000`) |
package/dist/index.js CHANGED
@@ -6,10 +6,10 @@ import express from "express";
6
6
  import { z } from "zod";
7
7
  // ─── Config ──────────────────────────────────────────────────────────────────
8
8
  const API_BASE_URL = process.env.HOTSCOTS_API_URL ?? "https://api.hotscots.app/functions/v1/api";
9
- const CHARACTER_LIMIT = 25000;
9
+ const CHARACTER_LIMIT = 500000;
10
10
  // When filtering client-side we must over-fetch. Cap how many records we'll
11
11
  // pull in a single request to avoid burning the user's monthly quota.
12
- const FILTER_FETCH_CAP = 500;
12
+ const FILTER_FETCH_CAP = 2000;
13
13
  var EndpointType;
14
14
  (function (EndpointType) {
15
15
  EndpointType["HOTS"] = "hots";
@@ -55,20 +55,22 @@ async function apiGet(path, params) {
55
55
  }
56
56
  catch (err) {
57
57
  const msg = err instanceof Error ? err.message : String(err);
58
- throw new Error(`Network error: ${msg}. Check your connection and try again.`);
58
+ throw new Error("Unable to reach the Hots&Cots server. Check your connection and try again.");
59
59
  }
60
60
  if (!res.ok) {
61
61
  switch (res.status) {
62
62
  case 401: throw new Error("Invalid or expired API key. Check your HOTSCOTS_API_KEY.");
63
63
  case 403: throw new Error("Your plan does not have access to this data. Check your subscription tier.");
64
64
  case 429: throw new Error("Monthly request quota exceeded. Upgrade your plan or wait for the next billing cycle.");
65
- default: throw new Error(`The Hots&Cots API returned an error (${res.status}). Please try again shortly.`);
65
+ default: throw new Error("The Hots&Cots server encountered an error. Please try again shortly.");
66
66
  }
67
67
  }
68
68
  return res.json();
69
69
  }
70
70
  function handleError(err) {
71
- return `Error: ${err instanceof Error ? err.message : String(err)}`;
71
+ if (err instanceof Error)
72
+ return err.message;
73
+ return "Something went wrong. Please try again.";
72
74
  }
73
75
  function truncate(text) {
74
76
  if (text.length <= CHARACTER_LIMIT)
@@ -103,14 +105,43 @@ const SAFE_FIELDS = new Set([
103
105
  "cdc_wait_times", "mover_company", "professionalism_rating", "timeliness_rating",
104
106
  "origin_location", "destination_location",
105
107
  ]);
106
- function sanitizeReview(r) {
108
+ function pick(row, fields) {
107
109
  const result = {};
108
- for (const key of SAFE_FIELDS) {
109
- if (key in r)
110
- result[key] = r[key];
110
+ for (const key of fields) {
111
+ if (key in row)
112
+ result[key] = row[key];
111
113
  }
112
114
  return result;
113
115
  }
116
+ function sanitizeReview(r) {
117
+ return pick(r, SAFE_FIELDS);
118
+ }
119
+ // Same opt-in discipline as SAFE_FIELDS: a new upstream column is dropped
120
+ // until it is listed here.
121
+ const ICE_SAFE_FIELDS = new Set([
122
+ "kind", "site_id", "installation_key", "service_provider_id", "sp_name",
123
+ "facility_name", "is_mapped_barracks_sp", "window_start", "window_end",
124
+ "overall_responses", "overall_satisfied_pct", "met_needs_responses",
125
+ "met_needs_pct", "appearance_score", "appearance_responses", "staff_score",
126
+ "staff_responses", "timeliness_score", "timeliness_responses", "hours_score",
127
+ "hours_responses", "composite_score", "extra_scale_questions",
128
+ "extra_yesno_questions", "scraped_at",
129
+ ]);
130
+ const ICE_FACILITY_FIELDS = new Set([
131
+ "installation_key", "kind", "facility_count", "latest_window_end",
132
+ ]);
133
+ const MENU_SAFE_FIELDS = new Set([
134
+ "location", "profit_center_id", "profit_center_name", "category", "item_id",
135
+ "item_name", "description", "price", "calories", "calories_max", "total_fat",
136
+ "saturated_fat", "total_carbohydrate", "total_sugars", "protein", "sodium",
137
+ "dietary_fiber", "ingredients", "tags", "is_vegan", "is_vegetarian",
138
+ "allergens", "choice_groups", "is_alcohol_restricted", "source", "daypart",
139
+ "scrape_date", "scrape_datetime",
140
+ ]);
141
+ const MENU_LOCATION_FIELDS = new Set([
142
+ "location", "latest_scrape_date", "earliest_scrape_date", "date_count",
143
+ "total_items",
144
+ ]);
114
145
  // ─── Shared schemas ───────────────────────────────────────────────────────────
115
146
  // Raw shapes (not z.object wrappers) — required by the MCP SDK's registerTool.
116
147
  const PaginationSchema = {
@@ -118,9 +149,9 @@ const PaginationSchema = {
118
149
  .number()
119
150
  .int()
120
151
  .min(1)
121
- .max(100)
152
+ .max(1000)
122
153
  .default(20)
123
- .describe("Records per page, 1–100 (default 20). Keep low to stay within your monthly quota."),
154
+ .describe("Records per page, 1–1000 (default 20)."),
124
155
  offset: z
125
156
  .number()
126
157
  .int()
@@ -137,6 +168,31 @@ const InstallationFilterSchema = z
137
168
  .max(100)
138
169
  .optional()
139
170
  .describe("Filter by installation name (partial, case-insensitive)");
171
+ // The API clamps limit at 500, so advertise 500 rather than the 1000 the
172
+ // review tools claim.
173
+ const DatasetPaginationSchema = {
174
+ limit: z
175
+ .number()
176
+ .int()
177
+ .min(1)
178
+ .max(500)
179
+ .default(50)
180
+ .describe("Records per page, 1–500 (default 50)."),
181
+ offset: z
182
+ .number()
183
+ .int()
184
+ .min(0)
185
+ .default(0)
186
+ .describe("Records to skip for pagination (default 0)."),
187
+ };
188
+ const IsoDateSchema = z
189
+ .string()
190
+ .regex(/^\d{4}-\d{2}-\d{2}$/, "Use YYYY-MM-DD")
191
+ .optional();
192
+ const IceKindSchema = z
193
+ .enum(["dfac", "dpw"])
194
+ .optional()
195
+ .describe("Filter by survey kind: 'dfac' (dining) or 'dpw' (public works / barracks)");
140
196
  // ─── Formatters ───────────────────────────────────────────────────────────────
141
197
  function starsFor(rating) {
142
198
  const r = Math.round(rating);
@@ -175,6 +231,136 @@ function formatReviews(data, endpointLabel, pagination, filtered) {
175
231
  }
176
232
  return lines.join("\n");
177
233
  }
234
+ // Upstream sends "" for missing menu values, and numerics arrive as strings.
235
+ function present(value) {
236
+ return value !== null && value !== undefined && String(value).trim() !== "";
237
+ }
238
+ function pct(value) {
239
+ return present(value) ? `${Number(value).toFixed(1)}%` : "—";
240
+ }
241
+ function num(value, digits = 2) {
242
+ return present(value) ? Number(value).toFixed(digits) : "—";
243
+ }
244
+ function scoreCell(score, responses) {
245
+ if (!present(score))
246
+ return "—";
247
+ const n = present(responses) ? ` (n=${responses})` : "";
248
+ return `${Number(score).toFixed(1)}${n}`;
249
+ }
250
+ function formatIceRatings(data, pagination, filters) {
251
+ const lines = ["# Hots&Cots — ICE Satisfaction Snapshots"];
252
+ const window = filters?.window_end;
253
+ if (filters?.all_windows) {
254
+ lines.push("_All snapshot windows, newest first._");
255
+ }
256
+ else if (present(window)) {
257
+ lines.push(`_Snapshot window ending ${window}._`);
258
+ }
259
+ lines.push(`_Showing ${pagination.returned} records (offset ${pagination.offset}, limit ${pagination.limit})_`);
260
+ lines.push("");
261
+ lines.push("| Installation | Facility | Kind | Satisfied | Met needs | Appearance | Staff | Timeliness | Hours | Composite | Window |");
262
+ lines.push("|---|---|---|---:|---:|---:|---:|---:|---:|---:|---|");
263
+ for (const r of data) {
264
+ lines.push(`| ${r.installation_key} | ${r.facility_name ?? r.sp_name ?? "—"} | ${r.kind} ` +
265
+ `| ${pct(r.overall_satisfied_pct)} | ${pct(r.met_needs_pct)} ` +
266
+ `| ${scoreCell(r.appearance_score, r.appearance_responses)} ` +
267
+ `| ${scoreCell(r.staff_score, r.staff_responses)} ` +
268
+ `| ${scoreCell(r.timeliness_score, r.timeliness_responses)} ` +
269
+ `| ${scoreCell(r.hours_score, r.hours_responses)} ` +
270
+ `| ${num(r.composite_score)} | ${r.window_end} |`);
271
+ }
272
+ lines.push("");
273
+ lines.push("_Sub-scores are 1–5. `n` is the response count behind each score — treat small n with care._");
274
+ if (pagination.returned === pagination.limit) {
275
+ lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
276
+ }
277
+ return lines.join("\n");
278
+ }
279
+ function formatIceFacilities(data) {
280
+ const sorted = [...data].sort((a, b) => b.facility_count - a.facility_count ||
281
+ a.installation_key.localeCompare(b.installation_key));
282
+ const lines = [
283
+ `# Hots&Cots — ICE Facilities (${data.length} installation/kind pairs)`,
284
+ "",
285
+ "| Installation | Kind | Facilities | Latest window |",
286
+ "|---|---|---:|---|",
287
+ ];
288
+ for (const f of sorted) {
289
+ lines.push(`| ${f.installation_key} | ${f.kind} | ${f.facility_count} | ${f.latest_window_end} |`);
290
+ }
291
+ lines.push("");
292
+ lines.push("_Use an exact `installation_key` with hotscots_get_ice_ratings._");
293
+ return lines.join("\n");
294
+ }
295
+ function formatMenuItems(data, pagination, resolvedDates) {
296
+ const lines = ["# Hots&Cots — CSDV Dining Menus"];
297
+ if (resolvedDates?.length) {
298
+ lines.push(`_Latest menu per venue: ${resolvedDates
299
+ .map((d) => `${d.location} ${d.scrape_date}`)
300
+ .join(", ")}._`);
301
+ }
302
+ lines.push(`_Showing ${pagination.returned} items (offset ${pagination.offset}, limit ${pagination.limit})_`);
303
+ lines.push("");
304
+ // Group under venue + profit centre; the upstream ordering already matches.
305
+ let currentGroup = "";
306
+ for (const item of data) {
307
+ const group = `${item.location} — ${item.profit_center_name}`;
308
+ if (group !== currentGroup) {
309
+ lines.push("");
310
+ lines.push(`## ${group}`);
311
+ currentGroup = group;
312
+ }
313
+ const bits = [];
314
+ if (present(item.price))
315
+ bits.push(`$${item.price}`);
316
+ if (present(item.calories)) {
317
+ bits.push(present(item.calories_max) && item.calories_max !== item.calories
318
+ ? `${item.calories}–${item.calories_max} cal`
319
+ : `${item.calories} cal`);
320
+ }
321
+ if (present(item.daypart) && item.daypart !== "unknown")
322
+ bits.push(item.daypart);
323
+ const meta = bits.length ? ` — ${bits.join(" · ")}` : "";
324
+ lines.push(`- **${item.item_name}**${meta}`);
325
+ if (present(item.category))
326
+ lines.push(` - Category: ${item.category}`);
327
+ if (present(item.description))
328
+ lines.push(` - ${item.description}`);
329
+ if (present(item.tags))
330
+ lines.push(` - Tags: ${item.tags}`);
331
+ if (present(item.allergens))
332
+ lines.push(` - Allergens: ${item.allergens}`);
333
+ const macros = [
334
+ ["Protein", item.protein],
335
+ ["Fat", item.total_fat],
336
+ ["Carbs", item.total_carbohydrate],
337
+ ["Sodium", item.sodium],
338
+ ["Fiber", item.dietary_fiber],
339
+ ].filter(([, v]) => present(v));
340
+ if (macros.length) {
341
+ lines.push(` - ${macros.map(([k, v]) => `${k}: ${v}`).join(" · ")}`);
342
+ }
343
+ }
344
+ if (pagination.returned === pagination.limit) {
345
+ lines.push("");
346
+ lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
347
+ }
348
+ return lines.join("\n");
349
+ }
350
+ function formatMenuLocations(data) {
351
+ const lines = [
352
+ `# Hots&Cots — CSDV Dining Venues (${data.length} total)`,
353
+ "",
354
+ "| Venue | Latest menu | Earliest menu | Days captured | Items |",
355
+ "|---|---|---|---:|---:|",
356
+ ];
357
+ for (const loc of data) {
358
+ lines.push(`| ${loc.location} | ${loc.latest_scrape_date} | ${loc.earliest_scrape_date} | ${loc.date_count} | ${loc.total_items} |`);
359
+ }
360
+ lines.push("");
361
+ lines.push("_Venues are scraped on different schedules, so latest menu dates can differ._");
362
+ return lines.join("\n");
363
+ }
178
364
  function formatInstallations(data) {
179
365
  const sorted = [...data].sort((a, b) => b.counts.total - a.counts.total);
180
366
  const lines = [
@@ -218,7 +404,7 @@ async function fetchReviews(endpoint, params) {
218
404
  // ─── MCP Server ───────────────────────────────────────────────────────────────
219
405
  const server = new McpServer({
220
406
  name: "Hots&Cots",
221
- version: "1.0.0",
407
+ version: "1.3.0",
222
408
  });
223
409
  // ── Tool: health check ────────────────────────────────────────────────────────
224
410
  server.registerTool("hotscots_health", {
@@ -243,7 +429,7 @@ Use this to confirm connectivity before running other tools.`,
243
429
  // ── Tool: list installations ──────────────────────────────────────────────────
244
430
  server.registerTool("hotscots_list_installations", {
245
431
  title: "List Military Installations",
246
- description: `List every military installation that has at least one review in the Hots&Cots database, with a count breakdown by review type. Costs 1 API request.
432
+ description: `List every military installation that has at least one review in the Hots&Cots system, with a count breakdown by review type. Costs 1 API request.
247
433
 
248
434
  Returns per installation:
249
435
  - installation: full name including state, e.g. "Fort Liberty, North Carolina"
@@ -288,16 +474,16 @@ Args:
288
474
  // ── Tool: barracks (cots) reviews ─────────────────────────────────────────────
289
475
  server.registerTool("hotscots_get_barracks_reviews", {
290
476
  title: "Get Barracks Reviews",
291
- description: `Fetch barracks / housing (Cots) reviews from the Hots&Cots database. Costs 1 API request.
477
+ description: `Fetch barracks / housing (Cots) reviews from Hots&Cots. Costs 1 API request.
292
478
 
293
- ⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
479
+ Use a larger limit (up to 1000) to assemble datasets for analysis; page with offset for more.
294
480
  ⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally. Pagination with an installation filter returns the first matching records from that pool.
295
481
 
296
482
  Each review includes: rating (1–5), feedback, tags, branch, and barracks-specific fields such as mold_issues, pest_issues, working_air_heat, working_furniture, accessible_laundry, private_sleeping_area, lockable_doors, dpw_satisfaction_rating, is_privatized_barracks.
297
483
 
298
484
  Args:
299
485
  - installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
300
- - limit (integer): Records per page, 1–100 (default 20)
486
+ - limit (integer): Records per page, 1–1000 (default 20)
301
487
  - offset (integer): Records to skip (default 0). Only reliable without an installation filter.
302
488
  - response_format: 'markdown' (default) or 'json'`,
303
489
  inputSchema: {
@@ -328,16 +514,16 @@ Args:
328
514
  // ── Tool: dining / DFAC (hots) reviews ───────────────────────────────────────
329
515
  server.registerTool("hotscots_get_dfac_reviews", {
330
516
  title: "Get DFAC / Dining Reviews",
331
- description: `Fetch dining facility / DFAC (Hots) reviews from the Hots&Cots database. Costs 1 API request.
517
+ description: `Fetch dining facility / DFAC (Hots) reviews from Hots&Cots. Costs 1 API request.
332
518
 
333
- ⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
519
+ Use a larger limit (up to 1000) to assemble datasets for analysis; page with offset for more.
334
520
  ⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally. Pagination with an installation filter returns the first matching records from that pool.
335
521
 
336
522
  Each review includes: rating (1–5), feedback, tags, branch, dfac_name, and dining-specific fields such as breakfast_ranking, lunch_ranking, dinner_ranking, dfac_choices, dfac_healthy, dfac_filling, dfac_temp, dfac_police, has_shuttle, walking_distance, kiosk_level, inedible_food_issue.
337
523
 
338
524
  Args:
339
525
  - installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
340
- - limit (integer): Records per page, 1–100 (default 20)
526
+ - limit (integer): Records per page, 1–1000 (default 20)
341
527
  - offset (integer): Records to skip (default 0). Only reliable without an installation filter.
342
528
  - response_format: 'markdown' (default) or 'json'`,
343
529
  inputSchema: {
@@ -368,16 +554,16 @@ Args:
368
554
  // ── Tool: other facilities ────────────────────────────────────────────────────
369
555
  server.registerTool("hotscots_get_other_reviews", {
370
556
  title: "Get Other Facility Reviews",
371
- description: `Fetch reviews of other on-base facilities from the Hots&Cots database. Costs 1 API request.
557
+ description: `Fetch reviews of other on-base facilities from Hots&Cots. Costs 1 API request.
372
558
 
373
- ⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
559
+ Use a larger limit (up to 1000) to assemble datasets for analysis; page with offset for more.
374
560
  ⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally.
375
561
 
376
562
  Covers: Medical clinics, Child Development Centers (CDC), gyms, PX/BX, legal offices, lodging, and moving/transportation services. Use the facility_type field to distinguish between them.
377
563
 
378
564
  Args:
379
565
  - installation (string, optional): Filter by installation name (partial match)
380
- - limit (integer): Records per page, 1–100 (default 20)
566
+ - limit (integer): Records per page, 1–1000 (default 20)
381
567
  - offset (integer): Records to skip (default 0). Only reliable without an installation filter.
382
568
  - response_format: 'markdown' (default) or 'json'`,
383
569
  inputSchema: {
@@ -405,6 +591,231 @@ Args:
405
591
  return { content: [{ type: "text", text: handleError(err) }] };
406
592
  }
407
593
  });
594
+ // ── Tool: ICE facilities (discovery) ──────────────────────────────────────────
595
+ server.registerTool("hotscots_list_ice_facilities", {
596
+ title: "List ICE Facilities",
597
+ description: `List every installation with ICE (Interactive Customer Evaluation) satisfaction data, broken down by survey kind. Costs 1 API request.
598
+
599
+ ICE is the DoD's official customer-satisfaction survey programme. Hots&Cots captures periodic snapshots of the published scores.
600
+
601
+ Returns per installation/kind pair:
602
+ - installation_key: full name including state, e.g. "Beale Air Force Base, California"
603
+ - kind: 'dfac' (dining facilities) or 'dpw' (public works, which covers barracks)
604
+ - facility_count: distinct facilities surveyed
605
+ - latest_window_end: most recent snapshot window available
606
+
607
+ Run this first to get exact installation_key values before calling hotscots_get_ice_ratings.
608
+
609
+ Args:
610
+ - kind (string, optional): 'dfac' or 'dpw'
611
+ - installation (string, optional): Filter by installation name (partial match)
612
+ - response_format: 'markdown' (default) or 'json'`,
613
+ inputSchema: {
614
+ kind: IceKindSchema,
615
+ installation: InstallationFilterSchema,
616
+ response_format: ResponseFormatSchema,
617
+ },
618
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
619
+ }, async (params) => {
620
+ try {
621
+ const result = await apiGet("/ice-facilities", {
622
+ kind: params.kind,
623
+ installation: params.installation,
624
+ });
625
+ const data = result.data.map((r) => pick(r, ICE_FACILITY_FIELDS));
626
+ if (!data.length) {
627
+ const where = params.installation ? ` for "${params.installation}"` : "";
628
+ return { content: [{ type: "text", text: `No ICE facilities found${where}.` }] };
629
+ }
630
+ const text = params.response_format === ResponseFormat.JSON
631
+ ? JSON.stringify({ endpoint: "ice", count: data.length, data }, null, 2)
632
+ : formatIceFacilities(data);
633
+ return {
634
+ content: [{ type: "text", text: truncate(text) }],
635
+ structuredContent: { endpoint: "ice", count: data.length, data },
636
+ };
637
+ }
638
+ catch (err) {
639
+ return { content: [{ type: "text", text: handleError(err) }] };
640
+ }
641
+ });
642
+ // ── Tool: ICE ratings ─────────────────────────────────────────────────────────
643
+ server.registerTool("hotscots_get_ice_ratings", {
644
+ title: "Get ICE Satisfaction Ratings",
645
+ description: `Fetch ICE (Interactive Customer Evaluation) satisfaction snapshots for dining facilities and public works. Costs 1 API request.
646
+
647
+ These are official DoD survey scores, not Hots&Cots user reviews — useful for comparing what the command reports against what service members say.
648
+
649
+ Defaults to the most recent snapshot window. Pass window_end for a specific window, or all_windows=true to page through history.
650
+
651
+ Each record includes: installation_key, facility_name, kind, overall_satisfied_pct, met_needs_pct, 1–5 sub-scores for appearance / staff / timeliness / hours (each with its response count), composite_score, and the window dates.
652
+
653
+ ⚠️ Response counts are often very small (n=1 is common). Do not treat a single-response score as representative.
654
+
655
+ Args:
656
+ - kind (string, optional): 'dfac' (dining) or 'dpw' (public works / barracks)
657
+ - installation (string, optional): Filter by installation name (partial match). Run hotscots_list_ice_facilities first for exact names.
658
+ - window_end (string, optional): Snapshot window end date, YYYY-MM-DD. Defaults to the newest available.
659
+ - all_windows (boolean): Set true to include every window instead of just the latest (default false)
660
+ - limit (integer): Records per page, 1–500 (default 50)
661
+ - offset (integer): Records to skip (default 0)
662
+ - response_format: 'markdown' (default) or 'json'`,
663
+ inputSchema: {
664
+ kind: IceKindSchema,
665
+ installation: InstallationFilterSchema,
666
+ window_end: IsoDateSchema.describe("Snapshot window end date (YYYY-MM-DD). Defaults to the newest available."),
667
+ all_windows: z
668
+ .boolean()
669
+ .default(false)
670
+ .describe("Include every snapshot window instead of only the latest"),
671
+ ...DatasetPaginationSchema,
672
+ response_format: ResponseFormatSchema,
673
+ },
674
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
675
+ }, async (params) => {
676
+ try {
677
+ const result = await apiGet("/ice-ratings", {
678
+ kind: params.kind,
679
+ installation: params.installation,
680
+ window_end: params.window_end,
681
+ all_windows: params.all_windows ? "true" : undefined,
682
+ limit: params.limit,
683
+ offset: params.offset,
684
+ });
685
+ const data = result.data.map((r) => pick(r, ICE_SAFE_FIELDS));
686
+ if (!data.length) {
687
+ const where = params.installation ? ` for "${params.installation}"` : "";
688
+ return { content: [{ type: "text", text: `No ICE ratings found${where}.` }] };
689
+ }
690
+ const payload = {
691
+ endpoint: "ice",
692
+ data,
693
+ pagination: result.pagination,
694
+ filters: result.filters,
695
+ };
696
+ const text = params.response_format === ResponseFormat.JSON
697
+ ? JSON.stringify(payload, null, 2)
698
+ : formatIceRatings(data, result.pagination, result.filters);
699
+ return {
700
+ content: [{ type: "text", text: truncate(text) }],
701
+ structuredContent: payload,
702
+ };
703
+ }
704
+ catch (err) {
705
+ return { content: [{ type: "text", text: handleError(err) }] };
706
+ }
707
+ });
708
+ // ── Tool: menu venues (discovery) ─────────────────────────────────────────────
709
+ server.registerTool("hotscots_list_menu_locations", {
710
+ title: "List Dining Venues",
711
+ description: `List the CSDV dining venues that have captured menus, with coverage dates. Costs 1 API request.
712
+
713
+ Returns per venue:
714
+ - location: venue key, e.g. "stackhouse"
715
+ - latest_scrape_date / earliest_scrape_date: coverage range
716
+ - date_count: distinct days captured
717
+ - total_items: menu item rows on record
718
+
719
+ Venues are scraped on different schedules, so their latest menu dates can differ. Run this first to get exact location values for hotscots_get_menu_items.
720
+
721
+ Args:
722
+ - response_format: 'markdown' (default) or 'json'`,
723
+ inputSchema: {
724
+ response_format: ResponseFormatSchema,
725
+ },
726
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
727
+ }, async (params) => {
728
+ try {
729
+ const result = await apiGet("/menu-locations");
730
+ const data = result.data.map((r) => pick(r, MENU_LOCATION_FIELDS));
731
+ if (!data.length) {
732
+ return { content: [{ type: "text", text: "No dining venues found." }] };
733
+ }
734
+ const text = params.response_format === ResponseFormat.JSON
735
+ ? JSON.stringify({ endpoint: "menu", count: data.length, data }, null, 2)
736
+ : formatMenuLocations(data);
737
+ return {
738
+ content: [{ type: "text", text: truncate(text) }],
739
+ structuredContent: { endpoint: "menu", count: data.length, data },
740
+ };
741
+ }
742
+ catch (err) {
743
+ return { content: [{ type: "text", text: handleError(err) }] };
744
+ }
745
+ });
746
+ // ── Tool: menu items ──────────────────────────────────────────────────────────
747
+ server.registerTool("hotscots_get_menu_items", {
748
+ title: "Get Dining Menu Items",
749
+ description: `Fetch menu items — with prices and nutrition — from CSDV dining venues. Costs 1 API request.
750
+
751
+ Defaults to the latest captured menu for each venue. Because venues are scraped on different schedules, "latest" is resolved per venue, and the response reports which date was used for each.
752
+
753
+ Pass scrape_date to read a historical menu, which is how you compare prices or offerings over time.
754
+
755
+ Each item includes: item_name, category, profit_center_name (the station or outlet), description, price, calories, macros, ingredients, allergens, Go-for-Green tags, and daypart.
756
+
757
+ ⚠️ Nutrition fields are frequently empty upstream — absent values mean "not published", not zero.
758
+
759
+ Args:
760
+ - location (string, optional): Venue key. Run hotscots_list_menu_locations for valid values.
761
+ - scrape_date (string, optional): Menu date, YYYY-MM-DD. Defaults to each venue's latest.
762
+ - daypart (string, optional): 'breakfast', 'lunch', 'dinner', 'all-day', or 'unknown'
763
+ - profit_center (string, optional): Filter by station / outlet name (partial match)
764
+ - category (string, optional): Filter by menu category (partial match)
765
+ - search (string, optional): Filter by item name (partial match)
766
+ - limit (integer): Records per page, 1–500 (default 50)
767
+ - offset (integer): Records to skip (default 0)
768
+ - response_format: 'markdown' (default) or 'json'`,
769
+ inputSchema: {
770
+ location: z.string().max(100).optional().describe("Venue key, e.g. 'stackhouse'"),
771
+ scrape_date: IsoDateSchema.describe("Menu date (YYYY-MM-DD). Defaults to each venue's latest."),
772
+ daypart: z
773
+ .enum(["breakfast", "lunch", "dinner", "all-day", "unknown"])
774
+ .optional()
775
+ .describe("Filter by daypart"),
776
+ profit_center: z.string().max(100).optional().describe("Filter by station / outlet name (partial)"),
777
+ category: z.string().max(100).optional().describe("Filter by menu category (partial)"),
778
+ search: z.string().max(100).optional().describe("Filter by item name (partial)"),
779
+ ...DatasetPaginationSchema,
780
+ response_format: ResponseFormatSchema,
781
+ },
782
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
783
+ }, async (params) => {
784
+ try {
785
+ const result = await apiGet("/menu-items", {
786
+ location: params.location,
787
+ scrape_date: params.scrape_date,
788
+ daypart: params.daypart,
789
+ profit_center: params.profit_center,
790
+ category: params.category,
791
+ search: params.search,
792
+ limit: params.limit,
793
+ offset: params.offset,
794
+ });
795
+ const data = result.data.map((r) => pick(r, MENU_SAFE_FIELDS));
796
+ if (!data.length) {
797
+ const where = params.location ? ` at "${params.location}"` : "";
798
+ return { content: [{ type: "text", text: `No menu items found${where}.` }] };
799
+ }
800
+ const payload = {
801
+ endpoint: "menu",
802
+ data,
803
+ pagination: result.pagination,
804
+ filters: result.filters,
805
+ resolved_dates: result.resolved_dates ?? null,
806
+ };
807
+ const text = params.response_format === ResponseFormat.JSON
808
+ ? JSON.stringify(payload, null, 2)
809
+ : formatMenuItems(data, result.pagination, result.resolved_dates);
810
+ return {
811
+ content: [{ type: "text", text: truncate(text) }],
812
+ structuredContent: payload,
813
+ };
814
+ }
815
+ catch (err) {
816
+ return { content: [{ type: "text", text: handleError(err) }] };
817
+ }
818
+ });
408
819
  // ─── Transport ────────────────────────────────────────────────────────────────
409
820
  async function runStdio() {
410
821
  const transport = new StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gFAAgF;AAEhF,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2CAA2C,CAAC;AAC9E,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,4EAA4E;AAC5E,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,IAAK,YAIJ;AAJD,WAAK,YAAY;IACf,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,+BAAe,CAAA;AACjB,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;AAED,IAAK,cAGJ;AAHD,WAAK,cAAc;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHI,cAAc,KAAd,cAAc,QAGlB;AAED,iFAAiF;AAEjF,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CACX,oCAAoC;YACpC,qEAAqE;YACrE,mEAAmE,CACpE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,iFAAiF;AAEjF,KAAK,UAAU,MAAM,CACnB,IAAY,EACZ,MAAoD;IAEpD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YAChC,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,OAAO,EAAE;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,wCAAwC,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACtF,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;YACxG,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;YACnH,OAAO,CAAC,CAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,CAAC,MAAM,8BAA8B,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;QAC9B,4FAA4F,CAC7F,CAAC;AACJ,CAAC;AAqID,iFAAiF;AAEjF,oEAAoE;AACpE,sEAAsE;AACtE,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAmB;IACjE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM;IACnE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa;IAChE,oBAAoB,EAAE,+BAA+B,EAAE,gCAAgC;IACvF,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB;IAChF,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB;IACpF,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB;IACrF,yBAAyB,EAAE,wBAAwB;IACnD,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW;IAChF,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW;IAC1E,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa;IAC/E,qBAAqB;IACrB,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe;IACpF,mBAAmB,EAAE,cAAc,EAAE,wBAAwB,EAAE,WAAW;IAC1E,yBAAyB,EAAE,uBAAuB,EAAE,8BAA8B;IAClF,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB;IACxE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;IAC5E,uBAAuB,EAAE,qBAAqB,EAAE,sBAAsB;IACtE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB;IAC3D,6BAA6B,EAAE,aAAa,EAAE,qBAAqB;IACnE,kCAAkC,EAAE,yBAAyB,EAAE,sBAAsB;IACrF,gBAAgB,EAAE,eAAe,EAAE,wBAAwB,EAAE,mBAAmB;IAChF,iBAAiB,EAAE,sBAAsB;CACjC,CAAC,CAAC;AAEZ,SAAS,cAAc,CAAC,CAAY;IAClC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,MAA+B,CAAC;AACzC,CAAC;AAED,iFAAiF;AAEjF,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,mFAAmF,CAAC;IAChG,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC;KAC3B,UAAU,CAAC,cAAc,CAAC;KAC1B,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;KAChC,QAAQ,CAAC,2EAA2E,CAAC,CAAC;AAEzF,MAAM,wBAAwB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,QAAQ,EAAE;KACV,QAAQ,CAAC,yDAAyD,CAAC,CAAC;AAEvE,iFAAiF;AAEjF,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CACpB,IAAkB,EAClB,aAAqB,EACrB,UAA+D,EAC/D,QAAyD;IAEzD,MAAM,KAAK,GAAG,CAAC,iBAAiB,aAAa,UAAU,CAAC,CAAC;IAEzD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,YAAY,aAAa,IAAI,CAAC,MAAM,2BAA2B,QAAQ,CAAC,YAAY,oBAAoB,CAAC,CAAC;QAC/I,IAAI,QAAQ,CAAC,YAAY,IAAI,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,6BAA6B,gBAAgB,yDAAyD,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,QAAQ,oBAAoB,UAAU,CAAC,MAAM,WAAW,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACnI,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,wCAAwC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,gBAAgB,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B;IACrD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG;QACZ,yCAAyC,IAAI,CAAC,MAAM,SAAS;QAC7D,EAAE;QACF,sDAAsD;QACtD,2BAA2B;KAC5B,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,KAAK,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CACzH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,YAAY,CACzB,QAAsB,EACtB,MAAgE;IAMhE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAkB,UAAU,EAAE;YACvD,QAAQ;YACR,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAExE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;YAC9B,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;YACjF,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;SAClF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAkB,UAAU,EAAE;QACvD,QAAQ;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE;;;6DAG4C;IACzD,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAiB,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;SAC/G,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;IACE,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE;;;;;;;;;;;;;oDAamC;IAChD,WAAW,EAAE;QACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;QACpH,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAwB,gBAAgB,CAAC,CAAC;QAErE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACtG,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEhC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAwC;SACtF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;IACE,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE;;;mCAGkB,gBAAgB;;;;;;;;oDAQC;IAChD,WAAW,EAAE;QACX,YAAY,EAAE,wBAAwB;QACtC,GAAG,gBAAgB;QACnB,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QACrF,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAwC;SAChG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gFAAgF;AAEhF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;IACE,KAAK,EAAE,2BAA2B;IAClC,WAAW,EAAE;;;mCAGkB,gBAAgB;;;;;;;;oDAQC;IAChD,WAAW,EAAE;QACX,YAAY,EAAE,wBAAwB;QACtC,GAAG,gBAAgB;QACnB,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAExE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAwC;SAChG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;IACE,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE;;;mCAGkB,gBAAgB;;;;;;;;oDAQC;IAChD,WAAW,EAAE;QACX,YAAY,EAAE,wBAAwB;QACtC,GAAG,gBAAgB;QACnB,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QAC3F,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEpE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAwC;SACjG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,KAAK,UAAU,QAAQ;IACrB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAEzC,yDAAyD;IACzD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE1E,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,+CAA+C;QAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;QAC7D,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,2DAA2D;IAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;QACjC,OAAO,CAAC,KAAK,CAAC,oDAAoD,IAAI,MAAM,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;AACvD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;KAAM,CAAC;IACN,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hotscots/mcp",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Official Hots&Cots MCP server — barracks, DFAC, and facility reviews for U.S. military installations",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",