@kynver-app/mcp-estimator 0.2.8 → 0.2.11

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 (40) hide show
  1. package/dist/lib/mcp-sse-server.d.ts +15 -0
  2. package/dist/lib/mcp-sse-server.js +103 -2
  3. package/dist/server.js +16 -0
  4. package/dist/tools/catalog-tools.js +1 -1
  5. package/dist/tools/email-pdf-tools.d.ts +45 -0
  6. package/dist/tools/email-pdf-tools.js +21 -0
  7. package/dist/tools/intake-tools.d.ts +463 -0
  8. package/dist/tools/intake-tools.js +82 -0
  9. package/dist/tools/price-catalog-tools.d.ts +96 -0
  10. package/dist/tools/price-catalog-tools.js +72 -0
  11. package/dist/tools/remodel-deliverable-tools.d.ts +1868 -0
  12. package/dist/tools/remodel-deliverable-tools.js +138 -0
  13. package/dist/tools/remodel-estimate-tools.d.ts +525 -0
  14. package/dist/tools/remodel-estimate-tools.js +71 -0
  15. package/dist/tools/takeoff-tools.d.ts +274 -0
  16. package/dist/tools/takeoff-tools.js +38 -4
  17. package/dist/tools/vision-tools.js +2 -2
  18. package/package.json +6 -1
  19. package/src/index.ts +0 -18
  20. package/src/lib/kynver-client.ts +0 -136
  21. package/src/lib/mcp-sse-server.ts +0 -249
  22. package/src/lib/package-version.ts +0 -55
  23. package/src/server.ts +0 -141
  24. package/src/sse.ts +0 -10
  25. package/src/tools/catalog-tools.ts +0 -217
  26. package/src/tools/client-tools.ts +0 -114
  27. package/src/tools/company-tools.ts +0 -108
  28. package/src/tools/email-pdf-tools.ts +0 -27
  29. package/src/tools/estimate-tools.ts +0 -281
  30. package/src/tools/intake-tools.ts +0 -95
  31. package/src/tools/photo-tools.ts +0 -60
  32. package/src/tools/price-catalog-tools.ts +0 -80
  33. package/src/tools/remodel-deliverable-tools.ts +0 -163
  34. package/src/tools/remodel-estimate-tools.ts +0 -80
  35. package/src/tools/stats-pdf-tools.ts +0 -80
  36. package/src/tools/takeoff-tools.ts +0 -319
  37. package/src/tools/template-tools.ts +0 -80
  38. package/src/tools/version-tools.ts +0 -39
  39. package/src/tools/vision-tools.ts +0 -48
  40. package/tsconfig.json +0 -15
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ import * as client from "../lib/kynver-client.js";
3
+ const listPriceCatalogsSchema = z.object({});
4
+ export const listPriceCatalogs = {
5
+ name: "estimator_list_price_catalogs",
6
+ description: "List durable builtin price catalogs shipped with the estimator (region, effective date, markup policy). These are the MCP's stored price lists — not AgentOS memory. Use before seeding or resolving remodel defaults.",
7
+ inputSchemaZod: listPriceCatalogsSchema,
8
+ execute: async (_args) => {
9
+ if (!client.hasApiKey())
10
+ return client.noApiKeyMessage();
11
+ const data = await client.get("/estimator/price-catalog");
12
+ return JSON.stringify(data);
13
+ },
14
+ };
15
+ const getPriceCatalogSchema = z.object({
16
+ catalogId: z.string(),
17
+ });
18
+ export const getPriceCatalog = {
19
+ name: "estimator_get_price_catalog",
20
+ description: "Read all unit-price lines from a builtin price catalog (service codes, units, material/labor split, review/confidence metadata). Default Portland remodel catalog id: portland-remodel-will-2026-06.",
21
+ inputSchemaZod: getPriceCatalogSchema,
22
+ execute: async (args) => {
23
+ if (!client.hasApiKey())
24
+ return client.noApiKeyMessage();
25
+ const data = await client.get(`/estimator/price-catalog/${encodeURIComponent(args.catalogId)}`);
26
+ return JSON.stringify(data);
27
+ },
28
+ };
29
+ const resolvePriceSchema = z.object({
30
+ serviceCode: z.string(),
31
+ materialType: z.string().nullable().optional(),
32
+ region: z.string().optional(),
33
+ overrideMaterialCost: z.number().min(0).optional(),
34
+ overrideLaborCost: z.number().min(0).optional(),
35
+ });
36
+ export const resolvePrice = {
37
+ name: "estimator_resolve_price",
38
+ description: "Resolve unit pricing for one service code with provenance: user price book → builtin catalog → optional intake override (overrideMaterialCost/overrideLaborCost). Returns source, region, effective date, and markupIncluded flag.",
39
+ inputSchemaZod: resolvePriceSchema,
40
+ execute: async (args) => {
41
+ if (!client.hasApiKey())
42
+ return client.noApiKeyMessage();
43
+ const params = new URLSearchParams({ serviceCode: args.serviceCode });
44
+ if (args.materialType)
45
+ params.set("materialType", args.materialType);
46
+ if (args.region)
47
+ params.set("region", args.region);
48
+ if (args.overrideMaterialCost != null) {
49
+ params.set("overrideMaterialCost", String(args.overrideMaterialCost));
50
+ }
51
+ if (args.overrideLaborCost != null) {
52
+ params.set("overrideLaborCost", String(args.overrideLaborCost));
53
+ }
54
+ const data = await client.get(`/estimator/price-catalog/resolve?${params.toString()}`);
55
+ return JSON.stringify(data);
56
+ },
57
+ };
58
+ const seedPriceCatalogSchema = z.object({
59
+ catalogId: z.string(),
60
+ overwrite: z.boolean().optional(),
61
+ });
62
+ export const seedPriceCatalog = {
63
+ name: "estimator_seed_price_catalog",
64
+ description: "Copy a builtin price catalog into the user's ServiceCatalogItem price book (skips existing codes unless overwrite=true). Use portland-remodel-will-2026-06 for Will's Portland remodel working rates.",
65
+ inputSchemaZod: seedPriceCatalogSchema,
66
+ execute: async (args) => {
67
+ if (!client.hasApiKey())
68
+ return client.noApiKeyMessage();
69
+ const data = await client.post("/estimator/price-catalog/seed", args);
70
+ return JSON.stringify(data);
71
+ },
72
+ };