@velinussage/locus-agent-skill 0.1.39 → 0.1.41

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![skills.sh](https://skills.sh/b/velinussage/locus-agent-skill)](https://skills.sh/velinussage/locus-agent-skill)
4
4
 
5
- Install three Locus agent skills: the general MCP/REST/A2A capability guide, the opt-in surrounding-area purchase workflow, and the property-tax protest workflow.
5
+ Install eight Locus agent skills: the general MCP/REST/A2A capability guide, the opt-in surrounding-area purchase workflow, the property-tax protest workflow, home-watch, water-incident, seller-readiness, escrow-shock, and payment-hardship workflows.
6
6
 
7
7
  Locus returns awareness and verification steps, not a verdict. Do not use it to score, rank, screen, value, predict, or label a person, property, block, or neighborhood as safe or unsafe.
8
8
 
@@ -12,7 +12,7 @@ Locus returns awareness and verification steps, not a verdict. Do not use it to
12
12
  npx @velinussage/locus-agent-skill add
13
13
  ```
14
14
 
15
- By default this writes `locus-agent-tools/`, `locus-surrounding-area-analysis/`, and `locus-property-tax-protest/` to `$CODEX_HOME/skills` or `~/.codex/skills`. The general public skill routes relevant requests to the specialist workflows; it does not turn ordinary Locus discovery into a paid flow.
15
+ By default this writes `locus-agent-tools/`, `locus-surrounding-area-analysis/`, `locus-property-tax-protest/`, `locus-home-watch/`, `locus-water-incident/`, `locus-seller-readiness/`, `locus-escrow-shock/`, `locus-payment-hardship/`, `locus-insurance-nonrenewal/`, `locus-inherited-home/` and `locus-aging-owner/` to `$CODEX_HOME/skills` or `~/.codex/skills`. The general public skill routes relevant requests to the specialist workflows; it does not turn ordinary Locus discovery into a paid flow.
16
16
 
17
17
  Options:
18
18
 
@@ -65,12 +65,15 @@ npx skills use velinussage/locus-agent-skill --skill locus-agent-tools
65
65
 
66
66
  ## What the skills teach agents
67
67
 
68
- - The full free catalog exposes 104 tools, including 58 national free lanes. Read the live catalog because rollout configuration can change the visible total.
68
+ - Read the live free catalog for current tools and national lanes; rollout configuration can change the visible total.
69
69
  - `locus_place_facts` is the best first call when supported.
70
70
  - `locus_lane_availability` shows national, local, varies, not-covered, and degraded lanes before payment.
71
71
  - Free tools stay read-only and cited.
72
+ - The payment-hardship workflow routes mortgage trouble to HUD counseling agencies first, then official state foreclosure pointers and servicer fact cards; the tax branch checks payment status, calendars and relief-program pointers without an eligibility decision.
72
73
  - `locus_rental_registration_check` declares its scope per jurisdiction. Long-term registration is wired in Minneapolis, Montgomery County, New York City, and Seattle; Denver is short-term-license only; Kansas City is building-enforcement only. It returns no legal-rental or compliance verdict.
73
74
  - The property-tax protest workflow keeps deadline, filing-guide, evidence, browser handoff, and published-outcome facts separate from the owner's own filing and value position.
75
+ - The home-watch workflow sets up deadline and change events for an address or a signed-in pool, reads an empty poll as "nothing new seen", and offers each paid next step only with the owner's approval.
76
+ - The water-incident workflow keeps what failed, who maintains each pipe segment, and the resulting damage or bill separate, and gives insurer questions without a coverage verdict.
74
77
  - Paid endpoints use live x402 discovery, may offer USDC on Base and Solana, and require explicit user authorization. Agents choose one complete `accepts[]` entry.
75
78
  - The surrounding-area workflow requires two separate approvals: $0.10 for the reusable JSON packet, then $0.15 for an eligible HTML/PDF report within 24 hours. Packet and report retrieval are proof-gated for 90 days.
76
79
 
@@ -7,7 +7,7 @@ import { fileURLToPath } from "node:url";
7
7
 
8
8
  const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
9
9
  const bundledSkillsRoot = path.join(packageRoot, "skill");
10
- const skillNames = ["locus-agent-tools", "locus-surrounding-area-analysis", "locus-property-tax-protest"];
10
+ const skillNames = ["locus-agent-tools", "locus-surrounding-area-analysis", "locus-property-tax-protest", "locus-home-watch", "locus-water-incident", "locus-seller-readiness", "locus-escrow-shock", "locus-payment-hardship", "locus-insurance-nonrenewal", "locus-inherited-home", "locus-aging-owner"];
11
11
 
12
12
  function usage() {
13
13
  return `Usage:
@@ -71,7 +71,7 @@ async function installSkills({ target, force }) {
71
71
  await cp(source, destination, { recursive: true });
72
72
  console.log(`Installed ${skillName} to ${destination}`);
73
73
  }
74
- console.log("Next: restart or refresh your agent skill catalog. Use locus-agent-tools for general discovery, locus-surrounding-area-analysis for the paid two-stage area workflow, and locus-property-tax-protest for assessment-contest work.");
74
+ console.log("Next: restart or refresh your agent skill catalog. Use locus-agent-tools for general discovery, locus-surrounding-area-analysis for the paid two-stage area workflow, locus-property-tax-protest for assessment-contest work, locus-home-watch for a standing deadline and change watch, locus-water-incident for a main break, leak or service-line failure, locus-seller-readiness for pre-listing checks, locus-escrow-shock when an escrow payment goes up, locus-payment-hardship for mortgage or tax payment trouble, locus-insurance-nonrenewal when a homeowners insurer will not renew, locus-inherited-home for a house left by someone who died, and locus-aging-owner for an older owner's home or rental.");
75
75
  }
76
76
 
77
77
  async function main() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velinussage/locus-agent-skill",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "description": "Install the general Locus agent skill, the surrounding-area purchase workflow, and the property-tax protest workflow for free and x402-paid property context.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: locus-agent-tools
3
3
  preamble-tier: 1
4
- version: 1.62.0
4
+ version: 1.66.0
5
5
  description: Use for cited US place records, including parcels, zoning, permits, meetings, budgets, audits, county data series, changes over time, and setting up dynamic MCP event polling or signed webhooks.
6
6
  triggers:
7
7
  - property due diligence
@@ -33,7 +33,7 @@ triggers:
33
33
  - real estate webhook notifications
34
34
  allowed-tools: Bash Read AskUserQuestion
35
35
  license: MIT
36
- contentHash: d6a93e779f5b
36
+ contentHash: c714bcb0c789
37
37
  ---
38
38
 
39
39
  # Locus Agent Capabilities
@@ -172,6 +172,8 @@ This route is rollout-gated. Call it only when `locus-surrounding-area-analysis`
172
172
 
173
173
  When the buyer wants more than the free `locus_surrounding_parcels` primitive and needs one composed view of surrounding parcels, zoning, development cases, permits, legislation, transportation/capital projects, environmental mechanisms, and optional dated aerial evidence, load the separate `locus-surrounding-area-analysis` skill. It owns the paid two-stage workflow and its recovery states. Keep this general capability skill on free discovery and the broader public tool surface; do not copy the paid workflow into ordinary Locus calls. For 100 or 200 m compact windows, treat exact returned distances as the window result. Standard ring aggregates are `null` whenever the request did not cover that full 250, 500, or 1,000 m ring.
174
174
 
175
+ For mortgage or property-tax payment trouble, load the bundled `locus-payment-hardship` workflow. Start mortgage help with the HUD agency directory; do not ask why the caller is behind, infer eligibility or predict foreclosure. If the person says they are thinking of harming themselves or are in crisis, stop the records task and give the US 988 Suicide and Crisis Lifeline (call or text 988; https://988lifeline.org/).
176
+
175
177
  ## Workflow and coverage tools, know the difference
176
178
 
177
179
  - **`locus_suggest_workflow { "place": "...", "intent": "homebuyer_due_diligence" }`** is the free deterministic planner. It returns a ranked endpoint plan with reasons, estimated costs, free/paid rail, national/local scope, and place availability. Use it first when the intent is broad or the right endpoint is unclear. It accepts the established buyer, renter, business, civic, commercial-tenant, land-investor, developer, environmental, short-term-rental, data-center, agricultural-land, HOA, and renovation-planning intents. It also accepts `property_owner_cost_relief`, `property_tax_appeal`, `utility_bill_relief`, `mortgage_servicing`, `disaster_recovery`, `permit_project_closeout`, `tax_delinquency_redemption`, `government_meeting_monitoring`, `local_fiscal_research`, and `county_data_research`. Natural-language requests such as `finish a basement`, `lower my property taxes`, `review my PMI dates`, or `check permit closeout` are normalized. These planner lanes route tools only; they do not widen the four safety-versioned paid brief claim intents or make eligibility, legal, savings, compliance, occupancy, or renovation-feasibility conclusions.
@@ -263,7 +265,7 @@ Trimmed response example for a rural Montana ZIP:
263
265
  { "tool": "locus_flood_zone", "what": "FEMA flood-zone designation at the point", "access": "free" },
264
266
  { "tool": "locus_flood_determination_inputs", "what": "SFHDF form inputs: NFIP community, FIRM panel and date, zone, LOMA/LOMR, CBRS status", "access": "free" },
265
267
  { "tool": "locus_flood_premium_context", "what": "NFIP policy-cost distribution for policies in force in the ZIP (estimate, not a quote)", "access": "free" },
266
- { "tool": "locus_homeowners_insurance_context", "what": "ACS median homeowners-insurance cost band and owner costs by ZIP, county, state (estimate)", "access": "free" },
268
+ { "tool": "locus_homeowners_insurance_context", "what": "ACS insurance-cost bands; opt-in Treasury FIO 2018-2022 ZIP premiums, nonrenewals and claims (historical area context, not a quote)", "access": "free" },
267
269
  { "tool": "locus_property_tax_context", "what": "ACS effective property-tax rate and median bill by ZIP, county, state (estimate)", "access": "free" },
268
270
  { "tool": "locus_market_context", "what": "County listing price, inventory, days on market (FRED) plus ACS value and rent (estimate)", "access": "free" },
269
271
  { "tool": "locus_rebuild_cost_context", "what": "County permit valuation per unit trended by construction PPI as a labeled rebuild-cost proxy", "access": "free" },
@@ -493,13 +495,14 @@ These work for geocodable US addresses at no cost. Some accept address directly.
493
495
  | FEMA flood zone at a point | `locus_flood_zone` | `{ "address": "600 E 4th St, Charlotte, NC" }` or `{ "latitude": 35.22, "longitude": -80.84 }` | Flood zone code, SFHA flag, panel or DFIRM identifiers when returned, plain-language zone context, provenance, verify-next steps. |
494
496
  | Flood determination form inputs for a loan file | `locus_flood_determination_inputs` | `{ "address": "100 Beach Rd, Surf City, NC" }` | SFHDF fields in section order: NFIP community name and number, FIRM panel and effective date, zone and SFHA, LOMA/LOMR polygons, USFWS CBRS unit and buffer status, per-source status. Not a determination; no 12 CFR 22.6 guarantee. |
495
497
  | Flood insurance cost context (estimate) | `locus_flood_premium_context` | `{ "address": "142 Hedgerow, Pittsboro, NC 27312" }` | Median and quartiles of annual NFIP policy cost and full-risk premium for policies in force in the ZIP, split SFHA vs minimal hazard, with policy count and vintage. Not a quote. |
496
- | Homeowners insurance cost context (estimate) | `locus_homeowners_insurance_context` | `{ "address": "142 Hedgerow, Pittsboro, NC 27312" }` | ACS 2023 median annual insurance-cost band by mortgage status and monthly owner costs at ZIP, county, state; state regulator sample-rate link where published. |
498
+ | Homeowners insurance cost context (estimate) | `locus_homeowners_insurance_context` | `{ "address": "142 Hedgerow, Pittsboro, NC 27312" }` | ACS 2023 median annual insurance-cost band by mortgage status and monthly owner costs at ZIP, county, state; state regulator sample-rate link where published. When enabled, `fioZip` adds Treasury FIO 2018-2022 annual premiums per policy, insurer nonrenewal rates and claim metrics. Rates are fractions, not percentages; missing or withheld cells are null, never zero. Historical area-level data is not a quote or a finding about this home. Ask the insurer or licensed agent about current renewal terms and the notice's dates; do not infer current premium growth from this older series. |
497
499
  | Property tax burden context (estimate) | `locus_property_tax_context` | `{ "address": "142 Hedgerow, Pittsboro, NC 27312" }` | ACS median real-estate tax, median home value, and implied effective rate at ZIP, county, state; Lincoln Institute study linked. |
498
500
  | Housing market context (estimate) | `locus_market_context` | `{ "address": "142 Hedgerow, Pittsboro, NC 27312" }` | County median listing price, active listings, days on market with year change (FRED), plus ACS value and rent medians. Not a valuation. |
499
501
  | Rebuild-cost proxy (estimate, labeled proxy) | `locus_rebuild_cost_context` | `{ "address": "142 Hedgerow, Pittsboro, NC 27312" }` | County permit valuation per unit, PPI trend, implied $/sq ft range under a stated size assumption, floored at FEMA $100. Never a coverage amount. |
500
502
  | Environmental records screen for a Phase I file | `locus_environmental_records_screen` | `{ "address": "1500 Market St, Philadelphia, PA" }` | NPL, cleanup, RCRA, UST/LUST, and TRI lists at ASTM E1527-21 search distances with records returned, records within distance, nearest distance, and per-list status. Government-records step only; never a Phase I. |
501
503
  | Treasurer tax payment status (Philadelphia) | `locus_tax_payment_status` | `{ "address": "2401 Pennsylvania Ave, Philadelphia, PA 19130", "unit": "5C42" }` | Outstanding principal, interest, penalty, lien numbers by tax year per OPA parcel; `no_outstanding_balance_recorded` when the dataset has no rows. Out of coverage elsewhere. |
502
504
  | Nearby flood gauges | `locus_flood_gauges` | `{ "address": "...", "radiusMeters": 20000 }` | Nearby USGS/NWS gauges, latest stage/flow observations when available, threshold metadata, source links. |
505
+ | Pending FEMA flood map changes (county) | `locus_flood_map_change_notices` | `{ "place": "Harris County, TX" }` or `{ "address": "..." }` | Federal Register notices of proposed or final flood map revisions and Letters of Map Revision that name the county: communities, project or case number, comment deadline or effective date, NFIP community number, notice link. A notice is not a parcel zone change; compare the preliminary map. |
503
506
  | Governing districts | `locus_governing_districts` | `{ "address": "..." }` | Congressional, state senate, state house, county, municipality, and other governing geographies when resolved. |
504
507
  | Representatives | `locus_representatives` | `{ "address": "..." }` | Cited federal and state officials for the address, districts, party/office/contact links where available. |
505
508
  | Wildfire risk | `locus_wildfire_risk` | `{ "address": "..." }` | FEMA NRI tract-level wildfire rating, score, expected annual loss fields where returned, provenance, caveats. |
@@ -510,7 +513,9 @@ These work for geocodable US addresses at no cost. Some accept address directly.
510
513
  | Toxic releases | `locus_toxic_releases` | `{ "state": "MT", "county": "Park County" }` | EPA TRI facilities for the county, chemical-release reporting fields where available, profile links. |
511
514
  | RCRA hazardous-waste handlers | `locus_rcra_handlers` | `{ "state": "MT", "countyFips3": "067" }` or `{ "state": "MT", "zip": "59047" }` | RCRAInfo handlers, generator status/activity fields, coordinates, ECHO verify links. |
512
515
  | EPA radon zone | `locus_radon_zone` | `{ "address": "..." }` or `{ "state": "MT", "county": "Park County" }` | EPA county radon zone 1/2/3, county basis, testing/disclosure caveat, provenance. |
513
- | Public water systems | `locus_water_systems` | `{ "state": "MT", "county": "Park County" }` | Active public water systems serving the county, PWSIDs, SDWIS/ECHO links. County membership does not prove which system serves an address. |
516
+ | California service-line material | `locus_service_line_material` | `{ "address": "<complete CA street address, unit if applicable, city, state and ZIP>" }` | Utility-reported system-owned and customer-owned materials separately. Opt-in snapshot; exact or normalized address only. Unknown stays unknown; no match is not non-lead. Verify current materials and ownership boundaries with the utility. |
517
+ | Public water systems | `locus_water_systems` | `{ "state": "MT", "county": "Park County" }` | Active public water systems, PWSIDs, SDWIS/ECHO links, and dated system-wide lead, galvanized-requiring-replacement, unknown, and non-lead service-line counts when reported; missing counts are not zero and non-lead counts may be underreported until November 1, 2027. County membership does not prove which system serves an address; system counts do not identify the caller's own line. |
518
+ | State boil-water notices | `locus_boil_water_notices` | `{ "pwsid": "MO1010001" }` or `{ "address": "..." }` | State-published active orders where wired; check live coverage. Address input uses candidate service-area boundaries, not county association. Precautionary utility advisories may be excluded. Use `poll_events` or `subscribe_event` with `name: "locus.real_estate.changes_detected"`, `arguments.addresses`, and `arguments.lanes: ["locus_boil_water_notices"]` to watch for new published notices after a quiet complete baseline. Unavailable reads keep the prior notice watermark. A disappearing row never means lifted; confirm address impact and current instructions with the utility. Not an emergency notification service. |
514
519
  | Groundwater monitoring-well context | `locus_groundwater_context` | `{ "address": "...", "radiusMeters": 5000 }` | Nearby USGS monitoring locations, aquifer codes/names, well-construction depth distributions, and static water-level observations, returned in distance bands without location names or exact coordinates. Not a domestic-well depth, yield, potability, contamination, or cost prediction. |
515
520
  | EPA Sole Source Aquifer designation | `locus_sole_source_aquifer` | `{ "address": "..." }` | EPA mapped designation containment, designation names, and Federal Register citations. A designation means EPA reviews federally funded projects in the area under SDWA 1424(e); it is not a contamination or water-quality finding and does not itself restrict a private owner. |
516
521
  | Non-UCMR PFAS multimedia records | `locus_pfas_multimedia_nearby` | `{ "address": "...", "radiusMeters": 10000 }` | EPA PFAS Analytic Tools environmental-media, wastewater, TRI, Superfund/federal-site, and industry records from reviewed mirror exports. Measured/reported records stay separate from potential-handling flags; proximity does not establish source, migration, exposure, or parcel contamination. |
@@ -520,6 +525,8 @@ These work for geocodable US addresses at no cost. Some accept address directly.
520
525
  | FEMA disaster and NFIP history | `locus_fema_events` | `{ "address": "..." }` or `{ "state": "MT", "countyFips3": "067", "zip": "59047" }` | FEMA disaster declarations by county, NFIP claims by ZIP, preliminary FIRM panel context where available. |
521
526
  | Open FEMA assistance windows | `locus_open_disaster_assistance` | `{ "address": "...", "monthsBack": 36 }`, `{ "latitude": 35.22, "longitude": -80.84 }`, or `{ "state": "IN", "county": "Marion" }` | Recent county declarations and published Individuals and Households Program filing dates that have not passed, with FEMA, DisasterAssistance.gov, IRS, and registry pointers. FEMA decides eligibility. |
522
527
  | 2026 conforming loan limits | `locus_loan_limits` | `{ "address": "...", "units": 1, "proposedLoanAmountUsd": 900000 }` or `{ "state": "AZ", "county": "Cochise" }` | FHFA county limits for one to four units and optional arithmetic against a caller-supplied amount. Eligibility ceiling context only, not qualification, approval, value, or a recommendation. |
528
+ | HUD housing counseling agencies | `locus_housing_counselors` | `{ "address": "...", "service": "DFC" }` or `{ "lat": 35.78, "lon": -78.64 }` | Nearest directory organizations, published business contacts, raw `sourceStatusCode` (HUD `agc_STATUS`), service/language codes and straight-line distance. A listing or code is not verified HUD approval; confirm approval with HUD or the agency, and ask about free or low-cost counseling, fees and availability. Bounded live source, never an outage-as-empty. |
529
+ | State foreclosure process pointers | `locus_foreclosure_process_pointers` | `{ "state": "WA" }` | Verified statute/process and official mediation pointers where checked; otherwise a not_verified court portal only. No time-remaining, legal advice or foreclosure prediction. |
523
530
  | Owner mortgage calendar | `locus_owner_mortgage_calendar` | `{ "originationDate": "2026-01-01", "originalValueUsd": 500000, "originalLoanAmountUsd": 450000, "annualRatePercent": 6, "loanType": "conventional", "forcePlacedNoticeDate": "2026-09-01" }` | Twelve cited statute and agency fact cards plus dates computed only from caller inputs. Not legal advice, qualification, approval odds, value opinion, or a recommendation. |
524
531
  | Current drought status and recent history | `locus_drought_status` | `{ "address": "...", "weeks": 8 }` | Weekly US Drought Monitor county percentages by D0-D4 category plus recent weeks. County-level drought mapping does not establish parcel water supply, well yield, current utility restrictions, or a forecast. |
525
532
  | HUD fair-market rents | `locus_fair_market_rents` | `{ "stateFips": "30", "countyFips3": "067", "year": 2026 }` | HUD FMR values by bedroom count and county/FIPS basis. |
@@ -541,7 +548,7 @@ These work for geocodable US addresses at no cost. Some accept address directly.
541
548
  | Prepare satellite area from an address | `locus_satellite_area_prepare` | `{ "address": "1 E Edenton St, Raleigh, NC 27601", "beforeDate": "2024-06-01", "afterDate": "2026-06-01", "halfExtentMeters": 1000 }` | Free request preparation: dated parcel/rooftop centroid, explicit surrounding area box, dimensions and ready `retryInput`. No rendering/payment. Depends on parcel resolution; diagnostics never invent a location. |
542
549
  | Official Sentinel-2 scene availability | `locus_satellite_scene_availability` | `{ "bbox": [-79.11, 35.795, -79.098, 35.805], "fromDate": "2024-05-01", "toDate": "2024-06-01", "maxCloudCoverage": 30 }` | Official Copernicus product ids, acquisition times, platform, grid, processing level, and source-published tile cloud cover. Metadata only. A match does not establish visual clarity, site condition, or change. |
543
550
  | Aggregate traffic-crash context | `locus_traffic_crash_context` | `{ "address": "...", "radiiMeters": [200, 500, 1000], "lookbackYears": 3 }` | Small-cell-suppressed police-reported crash counts by official severity and mode. Registry coverage: Chicago all-reported, Virginia reportable-threshold, North Carolina nonmotorist and K+A subsets kept separate, Pikes Peak region PPACG reportable-threshold records for 2020-2024, plus nationwide FARS fatal-only fallback. No raw rows, examples, exact points, party details, score, forecast, or place verdict. |
544
- | Landslide history + susceptibility context | `locus_landslide_context` | `{ "address": "...", "searchRadiusMeters": 1000 }` or `{ "latitude": 35.78, "longitude": -78.64 }` | USGS v3 bounded inventory point/polygon records plus a separately labeled exact source-native n10 90-meter cell where the active snapshot publishes one. Inventory no-match, model out-of-footprint, stale/unavailable snapshot, and source failure remain distinct. The 0–81 model value is not probability or parcel engineering. |
551
+ | Landslide history + susceptibility context | `locus_landslide_context` | `{ "address": "...", "searchRadiusMeters": 1000 }` or `{ "latitude": 35.78, "longitude": -78.64 }` | USGS v3 bounded inventory point/polygon records plus a separately labeled exact source-native n10 90-meter cell where the active snapshot publishes one. Top-level `status` (`complete` \| `partial` \| `unavailable`), `partial`, `degradedComponents`, `historyState`, and `susceptibilityState` keep inventory no-match, model out-of-footprint, stale/unavailable snapshot, and source failure distinct. The 0–81 model value is not probability or parcel engineering. |
545
552
  | FEMA NFIP flood-insurance claims (county) | `locus_nfip_claims` | `{ "address": "..." }` or `{ "latitude": 25.76, "longitude": -80.19 }` | FEMA OpenFEMA NFIP redacted flood-insurance claims aggregated to the county: total claim count, total paid, year range, and top rated flood zones. Redacted (no address/PII), county-level historical fact, never a prediction or risk score. |
546
553
  | Historical wildfire perimeters | `locus_wildfire_history` | `{ "address": "..." }` or `{ "latitude": 38.6, "longitude": -122.5 }` | WFIGS interagency historical wildfire perimeters within about 5 miles: incident name, category, acres, discovery year. Realized-event records (complements the modeled `locus_wildfire_risk`); most non-Western points return none, an honest `out_of_coverage`. |
547
554
  | Soil context and site constraints | `locus_soil_context` | `{ "address": "..." }` or `{ "latitude": 35.9, "longitude": -78.9 }` | USDA NRCS SSURGO soil suitability at a point: NRCS engineering ratings (Very/Somewhat/Not limited, with limiting features) for dwellings, septic absorption fields, and shallow excavations, plus drainage, hydric, slope, shrink-swell (linear extensibility), taxonomic order, and farmland class. Soil-map-unit-level screening context for septic/foundation/drainage/buildability, never a geotechnical, perc-test, permit, or safe/unsafe/buildable verdict. Developed/urban points often return `out_of_coverage` (no soil component). |
@@ -560,7 +567,7 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
560
567
  | Surrounding parcel context | `locus_surrounding_parcels` | `{ "address": "1 E Edenton St, Raleigh, NC 27601", "radiusMeters": 500, "maxParcels": 50 }` | Free source-native parcel topology where the release gate is active, plus bounded centroid-distance rings in supported parcel areas. Use it to identify nearby parcels, not to infer violations or ownership. Use `locus_parcel_code_cases` separately for a supported subject's code-case records; those cases do not describe every surrounding parcel. A 100 m or 200 m request does not cover the full 250 m ring. |
561
568
  | Development or rezoning nearby | `locus_development_cases` | `{ "address": "...", "radiusMeters": 1500 }` | Nearby development/rezoning case records, statuses, dates, identifiers, citations where wired. |
562
569
  | Public capital projects nearby | `locus_capital_projects` | `{ "address": "...", "radiusMeters": 1609 }` | Government capital projects, public works, assessments where wired, with project ids and source links. |
563
- | Building permits for a place, parcel set, or supported metro | `locus_metro_permits` | Exact address: `{ "place": "1 E Edenton St, Raleigh, NC 27601" }`; parcel set: `{ "parcelIds": ["0736544606", "0736845188"], "state": "NC", "county": "Wake" }`; point mode: `{ "city": "chicago", "latitude": 41.878, "longitude": -87.629, "radiusMeters": 1000, "sinceDate": "2025-01-01" }` | Free permit activity lookup. Exact subjects resolve through the parcel before source selection. Unincorporated Wake County returns Tyler EnerGov permit, plan, and inspection workflow fields. Verified point-radius metros come from the executable metro registry. Exact parcel requests never fall back to the Census residential county trend. |
570
+ | Building permits for a place, parcel set, or supported metro | `locus_metro_permits` | Exact address: `{ "place": "1 E Edenton St, Raleigh, NC 27601" }`; parcel set: `{ "parcelIds": ["0736544606", "0736845188"], "state": "NC", "county": "Wake" }`; point mode: `{ "city": "chicago", "latitude": 41.878, "longitude": -87.629, "radiusMeters": 1000, "sinceDate": "2025-01-01" }` | Free permit activity lookup with explicit completeness fields (`returnedCount`, `matchedPermits`, `matchedPermitsIsLowerBound`, `responseLimited`, `upstreamTruncated`, `truncated`) and `excludePermitIds` pagination. Exact subjects resolve through the parcel before source selection. Unincorporated Wake County returns Tyler EnerGov permit, plan, and inspection workflow fields. Verified point-radius metros come from the executable metro registry. Exact parcel requests never fall back to the Census residential county trend. |
564
571
  | Transportation projects and traffic counts | `locus_transportation_context` | `{ "address": "...", "radiusMeters": 2000 }` | State DOT funded projects, traffic-count stations, routes, statuses where wired. |
565
572
  | Public water/sewer service-area screen | `locus_utility_service_check` | `{ "address": "..." }` | Whether the point falls inside mapped public water and sewer service-area polygons where county sources are wired, with provider names when safely published. Polygon membership does not prove service availability, capacity, connection rights, timing, or cost for a parcel. |
566
573
  | Transit stops and routes | `locus_transit_context` | `{ "address": "...", "radiusMeters": 400 }` | Transit stops, routes, shelter/ADA fields, headways where supported. Wired transit agencies span about 15 metros: New York (MTA), Los Angeles (LA Metro), Houston (METRO), Charlotte (CATS), Miami-Dade, Nashville (WeGo), Washington DC (WMATA), Dallas (DART), Philadelphia (SEPTA), Atlanta (MARTA), San Antonio (VIA), Seattle (King County Metro), Phoenix (Valley Metro), Denver (RTD), and Raleigh (GoRaleigh). Other areas return no wired transit lane. |
@@ -575,6 +582,9 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
575
582
  | Appeal filing forms and workflow | `locus_appeal_filing_guide` | `{ "address": "..." }` or `{ "state": "Texas", "county": "Harris County" }` | Accepts an address, two-letter state code, or full state name. Covered states: TX, GA, AZ, FL, NC, CO, OH, NJ, WA, CA, NY, IL, MI, TN, and PA (Philadelphia only). Returns the cited filing body, forms, portal mode, fee rule, hearing modes, next appeal body, and a separate browser-workflow handoff. Locus does not file or advise whether to appeal. |
576
583
  | Published appeal outcomes | `locus_appeal_outcomes` | `{ "address": "...", "taxYear": 2025 }` or `{ "state": "Illinois", "county": "Cook", "township": "Evanston", "taxYear": 2025 }` | Accepts an address, two-letter state code, or full state name. Coverage includes Cook County Board of Review and Assessor aggregates, NYC Tax Commission published granted reductions, the Texas Comptroller statewide 2024 district survey, and registered official pointers. Historical records only, never a parcel forecast. |
577
584
  | State landlord-tenant and owner tax-relief statutes | `locus_tenant_statute_pointers` | `{ "state": "NC" }` or `{ "place": "Raleigh, NC" }` | State/DC chapter and title locators for deposit return/limits, entry notice, repair duties, lease termination, and owner tax relief; local owner-program references and state-locked source queries. Not live-verified section text, legal advice, or a program determination. Verify current official sections and local applicability. The same records are available through the $0.01 `locus-tenant-statute-pointers` route. |
585
+ | State seller-disclosure law and federal lead paint | `locus_seller_disclosure_pointers` | `{ "state": "IA" }` or `{ "place": "Des Moines, IA" }` | Per state: `verified` rows give the official statute or form citation, its URL, the regime (`statutory_form` or `statute_without_form`) and items the official text names (Iowa: lead service lines from January 1, 2026); `not_verified` rows give only an official portal. Always adds the federal lead-based-paint rules for pre-1978 housing (42 U.S.C. 4852d, 40 CFR 745 subpart F, 24 CFR 35 subpart A). Pointers to official text, not legal advice; it never applies a rule to the property. `out_of_coverage` outside the 50 states and DC |
586
+ | Homeowners-insurance nonrenewal rights | `locus_insurance_nonrenewal_pointers` | `{ "state": "FL" }` or `{ "address": "..." }` | Per state: a `verified` notice rule gives the advance-notice days, citation, scope and quoted official text; `not_verified` gives only the insurance department portal. Also the insurer of last resort (FAIR Plan, Citizens or another named plan, or `not_checked`), the department complaint page, and dated emergency rules only while in force. No verdict on a notice and no coverage recommendation. |
587
+ | Estate, heirs-property and court pointers for a home | `locus_estate_property_pointers` | `{ "state": "OH" }` or `{ "place": "Columbus, OH" }` | Per state, each pointer `verified` or `not_verified`: transfer-on-death deed statute, small-estate procedure (citation, whether its text reaches real property, and a threshold quoted only from the checked text), Uniform Partition of Heirs Property Act and Uniform Power of Attorney Act status from the Uniform Law Commission (`not_listed` is not proof of no law), and the court self-help page. Pointers, not legal advice; never says who owns or inherits a home. Workflows: `locus-inherited-home`, `locus-aging-owner`. |
578
588
  | Owner programs and windows | `locus_owner_programs` | `{ "place": "Fort Lauderdale, FL" }` or `{ "address": "...", "classes": ["early_payment_discount"], "includeDerived": true }` | Matching curated money-action and program rows, cited statewide tax and appeal rows, nationwide rows, coverage counts, and a jurisdiction-locked official-source query pack. No individual determination, recommendation, or computed savings estimate. |
579
589
  | Mitigation incentives | `locus_mitigation_incentives` | `{ "place": "Florida", "hazard": "wind" }` | Cited mitigation grants, insurance discount rules and programs, disaster-assistance windows, flood-map correction, and flood-protection rebate rows, plus next checks in the existing hazard tools. |
580
590
  | Utility credits and cost shares | `locus_utility_credits` | `{ "place": "Chicago, IL" }` | Cited stormwater and utility credits, energy rebates, lead service-line programs, sidewalk cost shares, and flood-protection rebate rows, with official-source search prompts for gaps. |
@@ -586,6 +596,7 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
586
596
  | Special valuation screen | `locus_special_valuation_screen` | `{ "address": "..." }` | The parcel's public acreage and land-use code plus cited state special-valuation, historic-incentive, and solar-exemption rows. It does not determine program status for the parcel. |
587
597
  | Area reported-crime context | `locus_area_incidents` | `{ "address": "...", "radiusMeters": 1000, "lookbackDays": 365 }` | Area-level or citywide reported-incident context where wired, plus caveats. No safety verdict. |
588
598
  | Recent 311 service requests | `locus_service_requests` | `{ "address": "...", "radiusMeters": 1000, "lookbackDays": 365 }` | Recent San Diego Get It Done request type, status, dates, and public location from the synced city feed. A service request is a report, not a verified condition, code violation, responsible-party finding, or complete account of local activity. |
599
+ | Contractor licence roster | `locus_contractor_license_check` | `{ "state": "WA", "licenseNumber": "<number from bid or permit>" }` | Exact-number lookup only; no name search or licensee names/addresses. Official status, type, effective/expiry dates and source update time where wired. No-match is not proof of being unlicensed; confirm the current record and trade with the board before hiring or relying on recent work. No hiring or workmanship verdict. |
589
600
  | Rental registration, short-term licensing, or building enforcement | `locus_rental_registration_check` | `{ "address": "1531 Belmont Ave, Seattle, WA 98122" }` | Exact-building rows with `recordScope` set to long-term registration, short-term license, or enforcement-only. Excludes owner/contact/unit/narrative fields. A no-match is limited to the named dataset, not a compliance finding. |
590
601
  | NYC deed and mortgage index | `locus_nyc_recording_history` | `{ "address": "..." }` or `{ "bbl": "3079740028", "limit": 25 }` | Bounded ACRIS Legals and Master document index, dates, source-published amounts, citations, query horizon, and verify-next questions. No party or unit data and no title conclusion. |
591
602
  | Government planning meeting pointers | `locus_government_meetings` | `{ "jurisdiction": "us-ca-modesto" }` or `{ "jurisdiction": "us-nc-wake" }` | Free bounded Modesto Planning Commission and Wake County Planning Board dates and official links. No item extraction, parcel match, or final decision. |
@@ -866,13 +877,18 @@ Both MCP harnesses (via protocol JSON-RPC `events/list`, `events/poll`, `events/
866
877
 
867
878
  | Event name | Dynamic target & filter arguments | What it emits |
868
879
  |---|---|---|
869
- | `locus.real_estate.changes_detected` | `{ "addresses": ["123 Main St, Raleigh, NC"], "lanes": ["locus_metro_permits", "locus_zoning"], "includeUpcomingDays": 60 }` (or `{ "poolId": "<uuid>" }`) | Cited `newRecords` and `newUpcoming` dated milestones since the baseline cursor, plus `followUpTools`. |
870
- | `locus.real_estate.deadline_approaching` | `{ "addresses": ["123 Main St, Raleigh, NC"], "horizonDays": 30, "basis": ["as filed", "statutory", "published schedule"] }` (or `{ "poolId": "<uuid>" }`) | Dated tax, appeal, hearing, or filing milestones entering the window, with `daysRemaining` and `recommendedTools`. |
880
+ | `locus.real_estate.changes_detected` | `{ "addresses": ["123 Main St, Raleigh, NC"], "lanes": ["locus_metro_permits", "locus_zoning"], "includeUpcomingDays": 60 }` (or `{ "poolId": "<uuid>" }`) | Cited `newRecords` and `newUpcoming` dated milestones since the baseline cursor, plus `followUpTools` and pre-filled `nextActions` (`locus-property-update`). |
881
+ | `locus.real_estate.deadline_approaching` | `{ "addresses": ["123 Main St, Raleigh, NC"], "horizonDays": 30, "basis": ["as filed", "statutory", "published schedule"] }` (or `{ "poolId": "<uuid>" }`) | Dated tax, appeal, hearing, or filing milestones entering the window, with `daysRemaining`, `recommendedTools`, and a priced, pre-filled `nextActions` offer (`locus-assessment-position`, `locus-owner-action-brief`, `locus-property-tax`, or `locus-permit-closeout-check`, each `charge_free_unless_substantive`). |
871
882
  | `locus.jurisdiction.legislation_activity` | `{ "address": "123 Main St, Raleigh, NC", "topic": "zoning" }` (or `{ "state": "NC", "topic": "housing" }`) | Newly cited bills or ordinances (`zoning`, `housing`, `tax`, `short_term_rental`, `development`, `all`) with `"Data via LegiScan, CC BY 4.0"` attribution. |
872
- | `locus.pool.changes_detected` | `{ "poolId": "<uuid>", "lanes": [...], "includeUpcomingDays": 60 }` | Authenticated saved-pool record and milestone changes. |
883
+ | `locus.pool.changes_detected` | `{ "poolId": "<uuid>", "lanes": [...], "includeUpcomingDays": 60 }` | Authenticated saved-pool record and milestone changes, with `followUpTools` and pre-filled `nextActions`. |
873
884
  | `locus.watch.digest_sent` | `{ "poolId": "<optional-uuid>" }` | Privacy-preserving digest count (`{ "changeCount": N }` only; no addresses or raw records). |
885
+ | `locus.real_estate.seasonal_hazard_window` | `{ "address": "123 Main St, Wilmington, NC 28401" }` | Opt-in May 1 reminder before the official June 1 Atlantic season start, in coastal-registry counties. Free flood-map and premium-context `nextActions`. No verified state wildfire season is wired. |
886
+ | `locus.real_estate.insurance_renewal_approaching` | `{ "address": "...", "renewalMonth": 7 }` | Opt-in window opens 45 days before the supplied month's first day. Free insurance-context and mitigation `nextActions`. The month boundary is not an actual policy renewal date. |
887
+ | `locus.real_estate.escrow_analysis_approaching` | `{ "address": "...", "escrowAnalysisMonth": 7 }` | Opt-in window opens 30 days before the supplied month's first day. Free mortgage-calendar fact cards, tax-calendar and insurance-context `nextActions`. The month boundary is not a verified servicer date. |
888
+
889
+ Calendar reminders require the provider's `LOCUS_MCP_CALENDAR_EVENTS_ENABLED` flag. Unknown months create no date and return `calendarStatus: "missing_date"`. Caller months are explicitly `caller_supplied`, with no invented source URL. Their `nextActions` are free (`priceUsdc: "0.00"`, `charge: "free"`), with no payment field. Poll at least every 12 hours. The existing cursor TTL is 24 hours: a stale cursor establishes a silent truncated baseline. To recover, omit that cursor and deduplicate by stable `eventId`. Fresh polls list only windows from `triggerDate` through `date`, inclusive in UTC, with no closed-window backfill. Subscribe before the trigger window and renew the subscription before expiry. Existing `deadline_approaching` events already resurface explicit exemption and appeal dates; never roll recurring prose or a prior-cycle date into a new year.
874
890
 
875
- 1. **Discover event schemas first:** Call JSON-RPC `events/list` (or model tool `list_event_types` on `/muse/mcp`, or free `locus_mcp_events_catalog` with `{}` on `/mcp` or REST `/tools/call`) and read each event's `inputSchema`, `payloadSchema`, `delivery`, and `requiresAuthForPoll`.
891
+ 1. **Discover event schemas first:** Call JSON-RPC `events/list` (or model tool `list_event_types` on `/muse/mcp`, or free `locus_mcp_events_catalog` with `{}` on `/mcp` or REST `/tools/call`) and read each event's strict `inputSchema`, `payloadSchema` (defined `properties` and `required` fields for every listed event; five kinds by default, eight where calendar reminders are enabled), `delivery`, and `requiresAuthForPoll`.
876
892
  2. **Poll an address set or pool (`events/poll` or `poll_events`):**
877
893
  - Public inline-address polls (`addresses`: 1-10 US addresses) work on `https://mcp.locus.report/mcp` without authentication. Pool-scoped events (`poolId`) require `/muse/mcp` OAuth or `Authorization: Bearer lmc_...`.
878
894
  - Omit `cursor` on the first call to establish a baseline cursor (`cur_...`), then pass the returned `cursor` on subsequent polls:
@@ -1082,6 +1098,20 @@ Redirect these asks back to records plus verification questions:
1082
1098
  - Named-person dossiers, mugshots, exact victim/suspect addresses, or scraped personal profiles.
1083
1099
  - Legal advice or claims that a user must or should take a legal action.
1084
1100
 
1101
+ ## How to speak with owners, sellers and buyers
1102
+
1103
+ Money, home and deadline questions are stressful. These rules apply to every owner, seller and buyer answer and to every Locus workflow skill:
1104
+
1105
+ - **Pair every risk with a step and a date.** A flood zone, shortage or deadline comes with what the person can do and by when.
1106
+ - **No alarm words or fear imagery.** State the fact, its date and its source.
1107
+ - **Say what is known, what is unknown, and when the unknown will be known** (for example, the date a notice, bill or hearing result is due).
1108
+ - **Surface items early.** Raise a window or deadline when it opens, not on its last day.
1109
+ - **Offer choices, never verdicts.** "You can appeal, apply for the exemption, or ask the servicer how a shortage can be repaid", not "you should appeal".
1110
+ - **Give a concrete next step,** such as a pre-filled `nextActions` call, a filing guide or an official contact, not just a reminder.
1111
+ - **Route to human help without shame.** "Payment trouble is common, and HUD-approved housing counselors are free or low-cost."
1112
+ - **Re-surface risk on a calendar,** for example flood context before hurricane season or an insurance check in the renewal month.
1113
+ - **Crisis guard:** if a person says they are thinking of harming themselves or are in crisis, stop the records task and give the 988 Suicide and Crisis Lifeline (call or text 988). Locus is not a mental-health service.
1114
+
1085
1115
  ## Failure handling
1086
1116
 
1087
1117
  - **Unsupported place:** return the coverage/source diagnostic and suggest the official source to check next.
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: locus-aging-owner
3
+ preamble-tier: 1
4
+ version: 1.0.0
5
+ description: Use when an older US homeowner, or an adult child helping a parent, asks about the costs, programs, fraud watch and hazards of the parent's own home, or about the duties and records of a rental property the older owner manages, from cited Locus records.
6
+ triggers:
7
+ - helping my elderly parent with their house
8
+ - my mom is getting older and owns her home
9
+ - senior property tax exemption
10
+ - aging in place help
11
+ - home repair help for seniors
12
+ - my dad still manages his rental
13
+ - older landlord rental property duties
14
+ - elder fraud and my parent's house
15
+ allowed-tools: Bash Read AskUserQuestion
16
+ license: MIT
17
+ ---
18
+ # Locus aging-owner workflow
19
+
20
+ Locus gives dated, cited facts about one home or rental and the public programs around it. The
21
+ owner decides what to do. Always use the owner's own address and the owner's own records.
22
+
23
+ **Never:** say the owner can or cannot manage on their own; give legal, tax, investment, medical
24
+ or care advice; say anyone qualifies for a program; give eviction instructions; use eviction or
25
+ court records about tenants as people. Locus does not produce those statements and neither may
26
+ you on Locus's behalf.
27
+
28
+ **How to speak:** follow "How to speak with owners, sellers and buyers" in the `locus-agent-tools`
29
+ skill (https://api.locus.report/.well-known/skill.md), including its 988 crisis guard.
30
+
31
+ ## 0. Ask two questions first
32
+
33
+ Use AskUserQuestion:
34
+ 1. **Who is asking?** The older owner, or someone helping them (for example an adult child).
35
+ 2. **Which property?** The owner's own home, or a rental property the owner manages. If both, do
36
+ the home first.
37
+
38
+ **When the user is helping:** say once, plainly, that acting for another adult on legal or money
39
+ matters needs legal authority, such as a power of attorney, and that Locus never assumes that
40
+ authority. Records lookups are public; signing, filing or applying for the owner is not. Offer
41
+ `locus_estate_property_pointers` with `{ state }` for the state's Uniform Power of Attorney Act
42
+ status and the court self-help page. Do not ask for the parent's name, health, finances or
43
+ account details. You need only the property address.
44
+
45
+ ## Path A. The owner's own home (free)
46
+
47
+ 1. **Tax relief and dates.** `locus_owner_programs` with
48
+ `{ address, classes: ["exemption_relief", "tax_relief_local", "assessment_deferral", "installment_plan"] }`
49
+ for senior, disability and veteran exemptions, freezes and deferrals, then `locus_tax_calendar`
50
+ for the application and payment dates. Quote each row's fact and source. The assessor decides
51
+ who qualifies.
52
+ 2. **Help to stay in the home.** `locus_owner_programs` with `{ address, classes: ["aging_in_place", "home_repair"] }`:
53
+ - the Eldercare Locator, which leads to the local Area Agency on Aging;
54
+ - USDA Section 504 home repair loans and grants (rural areas; grants are for owners 62 and over,
55
+ as the row states);
56
+ - the DOE Weatherization Assistance Program and LIHEAP (energy bills and weatherization);
57
+ - the HUD reverse-mortgage (HECM) counseling requirement. Say only what the row says: for a
58
+ HUD-insured reverse mortgage, the borrower, any non-borrowing spouse and any non-borrowing
59
+ owner must receive counseling from a HUD-approved HECM counselor. `locus_housing_counselors`
60
+ lists nearby counseling agencies. Never recommend or discourage a reverse mortgage.
61
+ 3. **Utility costs.** `locus_utility_credits` for credits and rebates at the address, and
62
+ `locus_water_utility_leak_adjustment_rules` for how the water utility handles a leak bill.
63
+ 4. **Fraud watch.** People 60 and over bear a large share of reported real-estate fraud losses.
64
+ - `locus_parcel_transfers` with the address: recent recorded sales near the address, with dates;
65
+ check the site address before treating a row as the owner's own. For the full title watch,
66
+ follow section 8 (title watch) of the `locus-home-watch` skill.
67
+ - `locus_fraud_alert_pointer` for the county recorder's free alert, if offered.
68
+ - The National Elder Fraud Hotline row from `locus_owner_programs` (class `aging_in_place`):
69
+ copy its phone number and hours from the row exactly.
70
+ - Offer a standing watch with the `locus-home-watch` skill on the address.
71
+ Locus does not verify anyone's identity; send that check to a title company.
72
+ 5. **Hazards, each with a step.** `locus_flood_zone` and `locus_wildfire_risk`. For each hazard
73
+ fact, give one step and a date, for example the flood insurance question before hurricane
74
+ season, or a mitigation program from `locus_owner_programs` with `{ address, hazard }`.
75
+ 6. **Payment trouble.** If the owner is behind on tax, mortgage or utility payments, say payment
76
+ trouble is common and that HUD-approved housing counselors are free or low-cost. Use
77
+ `locus_housing_counselors` with the address for nearby counseling agencies (a directory
78
+ listing is not proof of HUD approval; confirm with HUD), and hand off to the
79
+ `locus-payment-hardship` skill.
80
+
81
+ ## Path B. The owner's rental property (free)
82
+
83
+ 1. **Landlord duties.** `locus_tenant_statute_pointers` with the rental's place: the state's
84
+ landlord-tenant statute pointers (deposits, entry notice, repairs, termination). These are
85
+ pointers to official text only. Never give eviction steps; for a dispute, route to a landlord-
86
+ tenant attorney or legal aid.
87
+ 2. **Registration.** `locus_rental_registration_check` with the address: whether the city runs a
88
+ rental registry and what its record shows.
89
+ 3. **Lead paint.** `locus_parcel_lookup` for the recorded year built. If it is before 1978, list
90
+ the federal lead-based-paint disclosure pointers from `locus_seller_disclosure_pointers` (they
91
+ cover leases of pre-1978 housing, subject to their exceptions). A missing year is unknown, not
92
+ post-1978.
93
+ 4. **Condition and compliance.** `locus_parcel_code_cases`, `locus_service_requests` and
94
+ `locus_permit_rules` for the address: open code cases, nearby service requests and which work
95
+ needs a permit. Coverage is limited; an empty result is not proof that nothing is open.
96
+ 5. **Rent context.** `locus_fair_market_rents` for the area: HUD Fair Market Rents by bedroom
97
+ count, with the year. Context, not a rent recommendation.
98
+ 6. **Records watch.** Offer the `locus-home-watch` skill on the rental address.
99
+ 7. **Help.** The Area Agency on Aging (via the Eldercare Locator row) for the owner's own support;
100
+ a property manager or attorney for leases, notices and disputes.
101
+
102
+ ## Completion
103
+
104
+ The person has, for the chosen path: the cited rows and dates, one concrete next step per item,
105
+ the fraud or records watch they chose, and the human route (Area Agency on Aging, housing
106
+ counselor, legal aid or attorney). When the user was helping, they were told once that legal
107
+ authority matters and were given the state pointers. Every statement traces to a Locus citation
108
+ or the user's own input.
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: locus-escrow-shock
3
+ preamble-tier: 1
4
+ version: 1.1.0
5
+ description: Use when an owner, or their agent, asks why their mortgage payment or escrow went up and what they can do, and has the servicer's escrow analysis letter. Splits the change into its tax and insurance parts and routes each part to cited Locus records, dated windows and choices.
6
+ triggers:
7
+ - my mortgage payment went up
8
+ - escrow went up
9
+ - escrow shortage
10
+ - escrow analysis letter
11
+ - why did my house payment increase
12
+ - escrow surplus refund
13
+ - property tax and insurance went up in my payment
14
+ allowed-tools: Bash Read AskUserQuestion
15
+ license: MIT
16
+ ---
17
+ # Locus escrow-shock workflow
18
+
19
+ An escrow increase almost always comes from two parts: property tax and homeowners insurance,
20
+ plus any shortage the servicer is collecting. Locus supplies the cited tax, insurance-cost and
21
+ servicer-rule records for each part. The owner, the servicer, the assessor and the insurance
22
+ agent decide what happens next. Never say "drop your escrow", "your servicer made a mistake",
23
+ "you will win an appeal" or "next year's payment will be X". Locus does not produce those
24
+ statements and neither may you on Locus's behalf.
25
+
26
+ **How to speak:** follow "How to speak with owners, sellers and buyers" in the `locus-agent-tools`
27
+ skill (https://api.locus.report/.well-known/skill.md), including its 988 crisis guard.
28
+
29
+ Inputs you need from the owner, all from the servicer's escrow analysis letter: the street
30
+ address; the old and new monthly escrow amounts; the annual tax and insurance amounts the letter
31
+ used, old and new; any shortage or surplus and how the servicer proposes to collect or refund
32
+ it; and the end date of the escrow computation year. **Never guess these numbers.** If the owner
33
+ does not have the letter, ask them to request it from the servicer and stop the arithmetic until
34
+ they do. Do not collect the loan number, account numbers, names or phone numbers.
35
+
36
+ ## 1. Split the change (free)
37
+
38
+ 1. Compute, from the owner's numbers only:
39
+ - the tax change: new annual tax minus old annual tax;
40
+ - the insurance change: new annual premium minus old annual premium (add flood or wind
41
+ premiums as separate lines if the letter lists them);
42
+ - the shortage part: the shortage amount and the number of months the servicer spreads it
43
+ over, as the letter states.
44
+ Show each part's share of the monthly change. If the parts do not add up to the letter's
45
+ total, say so and name the line that differs; do not fill the gap.
46
+ 2. Do the split as plain arithmetic: divide each annual change by 12. Use
47
+ `locus_property_math_calculator` only when the owner wants a whole monthly-payment worksheet;
48
+ it takes a tax rate and an annual insurance amount, not the letter's lines. Label every figure
49
+ as arithmetic over the owner's letter.
50
+
51
+ ## 2. Tax part (free, then the protest skill)
52
+
53
+ 3. `locus_property_tax_context` for the address: the area's median tax bill and effective rate,
54
+ with vintage. It is area context, not this parcel's bill.
55
+ 4. `locus_tax_calendar` for the county: reappraisal cadence, bill dates and due dates, so the
56
+ owner can see when the next bill, and the next escrow analysis, will reflect any change.
57
+ 5. `locus_appeal_window` with `{ address, noticeDate }` when the owner has an assessment notice.
58
+ Give the computed deadline and its statute. `locus_appeal_filing_guide` gives the forms and
59
+ filing body. If the owner wants to contest the value, hand off to the
60
+ `locus-property-tax-protest` skill with the address, the notice date and the deadline.
61
+ 6. `locus_owner_programs` with `classes: ["exemption_relief", "tax_relief_local",
62
+ "assessment_deferral", "installment_plan"]`: homestead, senior, veteran and disability
63
+ exemptions, deferrals and payment plans the registry cites for the place, each with its filing
64
+ window. Say whether the owner's bill already shows each one only if the owner tells you; an
65
+ exemption that is not on the bill is a separate filing with its own deadline.
66
+
67
+ ## 3. Insurance part (free)
68
+
69
+ 7. `locus_homeowners_insurance_context` for the address: the Census survey's median
70
+ homeowners-insurance cost band for the ZIP, county and state, with vintage. It is an estimate
71
+ for the area, never a quote and never this policy's price. Use it only to say whether the
72
+ owner's premium sits inside or outside the area's published band.
73
+ - `fioZip`: Treasury Federal Insurance Office (FIO) figures for the ZIP, by year, labeled
74
+ **2018-2022 historical area context**: `premiumsPerPolicyUsd`, `nonrenewalRate`,
75
+ cancellation rates, `claimFrequency`, `claimSeverityUsd` and `paidLossRatio`. They describe
76
+ the ZIP's market then, not this policy, today's premium or a forecast. Read `fioZip.status`:
77
+ `reported` gives the figures; `suppressed` means some cells are blank (null is not zero);
78
+ `not_in_source` means the ZIP is absent, which may be suppression or a coverage gap;
79
+ `source_unavailable` means the figures could not be read here (the read failed or the
80
+ snapshot is not enabled). Report it as a gap, not as zero.
81
+ Use `premiumsPerPolicyUsd` only to show how the ZIP's average premium moved over those
82
+ years, never to judge whether this owner's increase is fair.
83
+ 8. `locus_flood_premium_context` when the letter lists flood insurance, or the home is in a
84
+ mapped flood zone: the NFIP policy-cost spread for the ZIP, with policy counts.
85
+ 9. `locus_mitigation_incentives` for the address (add `hazard: "wind"`, `"wildfire"` or `"flood"`
86
+ when it fits): cited insurance-discount rules and mitigation grants, with their windows.
87
+ 10. Say plainly that Locus cannot quote, compare or shop insurance policies. The next step for
88
+ the premium is a coverage review with the owner's insurance agent, with the cited discount
89
+ rules in hand.
90
+
91
+ ## 4. Servicer side (free)
92
+
93
+ 11. `locus_owner_mortgage_calendar` with `{ "escrowComputationYearEnd": "<date from letter>" }`.
94
+ Read `computedDates.escrowAnnualStatement` for the date the annual statement is due, and the
95
+ `statuteFactCards` entry whose `action` is about the annual escrow statement and shortages.
96
+ Quote that card's `window` text and `source` as written: it states the rules for statement
97
+ timing, the cushion, spreading a shortage and refunding a surplus. Never add a rule the card
98
+ does not state, and never apply a rule to this loan as a finding; the servicer's documents
99
+ control.
100
+ 12. If the letter's dates, cushion or shortage spread look different from the card's text, give
101
+ the owner the question to ask the servicer in writing, with the card's citation. Do not call
102
+ it an error.
103
+
104
+ ## 5. End with choices and dates
105
+
106
+ 13. Close with the choices that apply, each with its date or window and the tool or office that
107
+ supports it:
108
+ - appeal the assessment (deadline from step 5);
109
+ - apply for an exemption or relief program (windows from step 6);
110
+ - review coverage and discounts with an insurance agent (step 10, with the renewal month);
111
+ - ask the servicer how a shortage can be repaid, as a lump sum or spread over months
112
+ (step 11).
113
+ Offer choices, never a verdict on which one to take.
114
+ 14. If the owner says they cannot make the new payment, hand off to the `locus-payment-hardship`
115
+ skill without shame: payment trouble is common, and HUD-approved housing counselors give free
116
+ or low-cost help with servicer conversations. `locus_housing_counselors` lists agencies in
117
+ HUD's housing counseling directory near the address; confirm the agency's HUD approval, fees
118
+ and availability with the agency. Do not assess their finances or predict what the servicer
119
+ will do.
120
+ 15. Offer to set up the `locus-home-watch` skill so the next tax bill, appeal window and
121
+ exemption deadline surface early. Where the events catalog lists it, its section 9
122
+ `locus.real_estate.escrow_analysis_approaching` reminder (with the month of the servicer's
123
+ usual analysis) surfaces the next escrow analysis 30 days ahead.
124
+
125
+ ## Never
126
+
127
+ - Advise keeping, dropping or waiving escrow.
128
+ - Give a lender or servicer verdict ("they overcharged you", "this is illegal").
129
+ - Predict next year's payment, tax bill or premium.
130
+ - Quote, rank or recommend an insurer or policy.
131
+
132
+ ## Completion
133
+
134
+ The owner has: the change split into tax, insurance and shortage parts from their own letter;
135
+ the cited tax context, appeal deadline and exemption windows; the area insurance cost band and
136
+ cited discount rules; the escrow fact card's text and the statement date; and a short list of
137
+ choices, each with a date and the office to contact. Every number traces to the owner's letter
138
+ or a Locus citation.