@trylighthouse/mcp-server 0.2.11 → 0.2.12
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/server.js +15 -11
- package/package.json +2 -2
package/build/server.js
CHANGED
|
@@ -85,7 +85,7 @@ export function createServer(apiKey, options = {}) {
|
|
|
85
85
|
const api = new LighthouseAPI(apiKey);
|
|
86
86
|
const server = new McpServer({
|
|
87
87
|
name: "lighthouse",
|
|
88
|
-
version: "0.2.
|
|
88
|
+
version: "0.2.13",
|
|
89
89
|
});
|
|
90
90
|
const originalRegister = server.registerTool.bind(server);
|
|
91
91
|
server.registerTool = (name, schemaOrConfig, handler) => {
|
|
@@ -201,10 +201,10 @@ export function createServer(apiKey, options = {}) {
|
|
|
201
201
|
"json: contains, not_contains, empty, not_empty. " +
|
|
202
202
|
"SPECIAL COMPOUND TYPES, " +
|
|
203
203
|
"signal_select (company_signals): operators contains_any/not_contains_any/contains_all, value is array of signal strings e.g. [\"new_funding_round\",\"growth_headcount\"]; " +
|
|
204
|
-
"signal_select (person_signals): operators contains_any/not_contains_any/contains_all, value is {\"signals\":[\"company_registration\",...],\"registration_countries\":[\"DE\",\"GB\",...],\"signal_dates\":{\"stealth\":\"2024-03-01\"},\"stealth_predicted_areas\":[\"
|
|
204
|
+
"signal_select (person_signals): operators contains_any/not_contains_any/contains_all, value is {\"signals\":[\"company_registration\",...],\"registration_countries\":[\"DE\",\"GB\",...],\"signal_dates\":{\"stealth\":\"2024-03-01\"},\"stealth_predicted_areas\":[\"ai_ml\",...]} " +
|
|
205
205
|
"(every key besides signals is optional: registration_countries only filters the company_registration signal by country, as UPPERCASE ISO codes, and the country is where the company was registered, and registrations exist only for the countries whose company registers we read, which lighthouse_discovery_list_locations returns as `registration_countries`, so any other country returns no people; " +
|
|
206
206
|
"signal_dates maps a signal to a 'started on/after' ISO date and applies to stealth / out_of_stealth / founded_new_company; " +
|
|
207
|
-
"stealth_predicted_areas refines the stealth signal by predicted
|
|
207
|
+
"stealth_predicted_areas refines the stealth signal by the predicted area of what the founder is building, and its values are the category groups that lighthouse_discovery_list_industries returns as `stealth_predicted_areas` (lowercase permalinks such as \"ai_ml\", never a label; take them from `stealth_predicted_areas`, not from `categories`), so any other value returns no people); " +
|
|
208
208
|
"language_select: operators contains_any/not_contains_any/contains_all, value is {\"languages\":[<ISO 639-1 two-letter codes, e.g. \"en\",\"de\",\"fr\">],\"proficiency\":[<one or more of exactly \"NATIVE_BILINGUAL\",\"EXPERT\",\"ADVANCED\",\"INTERMEDIATE\",\"BASIC\">]} " +
|
|
209
209
|
"(languages are ISO 639-1 codes; proficiency is optional, omit to match any level, and use those exact uppercase tokens, no other values are accepted). " +
|
|
210
210
|
"Value formats: text ops → string; number ops → number; between → {\"min\": <num>, \"max\": <num>}; " +
|
|
@@ -246,12 +246,12 @@ export function createServer(apiKey, options = {}) {
|
|
|
246
246
|
"Basics: person_name (short_text), person_created_at (date). " +
|
|
247
247
|
"Investments (the person AS an investor, e.g. an angel; the investments_top_* keys match the investor's TOP-RANKED preference only, e.g. their #1 country, not every investment they ever made): person_is_investor (checkbox; eq true = only investors, eq false = exclude investors), person_num_investments (number; total recorded investments), person_investments_top_category (multi_select; list_industries categories), person_investments_top_sdg (multi_select; list_industries sdg_categories), person_investments_top_country (multi_select; list_locations countries), person_investments_top_region (multi_select; list_locations regions), person_investments_top_stage (funding_type_multi_select; lighthouse_discovery_list_funding_types `value`, no_funding not applicable). " +
|
|
248
248
|
"Industry: person_current_categories, person_past_categories (multi_select; values from lighthouse_discovery_list_industries → categories), person_current_sdg_impact, person_past_sdg_impact (multi_select; list_industries → sdg_categories). " +
|
|
249
|
-
"Signals: person_signals (signal_select; value {\"signals\":[...],\"registration_countries\"?:[...],\"signal_dates\"?:{<signal>:\"YYYY-MM-DD\"},\"stealth_predicted_areas\"?:[...]}), person_registration_country (multi_select; filters company_registration signals by country, values from lighthouse_discovery_list_locations → registration_countries, the countries whose company registers we read; the country is where the company was registered, so any other country returns no people). " +
|
|
249
|
+
"Signals: person_signals (signal_select; value {\"signals\":[...],\"registration_countries\"?:[...],\"signal_dates\"?:{<signal>:\"YYYY-MM-DD\"},\"stealth_predicted_areas\"?:[...]}), person_registration_country (multi_select; filters company_registration signals by country, values from lighthouse_discovery_list_locations → registration_countries, the countries whose company registers we read; the country is where the company was registered, so any other country returns no people). To find founders in stealth building in an area, put the stealth signal in person_signals with stealth_predicted_areas, values from lighthouse_discovery_list_industries → stealth_predicted_areas, e.g. {\"signals\":[\"stealth\"],\"stealth_predicted_areas\":[\"ai_ml\"]}. " +
|
|
250
250
|
"Tags: person_tags (multi_select; values: phd_doctorate, master, bachelor, technical, 2nd_time_founder, serial_founder, has_exit, raised_funding, sales_exp, co_exp, eng_exp, ai_and_data_exp, product_exp, hr_exp). " +
|
|
251
251
|
"Language & origin: person_language (language_select), person_language_proficiency (multi_select; use with person_language to require a proficiency level), person_name_origin (multi_select; list_locations countries). " +
|
|
252
252
|
"Current location: person_country (multi_select; UPPERCASE ISO alpha-2 codes e.g. \"US\", \"GB\" from lighthouse_discovery_list_locations → countries), person_region (multi_select; list_locations → regions), person_german_state (multi_select; German federal states). " +
|
|
253
253
|
"Experience: person_past_companies (work_experience_multi_select; ids from lighthouse_discovery_search_entities record_type 'company'), person_education (education_multi_select; ids from lighthouse_discovery_search_entities record_type 'school'), person_experience_start_date, person_experience_end_date (date; matches people with at least one work experience whose start/end date passes the bound, independent of the other experience conditions), person_work_country, person_work_region, person_edu_country, person_edu_region (multi_select; list_locations). " +
|
|
254
|
-
"Stealth: person_stealth_start_date, person_stealth_end_date (date), person_stealth_predicted_area (multi_select; the predicted
|
|
254
|
+
"Stealth: person_stealth_start_date, person_stealth_end_date (date), person_stealth_predicted_area (multi_select; the predicted area a stealth founder is building in, values from lighthouse_discovery_list_industries → stealth_predicted_areas, the same list as stealth_predicted_areas of person_signals; it matches everyone the classifier gave that area, while stealth_predicted_areas inside person_signals also requires the stealth signal and takes its since date, which is how the app filters, so prefer that form). " +
|
|
255
255
|
"Primary company: person_company_hq_country, person_company_hq_region (multi_select; list_locations), person_company_headcount (number), person_company_founded_on (date), person_company_total_funding, person_company_last_funding_amount (number, USD), person_company_last_funding_date (date), person_company_last_funding_type (funding_type_multi_select; lighthouse_discovery_list_funding_types `value`, including no_funding). " +
|
|
256
256
|
"CRM: person_internal_crm_status (checkbox; eq true/false), person_crm_network (multi_user; ids from lighthouse_workspace_list_users), person_external_crm_status (checkbox; needs a connected external CRM), person_external_crm_lists (multi_select; needs a connected external CRM). " +
|
|
257
257
|
'NESTED-GROUP EXAMPLE for "(based in Germany or France) AND a technical or AI/data background": ' +
|
|
@@ -2086,7 +2086,7 @@ export function createServer(apiKey, options = {}) {
|
|
|
2086
2086
|
"This searches Lighthouse's enriched database, NOT your CRM. " +
|
|
2087
2087
|
"WORKFLOW: 1) Build filters using ONLY the person_* filter keys listed in the `filters` parameter below. " +
|
|
2088
2088
|
"Do NOT call lighthouse_discovery_list_attributes for filter keys. It returns the data fields each result carries (e.g. country, categories), which are NOT valid filter keys; if used to filter they are dropped and reported in the response's `ignored_filter_fields`. " +
|
|
2089
|
-
"2) For category filters (person_current_categories, person_past_categories), call lighthouse_discovery_list_industries to get valid values. " +
|
|
2089
|
+
"2) For category filters (person_current_categories, person_past_categories), call lighthouse_discovery_list_industries to get valid values; the same call returns stealth_predicted_areas, the values of the stealth signal's predicted area. " +
|
|
2090
2090
|
"3) For location filters (person_country, person_region, and any other *_country/*_region key), call lighthouse_discovery_list_locations to get country/region codes. " +
|
|
2091
2091
|
"4) For past-company/education filters, call lighthouse_discovery_search_entities (record_type 'company' or 'school') to resolve names to ids. " +
|
|
2092
2092
|
"The COMPLETE, authoritative list of person_* filter keys (every field with its data type and where its values come from) is at the END of the `filters` parameter description below. Read it and use those keys exactly; do not anchor on a subset, invent variants, or abbreviate. " +
|
|
@@ -2310,10 +2310,13 @@ export function createServer(apiKey, options = {}) {
|
|
|
2310
2310
|
title: "List Industry & Category Options",
|
|
2311
2311
|
description: "Get available industry and category options for discovery filters. " +
|
|
2312
2312
|
"ALWAYS call this to get valid category values before filtering by company_categories, company_sdg_impact, " +
|
|
2313
|
-
"person_current_categories, person_past_categories, person_current_sdg_impact, or person_past_sdg_impact
|
|
2314
|
-
"
|
|
2313
|
+
"person_current_categories, person_past_categories, person_current_sdg_impact, or person_past_sdg_impact, " +
|
|
2314
|
+
"and before filtering stealth founders by predicted area (stealth_predicted_areas of person_signals, person_stealth_predicted_area). " +
|
|
2315
|
+
"Returns {categories: [{name, value}], sdg_categories: [{name, value}], stealth_predicted_areas: [{name, value}]}. " +
|
|
2315
2316
|
"Categories include sectors like SaaS, B2B, FinTech, HealthTech, etc. " +
|
|
2316
|
-
"Use 'value' (permalink string) in filter conditions with contains_any/not_contains_any/contains_all operators."
|
|
2317
|
+
"Use 'value' (permalink string) in filter conditions with contains_any/not_contains_any/contains_all operators. " +
|
|
2318
|
+
"stealth_predicted_areas are the category groups: the only values that can match person_stealth_predicted_area " +
|
|
2319
|
+
"and the stealth_predicted_areas of the stealth person signal, so any other value returns no people.",
|
|
2317
2320
|
inputSchema: {},
|
|
2318
2321
|
}, async () => {
|
|
2319
2322
|
try {
|
|
@@ -2540,8 +2543,9 @@ export function createServer(apiKey, options = {}) {
|
|
|
2540
2543
|
server.registerTool("lighthouse_discovery_get_person_signals", {
|
|
2541
2544
|
title: "Get Person Signals",
|
|
2542
2545
|
description: "The detected events for one person in the global database, by person id: the signal feed lighthouse_discovery_get_person omits. " +
|
|
2543
|
-
"signals is a list of { type, created_at, new_company, domain, org_id }: a new company founded or registered, a stealth period, a departure and similar; org_id is a company id you can pass to lighthouse_discovery_get_company, domain its website. Sort by created_at yourself. " +
|
|
2544
|
-
"
|
|
2546
|
+
"signals is a list of { type, created_at, new_company, domain, org_id, predicted_areas }: a new company founded or registered, a stealth period, a departure and similar; org_id is a company id you can pass to lighthouse_discovery_get_company, domain its website. Sort by created_at yourself. " +
|
|
2547
|
+
"predicted_areas is what Lighthouse predicts the founder is building, on a stealth or out_of_stealth signal: [{ permalink, label, origin }], permalink being a value of lighthouse_discovery_list_industries → stealth_predicted_areas and origin what the prediction was read from; it is [] on every other signal and when nothing was predicted. " +
|
|
2548
|
+
"WHEN TO USE: \"is this founder starting something new\", \"did they leave their company\", \"what is this stealth founder building\", \"any recent moves by X\". For the person's work history use lighthouse_discovery_get_person. " +
|
|
2545
2549
|
"A null or empty list means no events are recorded. Same id as lighthouse_discovery_get_person.",
|
|
2546
2550
|
inputSchema: {
|
|
2547
2551
|
id: z.string().describe("The person id (UUID) returned by lighthouse_discovery_search_entities"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trylighthouse/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.12",
|
|
4
4
|
"description": "MCP server for the Lighthouse CRM API",
|
|
5
5
|
"homepage": "https://trylighthouse.vc",
|
|
6
6
|
"type": "module",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"prepublishOnly": "npm run build"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
27
|
+
"@modelcontextprotocol/sdk": "^1.31.0",
|
|
28
28
|
"zod": "^3.24.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|