@trylighthouse/mcp-server 0.1.1 → 0.1.2
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/build/index.js +45 -30
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -126,7 +126,7 @@ server.registerTool("lighthouse_crm_get_attribute", {
|
|
|
126
126
|
description: "Get a single custom field definition by its field_permalink.",
|
|
127
127
|
inputSchema: {
|
|
128
128
|
field_permalink: z.string().describe("Field permalink (unique key) of the attribute"),
|
|
129
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type (required)"),
|
|
129
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type (required)"),
|
|
130
130
|
},
|
|
131
131
|
}, async (params) => {
|
|
132
132
|
try {
|
|
@@ -143,9 +143,9 @@ server.registerTool("lighthouse_crm_create_attribute", {
|
|
|
143
143
|
"Types: text, number, currency, percentage, date, datetimez, select, multi_select, status, checkbox, url, email, phone, rating, record, multi_record, user, multi_user.",
|
|
144
144
|
inputSchema: {
|
|
145
145
|
label: z.string().describe("Display label for the field"),
|
|
146
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type this field belongs to"),
|
|
146
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type this field belongs to"),
|
|
147
147
|
data_type: z.string().describe("Field type (text, number, currency, percentage, date, datetimez, select, multi_select, status, checkbox, url, email, phone, rating, record, multi_record, user, multi_user)"),
|
|
148
|
-
record_type: z.enum(["company", "person", "deal"]).optional().describe("For record/multi_record fields: which record type to link to"),
|
|
148
|
+
record_type: z.enum(["company", "person", "deal", "task"]).optional().describe("For record/multi_record fields: which record type to link to"),
|
|
149
149
|
options: z
|
|
150
150
|
.array(z.record(z.unknown()))
|
|
151
151
|
.optional()
|
|
@@ -165,7 +165,7 @@ server.registerTool("lighthouse_crm_update_attribute", {
|
|
|
165
165
|
description: "Update a custom field's label or configuration.",
|
|
166
166
|
inputSchema: {
|
|
167
167
|
field_permalink: z.string().describe("Field permalink of the attribute to update"),
|
|
168
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type (required)"),
|
|
168
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type (required)"),
|
|
169
169
|
label: z.string().optional().describe("New display label"),
|
|
170
170
|
},
|
|
171
171
|
}, async (params) => {
|
|
@@ -183,7 +183,7 @@ server.registerTool("lighthouse_crm_delete_attribute", {
|
|
|
183
183
|
description: "Delete (archive) a custom field. Only custom fields can be deleted, not system fields.",
|
|
184
184
|
inputSchema: {
|
|
185
185
|
field_permalink: z.string().describe("Field permalink of the attribute to delete"),
|
|
186
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type (required)"),
|
|
186
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type (required)"),
|
|
187
187
|
},
|
|
188
188
|
}, async (params) => {
|
|
189
189
|
try {
|
|
@@ -215,7 +215,7 @@ server.registerTool("lighthouse_crm_list_options", {
|
|
|
215
215
|
description: "Get select/multi_select field options. " +
|
|
216
216
|
"Use this to discover available values for select fields before setting them on records.",
|
|
217
217
|
inputSchema: {
|
|
218
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
218
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
219
219
|
field_permalink: z.string().describe("Field permalink of the select/multi_select field"),
|
|
220
220
|
},
|
|
221
221
|
}, async (params) => {
|
|
@@ -231,7 +231,7 @@ server.registerTool("lighthouse_crm_create_option", {
|
|
|
231
231
|
title: "Create CRM Field Option",
|
|
232
232
|
description: "Add a new option to a select/multi_select field. The option value is auto-generated from the label. Returns the updated list of options for the field.",
|
|
233
233
|
inputSchema: {
|
|
234
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
234
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
235
235
|
field_permalink: z.string().describe("Field permalink of the select/multi_select field"),
|
|
236
236
|
label: z.string().describe("Option display label"),
|
|
237
237
|
color: z.string().optional().describe("Option color (hex code from palette, auto-assigned if omitted)"),
|
|
@@ -250,7 +250,7 @@ server.registerTool("lighthouse_crm_delete_option", {
|
|
|
250
250
|
title: "Delete CRM Field Option",
|
|
251
251
|
description: "Delete an option value from a select/multi_select field. Cannot delete system default options.",
|
|
252
252
|
inputSchema: {
|
|
253
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
253
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
254
254
|
field_permalink: z.string().describe("Field permalink of the select/multi_select field"),
|
|
255
255
|
value: z.string().describe("Option value to delete"),
|
|
256
256
|
},
|
|
@@ -272,7 +272,7 @@ server.registerTool("lighthouse_crm_search_records", {
|
|
|
272
272
|
"for the entity_type, then use those keys in your filter conditions. " +
|
|
273
273
|
"NOT for discovering new companies/people — use lighthouse_discovery_* tools for that.",
|
|
274
274
|
inputSchema: {
|
|
275
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
275
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
276
276
|
filters: z
|
|
277
277
|
.record(z.unknown())
|
|
278
278
|
.optional()
|
|
@@ -308,7 +308,7 @@ server.registerTool("lighthouse_crm_get_record", {
|
|
|
308
308
|
title: "Get CRM Record",
|
|
309
309
|
description: "Get a single CRM record by ID with all fields and relationships.",
|
|
310
310
|
inputSchema: {
|
|
311
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
311
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
312
312
|
id: z.string().uuid().describe("Record ID"),
|
|
313
313
|
},
|
|
314
314
|
}, async (params) => {
|
|
@@ -325,7 +325,7 @@ server.registerTool("lighthouse_crm_create_record", {
|
|
|
325
325
|
description: "Create a new CRM record. Required fields: " +
|
|
326
326
|
"company (name, domain), person (first_name, last_name), deal (name).",
|
|
327
327
|
inputSchema: {
|
|
328
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
328
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
329
329
|
data: z.record(z.unknown()).describe("Record fields (name, domain, first_name, last_name, etc.)"),
|
|
330
330
|
attributes: z
|
|
331
331
|
.record(z.unknown())
|
|
@@ -348,7 +348,7 @@ server.registerTool("lighthouse_crm_update_record", {
|
|
|
348
348
|
title: "Update CRM Record",
|
|
349
349
|
description: "Update an existing CRM record's fields.",
|
|
350
350
|
inputSchema: {
|
|
351
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
351
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
352
352
|
id: z.string().uuid().describe("Record ID"),
|
|
353
353
|
data: z.record(z.unknown()).describe("Fields to update"),
|
|
354
354
|
attributes: z.record(z.unknown()).optional().describe("Custom field values to update (keyed by field_permalink)"),
|
|
@@ -369,7 +369,7 @@ server.registerTool("lighthouse_crm_delete_record", {
|
|
|
369
369
|
title: "Delete CRM Record",
|
|
370
370
|
description: "Permanently delete a CRM record.",
|
|
371
371
|
inputSchema: {
|
|
372
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
372
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
373
373
|
id: z.string().uuid().describe("Record ID"),
|
|
374
374
|
},
|
|
375
375
|
}, async (params) => {
|
|
@@ -387,7 +387,9 @@ server.registerTool("lighthouse_crm_create_list", {
|
|
|
387
387
|
description: "Create a new CRM list to organize records.",
|
|
388
388
|
inputSchema: {
|
|
389
389
|
name: z.string().describe("List name"),
|
|
390
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type for this list"),
|
|
390
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type for this list"),
|
|
391
|
+
sharing: z.enum(["private", "workspace"]).default("private").optional().describe("Visibility: 'private' or 'workspace'"),
|
|
392
|
+
color: z.string().optional().describe("Hex color code for the list"),
|
|
391
393
|
},
|
|
392
394
|
}, async (params) => {
|
|
393
395
|
try {
|
|
@@ -432,6 +434,8 @@ server.registerTool("lighthouse_crm_update_list", {
|
|
|
432
434
|
inputSchema: {
|
|
433
435
|
id: z.string().uuid().describe("List ID"),
|
|
434
436
|
name: z.string().optional().describe("New list name"),
|
|
437
|
+
sharing: z.enum(["private", "workspace"]).optional().describe("New visibility setting"),
|
|
438
|
+
color: z.string().optional().describe("New hex color code"),
|
|
435
439
|
},
|
|
436
440
|
}, async (params) => {
|
|
437
441
|
try {
|
|
@@ -486,7 +490,7 @@ server.registerTool("lighthouse_crm_add_to_list", {
|
|
|
486
490
|
inputSchema: {
|
|
487
491
|
list_id: z.string().uuid().describe("List ID"),
|
|
488
492
|
record_id: z.string().uuid().describe("Record ID to add"),
|
|
489
|
-
type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
493
|
+
type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
490
494
|
},
|
|
491
495
|
}, async (params) => {
|
|
492
496
|
try {
|
|
@@ -521,8 +525,8 @@ server.registerTool("lighthouse_crm_list_notes", {
|
|
|
521
525
|
title: "List Notes",
|
|
522
526
|
description: "Get notes for a CRM record.",
|
|
523
527
|
inputSchema: {
|
|
524
|
-
record_id: z.string().uuid().optional().describe("Record ID to filter notes by (
|
|
525
|
-
record_type: z.enum(["company", "person", "deal"]).optional().describe("Record type
|
|
528
|
+
record_id: z.string().uuid().optional().describe("Record ID to filter notes by (required)"),
|
|
529
|
+
record_type: z.enum(["company", "person", "deal", "task"]).optional().describe("Record type: company, person, or deal (required)"),
|
|
526
530
|
limit: z.number().min(1).max(100).default(25),
|
|
527
531
|
offset: z.number().min(0).default(0),
|
|
528
532
|
},
|
|
@@ -547,7 +551,7 @@ server.registerTool("lighthouse_crm_create_note", {
|
|
|
547
551
|
"Tagged users receive an in-app notification.",
|
|
548
552
|
inputSchema: {
|
|
549
553
|
record_id: z.string().uuid().describe("Record ID to attach the note to"),
|
|
550
|
-
record_type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
554
|
+
record_type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
551
555
|
title: z.string().describe("Note title"),
|
|
552
556
|
content: z.string().describe("Note content (plain text or HTML). Use <p> tags for paragraphs. For @mentions, include mention spans (see description)."),
|
|
553
557
|
tagged_users: z
|
|
@@ -746,7 +750,7 @@ server.registerTool("lighthouse_crm_list_views", {
|
|
|
746
750
|
title: "List CRM Views",
|
|
747
751
|
description: "Get all saved CRM views. Views store filter/sort configurations that can be loaded in search_records.",
|
|
748
752
|
inputSchema: {
|
|
749
|
-
entity_type: z.enum(["company", "person", "deal"]).optional().describe("Filter by record type"),
|
|
753
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).optional().describe("Filter by record type"),
|
|
750
754
|
},
|
|
751
755
|
}, async (params) => {
|
|
752
756
|
try {
|
|
@@ -767,7 +771,7 @@ server.registerTool("lighthouse_crm_create_view", {
|
|
|
767
771
|
"The saved filters will auto-apply when search_records is called with this view_id.",
|
|
768
772
|
inputSchema: {
|
|
769
773
|
name: z.string().describe("View name"),
|
|
770
|
-
entity_type: z.enum(["company", "person", "deal"]).describe("Record type"),
|
|
774
|
+
entity_type: z.enum(["company", "person", "deal", "task"]).describe("Record type"),
|
|
771
775
|
filters: z
|
|
772
776
|
.record(z.unknown())
|
|
773
777
|
.optional()
|
|
@@ -1012,7 +1016,9 @@ const WIDGET_CONFIG_DESCRIPTION = "Widget config object. Structure depends on re
|
|
|
1012
1016
|
server.registerTool("lighthouse_reports_list_dashboards", {
|
|
1013
1017
|
title: "List Dashboards",
|
|
1014
1018
|
description: "List all report dashboards accessible to the current user. " +
|
|
1015
|
-
"Returns dashboards you own, workspace-shared dashboards, and team-shared dashboards."
|
|
1019
|
+
"Returns dashboards you own, workspace-shared dashboards, and team-shared dashboards. " +
|
|
1020
|
+
"Each dashboard includes: id, name, description, sharing (private/workspace), is_owner, " +
|
|
1021
|
+
"owner {id, first_name, last_name, full_name}, widget_count, shared_with_teams, created_at, updated_at.",
|
|
1016
1022
|
inputSchema: {},
|
|
1017
1023
|
}, async () => {
|
|
1018
1024
|
try {
|
|
@@ -1026,7 +1032,7 @@ server.registerTool("lighthouse_reports_list_dashboards", {
|
|
|
1026
1032
|
server.registerTool("lighthouse_reports_create_dashboard", {
|
|
1027
1033
|
title: "Create Dashboard",
|
|
1028
1034
|
description: "Create a new report dashboard. Dashboards contain report widgets (charts, tables, KPIs). " +
|
|
1029
|
-
"Requires reports.create permission.",
|
|
1035
|
+
"Requires reports.create permission. Returns the full dashboard object (same format as get dashboard).",
|
|
1030
1036
|
inputSchema: {
|
|
1031
1037
|
name: z.string().describe("Dashboard name"),
|
|
1032
1038
|
description: z.string().optional().describe("Dashboard description"),
|
|
@@ -1050,7 +1056,9 @@ server.registerTool("lighthouse_reports_create_dashboard", {
|
|
|
1050
1056
|
});
|
|
1051
1057
|
server.registerTool("lighthouse_reports_get_dashboard", {
|
|
1052
1058
|
title: "Get Dashboard",
|
|
1053
|
-
description: "Get a single dashboard by ID with all its widgets."
|
|
1059
|
+
description: "Get a single dashboard by ID with all its widgets. " +
|
|
1060
|
+
"Returns: id, name, description, sharing, is_owner, owner {id, first_name, last_name, full_name}, " +
|
|
1061
|
+
"widget_count, shared_with_teams, widgets [{id, name, widget_type, config, created_at, updated_at}], created_at, updated_at.",
|
|
1054
1062
|
inputSchema: {
|
|
1055
1063
|
id: z.string().uuid().describe("Dashboard ID"),
|
|
1056
1064
|
},
|
|
@@ -1065,7 +1073,8 @@ server.registerTool("lighthouse_reports_get_dashboard", {
|
|
|
1065
1073
|
});
|
|
1066
1074
|
server.registerTool("lighthouse_reports_update_dashboard", {
|
|
1067
1075
|
title: "Update Dashboard",
|
|
1068
|
-
description: "Update a dashboard's name, description, or sharing. Only the dashboard owner can update."
|
|
1076
|
+
description: "Update a dashboard's name, description, or sharing. Only the dashboard owner can update. " +
|
|
1077
|
+
"Returns the full dashboard object (same format as get dashboard).",
|
|
1069
1078
|
inputSchema: {
|
|
1070
1079
|
id: z.string().uuid().describe("Dashboard ID"),
|
|
1071
1080
|
name: z.string().optional().describe("New dashboard name"),
|
|
@@ -1116,7 +1125,8 @@ server.registerTool("lighthouse_reports_refresh_dashboard", {
|
|
|
1116
1125
|
// ─── Reports: Widgets ────────────────────────────────────
|
|
1117
1126
|
server.registerTool("lighthouse_reports_list_widgets", {
|
|
1118
1127
|
title: "List Dashboard Widgets",
|
|
1119
|
-
description: "Get all widgets for a dashboard."
|
|
1128
|
+
description: "Get all widgets for a dashboard. " +
|
|
1129
|
+
"Each widget includes: id, name, widget_type, config, created_at, updated_at.",
|
|
1120
1130
|
inputSchema: {
|
|
1121
1131
|
id: z.string().uuid().describe("Dashboard ID"),
|
|
1122
1132
|
},
|
|
@@ -1135,7 +1145,8 @@ server.registerTool("lighthouse_reports_create_widget", {
|
|
|
1135
1145
|
"WORKFLOW: 1) Call lighthouse_crm_get_attributes to discover field keys for the entity type, " +
|
|
1136
1146
|
"2) Build a config object using those keys, 3) Create the widget. " +
|
|
1137
1147
|
"Widget types: bar, line, pie, table, kpi, funnel, area. " +
|
|
1138
|
-
"Report types: standard (aggregate by field), funnel (pipeline conversion), stage_changes (historical transitions)."
|
|
1148
|
+
"Report types: standard (aggregate by field), funnel (pipeline conversion), stage_changes (historical transitions). " +
|
|
1149
|
+
"Returns: {id, name, widget_type, config, created_at, updated_at}.",
|
|
1139
1150
|
inputSchema: {
|
|
1140
1151
|
dashboard_id: z.string().uuid().describe("Dashboard ID to add widget to"),
|
|
1141
1152
|
name: z.string().describe("Widget/report name"),
|
|
@@ -1161,7 +1172,8 @@ server.registerTool("lighthouse_reports_create_widget", {
|
|
|
1161
1172
|
server.registerTool("lighthouse_reports_update_widget", {
|
|
1162
1173
|
title: "Update Report Widget",
|
|
1163
1174
|
description: "Update a report widget's name, type, config, or position. " +
|
|
1164
|
-
"Only provide fields you want to change — others are preserved."
|
|
1175
|
+
"Only provide fields you want to change — others are preserved. " +
|
|
1176
|
+
"Returns: {id, name, widget_type, config, created_at, updated_at}.",
|
|
1165
1177
|
inputSchema: {
|
|
1166
1178
|
dashboard_id: z.string().uuid().describe("Dashboard ID"),
|
|
1167
1179
|
widget_id: z.string().uuid().describe("Widget ID"),
|
|
@@ -1262,7 +1274,8 @@ server.registerTool("lighthouse_crm_share_view_with_teams", {
|
|
|
1262
1274
|
title: "Share View with Teams",
|
|
1263
1275
|
description: "Grant team-level access to a CRM view. Only the view owner can share. " +
|
|
1264
1276
|
"Use lighthouse_workspace_list_teams to find team IDs first. " +
|
|
1265
|
-
"Requires views.share permission."
|
|
1277
|
+
"Requires views.share permission. " +
|
|
1278
|
+
"Returns formatted view: {id, name, entity_type, view_type, filters, sort, grouped_by, sharing, owner, shared_with_teams, created_at}.",
|
|
1266
1279
|
inputSchema: {
|
|
1267
1280
|
id: z.string().uuid().describe("View ID"),
|
|
1268
1281
|
team_ids: z.array(z.string().uuid()).describe("Array of team UUIDs to grant access to"),
|
|
@@ -1280,7 +1293,8 @@ server.registerTool("lighthouse_crm_share_view_with_teams", {
|
|
|
1280
1293
|
server.registerTool("lighthouse_crm_revoke_view_from_teams", {
|
|
1281
1294
|
title: "Revoke View Team Access",
|
|
1282
1295
|
description: "Revoke team-level access from a CRM view. Only the view owner can revoke. " +
|
|
1283
|
-
"Requires views.share permission."
|
|
1296
|
+
"Requires views.share permission. " +
|
|
1297
|
+
"Returns formatted view: {id, name, entity_type, view_type, filters, sort, grouped_by, sharing, owner, shared_with_teams, created_at}.",
|
|
1284
1298
|
inputSchema: {
|
|
1285
1299
|
id: z.string().uuid().describe("View ID"),
|
|
1286
1300
|
team_ids: z.array(z.string().uuid()).describe("Array of team UUIDs to revoke access from"),
|
|
@@ -1298,7 +1312,8 @@ server.registerTool("lighthouse_crm_revoke_view_from_teams", {
|
|
|
1298
1312
|
server.registerTool("lighthouse_crm_update_view_sharing", {
|
|
1299
1313
|
title: "Update View Sharing Status",
|
|
1300
1314
|
description: "Change a CRM view's sharing visibility. Setting to 'private' also removes all team permissions. " +
|
|
1301
|
-
"Only the view owner can change sharing. Requires views.share permission."
|
|
1315
|
+
"Only the view owner can change sharing. Requires views.share permission. " +
|
|
1316
|
+
"Returns formatted view: {id, name, entity_type, view_type, filters, sort, grouped_by, sharing, owner, shared_with_teams, created_at}.",
|
|
1302
1317
|
inputSchema: {
|
|
1303
1318
|
id: z.string().uuid().describe("View ID"),
|
|
1304
1319
|
sharing: z.enum(["private", "workspace"]).describe("New sharing visibility"),
|