@cliwant/mcp-sam-gov 1.15.0 → 1.16.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 (50) hide show
  1. package/README.ja.md +2 -2
  2. package/README.ko.md +2 -2
  3. package/README.md +4 -4
  4. package/dist/bonfire.d.ts +1 -1
  5. package/dist/bonfire.d.ts.map +1 -1
  6. package/dist/bonfire.js +7 -9
  7. package/dist/bonfire.js.map +1 -1
  8. package/dist/ckan.d.ts +6 -4
  9. package/dist/ckan.d.ts.map +1 -1
  10. package/dist/ckan.js +17 -4
  11. package/dist/ckan.js.map +1 -1
  12. package/dist/data-map.d.ts.map +1 -1
  13. package/dist/data-map.js +56 -1
  14. package/dist/data-map.js.map +1 -1
  15. package/dist/fpds.d.ts.map +1 -1
  16. package/dist/fpds.js +3 -2
  17. package/dist/fpds.js.map +1 -1
  18. package/dist/gao.d.ts.map +1 -1
  19. package/dist/gao.js +17 -6
  20. package/dist/gao.js.map +1 -1
  21. package/dist/gsa-perdiem.d.ts +5 -0
  22. package/dist/gsa-perdiem.d.ts.map +1 -1
  23. package/dist/gsa-perdiem.js +6 -1
  24. package/dist/gsa-perdiem.js.map +1 -1
  25. package/dist/open-checkbook.d.ts +8 -0
  26. package/dist/open-checkbook.d.ts.map +1 -1
  27. package/dist/open-checkbook.js +9 -1
  28. package/dist/open-checkbook.js.map +1 -1
  29. package/dist/pricing.d.ts +1 -0
  30. package/dist/pricing.d.ts.map +1 -1
  31. package/dist/pricing.js +135 -50
  32. package/dist/pricing.js.map +1 -1
  33. package/dist/server.d.ts.map +1 -1
  34. package/dist/server.js +34 -17
  35. package/dist/server.js.map +1 -1
  36. package/dist/socrata.d.ts +16 -1
  37. package/dist/socrata.d.ts.map +1 -1
  38. package/dist/socrata.js +31 -1
  39. package/dist/socrata.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/bonfire.ts +7 -9
  42. package/src/ckan.ts +17 -4
  43. package/src/data-map.ts +58 -1
  44. package/src/fpds.ts +3 -2
  45. package/src/gao.ts +20 -6
  46. package/src/gsa-perdiem.ts +12 -1
  47. package/src/open-checkbook.ts +26 -3
  48. package/src/pricing.ts +142 -48
  49. package/src/server.ts +41 -17
  50. package/src/socrata.ts +37 -1
package/dist/pricing.js CHANGED
@@ -100,6 +100,22 @@ function epochToIso(v) {
100
100
  return v.slice(0, 10);
101
101
  return null;
102
102
  }
103
+ // Maximum pages to scan when a client-side filter (county / constructionType)
104
+ // requires a full-state sweep. 10 pages × 50 rows = 500 WDs — well above any
105
+ // real state's active DBA stock (IL has 70 as of 2026-09-22).
106
+ const WD_SCAN_PAGE_CAP = 10;
107
+ const WD_SCAN_SIZE = 50; // max the SGS API accepts per request
108
+ /** Extract constructionTypes as a lowercase string array (handles string[] or unknown). */
109
+ function resultConstructionTypes(r) {
110
+ const ct = r.constructionTypes;
111
+ if (!ct)
112
+ return [];
113
+ if (Array.isArray(ct))
114
+ return ct.map((v) => String(v).toLowerCase());
115
+ if (typeof ct === "string")
116
+ return [ct.toLowerCase()];
117
+ return [];
118
+ }
103
119
  export async function searchWageDeterminations(args) {
104
120
  const index = coverageToIndex(args.coverage);
105
121
  const activeOnly = args.activeOnly ?? true;
@@ -108,24 +124,12 @@ export async function searchWageDeterminations(args) {
108
124
  const page = Math.max(0, Math.floor(args.page ?? 0));
109
125
  const stateFilter = args.state?.trim().toUpperCase() || undefined;
110
126
  const countyFilter = args.county?.trim().toLowerCase() || undefined;
111
- const params = new URLSearchParams({
112
- index,
113
- size: String(limit),
114
- page: String(page),
115
- mode: "search",
116
- sort: "-modifiedDate",
117
- });
118
- if (activeOnly)
119
- params.set("is_active", "true");
120
- if (standardOnly)
121
- params.set("is_standard", "true");
122
- // `q` matches WD number/title ONLY (NOT occupation) — verified q=guard→0.
123
- if (args.query)
124
- params.set("q", args.query);
125
- // `state` IS honored server-side (LIVE-VERIFIED 2026-07-03: index=sca&state=VA
126
- // → 30 vs 1028 unfiltered, and every returned WD's location contains VA;
127
- // state=ZZ → 0). It wants the 2-letter USPS code (a full name like "Virginia"
128
- // → 0). This CORRECTS the earlier brief which assumed state was ignored.
127
+ const ctFilter = args.constructionType?.trim().toLowerCase() || undefined;
128
+ // When county or constructionType is given, we must scan ALL pages for the
129
+ // state to avoid missing matching WDs (e.g. IL has 70 DBA WDs — the target
130
+ // Cook County Building WD is on page 1). We use max size=50 per fetch and
131
+ // cap at WD_SCAN_PAGE_CAP pages to keep the request count bounded.
132
+ const needsFullScan = Boolean(countyFilter || ctFilter);
129
133
  const filtersApplied = [`coverage(${index})`];
130
134
  const filtersDropped = [];
131
135
  const notes = [];
@@ -135,33 +139,93 @@ export async function searchWageDeterminations(args) {
135
139
  filtersApplied.push("standardOnly");
136
140
  if (args.query)
137
141
  filtersApplied.push("query(WD number/title only)");
142
+ // Build the base URLSearchParams that are shared across every page fetch.
143
+ function buildParams(pg, sz) {
144
+ const p = new URLSearchParams({
145
+ index,
146
+ size: String(sz),
147
+ page: String(pg),
148
+ mode: "search",
149
+ sort: "-modifiedDate",
150
+ });
151
+ if (activeOnly)
152
+ p.set("is_active", "true");
153
+ if (standardOnly)
154
+ p.set("is_standard", "true");
155
+ // `q` matches WD number/title ONLY (NOT occupation) — verified q=guard→0.
156
+ if (args.query)
157
+ p.set("q", args.query);
158
+ return p;
159
+ }
160
+ // `state` IS honored server-side (LIVE-VERIFIED 2026-07-03: index=sca&state=VA
161
+ // → 30 vs 1028 unfiltered, and every returned WD's location contains VA;
162
+ // state=ZZ → 0). It wants the 2-letter USPS code (a full name like "Virginia"
163
+ // → 0). This CORRECTS the earlier brief which assumed state was ignored.
164
+ const needsClientState = stateFilter !== undefined && !/^[A-Z]{2}$/.test(stateFilter);
138
165
  if (stateFilter) {
139
- if (/^[A-Z]{2}$/.test(stateFilter)) {
140
- params.set("state", stateFilter);
166
+ if (!needsClientState) {
141
167
  filtersApplied.push("state(server-side)");
142
168
  }
143
169
  else {
144
- // Not a 2-letter code → the server would return 0; apply client-side
145
- // instead so a full name still works, and disclose it.
146
170
  filtersDropped.push("state(server-side; not a 2-letter code)");
147
171
  notes.push(`The state value '${args.state}' is not a 2-letter USPS code; the SGS 'state' param only matches 2-letter codes (a full name returns 0), so it was applied CLIENT-SIDE over the fetched page instead. Pass a 2-letter code (e.g. 'VA') for a precise server-side filter.`);
148
172
  }
149
173
  }
150
- const url = `${SGS_BASE}?${params.toString()}`;
151
- const json = await getJson(url, SAM_HAL_HEADERS, `sam:sgs:${index}`);
152
- const rawResults = json._embedded?.results ?? [];
153
- const serverTotal = json.page?.totalElements ?? null;
154
- // Client-side filtering: county is NOT a documented SGS server param, so it
155
- // is applied here over the fetched page. A non-2-letter state also lands here.
156
- const needsClientState = filtersDropped.some((f) => f.startsWith("state"));
157
- let filtered = rawResults;
174
+ // ── Fetch: one page (no client filters) OR full-state scan ──────
175
+ let allRaw;
176
+ let serverTotal;
177
+ let scanCapHit = false;
178
+ if (!needsFullScan) {
179
+ // Original single-page path (no county/constructionType filter).
180
+ const params = buildParams(page, limit);
181
+ if (!needsClientState && stateFilter)
182
+ params.set("state", stateFilter);
183
+ const url = `${SGS_BASE}?${params.toString()}`;
184
+ const json = await getJson(url, SAM_HAL_HEADERS, `sam:sgs:${index}`);
185
+ allRaw = json._embedded?.results ?? [];
186
+ serverTotal = json.page?.totalElements ?? null;
187
+ }
188
+ else {
189
+ // Full-state scan: fetch all pages with size=50 until exhausted or cap.
190
+ const scanParams = buildParams(0, WD_SCAN_SIZE);
191
+ if (!needsClientState && stateFilter)
192
+ scanParams.set("state", stateFilter);
193
+ const firstUrl = `${SGS_BASE}?${scanParams.toString()}`;
194
+ const firstJson = await getJson(firstUrl, SAM_HAL_HEADERS, `sam:sgs:${index}`);
195
+ allRaw = firstJson._embedded?.results ?? [];
196
+ serverTotal = firstJson.page?.totalElements ?? null;
197
+ const totalPages = firstJson.page?.totalPages ?? 1;
198
+ const pagesToFetch = Math.min(totalPages, WD_SCAN_PAGE_CAP);
199
+ if (totalPages > WD_SCAN_PAGE_CAP)
200
+ scanCapHit = true;
201
+ for (let pg = 1; pg < pagesToFetch; pg++) {
202
+ const p = buildParams(pg, WD_SCAN_SIZE);
203
+ if (!needsClientState && stateFilter)
204
+ p.set("state", stateFilter);
205
+ const pgJson = await getJson(`${SGS_BASE}?${p.toString()}`, SAM_HAL_HEADERS, `sam:sgs:${index}`);
206
+ allRaw = allRaw.concat(pgJson._embedded?.results ?? []);
207
+ }
208
+ }
209
+ // ── Client-side filtering ────────────────────────────────────────
210
+ let filtered = allRaw;
158
211
  if (needsClientState && stateFilter) {
159
212
  filtered = filtered.filter((r) => resultStateCodes(r).some((c) => c === stateFilter || r.location?.state?.name?.toUpperCase() === stateFilter));
160
213
  }
161
214
  if (countyFilter) {
162
- filtersApplied.push("county(client-side)");
215
+ filtersApplied.push("county(client-side, full-state scan)");
163
216
  filtered = filtered.filter((r) => resultCounties(r).some((c) => c.name.toLowerCase().includes(countyFilter)));
164
- notes.push("County is filtered CLIENT-SIDE over the fetched page only (the SGS API has no county filter). A county filter combined with a small limit can miss WDs on later pages — raise `limit` or narrow by `state` (server-side) to be sure.");
217
+ }
218
+ if (ctFilter) {
219
+ filtersApplied.push(`constructionType(client-side, value=${args.constructionType})`);
220
+ filtered = filtered.filter((r) => resultConstructionTypes(r).includes(ctFilter));
221
+ }
222
+ // ── Specificity ranking: single-county WDs before multi-county ──
223
+ if (countyFilter) {
224
+ filtered.sort((a, b) => {
225
+ const aCount = resultCounties(a).length;
226
+ const bCount = resultCounties(b).length;
227
+ return aCount - bCount; // 1-county first, then 2-county, etc.
228
+ });
165
229
  }
166
230
  const determinations = filtered.map((r) => {
167
231
  const coverageCode = r.type?.code ?? (index === "sca" ? "SCA" : "DBA");
@@ -189,31 +253,52 @@ export async function searchWageDeterminations(args) {
189
253
  });
190
254
  notes.push(`Use sam_get_wage_rates with a fullReferenceNumber + revisionNumber to read the actual prevailing-wage rate table (the rates are parsed from the WD's plain-text document). ${index === "sca" ? "SCA WDs carry a WD-wide Health & Welfare rate." : "DBA WDs carry PER-CRAFT fringe rates."}`);
191
255
  notes.push("The `q` parameter matches the WD number/title only — it does NOT search by occupation or job title (e.g. q=guard returns 0). To find rates for a specific occupation, open the WD and read its rate table.");
192
- // totalAvailable: the server total is REAL for the coverage/active/standard/
193
- // query/state filters (state is server-side). But when we additionally filter
194
- // client-side (county, or a non-code state), the returned page count no longer
195
- // reflects a full server total for THAT combined filter → null it out and say so.
196
- const clientFiltered = Boolean(countyFilter) || needsClientState;
197
- const totalAvailable = clientFiltered ? null : serverTotal;
256
+ // ── Honest meta ──────────────────────────────────────────────────
257
+ const clientFiltered = Boolean(countyFilter) || Boolean(ctFilter) || needsClientState;
258
+ const scannedCount = allRaw.length;
198
259
  const returned = determinations.length;
199
- const truncated = clientFiltered
200
- ? true // page-bounded client filter → can't prove completeness
201
- : serverTotal !== null && page * limit + returned < serverTotal;
202
- if (clientFiltered) {
203
- notes.push("totalAvailable is null because a client-side filter (county and/or a non-code state) was applied over just the fetched page — the true match count for the combined filter is unknown. The server-side total for the coverage/state/active filters was " +
204
- (serverTotal ?? "unknown") +
205
- ".");
206
- }
207
- return withMeta({ determinations, coverageIndex: index, page, limit }, {
260
+ // When we did a full-state scan, totalAvailable is the REAL count of matching
261
+ // WDs across the scanned pages (not null). Only null it when the scan cap was
262
+ // hit (we didn't see all pages) or when there was no client filter.
263
+ let totalAvailable;
264
+ let truncated;
265
+ if (!clientFiltered) {
266
+ // No client filter: server total is accurate for this result set.
267
+ totalAvailable = serverTotal;
268
+ truncated = serverTotal !== null && page * limit + returned < serverTotal;
269
+ }
270
+ else if (needsFullScan && !scanCapHit) {
271
+ // Full scan completed: real match count is known.
272
+ totalAvailable = returned;
273
+ truncated = false;
274
+ }
275
+ else {
276
+ // Scan cap hit or no full scan (shouldn't happen but be safe).
277
+ totalAvailable = null;
278
+ truncated = true;
279
+ }
280
+ if (needsFullScan) {
281
+ const stateLabel = stateFilter ?? "all states";
282
+ const capNote = scanCapHit
283
+ ? ` (scan cap of ${WD_SCAN_PAGE_CAP * WD_SCAN_SIZE} WDs reached — some WDs may have been missed)`
284
+ : "";
285
+ notes.push(`Scanned ${scannedCount} of ${serverTotal ?? scannedCount} ${stateLabel} ${index.toUpperCase()} WDs across all pages${capNote}. ` +
286
+ (countyFilter ? `County filter applied across all scanned WDs. ` : "") +
287
+ (ctFilter ? `constructionType filter (${args.constructionType}) applied. ` : "") +
288
+ (countyFilter
289
+ ? "Single-county WDs ranked first — they are almost always the most specific match for a given locality. "
290
+ : ""));
291
+ }
292
+ return withMeta({ determinations, coverageIndex: index, page: needsFullScan ? 0 : page, limit: needsFullScan ? returned : limit }, {
208
293
  source: WD_SEARCH_SOURCE,
209
294
  keylessMode: true,
210
295
  returned,
211
296
  totalAvailable,
212
297
  truncated,
213
298
  pagination: {
214
- offset: page * limit,
215
- limit,
216
- nextOffset: truncated ? (page + 1) * limit : null,
299
+ offset: 0,
300
+ limit: needsFullScan ? returned : limit,
301
+ nextOffset: truncated && !needsFullScan ? (page + 1) * limit : null,
217
302
  hasMore: truncated,
218
303
  },
219
304
  filtersApplied,
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAUH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EAKb,MAAM,oBAAoB,CAAC;AAqlJ5B,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAO1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE,CAAC;AAoBF,eAAO,MAAM,KAAK,EAAE,OAAO,EAo0D1B,CAAC;AA8RF,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,CAkClB;AAyBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CActD;AACD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,IAAI,CAAC;IACnB,aAAa,EAAE,IAAI,CAAC;CACrB,CAEA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkE7E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAUH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EAKb,MAAM,oBAAoB,CAAC;AA6mJ5B,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAO1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE,CAAC;AAoBF,eAAO,MAAM,KAAK,EAAE,OAAO,EAo0D1B,CAAC;AA8RF,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,CAkClB;AAyBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CActD;AACD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,IAAI,CAAC;IACnB,aAAa,EAAE,IAAI,CAAC;CACrB,CAEA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkE7E"}
package/dist/server.js CHANGED
@@ -91,10 +91,18 @@ import { buildMeta, isMetaBundle, withMeta, } from "./meta.js";
91
91
  import { pathToFileURL, fileURLToPath } from "node:url";
92
92
  import { realpathSync } from "node:fs";
93
93
  import { resolveToolsets, ALL_TOOLSET_NAMES, TOOLSET_HINTS, filterToolsFor, toolNotLoadedEnvelope, } from "./toolsets.js";
94
+ // Where a state-level bid feed lives when it is NOT on OpenGov or Bonfire. Measured,
95
+ // not cosmetic: asked for "Illinois state solicitations", an eval agent searched
96
+ // opengov_list_governments then bonfire_list_organizations, found no state-level IL
97
+ // portal in either, and never reached data.illinois.gov 6rb8-ntpm (in one run it answered
98
+ // with generic portal advice after a single call; in another it ran out of budget). These are
99
+ // the tools an agent reaches for when it thinks "solicitations", so the pointer goes
100
+ // here rather than only on socrata_query, which it never opened.
101
+ const STATE_BID_FEEDS_POINTER = "STATE-LEVEL bid feeds on open-data portals are NOT in this directory: TX TxDOT lettings, advertised and taking bids = socrata_query data.texas.gov qh8x-rm8r; IL CDB capital bids that are ANTICIPATED and NOT YET POSTED = socrata_query data.illinois.gov 6rb8-ntpm (~48 rows, not IL's full register). Map: resource samgov://data-map/state-local.";
94
102
  const SERVER_NAME = "mcp-sam-gov";
95
103
  // Kept in lockstep with package.json / manifest.json / server.json.
96
104
  // Keep in sync with package.json "version" (asserted at release; see CHANGELOG).
97
- const SERVER_VERSION = "1.15.0";
105
+ const SERVER_VERSION = "1.16.0";
98
106
  // ─── Tool input schemas (Zod) ────────────────────────────────────
99
107
  const SamSearchInput = z.object({
100
108
  query: z.string().optional().describe("Free-text title query"),
@@ -585,11 +593,15 @@ const WageSearchInput = z.object({
585
593
  state: z
586
594
  .string()
587
595
  .optional()
588
- .describe("2-letter USPS state code (e.g. 'VA'), applied SERVER-SIDE. A full name is applied client-side instead."),
596
+ .describe("2-letter USPS state code (e.g. 'IL'), applied SERVER-SIDE. A full name is applied client-side instead."),
589
597
  county: z
590
598
  .string()
591
599
  .optional()
592
- .describe("County name (substring match), applied CLIENT-SIDE over the fetched page only (the API has no county filter)."),
600
+ .describe("County name (substring match, e.g. 'Cook'). When given, ALL pages for the state are scanned before filtering so no WDs are missed."),
601
+ constructionType: z
602
+ .enum(["Building", "Residential", "Heavy", "Highway"])
603
+ .optional()
604
+ .describe("DBA construction type (Building | Residential | Heavy | Highway). This is the PRIMARY key for a Davis-Bacon lookup: pass state + county + constructionType to pinpoint the correct WD. E.g. Building = federal buildings, schools; Heavy = bridges, utilities; Highway = roads."),
593
605
  query: z
594
606
  .string()
595
607
  .optional()
@@ -599,8 +611,8 @@ const WageSearchInput = z.object({
599
611
  .boolean()
600
612
  .optional()
601
613
  .describe("Only standard (non-non-standard) WDs (default true)."),
602
- limit: z.number().min(1).max(50).optional().describe("Page size (default 20, max 50)."),
603
- page: z.number().min(0).optional().describe("0-based page index (default 0)."),
614
+ limit: z.number().min(1).max(50).optional().describe("Page size (default 20, max 50). Ignored when county or constructionType is given — a full-state scan is performed instead."),
615
+ page: z.number().min(0).optional().describe("0-based page index (default 0). Ignored when county or constructionType is given — a full-state scan is performed instead."),
604
616
  });
605
617
  const WageRatesInput = z.object({
606
618
  reference: z
@@ -1587,7 +1599,12 @@ const SocrataQueryInput = z.object({
1587
1599
  select: z
1588
1600
  .string()
1589
1601
  .optional()
1590
- .describe("Optional SoQL $select (column projection / aggregate), e.g. 'agency,SUM(amount)'."),
1602
+ .describe("Optional SoQL $select (column projection or aggregate). " +
1603
+ "For a TOTAL: 'sum(amount)' (add a where for vendor/fiscal-year filter). " +
1604
+ "For a TOP-N ranking: 'vendor_name, sum(amount) as total' — pair with order='total DESC'. " +
1605
+ "Any SoQL function call (sum/count/avg/min/max) or 'distinct' activates aggregate mode: " +
1606
+ "totalAvailable becomes null (no raw-row total for aggregates) and the count(*) companion is skipped. " +
1607
+ "NEVER sum rows from one page to get a total — always use an aggregate select."),
1591
1608
  where: z
1592
1609
  .string()
1593
1610
  .optional()
@@ -1622,7 +1639,7 @@ const SocrataDiscoverDatasetsInput = z.object({
1622
1639
  q: z
1623
1640
  .string()
1624
1641
  .min(1)
1625
- .describe("Keyword(s) to find datasets, e.g. 'procurement', 'vendor payments', 'checkbook'."),
1642
+ .describe("TOPIC words only, e.g. 'solicitations', 'contract', 'vendor payments', 'checkbook'. Put the JURISDICTION in `domain`, never in q: every q term must match and dataset titles rarely repeat their place name, so q='Illinois solicitations' returns 0 while domain=data.illinois.gov q='solicitations' finds the dataset."),
1626
1643
  domain: SocrataDomainEnum.optional().describe("Optional: scope discovery to ONE portal; omit to search all. The catalog does not index every host (USAC returns 0); those stay queryable via socrata_query with a known 4x4. " +
1627
1644
  "Jurisdiction of non-obvious hosts: cthru.data.socrata.com=MASSACHUSETTS statewide (CTHRU); atlanta.data.socrata.com=Atlanta GA; controllerdata.lacity.org+data.lacity.org=Los Angeles; www.dallasopendata.com=Dallas TX; data.brla.gov=Baton Rouge LA; data.kcmo.org=Kansas City MO; data.cstx.gov=College Station TX; data.weho.org=West Hollywood CA; opendata.usac.org+datahub.usac.org=federal USAC E-rate. data.colorado.gov's procurement data is CITY OF DENVER, not CO state."),
1628
1645
  limit: z
@@ -2601,7 +2618,7 @@ const BonfireSearchOpportunitiesInput = z.object({
2601
2618
  const OpenCheckbookSearchInput = z.object({
2602
2619
  portal: z
2603
2620
  .enum(openCheckbook.OPEN_CHECKBOOK_PORTALS.map((p) => p.key))
2604
- .describe("The curated Open-Checkbook portal (SSRF allowlist enum). 'sd' = State of South Dakota Open Checkbook (~740,980 vendor payments, ~$8.41B, ~3 most-recent fiscal years)."),
2621
+ .describe("The curated Open-Checkbook portal (SSRF allowlist enum). 'sd' = State of South Dakota Open Checkbook (~740,980 vendor payments, ~$8.41B, ~3 most-recent fiscal years). 'ak' = State of Alaska Open Checkbook (41,751 payments, $1.18B — FY2026 ONLY; FY2019–2025 return count:0 meaning not published, NOT zero spend)."),
2605
2622
  year: z.string().min(1).max(40).optional().describe("Fiscal-year filter (EXACT match), e.g. '2025'. Default 'All Years' = the exposed ~3-year window (NOT full history)."),
2606
2623
  vendor: z.string().min(1).max(200).optional().describe("Vendor name filter (EXACT match, e.g. 'US BANK NA' → 917). A partial/misspelled value returns an honest count:0."),
2607
2624
  org: z.string().min(1).max(200).optional().describe("Department filter (org1, EXACT match, e.g. 'TRANSPORTATION' → 109,887)."),
@@ -3720,7 +3737,7 @@ const GsaPerdiemRatesInput = z
3720
3737
  .string()
3721
3738
  .regex(/^\d{4}$/)
3722
3739
  .optional()
3723
- .describe("The per-diem fiscal year (default: the current U.S. federal fiscal year, computed at call time — GSA sets rates per FY, Oct 1–Sep 30). Validated ^\\d{4}$ (it rides in the request path)."),
3740
+ .describe("U.S. federal fiscal year number (Oct 1–Sep 30). Default: current FY at call time. IMPORTANT: October 2026 = FY2027; September 2026 = FY2026. To get October 2026 rates, pass year='2027'. Validated ^\d{4}$ (it rides in the request path)."),
3724
3741
  })
3725
3742
  .describe("Look up GSA per-diem rates by EITHER (city + state) OR zip. Supplying both, or neither, ⇒ invalid_input.");
3726
3743
  // ─── US DOL Data API v4 (apiprod.dol.gov) — the labor-enforcement lane ──
@@ -4732,7 +4749,7 @@ export const TOOLS = [
4732
4749
  // ━━━ Pricing / Wage (3) ━━━
4733
4750
  defineTool({
4734
4751
  name: "sam_search_wage_determinations",
4735
- description: "Find the Service Contract Act (SCA) or Davis-Bacon (DBA) wage determination(s) governing a locality (keyless SAM SGS). Filter by coverage (sca|dba), state (2-letter, server-side), county (client-side), or WD number/title. Returns the structured WD list; follow with sam_get_wage_rates to read the rate table. NOTE: `query` matches WD number/title only, NOT occupation.",
4752
+ description: "Find the Service Contract Act (SCA) or Davis-Bacon Act (DBA) wage determination(s) for a locality (keyless SAM SGS). For a Davis-Bacon lookup pass state + county + constructionType (e.g. 'IL', 'Cook', 'Building') — the tool scans ALL pages for the state so no WDs are missed, ranks single-county WDs first (the most specific match), and reports real match counts. Then call sam_get_wage_rates on the top result to read the rate table. SCA: pass state + county. constructionType is DBA-only: Building (federal buildings/schools), Residential, Heavy (bridges/utilities), Highway (roads). NOTE: `query` matches WD number/title only, NOT occupation.",
4736
4753
  inputSchema: WageSearchInput,
4737
4754
  handler: (input) => pricing.searchWageDeterminations(input),
4738
4755
  }),
@@ -4916,7 +4933,7 @@ export const TOOLS = [
4916
4933
  // ━━━ Socrata / SODA — keyless SLED + E-rate open data (2) ━━━ ADR-0004
4917
4934
  defineTool({
4918
4935
  name: "socrata_query",
4919
- description: "Query rows from an allowlisted Socrata/SODA open-data portal (keyless; ~a dozen US state portals + USAC E-rate on one identical API — state spend/checkbook/contract/vendor-payment datasets). State procurement mirrors: NY ehig-g5x3, NJ ubnu-tqu7, WA s8d5-pj78, MA cthru.data.socrata.com pegc-naaa (~49M payment rows). Full map: read resource samgov://data-map/state-local. Input `domain` (curated allowlist enum — the SSRF host guard), `datasetId` (4x4, from socrata_discover_datasets), optional SoQL `select`/`where`/`order`/`q`, `limit` (≤1000, def 100), `offset`, `withTotal` (def true). HONESTY: SODA's row response has no total, so a count(*) companion supplies an exact totalAvailable; if it fails the rows still return with totalAvailable:null + a note (hasMore is then inferred from page-fill, never a false complete). Genuine-empty ⇒ complete:true/total:0; an outage/400/404 THROWS (never a fake empty). Value fields are strings.",
4936
+ description: "Query rows from an allowlisted Socrata/SODA open-data portal (keyless; ~a dozen US state portals + USAC E-rate on one identical API — state spend/checkbook/contract/vendor-payment datasets). State procurement mirrors: NY ehig-g5x3, NJ ubnu-tqu7, WA s8d5-pj78, MA cthru.data.socrata.com pegc-naaa (~49M payment rows). Full map: read resource samgov://data-map/state-local. Input `domain` (curated allowlist enum — the SSRF host guard), `datasetId` (4x4, from socrata_discover_datasets), optional SoQL `select`/`where`/`order`/`q`, `limit` (≤1000, def 100), `offset`, `withTotal` (def true). AGGREGATES: for a grand total pass select='sum(amount)' with a where filter; for top-N vendors pass select='vendor_name, sum(amount) as total' with order='total DESC' — these return the final answer directly, NOT a page to manually sum. HONESTY: SODA's row response has no total, so a count(*) companion supplies an exact totalAvailable; if it fails the rows still return with totalAvailable:null + a note (hasMore is then inferred from page-fill, never a false complete). Genuine-empty ⇒ complete:true/total:0; an outage/400/404 THROWS (never a fake empty). Value fields are strings.",
4920
4937
  inputSchema: SocrataQueryInput,
4921
4938
  handler: (input) => socrata.query(input),
4922
4939
  }),
@@ -5251,30 +5268,30 @@ export const TOOLS = [
5251
5268
  // (one keyless GET returns all ~560 orgs) + per-org solicitations.
5252
5269
  defineTool({
5253
5270
  name: "opengov_list_governments",
5254
- description: "List the government portals on OpenGov Procurement (formerly ProcureNow) — the directory for opengov_search_solicitations (keyless; api.procurement.opengov.com). OpenGov Procurement hosts the live open-solicitation portals of 525+ US state/local governments (cities, counties, school & special districts across 42 states + DC). The WHOLE directory arrives in ONE keyless GET and is filtered client-side: `state` (2-letter), `query` (case-insensitive name substring); `limit`(1..200)/`offset`. Only ACTIVE, non-internal portals are returned. Output: { governments:[{ code, name, city, state, website }] } + honest _meta. Feed a result's `code` to opengov_search_solicitations. HONESTY: this consumes ONLY the anonymous endpoints the public portal itself calls (the official key-gated api-key API is NOT used) — genuinely keyless; totalAvailable is the EXACT filtered portal count (never the page length); a 429/5xx/timeout THROWS (never a fake empty); a non-array body ⇒ schema_drift.",
5271
+ description: "List the government portals on OpenGov Procurement (formerly ProcureNow) — the directory for opengov_search_solicitations (keyless; api.procurement.opengov.com). OpenGov Procurement hosts the live open-solicitation portals of 525+ US state/local governments (cities, counties, school & special districts across 42 states + DC). The WHOLE directory arrives in ONE keyless GET and is filtered client-side: `state` (2-letter), `query` (case-insensitive name substring); `limit`(1..200)/`offset`. Only ACTIVE, non-internal portals are returned. Output: { governments:[{ code, name, city, state, website }] } + honest _meta. Feed a result's `code` to opengov_search_solicitations. HONESTY: this consumes ONLY the anonymous endpoints the public portal itself calls (the official key-gated api-key API is NOT used) — genuinely keyless; totalAvailable is the EXACT filtered portal count (never the page length); a 429/5xx/timeout THROWS (never a fake empty); a non-array body ⇒ schema_drift." + " " + STATE_BID_FEEDS_POINTER,
5255
5272
  inputSchema: OpengovListGovernmentsInput,
5256
5273
  handler: (input) => opengov.listGovernments(input),
5257
5274
  }),
5258
5275
  defineTool({
5259
5276
  name: "opengov_search_solicitations",
5260
- description: "List a government's public solicitations on OpenGov Procurement (keyless; api.procurement.opengov.com, POST /project/list with the required publicView gate). Input `governmentCode` (the portal slug from opengov_list_governments, e.g. 'santacruzca', 'orlando', 'u-46'; REQUIRED), `limit`(1..100)/`offset`. Returns { governmentCode, solicitations:[{ id, title, solicitationNumber, status, type, department, releaseDate, proposalDeadline, contactName, link }] } + honest _meta. ★STATUS: `status` is surfaced VERBATIM — **open = currently ACCEPTING responses**; pending/evaluation/closed are ALSO returned (publicView shows all public projects), so filter status==='open' for live bids. `link` is the public portal page. HONESTY: totalAvailable = the API's `count` = the org's TOTAL public-project count (all statuses), NEVER the page length and NOT an open-only count (a note discloses this); pagination is the API's fixed page (offset is snapped to the page boundary, disclosed); a genuine no-match ⇒ complete:true/returned:0; a 429/5xx/timeout THROWS (never a fake empty); a non-array `projects` ⇒ schema_drift; a bad `governmentCode` ⇒ invalid_input pre-fetch. Genuinely keyless (the key-gated official API is NOT used).",
5277
+ description: "List a government's public solicitations on OpenGov Procurement (keyless; api.procurement.opengov.com, POST /project/list with the required publicView gate). Input `governmentCode` (the portal slug from opengov_list_governments, e.g. 'santacruzca', 'orlando', 'u-46'; REQUIRED), `limit`(1..100)/`offset`. Returns { governmentCode, solicitations:[{ id, title, solicitationNumber, status, type, department, releaseDate, proposalDeadline, contactName, link }] } + honest _meta. ★STATUS: `status` is surfaced VERBATIM — **open = currently ACCEPTING responses**; pending/evaluation/closed are ALSO returned (publicView shows all public projects), so filter status==='open' for live bids. `link` is the public portal page. HONESTY: totalAvailable = the API's `count` = the org's TOTAL public-project count (all statuses), NEVER the page length and NOT an open-only count (a note discloses this); pagination is the API's fixed page (offset is snapped to the page boundary, disclosed); a genuine no-match ⇒ complete:true/returned:0; a 429/5xx/timeout THROWS (never a fake empty); a non-array `projects` ⇒ schema_drift; a bad `governmentCode` ⇒ invalid_input pre-fetch. Genuinely keyless (the key-gated official API is NOT used)." + " " + STATE_BID_FEEDS_POINTER,
5261
5278
  inputSchema: OpengovSearchSolicitationsInput,
5262
5279
  handler: (input) => opengov.searchSolicitations(input),
5263
5280
  }),
5264
5281
  // ━━━ Bonfire (Euna) — keyless per-org open-opportunity RSS (SLED bids) ━━━
5265
5282
  // SLED bid campaign. Thousands of US state/local govs on Bonfire expose a keyless
5266
- // RSS of open opportunities. Ships a curated 195-org live-verified seed directory
5283
+ // RSS of open opportunities. Ships a curated 187-org live-verified seed directory
5267
5284
  // (Bonfire's authoritative org API is auth-gated → out of bounds). Fixed-suffix
5268
5285
  // SSRF (.bonfirehub.com). RSS = the complete open set (totalAvailable honest).
5269
5286
  defineTool({
5270
5287
  name: "bonfire_list_organizations",
5271
- description: "List US governments on the Bonfire (Euna) eProcurement platform — the directory for bonfire_search_opportunities (keyless). Bonfire hosts thousands of US state/local governments' open-bid portals, each with a keyless RSS feed. Filter the curated seed by `state` (2-letter) / `query` (case-insensitive name substring); `limit`(1..200)/`offset`. Output: { organizations:[{ org, name, state }] }. Feed a result's `org` to bonfire_search_opportunities. ★HONESTY: this is a CURATED, live-verified SEED of 195 US orgs — Bonfire has NO keyless org-list API (its authoritative directory is auth-gated, out of bounds), and Euna markets up to ~900 US orgs, so the seed is PARTIAL (disclosed in _meta); probe `{slug}.bonfirehub.com/opportunities/rss` to extend. totalAvailable = the exact filtered seed count.",
5288
+ description: "List US governments on the Bonfire (Euna) eProcurement platform — the directory for bonfire_search_opportunities (keyless). Bonfire hosts thousands of US state/local governments' open-bid portals, each with a keyless RSS feed. Filter the curated seed by `state` (2-letter) / `query` (case-insensitive name substring); `limit`(1..200)/`offset`. Output: { organizations:[{ org, name, state }] }. Feed a result's `org` to bonfire_search_opportunities. ★HONESTY: this is a CURATED, live-verified SEED of 187 US orgs — Bonfire has NO keyless org-list API (its authoritative directory is auth-gated, out of bounds), and Euna markets up to ~900 US orgs, so the seed is PARTIAL (disclosed in _meta); probe `{slug}.bonfirehub.com/opportunities/rss` to extend. totalAvailable = the exact filtered seed count." + " " + STATE_BID_FEEDS_POINTER,
5272
5289
  inputSchema: BonfireListOrganizationsInput,
5273
5290
  handler: (input) => bonfire.listOrganizations(input),
5274
5291
  }),
5275
5292
  defineTool({
5276
5293
  name: "bonfire_search_opportunities",
5277
- description: "List a government's currently-OPEN solicitations on Bonfire (keyless; {org}.bonfirehub.com/opportunities/rss, RSS 2.0). Input `org` (the subdomain slug from bonfire_list_organizations, e.g. 'harriscountytx', 'broward', 'u-46'; REQUIRED), `limit`(1..200)/`offset`. Returns { org, opportunities:[{ referenceNumber, name, description, closeDate, link, pubDate }] } + honest _meta. HONESTY: the RSS is the COMPLETE set of the org's currently-open opportunities (no server pagination), so totalAvailable = the exact open-opportunity count (never a page length) and this tool pages over it client-side; an empty feed (returned 0) means no open opportunities right now (honest empty, complete:true); `closeDate` is parsed best-effort from the description; a 429/5xx/404/timeout THROWS (never a fake empty); a 200 non-RSS body ⇒ schema_drift; a bad `org` ⇒ invalid_input pre-fetch. Fixed-suffix SSRF (.bonfirehub.com) + redirect:error. Keyless (Bonfire's auth-gated directory API is NOT used).",
5294
+ description: "List a government's currently-OPEN solicitations on Bonfire (keyless; {org}.bonfirehub.com/opportunities/rss, RSS 2.0). Input `org` (the subdomain slug from bonfire_list_organizations, e.g. 'harriscountytx', 'broward', 'u-46'; REQUIRED), `limit`(1..200)/`offset`. Returns { org, opportunities:[{ referenceNumber, name, description, closeDate, link, pubDate }] } + honest _meta. HONESTY: the RSS is the COMPLETE set of the org's currently-open opportunities (no server pagination), so totalAvailable = the exact open-opportunity count (never a page length) and this tool pages over it client-side; an empty feed (returned 0) means no open opportunities right now (honest empty, complete:true); `closeDate` is parsed best-effort from the description; a 429/5xx/404/timeout THROWS (never a fake empty); a 200 non-RSS body ⇒ schema_drift; a bad `org` ⇒ invalid_input pre-fetch. Fixed-suffix SSRF (.bonfirehub.com) + redirect:error. Keyless (Bonfire's auth-gated directory API is NOT used)." + " " + STATE_BID_FEEDS_POINTER,
5278
5295
  inputSchema: BonfireSearchOpportunitiesInput,
5279
5296
  handler: (input) => bonfire.searchOpportunities(input),
5280
5297
  }),
@@ -5553,7 +5570,7 @@ export const TOOLS = [
5553
5570
  // never-0; standardRate/isOconus are STRING booleans coerced to real booleans.
5554
5571
  defineTool({
5555
5572
  name: "gsa_perdiem_rates",
5556
- description: "Look up GSA Federal Travel PER-DIEM rates — the max lodging + Meals & Incidental Expenses (M&IE) reimbursement ceilings for official U.S. government travel (api.gsa.gov /travel/perdiem/v2, keyed — DATA_GOV_API_KEY or the shared DEMO_KEY). Input: EITHER `city` + `state` (2-letter) OR `zip` (5-digit) — supplying BOTH or NEITHER → invalid_input with 0 fetch; optional `year` (default: current federal fiscal year). Returns { rates:[{ city, county, state, zip, year, isOconus, standardRate, mealsUsd, monthlyLodgingUsd:[{ month (1-12), monthName, lodgingUsd }] }] } + honest _meta. HONESTY: lodgingUsd is the MAX nightly lodging ceiling for that month — VARIES SEASONALLY (hence a per-month array); mealsUsd is the daily M&IE ceiling; both are integer US dollars, null-when-withheld (NEVER 0 — genuine 0 preserved). standardRate/isOconus are booleans coerced from the API's string 'true'/'false' (unrecognized → null, never fabricated false); months array preserved AS-IS (never padded to 12). API returns COMPLETE rate set (no pagination) → totalAvailable = row count, complete:true. Genuine no-match → honest empty; `errors` field non-null → invalid_input; 429 (DEMO_KEY ~10 req/hr) → rate_limited THROWS; set DATA_GOV_API_KEY (free, api.data.gov/signup) for 1000/hr. 5xx/timeout → upstream_unavailable THROWS; 200 non-JSON → schema_drift. Key rides ONLY in the X-Api-Key header.",
5573
+ description: "Look up GSA Federal Travel PER-DIEM rates — the max lodging + Meals & Incidental Expenses (M&IE) reimbursement ceilings for official U.S. government travel (api.gsa.gov /travel/perdiem/v2, keyed — DATA_GOV_API_KEY or the shared DEMO_KEY). Input: EITHER `city` + `state` (2-letter) OR `zip` (5-digit) — supplying BOTH or NEITHER → invalid_input with 0 fetch; optional `year` (default: current federal fiscal year). Returns { rates:[{ city, county, state, zip, year, fiscalYear (= year, the U.S. FY: Oct 2026 = FY2027), isOconus, standardRate, mealsUsd, monthlyLodgingUsd:[{ month (1-12), monthName, lodgingUsd }] }] } + honest _meta. HONESTY: lodgingUsd is the MAX nightly lodging ceiling for that month — VARIES SEASONALLY (hence a per-month array); mealsUsd is the daily M&IE ceiling; both are integer US dollars, null-when-withheld (NEVER 0 — genuine 0 preserved). standardRate/isOconus are booleans coerced from the API's string 'true'/'false' (unrecognized → null, never fabricated false); months array preserved AS-IS (never padded to 12). API returns COMPLETE rate set (no pagination) → totalAvailable = row count, complete:true. Genuine no-match → honest empty; `errors` field non-null → invalid_input; 429 (DEMO_KEY ~10 req/hr) → rate_limited THROWS; set DATA_GOV_API_KEY (free, api.data.gov/signup) for 1000/hr. 5xx/timeout → upstream_unavailable THROWS; 200 non-JSON → schema_drift. Key rides ONLY in the X-Api-Key header.",
5557
5574
  inputSchema: GsaPerdiemRatesInput,
5558
5575
  handler: (input) => gsaPerdiem.perdiemRates(input),
5559
5576
  }),