@sfranalytics/mcp 0.6.5 → 0.6.7
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/dist/landing.js +2 -2
- package/dist/server.js +3 -3
- package/dist/server.js.map +1 -1
- package/dist/tools/plr/borrowerContacts.js +16 -4
- package/dist/tools/plr/borrowerContacts.js.map +1 -1
- package/dist/tools/plr/borrowerLoans.js +18 -5
- package/dist/tools/plr/borrowerLoans.js.map +1 -1
- package/dist/tools/plr/entityDetect.d.ts +19 -0
- package/dist/tools/plr/entityDetect.js +55 -0
- package/dist/tools/plr/entityDetect.js.map +1 -0
- package/dist/tools/sfr/distressSearch.js +3 -2
- package/dist/tools/sfr/distressSearch.js.map +1 -1
- package/dist/tools/sfr/propertyTypeMap.d.ts +8 -0
- package/dist/tools/sfr/propertyTypeMap.js +31 -0
- package/dist/tools/sfr/propertyTypeMap.js.map +1 -0
- package/dist/tools/sfr/rentalMarketAnalysis.js +3 -2
- package/dist/tools/sfr/rentalMarketAnalysis.js.map +1 -1
- package/dist/tools/sfr/searchProperties.js +33 -4
- package/dist/tools/sfr/searchProperties.js.map +1 -1
- package/package.json +1 -1
package/dist/landing.js
CHANGED
|
@@ -480,8 +480,8 @@ export function renderLandingPage(opts) {
|
|
|
480
480
|
<div class="step">
|
|
481
481
|
<div class="step-indicator"><div class="step-dot"></div><div class="step-line"></div></div>
|
|
482
482
|
<div class="step-content">
|
|
483
|
-
<div class="step-title">
|
|
484
|
-
<div class="step-desc">
|
|
483
|
+
<div class="step-title">Get your API key</div>
|
|
484
|
+
<div class="step-desc">Chat with us or email <a href="mailto:support@sfranalytics.com">support@sfranalytics.com</a> to get your API key.</div>
|
|
485
485
|
</div>
|
|
486
486
|
</div>
|
|
487
487
|
<!-- Step 2 -->
|
package/dist/server.js
CHANGED
|
@@ -105,13 +105,13 @@ function buildInstructions(hasSfr, hasPlr, hasSnowflake) {
|
|
|
105
105
|
}
|
|
106
106
|
sections.push("", "IMPORTANT NOTES:");
|
|
107
107
|
if (hasPlr) {
|
|
108
|
-
sections.push(" plr_market_trends and plr_portfolio_summary are NATIONWIDE only — no geographic filters", " plr_top_borrowers has NO MSA/city filter — use plr_borrower_search for metro-level queries", " plr_owner_search requires state filter for best results — person names are matched within states");
|
|
108
|
+
sections.push(" plr_market_trends and plr_portfolio_summary are NATIONWIDE only — no geographic filters", " plr_top_borrowers has NO MSA/city filter — use plr_borrower_search for metro-level queries", " plr_owner_search requires state filter for best results — person names are matched within states", " plr_borrower_contacts and plr_borrower_loans expect entity names (e.g. 'ACME HOLDINGS LLC'), NOT person names. If you have a person name like 'John Smith', use plr_owner_search first to find their LLCs.");
|
|
109
109
|
}
|
|
110
110
|
if (hasSfr) {
|
|
111
|
-
sections.push(" sfr_buyer_profile only works for major institutional investors — use sfr_top_buyers to find names", " Buyer endpoints with search_type param require matching location param (e.g., search_type='state' needs state=)", " sfr_top_buyers search_type='city' requires both city= and state= params", " sfr_rental_market_analysis works best at city level — MSA/state often returns zeros", " sfr_investor_activity is the best tool for cash buyer identification (isCashBuyer field) — sfr_search_properties purchase_type is NOT a cash filter", " sfr_flip_activity supports buyer_name filter (partial match, case-insensitive) — use for iBuyer margin analysis (e.g. buyer_name='OPENDOOR')", " sfr_search_properties with seller_name is the best tool for 'where is [institution] selling?' — broader date range than sfr_investor_activity");
|
|
111
|
+
sections.push(" sfr_buyer_profile only works for major institutional investors — use sfr_top_buyers to find names", " Buyer endpoints with search_type param require matching location param (e.g., search_type='state' needs state=)", " sfr_top_buyers search_type='city' requires both city= and state= params", " sfr_rental_market_analysis works best at city level — MSA/state often returns zeros", " sfr_investor_activity is the best tool for cash buyer identification (isCashBuyer field) — sfr_search_properties purchase_type is NOT a cash filter", " sfr_flip_activity supports buyer_name filter (partial match, case-insensitive) — use for iBuyer margin analysis (e.g. buyer_name='OPENDOOR')", " sfr_search_properties with seller_name is the best tool for 'where is [institution] selling?' — broader date range than sfr_investor_activity", " sfr_search_properties property_types accepts aliases: 'SFR' -> 'Single Family Residential', 'Condo/Co-op' -> 'Condo', 'land' -> 'Vacant Land'. Also works on sfr_distress_search and sfr_rental_market_analysis.");
|
|
112
112
|
}
|
|
113
113
|
if (hasSfr && hasPlr) {
|
|
114
|
-
sections.push(" sfr_distress_search requires a location filter — when using owner_name from PLR, include state from plr_borrower_loans", " PLR lender tools: use short 'lender' field names for plr_lender_borrowers/plr_churned_borrowers, not display 'clean_name'", " PLR and SFR APIs use DIFFERENT MSA names for the same metro (e.g. PLR: 'Austin-Round Rock-San Marcos, TX' vs SFR: 'Austin-Round Rock-Georgetown, TX'). Use plr_msa_rankings to discover correct PLR MSA names. SFR tools auto-resolve MSA names for sfr_investor_activity, sfr_market_highlights, sfr_top_buyers, sfr_flip_stats, sfr_flip_activity, and sfr_institutional_owners.");
|
|
114
|
+
sections.push(" sfr_distress_search requires a location filter — when using owner_name from PLR, include state from plr_borrower_loans", " PLR lender tools: use short 'lender' field names for plr_lender_borrowers/plr_churned_borrowers, not display 'clean_name'", " PLR and SFR APIs use DIFFERENT MSA names for the same metro (e.g. PLR: 'Austin-Round Rock-San Marcos, TX' vs SFR: 'Austin-Round Rock-Georgetown, TX'). Use plr_msa_rankings to discover correct PLR MSA names. SFR tools auto-resolve MSA names for sfr_search_properties, sfr_investor_activity, sfr_market_highlights, sfr_top_buyers, sfr_flip_stats, sfr_flip_activity, and sfr_institutional_owners.");
|
|
115
115
|
}
|
|
116
116
|
sections.push(" Use sfra_health to verify API connectivity", " Use sfra_support for help, troubleshooting, and support contact info");
|
|
117
117
|
return sections.join("\n");
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAExF,iDAAiD;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,YAAY;AACZ,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAEvF,YAAY;AACZ,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,kBAAkB;AAClB,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,wBAAwB,IAAI,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC3G,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,SAAS,iBAAiB,CAAC,MAAe,EAAE,MAAe,EAAE,YAAqB;IAChF,MAAM,QAAQ,GAAa;QACzB,8FAA8F;QAC9F,EAAE;QACF,kBAAkB;QAClB,qGAAqG;QACrG,kHAAkH;QAClH,EAAE;KACH,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,2IAA2I,CAAC,CAAC;IAC7J,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,iCAAiC,EAAE,EAAE,CAAC,CAAC;IAEzD,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CACX,mGAAmG,EACnG,6GAA6G,EAC7G,gFAAgF,EAChF,EAAE,EACF,kHAAkH,EAClH,sGAAsG,EACtG,EAAE,EACF,2GAA2G,EAC3G,kDAAkD,EAClD,EAAE,EACF,oGAAoG,EACpG,2FAA2F,EAC3F,gFAAgF,EAChF,EAAE,EACF,gFAAgF,EAChF,8EAA8E,EAC9E,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CACX,kFAAkF,EAClF,uFAAuF,EACvF,gHAAgH,EAChH,EAAE,EACF,8GAA8G,EAC9G,0FAA0F,EAC1F,EAAE,EACF,oGAAoG,EACpG,qFAAqF,EACrF,yDAAyD,EACzD,EAAE,EACF,oGAAoG,EACpG,EAAE,EACF,qEAAqE,EACrE,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CACX,4FAA4F,EAC5F,0GAA0G,EAC1G,sEAAsE,EACtE,EAAE,EACF,kGAAkG,EAClG,6EAA6E,EAC7E,2DAA2D,EAC3D,EAAE,EACF,yFAAyF,EACzF,8DAA8D,EAC9D,wFAAwF,EACxF,EAAE,CACH,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEnC,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CACX,6FAA6F,EAC7F,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,kFAAkF,EACvG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,yFAAyF,CAC/G,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,0FAA0F,CAChH,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CACX,iGAAiG,EACjG,wKAAwK,EACxK,sHAAsH,EACtH,wKAAwK,EACxK,qLAAqL,EACrL,6KAA6K,EAC7K,uLAAuL,CACxL,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CACX,2FAA2F,EAC3F,8FAA8F,EAC9F,oGAAoG,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { structuredResult, markdownTable
|
|
2
|
+
import { structuredResult, markdownTable } from "../formatters.js";
|
|
3
3
|
import { registerToolSafe } from "../registerToolSafe.js";
|
|
4
4
|
import { action } from "../nextActions.js";
|
|
5
|
+
import { classifyNames } from "./entityDetect.js";
|
|
5
6
|
const Input = z.object({
|
|
6
7
|
borrowerNames: z.string().describe("Comma-separated borrower entity names — use EXACT names from search results (typically UPPERCASE, e.g. 'VAPA INVESTMENTS LLC')"),
|
|
7
8
|
state: z.string().optional().describe("Optional state filter"),
|
|
@@ -24,6 +25,15 @@ export function registerBorrowerContactsTool(server, plr) {
|
|
|
24
25
|
.map((s) => s.trim())
|
|
25
26
|
.filter(Boolean);
|
|
26
27
|
const uniqueNames = [...new Set(names)];
|
|
28
|
+
// Detect person names vs entity names
|
|
29
|
+
const { personNames, entityNames } = classifyNames(uniqueNames);
|
|
30
|
+
// All person names → early return with redirect
|
|
31
|
+
if (personNames.length > 0 && entityNames.length === 0) {
|
|
32
|
+
const nameList = personNames.map((n) => `"${n}"`).join(", ");
|
|
33
|
+
return structuredResult(`## Borrower Contacts — Person Name Detected\n\n` +
|
|
34
|
+
`The name(s) ${nameList} look like person names rather than business entities.\n\n` +
|
|
35
|
+
`This tool searches by entity/LLC name. Use **plr_owner_search** to find their associated LLCs, then search by entity name.`, { requestedNames: uniqueNames, personNames, entityNames: [] }, personNames.map((n) => action("plr_owner_search", `Find LLCs for ${n}`, { search: n })));
|
|
36
|
+
}
|
|
27
37
|
const query = {
|
|
28
38
|
borrower_names: JSON.stringify(uniqueNames),
|
|
29
39
|
page: args.page,
|
|
@@ -58,6 +68,10 @@ export function registerBorrowerContactsTool(server, plr) {
|
|
|
58
68
|
if (rawItems.length > items.length) {
|
|
59
69
|
lines.push(`_Deduplicated ${rawItems.length - items.length} duplicate row(s)._`, "");
|
|
60
70
|
}
|
|
71
|
+
if (personNames.length > 0) {
|
|
72
|
+
const nameList = personNames.map((n) => `"${n}"`).join(", ");
|
|
73
|
+
lines.push(`**Note:** ${nameList} look like person names. If no results, try **plr_owner_search** to find their associated LLCs.`, "");
|
|
74
|
+
}
|
|
61
75
|
if (missingBorrowers.length > 0) {
|
|
62
76
|
lines.push(`**Missing requested entities:** ${missingBorrowers.join(", ")}`, "");
|
|
63
77
|
}
|
|
@@ -86,9 +100,7 @@ export function registerBorrowerContactsTool(server, plr) {
|
|
|
86
100
|
}
|
|
87
101
|
}
|
|
88
102
|
else {
|
|
89
|
-
lines.push("
|
|
90
|
-
lines.push(truncatedJson(data, 3000));
|
|
91
|
-
lines.push("```");
|
|
103
|
+
lines.push("_No contact information found._ Check spelling and use EXACT names from plr_borrower_search results (typically UPPERCASE with entity suffix like LLC).");
|
|
92
104
|
}
|
|
93
105
|
const firstName = uniqueNames[0];
|
|
94
106
|
const actions = firstName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"borrowerContacts.js","sourceRoot":"","sources":["../../../src/tools/plr/borrowerContacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"borrowerContacts.js","sourceRoot":"","sources":["../../../src/tools/plr/borrowerContacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { structuredResult, markdownTable
|
|
2
|
+
import { structuredResult, markdownTable } from "../formatters.js";
|
|
3
3
|
import { registerToolSafe } from "../registerToolSafe.js";
|
|
4
4
|
import { action } from "../nextActions.js";
|
|
5
|
+
import { classifyNames } from "./entityDetect.js";
|
|
5
6
|
const Input = z.object({
|
|
6
7
|
borrowerNames: z.string().describe("Comma-separated borrower entity names — use EXACT names from search results (typically UPPERCASE, e.g. 'VAPA INVESTMENTS LLC')"),
|
|
7
8
|
states: z.string().optional().describe("Comma-separated state filter"),
|
|
@@ -21,8 +22,18 @@ export function registerBorrowerLoansTool(server, plr) {
|
|
|
21
22
|
"For contact info (phone/email), chain to plr_borrower_contacts.",
|
|
22
23
|
inputSchema: Input,
|
|
23
24
|
}, async (args) => {
|
|
25
|
+
const names = args.borrowerNames.split(",").map((s) => s.trim()).filter(Boolean);
|
|
26
|
+
// Detect person names vs entity names
|
|
27
|
+
const { personNames, entityNames } = classifyNames(names);
|
|
28
|
+
// All person names → early return with redirect
|
|
29
|
+
if (personNames.length > 0 && entityNames.length === 0) {
|
|
30
|
+
const nameList = personNames.map((n) => `"${n}"`).join(", ");
|
|
31
|
+
return structuredResult(`## Borrower Loans — Person Name Detected\n\n` +
|
|
32
|
+
`The name(s) ${nameList} look like person names rather than business entities.\n\n` +
|
|
33
|
+
`This tool searches by entity/LLC name. Use **plr_owner_search** to find their associated LLCs, then search by entity name.`, { requestedNames: names, personNames, entityNames: [] }, personNames.map((n) => action("plr_owner_search", `Find LLCs for ${n}`, { search: n })));
|
|
34
|
+
}
|
|
24
35
|
const body = {
|
|
25
|
-
borrower_names:
|
|
36
|
+
borrower_names: names,
|
|
26
37
|
page: args.page,
|
|
27
38
|
page_size: Math.min(args.pageSize, 25),
|
|
28
39
|
};
|
|
@@ -62,6 +73,10 @@ export function registerBorrowerLoansTool(server, plr) {
|
|
|
62
73
|
`**Total:** ${total} | **Page:** ${args.page} | **Showing:** ${items.length}`,
|
|
63
74
|
"",
|
|
64
75
|
];
|
|
76
|
+
if (personNames.length > 0) {
|
|
77
|
+
const nameList = personNames.map((n) => `"${n}"`).join(", ");
|
|
78
|
+
lines.push(`**Note:** ${nameList} look like person names. If no results, try **plr_owner_search** to find their associated LLCs.`, "");
|
|
79
|
+
}
|
|
65
80
|
if (items.length > 0) {
|
|
66
81
|
const rows = items.slice(0, 25).map((l) => [
|
|
67
82
|
l.full_street_address ?? l.address ?? "—",
|
|
@@ -82,9 +97,7 @@ export function registerBorrowerLoansTool(server, plr) {
|
|
|
82
97
|
}
|
|
83
98
|
}
|
|
84
99
|
else {
|
|
85
|
-
lines.push("
|
|
86
|
-
lines.push(truncatedJson(data, 3000));
|
|
87
|
-
lines.push("```");
|
|
100
|
+
lines.push("_No loan records found._ Check spelling and use EXACT names from plr_borrower_search results (typically UPPERCASE with entity suffix like LLC).");
|
|
88
101
|
}
|
|
89
102
|
// Slim items — raw API has 25+ fields, most null (resale, refi, assignment, etc.)
|
|
90
103
|
const slimItems = items.slice(0, 25).map((l) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"borrowerLoans.js","sourceRoot":"","sources":["../../../src/tools/plr/borrowerLoans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"borrowerLoans.js","sourceRoot":"","sources":["../../../src/tools/plr/borrowerLoans.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect whether a name looks like a person name vs a business entity.
|
|
3
|
+
* Conservative: only flags 2-3 word alphabetic names with no entity keywords.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if the name looks like a person name (e.g. "John Smith")
|
|
7
|
+
* rather than a business entity (e.g. "VAPA INVESTMENTS LLC").
|
|
8
|
+
*
|
|
9
|
+
* Logic (conservative, inverse approach):
|
|
10
|
+
* - Must be 2-3 words, each alphabetic (allows hyphens/apostrophes)
|
|
11
|
+
* - Must NOT contain any entity keyword
|
|
12
|
+
* - Single words, 4+ words, or words with numbers are NOT flagged
|
|
13
|
+
*/
|
|
14
|
+
export declare function looksLikePersonName(name: string): boolean;
|
|
15
|
+
/** Classify a list of names into person names and entity names. */
|
|
16
|
+
export declare function classifyNames(names: string[]): {
|
|
17
|
+
personNames: string[];
|
|
18
|
+
entityNames: string[];
|
|
19
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect whether a name looks like a person name vs a business entity.
|
|
3
|
+
* Conservative: only flags 2-3 word alphabetic names with no entity keywords.
|
|
4
|
+
*/
|
|
5
|
+
const ENTITY_KEYWORDS = new Set([
|
|
6
|
+
"LLC", "INC", "CORP", "CORPORATION", "LP", "LTD", "PARTNERS", "PARTNERSHIP",
|
|
7
|
+
"HOLDINGS", "PROPERTIES", "VENTURES", "CAPITAL", "REALTY", "INVESTMENTS",
|
|
8
|
+
"GROUP", "FUND", "REIT", "COMPANY", "CO",
|
|
9
|
+
// Trust patterns
|
|
10
|
+
"TR", "TRS", "TRUS", "TRUST", "TRUSTEE", "TRSTEE", "TRST",
|
|
11
|
+
"REVOCABLE", "REVOCAB", "IRREVOCAB", "IRREVOCABLE",
|
|
12
|
+
// Other entity markers
|
|
13
|
+
"ESTATE", "ASSOC", "ASSOCIATION", "FOUNDATION",
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if the name looks like a person name (e.g. "John Smith")
|
|
17
|
+
* rather than a business entity (e.g. "VAPA INVESTMENTS LLC").
|
|
18
|
+
*
|
|
19
|
+
* Logic (conservative, inverse approach):
|
|
20
|
+
* - Must be 2-3 words, each alphabetic (allows hyphens/apostrophes)
|
|
21
|
+
* - Must NOT contain any entity keyword
|
|
22
|
+
* - Single words, 4+ words, or words with numbers are NOT flagged
|
|
23
|
+
*/
|
|
24
|
+
export function looksLikePersonName(name) {
|
|
25
|
+
const trimmed = name.trim();
|
|
26
|
+
if (!trimmed)
|
|
27
|
+
return false;
|
|
28
|
+
const words = trimmed.split(/\s+/);
|
|
29
|
+
if (words.length < 2 || words.length > 3)
|
|
30
|
+
return false;
|
|
31
|
+
// Each word must be alphabetic (allows hyphens, apostrophes for O'Brien, etc.)
|
|
32
|
+
const isAlphaWord = (w) => /^[A-Za-z][A-Za-z'-]*$/.test(w);
|
|
33
|
+
if (!words.every(isAlphaWord))
|
|
34
|
+
return false;
|
|
35
|
+
// Check none of the words match entity keywords
|
|
36
|
+
const upper = words.map((w) => w.toUpperCase());
|
|
37
|
+
if (upper.some((w) => ENTITY_KEYWORDS.has(w)))
|
|
38
|
+
return false;
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
/** Classify a list of names into person names and entity names. */
|
|
42
|
+
export function classifyNames(names) {
|
|
43
|
+
const personNames = [];
|
|
44
|
+
const entityNames = [];
|
|
45
|
+
for (const name of names) {
|
|
46
|
+
if (looksLikePersonName(name)) {
|
|
47
|
+
personNames.push(name);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
entityNames.push(name);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { personNames, entityNames };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=entityDetect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityDetect.js","sourceRoot":"","sources":["../../../src/tools/plr/entityDetect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa;IAC3E,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa;IACxE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI;IACxC,iBAAiB;IACjB,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IACzD,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa;IAClD,uBAAuB;IACvB,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY;CAC/C,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvD,+EAA+E;IAC/E,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,gDAAgD;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,KAAe;IAI3C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { structuredResult, markdownTable, fmtDollars } from "../formatters.js";
|
|
3
3
|
import { action } from "../nextActions.js";
|
|
4
4
|
import { registerToolSafe } from "../registerToolSafe.js";
|
|
5
|
+
import { resolvePropertyType } from "./propertyTypeMap.js";
|
|
5
6
|
const Input = z.object({
|
|
6
7
|
search_type: z
|
|
7
8
|
.enum(["state", "city", "zip", "county", "msa"])
|
|
@@ -22,7 +23,7 @@ const Input = z.object({
|
|
|
22
23
|
beds_max: z.coerce.number().optional().describe("Maximum bedrooms"),
|
|
23
24
|
baths_min: z.coerce.number().optional().describe("Minimum bathrooms"),
|
|
24
25
|
baths_max: z.coerce.number().optional().describe("Maximum bathrooms"),
|
|
25
|
-
property_type: z.string().optional().describe("Property type: 'SFR', 'Condo', '
|
|
26
|
+
property_type: z.string().optional().describe("Property type: 'SFR', 'Condo', 'Townhouse', 'Vacant Land'"),
|
|
26
27
|
page: z.coerce.number().default(1).describe("Page number (default 1)"),
|
|
27
28
|
page_size: z.coerce.number().default(20).describe("Results per page (default 20, max 100)"),
|
|
28
29
|
});
|
|
@@ -96,7 +97,7 @@ export function registerDistressSearchTool(server, sfr) {
|
|
|
96
97
|
if (args.baths_max !== undefined)
|
|
97
98
|
query.baths_max = args.baths_max;
|
|
98
99
|
if (args.property_type)
|
|
99
|
-
query.property_type = args.property_type;
|
|
100
|
+
query.property_type = resolvePropertyType(args.property_type);
|
|
100
101
|
const data = await sfr.getPropertySearch(query);
|
|
101
102
|
const items = Array.isArray(data?.data) ? data.data : [];
|
|
102
103
|
const total = data?.total ?? items.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distressSearch.js","sourceRoot":"","sources":["../../../src/tools/sfr/distressSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"distressSearch.js","sourceRoot":"","sources":["../../../src/tools/sfr/distressSearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps common property type aliases to the exact values the SFR API recognizes.
|
|
3
|
+
* Unknown values pass through unchanged for forward-compatibility.
|
|
4
|
+
*/
|
|
5
|
+
/** Resolve a single property type value to the canonical API value. */
|
|
6
|
+
export declare function resolvePropertyType(raw: string): string;
|
|
7
|
+
/** Resolve a comma-separated list of property types to canonical API values. */
|
|
8
|
+
export declare function resolvePropertyTypes(raw: string): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps common property type aliases to the exact values the SFR API recognizes.
|
|
3
|
+
* Unknown values pass through unchanged for forward-compatibility.
|
|
4
|
+
*/
|
|
5
|
+
const ALIAS_MAP = {
|
|
6
|
+
// Single Family Residential
|
|
7
|
+
sfr: "Single Family Residential",
|
|
8
|
+
"single family": "Single Family Residential",
|
|
9
|
+
"single family residential": "Single Family Residential",
|
|
10
|
+
// Condo
|
|
11
|
+
condo: "Condo",
|
|
12
|
+
"condo/co-op": "Condo",
|
|
13
|
+
// Townhouse
|
|
14
|
+
townhouse: "Townhouse",
|
|
15
|
+
// Vacant Land
|
|
16
|
+
"vacant land": "Vacant Land",
|
|
17
|
+
land: "Vacant Land",
|
|
18
|
+
};
|
|
19
|
+
/** Resolve a single property type value to the canonical API value. */
|
|
20
|
+
export function resolvePropertyType(raw) {
|
|
21
|
+
const trimmed = raw.trim();
|
|
22
|
+
return ALIAS_MAP[trimmed.toLowerCase()] ?? trimmed;
|
|
23
|
+
}
|
|
24
|
+
/** Resolve a comma-separated list of property types to canonical API values. */
|
|
25
|
+
export function resolvePropertyTypes(raw) {
|
|
26
|
+
return raw
|
|
27
|
+
.split(",")
|
|
28
|
+
.map((v) => resolvePropertyType(v))
|
|
29
|
+
.join(",");
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=propertyTypeMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propertyTypeMap.js","sourceRoot":"","sources":["../../../src/tools/sfr/propertyTypeMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,SAAS,GAA2B;IACxC,4BAA4B;IAC5B,GAAG,EAAE,2BAA2B;IAChC,eAAe,EAAE,2BAA2B;IAC5C,2BAA2B,EAAE,2BAA2B;IAExD,QAAQ;IACR,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,OAAO;IAEtB,YAAY;IACZ,SAAS,EAAE,WAAW;IAEtB,cAAc;IACd,aAAa,EAAE,aAAa;IAC5B,IAAI,EAAE,aAAa;CACpB,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC;AACrD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;SAClC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { structuredResult, kvSummary, markdownTable, fmtPercent } from "../formatters.js";
|
|
3
3
|
import { action } from "../nextActions.js";
|
|
4
4
|
import { registerToolSafe } from "../registerToolSafe.js";
|
|
5
|
+
import { resolvePropertyTypes } from "./propertyTypeMap.js";
|
|
5
6
|
const Input = z.object({
|
|
6
7
|
geography_type: z
|
|
7
8
|
.enum(["city", "county", "msa", "state", "zipCode"])
|
|
@@ -11,7 +12,7 @@ const Input = z.object({
|
|
|
11
12
|
.describe("Comma-separated geography values (e.g. 'Jacksonville,Tampa' for cities, 'FL' for state)"),
|
|
12
13
|
time_range_start: z.string().optional().describe("Start date (YYYY-MM-DD)"),
|
|
13
14
|
time_range_end: z.string().optional().describe("End date (YYYY-MM-DD)"),
|
|
14
|
-
property_types: z.string().optional().describe("
|
|
15
|
+
property_types: z.string().optional().describe("Property types: 'SFR', 'Condo', 'Townhouse', 'Vacant Land' (comma-separated)"),
|
|
15
16
|
bedrooms: z.string().optional().describe("Comma-separated bedroom counts (e.g. '2,3,4')"),
|
|
16
17
|
});
|
|
17
18
|
export function registerRentalMarketAnalysisTool(server, sfr) {
|
|
@@ -36,7 +37,7 @@ export function registerRentalMarketAnalysisTool(server, sfr) {
|
|
|
36
37
|
query.time_range_end = args.time_range_end;
|
|
37
38
|
}
|
|
38
39
|
if (args.property_types)
|
|
39
|
-
query.property_types = args.property_types;
|
|
40
|
+
query.property_types = resolvePropertyTypes(args.property_types);
|
|
40
41
|
if (args.bedrooms)
|
|
41
42
|
query.bedrooms = args.bedrooms;
|
|
42
43
|
const data = await sfr.getRentalMarketAnalysis(query);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rentalMarketAnalysis.js","sourceRoot":"","sources":["../../../src/tools/sfr/rentalMarketAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"rentalMarketAnalysis.js","sourceRoot":"","sources":["../../../src/tools/sfr/rentalMarketAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,cAAc,EAAE,CAAC;SACd,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SACnD,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,CAAC,yFAAyF,CAAC;IACtG,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC3E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACvE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC9H,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CAC1F,CAAC,CAAC;AAEH,MAAM,UAAU,gCAAgC,CAAC,MAAiB,EAAE,GAAc;IAChF,gBAAgB,CAAC,MAAM,EACrB,4BAA4B,EAC5B;QACE,KAAK,EAAE,0CAA0C;QACjD,WAAW,EACT,0FAA0F;YAC1F,6DAA6D;YAC7D,kEAAkE;YAClE,6KAA6K;YAC7K,qFAAqF;QACvF,WAAW,EAAE,KAAK;KACnB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAA4B;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC/C,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAClD,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,cAAc;YAAE,KAAK,CAAC,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAQ,CAAC;QAE7D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjE,MAAM,KAAK,GAAG;YACZ,2BAA2B;YAC3B,eAAe,IAAI,CAAC,cAAc,MAAM,IAAI,CAAC,gBAAgB,GAAG;YAChE,EAAE;SACH,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC3E,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;YAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC;YAE5B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,CAAC,cAAc,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjG,CAAC,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9F,CAAC,YAAY,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3D,CAAC,gBAAgB,EAAE,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC;gBACrD,CAAC,eAAe,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;aACjG,CAAC,CAAC,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,qDAAqD;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC;oBACxC,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG;oBAClD,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG;iBAClC,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAA4B;YAC1C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAChC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE;oBACP,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW;oBACnC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU;oBACjC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa;oBACvC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa;oBACvC,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,kBAAkB;oBACjD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,iBAAiB;iBAChD;gBACD,aAAa,EAAE;oBACb,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM;oBAC5C,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK;oBACpD,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;iBACzD;gBACD,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;aAC7C,CAAC,CAAC;SACJ,CAAC;QAEF,mDAAmD;QACnD,MAAM,eAAe,GAA2B;YAC9C,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,KAAK;SACf,CAAC;QACF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC7D,MAAM,OAAO,GAA2B,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACpE,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;aAC9C,IAAI,UAAU,KAAK,OAAO;YAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;aACrD,IAAI,UAAU,KAAK,KAAK;YAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;aAClD,IAAI,UAAU,KAAK,KAAK;YAAE,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;aACjD,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE5D,4DAA4D;QAC5D,MAAM,kBAAkB,GAAG,UAAU,KAAK,QAAQ,CAAC;QAEnD,MAAM,OAAO,GAAG;YACd,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,OAAO,CAAC;YACjE,GAAG,CAAC,kBAAkB;gBACpB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBACnE,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,EAAE;gBAC7C,IAAI,EAAE,cAAc;aACrB,CAAC;SACH,CAAC;QAEF,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,6 +3,8 @@ import { structuredResult, markdownTable, fmtDollars } from "../formatters.js";
|
|
|
3
3
|
import { action, locationArgs } from "../nextActions.js";
|
|
4
4
|
import { registerToolSafe } from "../registerToolSafe.js";
|
|
5
5
|
import { autoFillDateRange } from "../dateHelper.js";
|
|
6
|
+
import { resolvePropertyTypes } from "./propertyTypeMap.js";
|
|
7
|
+
import { resolveCanonicalMsa } from "./msaResolver.js";
|
|
6
8
|
const Input = z.object({
|
|
7
9
|
search_type: z
|
|
8
10
|
.enum(["state", "city", "zip", "msa", "address"])
|
|
@@ -22,7 +24,7 @@ const Input = z.object({
|
|
|
22
24
|
beds_max: z.coerce.number().optional().describe("Maximum bedrooms"),
|
|
23
25
|
building_sqft_min: z.coerce.number().optional().describe("Minimum sqft"),
|
|
24
26
|
building_sqft_max: z.coerce.number().optional().describe("Maximum sqft"),
|
|
25
|
-
property_types: z.string().optional().describe("Property type filter: 'SFR', 'Condo', '
|
|
27
|
+
property_types: z.string().optional().describe("Property type filter: 'SFR', 'Condo', 'Townhouse', 'Vacant Land' (comma-separated for multiple)"),
|
|
26
28
|
seller_name: z.string().optional().describe("Filter by seller name (partial match)"),
|
|
27
29
|
purchase_type: z.string().optional().describe("Discount filter: 'all' (default), 'discounted' (below-AVM), or 'non-discount'. " +
|
|
28
30
|
"NOTE: This is NOT a cash/financed filter. For cash buyer data, use sfr_investor_activity which includes isCashBuyer per transaction."),
|
|
@@ -81,7 +83,7 @@ export function registerSearchPropertiesTool(server, sfr) {
|
|
|
81
83
|
if (args.building_sqft_max)
|
|
82
84
|
query.building_sqft_max = args.building_sqft_max;
|
|
83
85
|
if (args.property_types)
|
|
84
|
-
query.property_types = args.property_types;
|
|
86
|
+
query.property_types = resolvePropertyTypes(args.property_types);
|
|
85
87
|
if (args.seller_name)
|
|
86
88
|
query.seller_name = args.seller_name;
|
|
87
89
|
if (args.purchase_type)
|
|
@@ -91,19 +93,46 @@ export function registerSearchPropertiesTool(server, sfr) {
|
|
|
91
93
|
if (args.sort)
|
|
92
94
|
query.sort = args.sort;
|
|
93
95
|
autoFillDateRange(query);
|
|
96
|
+
let effectiveMsa = args.msa;
|
|
97
|
+
let resolutionMethod = "exact";
|
|
94
98
|
// Fetch page + total count in parallel
|
|
95
99
|
const [data, countData] = await Promise.all([
|
|
96
100
|
sfr.getBuyerActivity(query),
|
|
97
101
|
sfr.getActivityCount(query).catch(() => null),
|
|
98
102
|
]);
|
|
99
103
|
// External API returns a flat array
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
let items = Array.isArray(data) ? data : (data?.data ?? []);
|
|
105
|
+
let total = countData?.count ?? countData ?? items.length;
|
|
106
|
+
// MSA fallback: if 0 results on MSA search, try resolving canonical name
|
|
107
|
+
if (items.length === 0 && args.search_type === "msa" && args.msa) {
|
|
108
|
+
resolutionMethod = "none";
|
|
109
|
+
const resolved = await resolveCanonicalMsa(sfr, {
|
|
110
|
+
requestedMsa: args.msa,
|
|
111
|
+
salesDateMin: typeof query.sales_date_min === "string" ? query.sales_date_min : undefined,
|
|
112
|
+
salesDateMax: typeof query.sales_date_max === "string" ? query.sales_date_max : undefined,
|
|
113
|
+
});
|
|
114
|
+
if (resolved.resolvedMsa
|
|
115
|
+
&& resolved.resolvedMsa.toLowerCase() !== args.msa.trim().toLowerCase()) {
|
|
116
|
+
effectiveMsa = resolved.resolvedMsa;
|
|
117
|
+
const retryQuery = { ...query, msa: effectiveMsa };
|
|
118
|
+
const [retryData, retryCount] = await Promise.all([
|
|
119
|
+
sfr.getBuyerActivity(retryQuery),
|
|
120
|
+
sfr.getActivityCount(retryQuery).catch(() => null),
|
|
121
|
+
]);
|
|
122
|
+
items = Array.isArray(retryData) ? retryData : retryData?.data ?? [];
|
|
123
|
+
total = retryCount?.count ?? retryCount ?? items.length;
|
|
124
|
+
if (items.length > 0)
|
|
125
|
+
resolutionMethod = "fallback";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
102
128
|
const lines = [
|
|
103
129
|
`## Property Transactions`,
|
|
104
130
|
`**Total:** ${typeof total === "number" ? total.toLocaleString() : total} | **Page:** ${args.page} | **Showing:** ${items.length}`,
|
|
105
131
|
"",
|
|
106
132
|
];
|
|
133
|
+
if (resolutionMethod === "fallback") {
|
|
134
|
+
lines.push(`_MSA normalized: '${args.msa}' -> '${effectiveMsa}'_`, "");
|
|
135
|
+
}
|
|
107
136
|
if (items.length > 0) {
|
|
108
137
|
const rows = items.slice(0, 25).map((p) => [
|
|
109
138
|
p.address ?? "—",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchProperties.js","sourceRoot":"","sources":["../../../src/tools/sfr/searchProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"searchProperties.js","sourceRoot":"","sources":["../../../src/tools/sfr/searchProperties.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sfranalytics/mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.7",
|
|
4
4
|
"description": "MCP server for SFR Analytics — single-family residential property data, buyer intelligence, and private lending insights",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|