govtoolspro-mcp-server 0.1.1 → 0.1.3

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
@@ -42,7 +42,7 @@ Add to your MCP client config (Claude Desktop, Claude Code, Cursor, Cline, Zed,
42
42
 
43
43
  ### Get an API key
44
44
 
45
- Mint a key from the **GovToolsPro extension → Admin tab** (format `gtp_live_...` / `gtp_test_...`).
45
+ Create a key in the **GovToolsPro extension → Profile → API Keys** tab (format `gtp_live_...` / `gtp_test_...`).
46
46
 
47
47
  ## Configuration
48
48
 
@@ -1,5 +1,5 @@
1
1
  const DEFAULT_API_BASE = "https://mcp.govtoolspro.com/api/v1/workflows";
2
- const VERSION = "0.1.0";
2
+ const VERSION = "0.1.2";
3
3
  export class GovToolsProApiError extends Error {
4
4
  status;
5
5
  code;
@@ -27,7 +27,7 @@ export class GovToolsProApiClient {
27
27
  }
28
28
  async request(method, path, body) {
29
29
  if (!this.apiKey) {
30
- throw new GovToolsProApiError("GOVTOOLSPRO_API_KEY is not set. Mint a key from the GovToolsPro extension's Admin tab and add it to your MCP client config.", 401, "unauthenticated");
30
+ throw new GovToolsProApiError("GOVTOOLSPRO_API_KEY is not set. Mint a key from the GovToolsPro extension Profile → API Keys tab and add it to your MCP client config.", 401, "unauthenticated");
31
31
  }
32
32
  const url = `${this.baseUrl}${path.startsWith("/") ? path : `/${path}`}`;
33
33
  const res = await fetch(url, {
@@ -80,7 +80,7 @@ function codeForStatus(status) {
80
80
  function humanizeError(status, message) {
81
81
  switch (status) {
82
82
  case 401:
83
- return "Invalid or missing GOVTOOLSPRO_API_KEY. Mint a new key from the GovToolsPro extension's Admin tab.";
83
+ return "Invalid or missing GOVTOOLSPRO_API_KEY. Mint a new key from the GovToolsPro extension Profile → API Keys tab.";
84
84
  case 402:
85
85
  return "Out of credits. Purchase a credit pack from the GovToolsPro extension's Tools tab.";
86
86
  case 429:
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AAExE,MAAM,OAAO,GAAG,OAAO,CAAC;AAaxB,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAGnC;IACA;IAHT,YACE,OAAe,EACR,MAAc,EACd,IAAY;QAEnB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAGnB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,IAAsB;QAChC,4EAA4E;QAC5E,wEAAwE;QACxE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAA6B;QACvD,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAsB,EACtB,IAAY,EACZ,IAA8B;QAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,mBAAmB,CAC3B,0IAA0I,EAC1I,GAAG,EACH,iBAAiB,CAClB,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM;YACN,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,0BAA0B,OAAO,EAAE;aAClD;YACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAI,MAAoD,CAAC,KAAK,CAAC;YAC3E,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,QAAQ;gBACxB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,mBAAmB,CAC3B,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,GAAG,CAAC,MAAM,EACV,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAC1B,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAA2C,CAAC;QAC5D,OAAO;YACL,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAM;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;CACF;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,iBAAiB,CAAC;QAC3B,KAAK,GAAG;YACN,OAAO,kBAAkB,CAAC;QAC5B,KAAK,GAAG;YACN,OAAO,mBAAmB,CAAC;QAC7B,KAAK,GAAG;YACN,OAAO,WAAW,CAAC;QACrB,KAAK,GAAG;YACN,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe;IACpD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,iHAAiH,CAAC;QAC3H,KAAK,GAAG;YACN,OAAO,oFAAoF,CAAC;QAC9F,KAAK,GAAG;YACN,OAAO,+CAA+C,CAAC;QACzD;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -10,8 +10,11 @@ import { findIncumbentsTool, runFindIncumbents } from "./tools/findIncumbents.js
10
10
  import { findPartnersNearTool, runFindPartnersNear } from "./tools/findPartnersNear.js";
11
11
  import { predictRecompeteTool, runPredictRecompete } from "./tools/predictRecompete.js";
12
12
  import { lookupNecoDataTool, runLookupNecoData } from "./tools/lookupNecoData.js";
13
+ import { lookupLaborRatesTool, runLookupLaborRates } from "./tools/lookupLaborRates.js";
14
+ import { analyzeAwardPatternsTool, runAnalyzeAwardPatterns } from "./tools/analyzeAwardPatterns.js";
15
+ import { analyzeMarketTool, runAnalyzeMarket } from "./tools/analyzeMarket.js";
13
16
  const SERVER_NAME = "govtoolspro";
14
- const SERVER_VERSION = "0.1.1";
17
+ const SERVER_VERSION = "0.1.3";
15
18
  async function main() {
16
19
  // Lazy config: don't require the API key at startup, so `tools/list` works
17
20
  // without credentials (better client UX + lets registries scan tools). A
@@ -28,6 +31,9 @@ async function main() {
28
31
  findPartnersNearTool,
29
32
  predictRecompeteTool,
30
33
  lookupNecoDataTool,
34
+ lookupLaborRatesTool,
35
+ analyzeAwardPatternsTool,
36
+ analyzeMarketTool,
31
37
  ];
32
38
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));
33
39
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
@@ -41,6 +47,9 @@ async function main() {
41
47
  case findPartnersNearTool.name: return await runFindPartnersNear(api, args ?? {});
42
48
  case predictRecompeteTool.name: return await runPredictRecompete(api, args ?? {});
43
49
  case lookupNecoDataTool.name: return await runLookupNecoData(api, args ?? {});
50
+ case lookupLaborRatesTool.name: return await runLookupLaborRates(api, args ?? {});
51
+ case analyzeAwardPatternsTool.name: return await runAnalyzeAwardPatterns(api, args ?? {});
52
+ case analyzeMarketTool.name: return await runAnalyzeMarket(api, args ?? {});
44
53
  default:
45
54
  return errorResult(`Unknown tool: ${name}`);
46
55
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export const analyzeAwardPatternsTool = {
2
+ name: "analyze_award_patterns",
3
+ description: "Analyze how contracts in a NAICS are typically awarded: award-size distribution, competition mix " +
4
+ "(full & open / limited / sole-source), bid intensity (single-bid rate, expected bidders), contract " +
5
+ "vehicles, and pricing types. From public USAspending + FPDS data. Costs 3 credits.",
6
+ inputSchema: {
7
+ type: "object",
8
+ properties: {
9
+ naicsCode: { type: "string", description: "NAICS code (required)." },
10
+ pscCode: { type: "string", description: "Optional PSC code to narrow the analysis." },
11
+ years: { type: "number", description: "Lookback in years (default ~3)." },
12
+ state: { type: "string", description: "Optional 2-letter place-of-performance state filter." },
13
+ },
14
+ required: ["naicsCode"],
15
+ additionalProperties: false,
16
+ },
17
+ outputSchema: {
18
+ type: "object",
19
+ properties: {
20
+ awardSizeDistribution: { type: "array", items: { type: "object", additionalProperties: true } },
21
+ competition: { type: ["object", "null"], additionalProperties: true },
22
+ bidStatistics: { type: ["object", "null"], additionalProperties: true },
23
+ contractVehicles: { type: "array", items: { type: "object", additionalProperties: true } },
24
+ pricingTypes: { type: "array", items: { type: "object", additionalProperties: true } },
25
+ },
26
+ additionalProperties: true,
27
+ },
28
+ annotations: {
29
+ title: "Analyze award patterns",
30
+ readOnlyHint: true,
31
+ destructiveHint: false,
32
+ idempotentHint: true,
33
+ openWorldHint: true,
34
+ },
35
+ };
36
+ export async function runAnalyzeAwardPatterns(api, args) {
37
+ const naicsCode = typeof args.naicsCode === "string" ? args.naicsCode.trim() : "";
38
+ if (!naicsCode)
39
+ throw new Error("naicsCode is required");
40
+ const body = { naicsCode };
41
+ for (const k of ["pscCode", "years", "state"]) {
42
+ if (args[k] !== undefined)
43
+ body[k] = args[k];
44
+ }
45
+ const { data, disclaimer } = await api.post("/analyze-award-patterns", body);
46
+ const c = data.competition;
47
+ const b = data.bidStatistics;
48
+ const lines = [
49
+ `Award patterns for NAICS ${naicsCode}:`,
50
+ c
51
+ ? `Competition: ${c.fullAndOpenPct ?? "?"}% full & open, ${c.soleSourcePct ?? "?"}% sole-source (${c.competitionLevel ?? "n/a"})`
52
+ : "Competition: (FPDS unavailable)",
53
+ b
54
+ ? `Bidding: avg ${b.avgOffers ?? "?"} offers, ${b.singleBidRate ?? "?"}% single-bid, ~${b.expectedBidders ?? "?"} expected bidders`
55
+ : "Bidding: (FPDS unavailable)",
56
+ data.pricingTypes && data.pricingTypes.length
57
+ ? `Pricing: ${data.pricingTypes.map((p) => `${p.type} ${p.pct}%`).join(", ")}`
58
+ : null,
59
+ data.contractVehicles && data.contractVehicles.length
60
+ ? `Vehicles: ${data.contractVehicles.slice(0, 5).map((v) => `${v.vehicle} ${v.pct}%`).join(", ")}`
61
+ : null,
62
+ data.awardSizeDistribution && data.awardSizeDistribution.length
63
+ ? `Award sizes: ${data.awardSizeDistribution.map((d) => `${d.range} ${d.pct}%`).join(", ")}`
64
+ : null,
65
+ disclaimer ? `\n${disclaimer}` : null,
66
+ ].filter((s) => s !== null);
67
+ return { content: [{ type: "text", text: lines.join("\n") }], structuredContent: data };
68
+ }
69
+ //# sourceMappingURL=analyzeAwardPatterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeAwardPatterns.js","sourceRoot":"","sources":["../../src/tools/analyzeAwardPatterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export const analyzeMarketTool = {
2
+ name: "analyze_market",
3
+ description: "Full market-intelligence snapshot for a NAICS: 5-year federal spending trend, industry size (Census), " +
4
+ "top contractors with market share + HHI concentration, set-aside distribution, geographic distribution, " +
5
+ "and contract-vehicle usage. From public USAspending + Census data. Costs 5 credits.",
6
+ inputSchema: {
7
+ type: "object",
8
+ properties: {
9
+ naicsCode: { type: "string", description: "NAICS code (required)." },
10
+ pscCode: { type: "string", description: "Optional PSC code for sharper competitor filtering." },
11
+ setAside: { type: "string", description: "Optional set-aside context." },
12
+ },
13
+ required: ["naicsCode"],
14
+ additionalProperties: false,
15
+ },
16
+ outputSchema: {
17
+ type: "object",
18
+ properties: {
19
+ spendingTrend: { type: "array", items: { type: "object", additionalProperties: true } },
20
+ industryContext: { type: ["object", "null"], additionalProperties: true },
21
+ federalSharePct: { type: ["number", "null"] },
22
+ topContractors: { type: "array", items: { type: "object", additionalProperties: true } },
23
+ concentration: { type: ["object", "null"], additionalProperties: true },
24
+ setAsideDistribution: { type: "array", items: { type: "object", additionalProperties: true } },
25
+ geographicDistribution: { type: "array", items: { type: "object", additionalProperties: true } },
26
+ contractVehicles: { type: "array", items: { type: "object", additionalProperties: true } },
27
+ recentLargeAwards: { type: "array", items: { type: "object", additionalProperties: true } },
28
+ },
29
+ additionalProperties: true,
30
+ },
31
+ annotations: {
32
+ title: "Analyze market",
33
+ readOnlyHint: true,
34
+ destructiveHint: false,
35
+ idempotentHint: true,
36
+ openWorldHint: true,
37
+ },
38
+ };
39
+ export async function runAnalyzeMarket(api, args) {
40
+ const naicsCode = typeof args.naicsCode === "string" ? args.naicsCode.trim() : "";
41
+ if (!naicsCode)
42
+ throw new Error("naicsCode is required");
43
+ const body = { naicsCode };
44
+ for (const k of ["pscCode", "setAside"]) {
45
+ if (args[k] !== undefined)
46
+ body[k] = args[k];
47
+ }
48
+ const { data, disclaimer } = await api.post("/analyze-market", body);
49
+ const trend = data.spendingTrend ?? [];
50
+ const conc = data.concentration;
51
+ const lines = [
52
+ `Market snapshot for NAICS ${naicsCode}:`,
53
+ trend.length
54
+ ? `Spending: ${trend.map((t) => `FY${t.fiscalYear} $${(t.total / 1e9).toFixed(1)}B`).join(" → ")}`
55
+ : null,
56
+ data.topContractors && data.topContractors.length
57
+ ? `Top contractors:\n${data.topContractors
58
+ .slice(0, 5)
59
+ .map((c, i) => ` ${i + 1}. ${c.name}${c.marketSharePct != null ? ` (${c.marketSharePct}%)` : ""}`)
60
+ .join("\n")}`
61
+ : null,
62
+ conc ? `Concentration: HHI ${conc.hhi ?? "?"} (${conc.level ?? "n/a"}), top-5 ${conc.top5SharePct ?? "?"}%` : null,
63
+ data.setAsideDistribution && data.setAsideDistribution.length
64
+ ? `Set-asides: ${data.setAsideDistribution.slice(0, 4).map((s) => `${s.type} ${s.pct}%`).join(", ")}`
65
+ : null,
66
+ data.geographicDistribution && data.geographicDistribution.length
67
+ ? `Top states: ${data.geographicDistribution.slice(0, 5).map((g) => g.state).join(", ")}`
68
+ : null,
69
+ data.industryContext && data.industryContext.establishments
70
+ ? `Industry (Census): ${data.industryContext.establishments?.toLocaleString()} establishments, ${data.industryContext.employees?.toLocaleString()} employees`
71
+ : null,
72
+ disclaimer ? `\n${disclaimer}` : null,
73
+ ].filter((s) => s !== null);
74
+ return { content: [{ type: "text", text: lines.join("\n") }], structuredContent: data };
75
+ }
76
+ //# sourceMappingURL=analyzeMarket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeMarket.js","sourceRoot":"","sources":["../../src/tools/analyzeMarket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ export const lookupLaborRatesTool = {
2
+ name: "lookup_labor_rates",
3
+ description: "Benchmark federal labor rates for a NAICS code and/or a specific labor category. Returns GSA CALC " +
4
+ "awarded ceiling rates (min/median/max by category) plus BLS OEWS wage data with a +55% government " +
5
+ "wrap (loaded hourly) estimate. Free. Public GSA + BLS data — verify allowable rates against the RFP.",
6
+ inputSchema: {
7
+ type: "object",
8
+ properties: {
9
+ naicsCode: { type: "string", description: "NAICS code — maps to GSA labor categories + BLS SOC occupations." },
10
+ laborCategory: {
11
+ type: "string",
12
+ description: "Specific labor category for a direct GSA search, e.g. 'program manager', 'software engineer'.",
13
+ },
14
+ },
15
+ additionalProperties: false,
16
+ },
17
+ outputSchema: {
18
+ type: "object",
19
+ properties: {
20
+ gsaRates: {
21
+ type: "array",
22
+ items: {
23
+ type: "object",
24
+ properties: {
25
+ category: { type: "string" },
26
+ minRate: { type: "number" },
27
+ medianRate: { type: "number" },
28
+ maxRate: { type: "number" },
29
+ avgRate: { type: "number" },
30
+ sampleCount: { type: "number" },
31
+ },
32
+ },
33
+ },
34
+ blsWages: {
35
+ type: "array",
36
+ items: {
37
+ type: "object",
38
+ properties: {
39
+ occupation: { type: "string" },
40
+ socCode: { type: "string" },
41
+ meanHourly: { type: "number" },
42
+ loadedHourly: { type: "number" },
43
+ meanAnnual: { type: "number" },
44
+ },
45
+ },
46
+ },
47
+ summary: { type: "object", additionalProperties: true },
48
+ },
49
+ required: ["gsaRates", "blsWages"],
50
+ additionalProperties: true,
51
+ },
52
+ annotations: {
53
+ title: "Look up labor rates",
54
+ readOnlyHint: true,
55
+ destructiveHint: false,
56
+ idempotentHint: true,
57
+ openWorldHint: true,
58
+ },
59
+ };
60
+ export async function runLookupLaborRates(api, args) {
61
+ const naicsCode = typeof args.naicsCode === "string" ? args.naicsCode.trim() : "";
62
+ const laborCategory = typeof args.laborCategory === "string" ? args.laborCategory.trim() : "";
63
+ if (!naicsCode && !laborCategory) {
64
+ throw new Error("Provide naicsCode and/or laborCategory");
65
+ }
66
+ const body = {};
67
+ if (naicsCode)
68
+ body.naicsCode = naicsCode;
69
+ if (laborCategory)
70
+ body.laborCategory = laborCategory;
71
+ const { data, disclaimer } = await api.post("/lookup-labor-rates", body);
72
+ const lines = [
73
+ `GSA CALC ceiling rates (${data.gsaRates.length} categor${data.gsaRates.length === 1 ? "y" : "ies"}):`,
74
+ ...data.gsaRates.slice(0, 6).map((r) => ` • ${r.category}: $${r.minRate}–$${r.maxRate}/hr (median $${r.medianRate}, n=${r.sampleCount})`),
75
+ "",
76
+ `BLS loaded wage benchmarks (${data.blsWages.length} occupation${data.blsWages.length === 1 ? "" : "s"}):`,
77
+ ...data.blsWages.slice(0, 6).map((w) => ` • ${w.occupation} (${w.socCode}): $${w.meanHourly}/hr mean → $${w.loadedHourly}/hr loaded`),
78
+ data.summary?.blendedHourlyRange
79
+ ? `\nBlended hourly range: $${data.summary.blendedHourlyRange.low}–$${data.summary.blendedHourlyRange.high} (median $${data.summary.blendedHourlyRange.median})`
80
+ : null,
81
+ disclaimer ? `\n${disclaimer}` : null,
82
+ ].filter((s) => s !== null);
83
+ return { content: [{ type: "text", text: lines.join("\n") }], structuredContent: data };
84
+ }
85
+ //# sourceMappingURL=lookupLaborRates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookupLaborRates.js","sourceRoot":"","sources":["../../src/tools/lookupLaborRates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "govtoolspro-mcp-server",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "mcpName": "io.github.smythmyke/govtoolspro-mcp-server",
5
5
  "description": "MCP server for GovToolsPro — go/no-go scoring, incumbent intelligence, teaming-partner search, recompete prediction, Navy NECO lookup, and SAM.gov solicitation retrieval for federal contractors, from Claude Code, Claude Desktop, and Cursor.",
6
6
  "license": "MIT",