@velinussage/locus-agent-skill 0.1.35 → 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 +6 -3
- package/bin/locus-agent-skill.js +2 -2
- package/package.json +2 -2
- package/skill/locus-agent-tools/SKILL.md +161 -21
- package/skill/locus-aging-owner/SKILL.md +108 -0
- package/skill/locus-escrow-shock/SKILL.md +138 -0
- package/skill/locus-home-watch/SKILL.md +202 -0
- package/skill/locus-inherited-home/SKILL.md +105 -0
- package/skill/locus-insurance-nonrenewal/SKILL.md +111 -0
- package/skill/locus-payment-hardship/SKILL.md +71 -0
- package/skill/locus-property-tax-protest/SKILL.md +4 -1
- package/skill/locus-seller-readiness/SKILL.md +112 -0
- package/skill/locus-water-incident/SKILL.md +173 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://skills.sh/velinussage/locus-agent-skill)
|
|
4
4
|
|
|
5
|
-
Install
|
|
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/`,
|
|
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
|
-
-
|
|
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
|
|
package/bin/locus-agent-skill.js
CHANGED
|
@@ -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,
|
|
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.
|
|
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": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"url": "git+https://github.com/velinussage/locus.git",
|
|
20
20
|
"directory": "packages/locus-agent-skill"
|
|
21
21
|
},
|
|
22
|
-
"homepage": "https://
|
|
22
|
+
"homepage": "https://api.locus.report/.well-known/skill.md",
|
|
23
23
|
"bugs": {
|
|
24
24
|
"url": "https://github.com/velinussage/locus/issues"
|
|
25
25
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: locus-agent-tools
|
|
3
3
|
preamble-tier: 1
|
|
4
|
-
version: 1.
|
|
5
|
-
description: Use
|
|
4
|
+
version: 1.66.0
|
|
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
|
|
8
8
|
- flood zone
|
|
@@ -19,12 +19,21 @@ triggers:
|
|
|
19
19
|
- before you sign
|
|
20
20
|
- what changed at this address
|
|
21
21
|
- local government records
|
|
22
|
+
- planning meetings and agendas
|
|
23
|
+
- budgets and audits
|
|
24
|
+
- county data series
|
|
25
|
+
- compare dated county observations across places
|
|
26
|
+
- discover local data sources
|
|
22
27
|
- locus agent tools
|
|
23
28
|
- mcp or rest for locus
|
|
24
29
|
- a2a locus
|
|
30
|
+
- mcp events
|
|
31
|
+
- subscribe to property changes
|
|
32
|
+
- watch address for permits or deadlines
|
|
33
|
+
- real estate webhook notifications
|
|
25
34
|
allowed-tools: Bash Read AskUserQuestion
|
|
26
35
|
license: MIT
|
|
27
|
-
contentHash:
|
|
36
|
+
contentHash: c714bcb0c789
|
|
28
37
|
---
|
|
29
38
|
|
|
30
39
|
# Locus Agent Capabilities
|
|
@@ -35,7 +44,7 @@ Locus returns awareness and verification steps, not a verdict. Do not score, ran
|
|
|
35
44
|
|
|
36
45
|
## Check for updates
|
|
37
46
|
|
|
38
|
-
On first use in each session, fetch `https://
|
|
47
|
+
On first use in each session, fetch `https://api.locus.report/.well-known/skill.md` and read its `version:` line. Compare it with the installed copy's version. If the served version is newer, tell the user and suggest `npx @velinussage/locus-agent-skill@latest add` (or `npx skills add velinussage/locus-agent-skill --skill locus-agent-tools`). Do not install without approval.
|
|
39
48
|
|
|
40
49
|
## Start with Locus, not a portal scrape
|
|
41
50
|
|
|
@@ -72,7 +81,7 @@ A **Preview** returns a bounded public-record lookup. Use it when that lookup an
|
|
|
72
81
|
- **Start with `locus_place_facts` when lane availability says it is available.** It is the one-call address bundle for supported parcel areas: parcel facts, FEMA flood zone, governing districts, transportation context, and tax context where wired.
|
|
73
82
|
- **Use `locus_lane_availability` before paid calls.** Summary mode gives a short native-product shortlist. Use `detailLevel: "full"` or the paid index for exact paid-only atomic buy signals.
|
|
74
83
|
- **Treat partial trend coverage as a check-first signal.** `supported_partial` trend places appear in `lanes.varies` with low paid substance; buy `locus-local-trend-brief` only when `buyRecommendations[].substanceHere` is `medium` or better. Thin exact-radius results can return a `charged:false` data-sufficiency diagnostic instead of a paid brief.
|
|
75
|
-
- **The paid catalog mixes native paid tools, promoted dual-rail routes, and paid-only atomic routes.** Read `GET /.well-known/locus-tools.json` for the current set and count. Rollout-gated tools appear in the live catalog only when configured. Six paid-only atomics cost $0.01: `locus-workplace-employment-context`, `locus-wikimedia-commons-area-context`, `locus-wikipedia-place-context`, `locus-pfas-occurrence`, `locus-nei-emissions-nearby`, and `locus-electricity-context`. The paid-only `locus-evaluation-packet` costs $0.35. They use x402 over REST and have no free underscore, MCP, or A2A counterpart. Read the live challenge for exact price, chain, asset, recipient, and schema before payment.
|
|
84
|
+
- **The paid catalog mixes native paid tools, promoted dual-rail routes, and paid-only atomic routes.** Read `GET /.well-known/locus-tools.json` for the current set and count. Rollout-gated tools appear in the live catalog only when configured. Six paid-only atomics cost $0.01: `locus-workplace-employment-context`, `locus-wikimedia-commons-area-context`, `locus-wikipedia-place-context`, `locus-pfas-occurrence`, `locus-nei-emissions-nearby`, and `locus-electricity-context`. The paid-only `locus-legistar-property-meetings` costs $0.05. The paid-only `locus-evaluation-packet` costs $0.35. They use x402 over REST and have no free underscore, MCP, or A2A counterpart. Read the live challenge for exact price, chain, asset, recipient, and schema before payment.
|
|
76
85
|
- **Never plan against a count written in this guide.** This file is installed on disk and cannot track tools as they land, so it states no catalog totals. `GET /tools/list` (free rail) and `GET /.well-known/locus-tools.json` (full catalog) are the only authorities for what exists, what it costs, and what is enabled for a given deployment.
|
|
77
86
|
- **Paid reports are async-grade, not click-and-wait.** A full `locus-place-report` takes 60-120 seconds; set a 120-second client timeout. A failed call (502/503 or timeout) is never charged: settlement only runs after the artifact is ready, so retrying is safe. For unattended runs use `locus-place-report-batch` (one settlement, poll the job) instead of tight synchronous retries.
|
|
78
87
|
- **For an owner revaluation, start free.** Check `locus_tax_calendar` and `locus_appeal_filing_guide` before a supported tax estimate. Use `locus_appeal_window` for deadline arithmetic when the notice date is known. Consider paid follow-ups only for a remaining question, after approval; do not advise whether to appeal.
|
|
@@ -86,6 +95,8 @@ Install this skill in Codex-style agents:
|
|
|
86
95
|
npx @velinussage/locus-agent-skill add
|
|
87
96
|
```
|
|
88
97
|
|
|
98
|
+
For MCP event discovery, call free `locus_mcp_events_catalog` with `{}`. It returns public event names, authentication guidance, method pointers and `skill://locus/subscribing-to-locus-events`; use live `events/list` for authoritative event input and payload schemas. Polling and subscriptions are separate operations, not side effects of reading this catalog.
|
|
99
|
+
|
|
89
100
|
Remote MCP server:
|
|
90
101
|
|
|
91
102
|
```json
|
|
@@ -151,7 +162,7 @@ Install the Locus skill separately with `npx @velinussage/locus-agent-skill@late
|
|
|
151
162
|
|
|
152
163
|
Read the live challenge and ask before every payment. Keep the settlement receipt.
|
|
153
164
|
|
|
154
|
-
For broad requests, start with the current bundles in the top-agent manifest. For exact lanes, use the full catalog. A paid entry has a free underscore route only when it publishes `dualFreeTool` or a free `counterparts[]` entry.
|
|
165
|
+
For broad requests, start with the current bundles in the top-agent manifest. For exact lanes, use the full catalog. A paid entry has a free underscore route only when it publishes `dualFreeTool` or a free `counterparts[]` entry. Paid-only atomics do not. Free executor names use underscores (`locus_zoning`); paid REST slugs use hyphens (`locus-zoning`). Execute the entry's exact `callName`.
|
|
155
166
|
|
|
156
167
|
The live catalogs are authoritative for tool names, schemas, prices, and endpoints. Do not copy stale tool definitions into prompts.
|
|
157
168
|
|
|
@@ -161,9 +172,11 @@ This route is rollout-gated. Call it only when `locus-surrounding-area-analysis`
|
|
|
161
172
|
|
|
162
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.
|
|
163
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
|
+
|
|
164
177
|
## Workflow and coverage tools, know the difference
|
|
165
178
|
|
|
166
|
-
- **`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`, and `
|
|
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.
|
|
167
180
|
- **`locus_coverage_check { "place": "..." }`** asks whether Locus has source coverage for a jurisdiction at all. Use it for a broad city, county, ZIP, or address scope check.
|
|
168
181
|
- **`locus_lane_availability { "place": "..." }`** is the per-address capability map. It returns which exact tools are national, local, varies, not covered, or degraded, plus buy signals for paid tools. Call this before address-specific local lanes and before paying.
|
|
169
182
|
- **`locus_coverage_map {}`** returns the whole registry view. Use it when an agent needs breadth, not one address.
|
|
@@ -177,7 +190,17 @@ When the buyer wants more than the free `locus_surrounding_parcels` primitive an
|
|
|
177
190
|
- `area_operating_context` is supplemental. It cannot make a thin exact-premises packet chargeable.
|
|
178
191
|
- Choose `locus_nearby_places` for free current mapped amenities. Paid `locus-wikipedia-place-context` runs topic-agnostic geosearch, so it may return places, institutions, events, or people. Use it only as community reference research; never turn person-topic articles into property, resident, customer, screening, or neighborhood claims. Use paid `locus-wikimedia-commons-area-context` for nearby media license metadata and attribution leads.
|
|
179
192
|
- Commons items remain `nearby_context`. Proximity does not prove that media depicts the premises or represents the area. Metadata is not reuse permission. Verify storage, transformation, redistribution, attribution, and share-alike rights before reuse.
|
|
193
|
+
- **Official fiscal source research:** Call free `locus_fiscal_source_guide { "place": "Raleigh, NC" }` (or `{ "place": "Wake County, NC" }`) for national and resolved local government document leads plus a parsing guide. An empty `observations[]` is normal, not a failed lookup: the guide does not fetch documents or report numeric figures. Confirm the reporting government before extracting figures from the originals; retain the document edition, page or cell, period, units, accounting basis, and retrieval time in a caller-owned ledger. For a cross-county city, provide an exact address or confirmed county before assigning local links.
|
|
180
194
|
- Before offering `locus-local-fiscal-context`, call `locus_lane_availability` with `detailLevel: "full"` and inspect that exact paid-tool entry. It states whether an active verified fiscal snapshot exists and explains when a paid call would return `charged:false` because the snapshot is missing, stale, or thin. `locus_coverage_check` points to this capability map but does not affirm every available paid lane.
|
|
195
|
+
- **Local fiscal revenue series:** When a commercial borrower, owner, or civic researcher asks how local government receipts changed, check the live paid catalog and exact fiscal snapshot availability. After separate payment approval, read `revenueSeries` by jurisdiction, reporting period, measure, kind, publication date, and official source. `property_tax_levy` is billed/levied, `property_tax_collected` and `property_tax_revenue` are reported actuals on their stated basis, `taxable_assessed_value` is a tax base, and `sales_tax_distribution` is a government distribution—not Raleigh retail sales. Use `revenueChanges` only when the tool has verified comparable periods; revaluations, rate changes, allocation changes, and accounting changes can make an apparent change noncomparable. An unreviewed collection or a source pointer is not active numeric coverage.
|
|
196
|
+
- **Official documents when the fiscal snapshot is missing:** Use free `locus_fiscal_source_guide` to find scoped official leads without attempting payment; if a paid preflight has already returned `charged:false` with `no_active_snapshot`, its `verifyNext` links may also point to Raleigh annual reports, NC distribution workbooks and memos, or Wake tax-base and levy indexes. Agents may parse those originals for the user's question without calling the paid tool again. Label extracted figures as your own unreviewed observations, and cite the exact document, page or cell, period, units, and jurisdiction. Raleigh citywide figures are not Wake County figures; NC distributions to governments are not retail sales. Do not label source links or your parsing as an active Locus fiscal series, infer a comparable year-over-year change without checked definitions, or charge for absent numeric coverage.
|
|
197
|
+
- **Second-order context:** If the question also concerns refinancing and construction, obtain the county `locus-cmbs-maturity-wall` only after its own payment approval, and use `locus_development_cases` separately where covered. Align each tool's geography and report date; show their dated observations side by side. Neither series establishes why another moved or predicts this property's finances.
|
|
198
|
+
|
|
199
|
+
## Comparing dated evidence across places
|
|
200
|
+
|
|
201
|
+
When a user asks how several centers are changing, let their question select the measures. Check the live catalog for independent source primitives, such as `locus_acs_living_arrangements_series`, `locus_cbp_county_industry_series` (caller selects the industry), or `locus_office_source_guide` (office-report leads, not vacancy measurements). Run only relevant tools; resolve each center's geography before joining records. Ask which county the user means when a city spans counties.
|
|
202
|
+
|
|
203
|
+
Keep a caller-owned evidence ledger with each observation's geography, measure, source edition and year, value and units, record ID, source URL, retrieval time, and source caveats. Record missing, suppressed, and unavailable cells as gaps, not zeros. Compare only like geographies and definitions; distinguish revised source data from change on the ground. Give the user's agent the dated records and unresolved questions to interpret, without encoding their thesis, private destinations, a place score, or a recommended investment in Locus.
|
|
181
204
|
|
|
182
205
|
## Commercial property and public CMBS filings
|
|
183
206
|
|
|
@@ -203,7 +226,7 @@ When the buyer wants more than the free `locus_surrounding_parcels` primitive an
|
|
|
203
226
|
3. **Resolve the exact place first.** Call `locus_coverage_check` and `locus_lane_availability` with the exact user string. Compare the resolved jurisdiction to any user-supplied city/county/state.
|
|
204
227
|
4. **For a broad address question, call `locus_place_facts` first if available.** It often replaces several separate calls. If lane availability marks it not covered, fall back to national free tools or parcel-only mode.
|
|
205
228
|
5. **For local depth, check availability for the exact place.** Follow the lane's `access` value. A paid-only `varies` lane still needs approval, but returns `charged:false` when it cannot provide substantive data.
|
|
206
|
-
6. **Run the smallest tool by intent.** Use each transport's own catalog.
|
|
229
|
+
6. **Run the smallest tool by intent.** Use each transport's own catalog. Paid-only atomics use `POST /api/<hyphenated-slug>` over REST.
|
|
207
230
|
7. **Ground every fact.** Check the returned state, county, municipality, and data vintage against the question before using a record. Mark mismatches or old layers as such, not current facts. Include source names, links or locators, fetched timestamps where present, and caveats.
|
|
208
231
|
8. **Pay only on explicit authorization.** A paid tool returns an x402 challenge. Show price, chain, recipient, and tool, then retry only after the user approves.
|
|
209
232
|
9. **Follow property-update diagnostics exactly.** On `409 clarification_required`, inspect the response before retrying. If `retryInput` is present, ask the user to confirm the matched subject and then resend that object as the next request. If `retryInput` is absent, ask the user for a corrected exact address and construct a new request from it. Never resend the original ambiguous address. On `insufficient_current_context`, use the returned wider radius or choose one of `alternativeTools`; those alternatives are separate paid calls and still require their own preflight and authorization.
|
|
@@ -242,7 +265,7 @@ Trimmed response example for a rural Montana ZIP:
|
|
|
242
265
|
{ "tool": "locus_flood_zone", "what": "FEMA flood-zone designation at the point", "access": "free" },
|
|
243
266
|
{ "tool": "locus_flood_determination_inputs", "what": "SFHDF form inputs: NFIP community, FIRM panel and date, zone, LOMA/LOMR, CBRS status", "access": "free" },
|
|
244
267
|
{ "tool": "locus_flood_premium_context", "what": "NFIP policy-cost distribution for policies in force in the ZIP (estimate, not a quote)", "access": "free" },
|
|
245
|
-
{ "tool": "locus_homeowners_insurance_context", "what": "ACS
|
|
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" },
|
|
246
269
|
{ "tool": "locus_property_tax_context", "what": "ACS effective property-tax rate and median bill by ZIP, county, state (estimate)", "access": "free" },
|
|
247
270
|
{ "tool": "locus_market_context", "what": "County listing price, inventory, days on market (FRED) plus ACS value and rent (estimate)", "access": "free" },
|
|
248
271
|
{ "tool": "locus_rebuild_cost_context", "what": "County permit valuation per unit trended by construction PPI as a labeled rebuild-cost proxy", "access": "free" },
|
|
@@ -289,8 +312,9 @@ Use the exact JSON shapes below as safe defaults. If a tool also accepts `latitu
|
|
|
289
312
|
| What helped or was confusing | `locus_agent_feedback` | `{ "kind": "ux_gap", "target": "locus_lane_availability", "summary": "The varies bucket is easy to treat as available" }` | Product note only. Summary up to 1,000 characters. Set `target` (aliases `tool`, `toolName`). Also `POST /feedback`. |
|
|
290
313
|
| Inspect official source cards | `locus_source_card_check` | `{ "place": "Raleigh, NC" }` or `{ "jurisdiction": "us-nc-raleigh" }` or `{ "cardId": "us-nc-durham:permits" }` | Source-card status, provenance, endpoint, verification method, timestamp. |
|
|
291
314
|
| Verify a citation URL | `locus_verify_citation` | `{ "sourceUrl": "https://...", "recordId": "optional", "jurisdiction": "optional" }` | Whether a citation matches a known source card, with provenance context. |
|
|
292
|
-
| What policy sources govern here? | `locus_policy_sources` | `{ "place": "Raleigh, NC" }` | State, county, city policy-source list, legal geographies, source links. |
|
|
315
|
+
| What policy sources govern here? | `locus_policy_sources` | `{ "place": "Raleigh, NC" }` or `{ "place": "Raleigh, NC", "liveSearch": true }` | State, county, city policy-source list, legal geographies, source links, and optional operator-enabled Gov-Index pointer discovery (`govIndex`). |
|
|
293
316
|
| Read aggregate coverage demand | `locus_coverage_demand` | `{}` | Aggregate requested-coverage demand, not place records. |
|
|
317
|
+
| Discover dynamic MCP real-estate events | `locus_mcp_events_catalog` | `{}` | Public MCP Events catalog: event names, parameter/payload summaries, delivery modes (`poll`, `webhook`), auth rules, and `skill://locus/subscribing-to-locus-events` pointer. |
|
|
294
318
|
|
|
295
319
|
### High-value property workflows
|
|
296
320
|
|
|
@@ -454,7 +478,7 @@ the rule as numbers. Fix what the note names and resend; a refusal is never char
|
|
|
454
478
|
| The question | Tool | Exact arguments | What it returns |
|
|
455
479
|
|---|---|---|---|
|
|
456
480
|
| Give me one broad free snapshot for this address | `locus_place_facts` | `{ "address": "1 E Edenton St, Raleigh, NC 27601" }` | One-call bundle: parcel facts where wired, FEMA flood zone, governing districts, transportation context, property-tax context where wired, citations, and caveats. Start here when available. |
|
|
457
|
-
| Parcel facts only | `locus_parcel_lookup` | `{ "address": "123 Oak Park Dr, Cary, NC 27519" }` | PII-safe parcel or place facts such as land use, acreage, year built where present, derived county/municipality, provenance. |
|
|
481
|
+
| Parcel facts only | `locus_parcel_lookup` | `{ "address": "123 Oak Park Dr, Cary, NC 27519" }` | PII-safe parcel or place facts such as land use, acreage, year built where present, derived county/municipality, provenance. For neighboring parcels, use free `locus_surrounding_parcels` (see Surrounding parcel context below). |
|
|
458
482
|
| Multiple caller-supplied parcels | `locus_parcel_set` | `{ "addresses": ["addr 1", "addr 2"] }` | Normalized facts for up to 25 supplied addresses in an assemblage. |
|
|
459
483
|
| Which public-record checks should I run before site diligence? | `locus_predevelopment_feasibility` | `{ "address": "...", "projectType": "multifamily" }` | Ordered Locus-tool and official-source plan for parcel/zoning, entitlements, utilities, access, environmental constraints, policy, fees, and permits. Prompt-mode; does not decide feasibility. |
|
|
460
484
|
| Find candidate-site research paths for an area/spec | `locus_development_site_discovery` | `{ "area": "Wake County, NC", "projectType": "industrial" }` | Open-ended candidate-parcel discovery source map. Does not execute searches, select a parcel, or rank sites. |
|
|
@@ -466,16 +490,19 @@ These work for geocodable US addresses at no cost. Some accept address directly.
|
|
|
466
490
|
|
|
467
491
|
| The question | Tool | Exact arguments | What it returns |
|
|
468
492
|
|---|---|---|---|
|
|
493
|
+
| Fixed-rate payment and carrying-cost worksheet | `locus_property_math_calculator` | `{ "purchasePrice": 500000, "interestRatePercent": 6.5, "annualPropertyTaxRatePercent": 1.2 }` | Monthly principal/interest, tax, insurance and HOA arithmetic, lifetime interest, and optional closing-cost break-even. Defaults to 20% down with a source label; missing tax assumptions stay unknown. Optional location adds tax context and transfer/recording schedule pointers. Not a loan quote or affordability verdict. Also available on the $0.01 `locus-piti-transfer-tax-calculator` route. |
|
|
494
|
+
| Municipal bond and district disclosure sources | `locus_muni_bond_disclosures` | `{ "place": "Wake County, NC" }` or `{ "state": "TX", "county": "Harris" }` | Jurisdiction-verified EMMA, official debt/audit/FAC pointers, bounded TX county levy candidates and source-search queries. Verification describes the place match, not an issuer or fetched filing. State-only input is too coarse. No debt assignment or credit conclusion; use returned Locus next-tool pointers for further research. Also available on the $0.01 `locus-special-district-debt-brief` route. |
|
|
469
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. |
|
|
470
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. |
|
|
471
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. |
|
|
472
|
-
| 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. |
|
|
473
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. |
|
|
474
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. |
|
|
475
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. |
|
|
476
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. |
|
|
477
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. |
|
|
478
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. |
|
|
479
506
|
| Governing districts | `locus_governing_districts` | `{ "address": "..." }` | Congressional, state senate, state house, county, municipality, and other governing geographies when resolved. |
|
|
480
507
|
| Representatives | `locus_representatives` | `{ "address": "..." }` | Cited federal and state officials for the address, districts, party/office/contact links where available. |
|
|
481
508
|
| Wildfire risk | `locus_wildfire_risk` | `{ "address": "..." }` | FEMA NRI tract-level wildfire rating, score, expected annual loss fields where returned, provenance, caveats. |
|
|
@@ -486,7 +513,9 @@ These work for geocodable US addresses at no cost. Some accept address directly.
|
|
|
486
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. |
|
|
487
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. |
|
|
488
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. |
|
|
489
|
-
|
|
|
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. |
|
|
490
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. |
|
|
491
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. |
|
|
492
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. |
|
|
@@ -496,6 +525,8 @@ These work for geocodable US addresses at no cost. Some accept address directly.
|
|
|
496
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. |
|
|
497
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. |
|
|
498
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. |
|
|
499
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. |
|
|
500
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. |
|
|
501
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. |
|
|
@@ -517,12 +548,12 @@ These work for geocodable US addresses at no cost. Some accept address directly.
|
|
|
517
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. |
|
|
518
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. |
|
|
519
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. |
|
|
520
|
-
| 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.
|
|
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. |
|
|
521
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. |
|
|
522
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`. |
|
|
523
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). |
|
|
524
555
|
| Data-center or large-development watch prompts | `locus_data_center_watch` | `{ "address": "..." }` or `{ "state": "NC", "county": "Wake County", "municipality": "Raleigh" }` | Bounded official-source query pack and lead-discovery prompts for large projects, data centers, utility/water/planning sources. |
|
|
525
|
-
| Local ordinance and storefront-process leads | `locus_ordinance_leads` | `{ "address": "...", "topics": ["occupancy", "fee_schedule", "signage", "sidewalk_cafe", "published_review_timeline"] }` or `{ "place": "Raleigh, NC" }` | Jurisdiction-locked first-party query pack
|
|
556
|
+
| Local ordinance and storefront-process leads | `locus_ordinance_leads` | `{ "address": "...", "topics": ["occupancy", "fee_schedule", "signage", "sidewalk_cafe", "published_review_timeline"] }` or `{ "place": "Raleigh, NC", "liveSearch": true }` | Jurisdiction-locked first-party query pack, reviewed process pointers, and optional operator-enabled Gov-Index pointer discovery (`govIndex`). Numeric fees/timelines require an exact dated official source; published timelines are guidance, not predictions. Leads only, no restricted code body, not legal advice. |
|
|
526
557
|
| Coastal county catalog | `locus_coastal_county_catalog` | `{}` or `{ "county": "new-hanover-nc" }` | Catalog of supported coastal source packs, overlays, source leads, and limitations. |
|
|
527
558
|
|
|
528
559
|
Temporarily degraded national tools may appear in `lanes.degraded` when an upstream source is failing for every point. If `locus_regulated_facility_compliance` appears there during a future EPA ECHO outage, use `locus_environmental_history` and `locus_toxic_releases` as the functional fallback; if `locus_housing_stock` appears there during a future Census outage, use `locus_fair_market_rents` for housing-cost context meanwhile. Otherwise those tools are callable national lanes.
|
|
@@ -531,10 +562,12 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
|
|
|
531
562
|
|
|
532
563
|
| The question | Tool | Exact arguments | What it returns |
|
|
533
564
|
|---|---|---|---|
|
|
534
|
-
| Zoning district and overlays | `locus_zoning` | `{ "address": "..." }` or `{ "latitude": 35.78, "longitude": -78.64 }`
|
|
565
|
+
| Zoning district and overlays | `locus_zoning` | `{ "address": "..." }` or `{ "latitude": 35.78, "longitude": -78.64 }`; optional `{ "address": "<NYC street address>", "requestedUse": "restaurant" }` | Mapped district and overlays. If the requested-use pilot is enabled, NYC only: reviewed base-district rule excerpt and a parcel-specific question for `restaurant`, `cafe`, or `detached single family home`. Other uses return `use_not_mapped`; this is never a permission or buildability verdict. |
|
|
566
|
+
| Exact-parcel code complaints, cases, and violations | `locus_parcel_code_cases` | NYC: `{ "bbl": "5000080019" }` or `{ "address": "<NYC street address>" }`; San Francisco: `{ "jurisdiction": "us-ca-san-francisco", "parcelId": "6311024E" }`; Austin: `{ "jurisdiction": "us-tx-austin", "parcelId": "<Travis parcel id>" }`; unincorporated Wake County: `{ "address": "<street address>" }` | Opt-in per source, default off. Each source has its own scope: NYC HPD housing-maintenance violations; SF Building Inspection complaints plus issued notices of violation (a complaint is not a violation); Austin code complaint cases (not confirmed violations); Wake County cases opened in the last 90 days, matched by street address verified against the parcel site address (not an exact-parcel match; Raleigh and other towns excluded). Returns up to 50 rows per source dataset (SF up to 50 each), no names, units, or narratives. No match is limited to that dataset, not a compliance finding. Other places return `out_of_coverage`; use `locus_request_coverage`. |
|
|
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. |
|
|
535
568
|
| Development or rezoning nearby | `locus_development_cases` | `{ "address": "...", "radiusMeters": 1500 }` | Nearby development/rezoning case records, statuses, dates, identifiers, citations where wired. |
|
|
536
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. |
|
|
537
|
-
| Building permits for a place, parcel set, or supported metro | `locus_metro_permits` | Exact
|
|
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. |
|
|
538
571
|
| Transportation projects and traffic counts | `locus_transportation_context` | `{ "address": "...", "radiusMeters": 2000 }` | State DOT funded projects, traffic-count stations, routes, statuses where wired. |
|
|
539
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. |
|
|
540
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. |
|
|
@@ -548,6 +581,10 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
|
|
|
548
581
|
| Appeal or protest deadline arithmetic | `locus_appeal_window` | `{ "address": "...", "noticeDate": "2026-04-01" }` or `{ "state": "Texas", "noticeDate": "2026-04-01" }` | Accepts an address, two-letter state code, or full state name. Returns the cited statutory rule and deterministic UTC date arithmetic for TX, GA, AZ, FL, NC, CO, OH, NJ, WA, CA, NY, IL, MI, TN, and Philadelphia, PA. Never advises whether to appeal. |
|
|
549
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. |
|
|
550
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. |
|
|
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`. |
|
|
551
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. |
|
|
552
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. |
|
|
553
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. |
|
|
@@ -559,14 +596,21 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
|
|
|
559
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. |
|
|
560
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. |
|
|
561
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. |
|
|
562
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. |
|
|
563
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. |
|
|
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. |
|
|
603
|
+
| Property-topic government agenda leads (REST-only; not an MCP tool) | `locus-legistar-property-meetings` | Paid x402 `POST /api/locus-legistar-property-meetings` with `{ "jurisdiction": "us-nc-chatham" }` | Five verified Legistar jurisdictions: Chatham County, Chapel Hill, Mecklenburg County, Denver, Seattle. $0.05 on a substantive result; inspect the live challenge and get payment approval first. A 30-minute cached scan inspects up to 10 meetings and 25 items per meeting in the requested month and returns generic topic labels with official links, not raw titles. A lead is not a parcel match, complete agenda, current meeting status, or final decision. |
|
|
564
604
|
| Local legislation preview | `locus_local_legislation` | `{ "address": "...", "ownerActions": ["registration_required"], "domains": ["property_tax"] }` | Recent property-relevant legislation preview, status labels, source attribution. Oklahoma City and Las Vegas use PII-safe PrimeGov source pointers: Locus omits unstructured provider titles and the calling agent opens the cited item before describing it. Optional filters select the one headline before the cap. Not legal advice. |
|
|
565
605
|
| Dated changes around one place | `locus_ownership_loop` | `{ "address": "...", "radiusMeters": 1500, "state": "NC", "countyFips3": "183", "zip": "27601" }` | Composite dated-change bundle across available ownership, tax, flood, transfer, and local lanes. |
|
|
566
606
|
| Coastal overlays | `locus_coastal_county_overlays` | `{ "address": "..." }` or `{ "latitude": 34.22, "longitude": -77.88, "county": "auto" }` | Coastal hazard overlays, parcel/address facts, zoning/flood/wetland/resiliency context for supported coastal counties. |
|
|
567
607
|
| HMDA tract lending context | `locus_hmda_tract_context` | `{ "address": "..." }` | Published tract-level home-purchase counts and median reported property value where a floor-protected FFIEC snapshot is loaded. Area context, not a finding about a borrower, household, or property. Missing and unavailable data stay distinct. |
|
|
568
608
|
| ACS housing stock | `locus_housing_stock` | `{ "address": "..." }` | Census tract housing units, tenure, median rent/value, year built when upstream is healthy. |
|
|
569
609
|
| ZIP industry establishments | `locus_cbp_zip` | `{ "address": "123 Main St, Chapel Hill, NC 27514" }` | Census 2023 County Business Patterns counts by broad 2-digit NAICS industry for the address ZIP. A ZIP is area context, not the premises, customers, sales, or a location recommendation; unavailable data is not zero. |
|
|
610
|
+
| County living arrangements by year | `locus_acs_living_arrangements_series` | `{ "stateFips": "37", "countyFips3": "183", "fromYear": 2022, "toYear": 2024 }` | ACS five-year 18–34 household-member and child-of-householder counts with margins and explicit gaps. Overlapping windows are not independent annual change; child-of-householder is not every adult living with parents. |
|
|
611
|
+
| County industry establishments by year | `locus_cbp_county_industry_series` | `{ "stateFips": "37", "countyFips3": "183", "industryCode": "31-33", "fromYear": 2022, "toYear": 2024 }` | Caller-selected industry size and subsector counts, not jobs or orders. 2024 CBP is not yet published by this source: expect a `not_published` gap, not zero. Suppressed cells are not zero either. |
|
|
612
|
+
| Office source discovery | `locus_office_source_guide` | `{ "stateFips": "37", "countyFips3": "183" }` | Leads for dated office reports and measurement cautions; no vacancy or occupancy observations. Confirm market boundary, class, definition, date, and reuse terms before comparing reports. |
|
|
613
|
+
| Official fiscal document discovery | `locus_fiscal_source_guide` | `{ "place": "Raleigh, NC" }` | National and resolved local budget, audit, and tax-base leads. Empty `observations[]` is expected because documents are not fetched; use the parsing guide and cite your own extracted figures separately. |
|
|
570
614
|
| Area eviction filing counts | `locus_eviction_filings` | `{ "address": "..." }` or `{ "latitude": 35.78, "longitude": -78.64 }` | Published Eviction Lab weekly tract and Legal Services Corporation monthly county filing aggregates, each with a date and source. Area context only; never use to screen a tenant, landlord, household, or property. |
|
|
571
615
|
| EPA facility compliance | `locus_regulated_facility_compliance` | `{ "address": "...", "radiusMeters": 5000 }` | EPA ECHO facility compliance and inspection/enforcement summary when upstream is healthy. It links to paid `locus-nei-emissions-nearby` for NEI detail. |
|
|
572
616
|
|
|
@@ -621,8 +665,11 @@ or legal verdict.
|
|
|
621
665
|
2. `locus_satellite_scene_availability { "bbox": <from retryInput>, "fromDate": ..., "toDate": ... }`
|
|
622
666
|
lists dated Sentinel-2 scenes with cloud cover (downtown Raleigh: 0 % cloud scenes on
|
|
623
667
|
2026-01-04, 2026-04-21, 2026-05-19).
|
|
624
|
-
3.
|
|
625
|
-
`
|
|
668
|
+
3. For permits near the scene, call `locus_metro_permits` in point-radius mode with
|
|
669
|
+
`{ "city": "raleigh", "latitude": <scene center latitude>, "longitude": <scene center longitude>, "radiusMeters": 500 }`.
|
|
670
|
+
An exact address instead uses `{ "place": "<address>" }` and selects the parcel's legal permitting
|
|
671
|
+
authority; it is **not** a 500 m search. Point mode defaults to a one-year lookback, but returned
|
|
672
|
+
fields and record counts depend on the city's published source.
|
|
626
673
|
4. Keep only permits that could show from above at 10 m: `New Building`, `Addition`, demolition,
|
|
627
674
|
or a large cost. Interior alterations, repairs, and change-of-use never show. A bounded
|
|
628
675
|
judgment model (one yes/no per permit) sorted the 23 cleanly: a new school building
|
|
@@ -783,6 +830,30 @@ curl -X POST https://api.locus.report/tools/call \
|
|
|
783
830
|
|
|
784
831
|
Browse the free catalog with `curl https://api.locus.report/tools/list`; every entry also appears as a `/api/<tool_name>` path in the generated OpenAPI. Keep the two body shapes straight: flat fields for `/api/locus_*`, `{name, arguments}` for `/tools/call`. A flat body sent to `/tools/call` returns `wrapped_body_required` with the correct shape.
|
|
785
832
|
|
|
833
|
+
## Permit activity discovery
|
|
834
|
+
|
|
835
|
+
The former `locus-permit-activity` capability is now the **free** `locus_metro_permits` tool.
|
|
836
|
+
Search for “building permits”, “permit activity”, or “contractors working nearby” with
|
|
837
|
+
`locus_search_tools`, then use `locus_execute` or `POST /tools/call` with that exact catalog name.
|
|
838
|
+
Use the x402-paid `locus-metro-permits` dual only when a client specifically needs the paid rail;
|
|
839
|
+
do not pay to discover or read records available through the free tool.
|
|
840
|
+
|
|
841
|
+
```json
|
|
842
|
+
{"name":"locus_metro_permits","arguments":{"place":"1 E Edenton St, Raleigh, NC 27601"}}
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
For a supported city's nearby search, pass `city`, `latitude`, `longitude`, and optionally
|
|
846
|
+
`radiusMeters` (50–3000), `sinceDate` (`YYYY-MM-DD`), `order` (`newest` or `nearest`), and
|
|
847
|
+
`maxRecords` (1–100, default 25). For recurring point checks, send the prior response's
|
|
848
|
+
`polling.nextSince` as `sinceDate` and previously seen permit IDs as `excludePermitIds`;
|
|
849
|
+
`polling.nothingNew` means no new matching records in that check, not no permit activity.
|
|
850
|
+
Chicago, New York City, Austin, and Seattle additionally support `minReportedCostUsd`,
|
|
851
|
+
`trade`, and `scope` filters and published contractor-company fields. Read the live schema
|
|
852
|
+
for allowed trade and scope values. An exact parcel lookup uses `place` or `parcelId`/
|
|
853
|
+
`parcelIds` with `state` and `county`, not `address`. Use `locus_lane_availability` to
|
|
854
|
+
check coverage; an empty or unavailable source is not evidence that no permits exist.
|
|
855
|
+
Permit statuses are published workflow fields, not construction or compliance findings.
|
|
856
|
+
|
|
786
857
|
## MCP call pattern
|
|
787
858
|
|
|
788
859
|
1. Call `locus_search_tools` with the user intent, place, and known source category.
|
|
@@ -800,6 +871,60 @@ Browse the free catalog with `curl https://api.locus.report/tools/list`; every e
|
|
|
800
871
|
|
|
801
872
|
Use the argument key from the tool schema. Do not send every place as `place`; many tools require `address`, `state` plus `county`, or FIPS fields.
|
|
802
873
|
|
|
874
|
+
### Setting up dynamic real estate MCP Events (Poll & Signed Webhooks)
|
|
875
|
+
|
|
876
|
+
Both MCP harnesses (via protocol JSON-RPC `events/list`, `events/poll`, `events/subscribe`, `events/unsubscribe` per SEP-3415) and models inside `tools/call`-only clients (via `locus_mcp_events_catalog` and `/muse/mcp` tools `list_event_types`, `poll_events`, `subscribe_event`, `unsubscribe_event`, `list_event_subscriptions`) can dynamically set up, poll, and subscribe to cited public-record events:
|
|
877
|
+
|
|
878
|
+
| Event name | Dynamic target & filter arguments | What it emits |
|
|
879
|
+
|---|---|---|
|
|
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`). |
|
|
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. |
|
|
883
|
+
| `locus.pool.changes_detected` | `{ "poolId": "<uuid>", "lanes": [...], "includeUpcomingDays": 60 }` | Authenticated saved-pool record and milestone changes, with `followUpTools` and pre-filled `nextActions`. |
|
|
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.
|
|
890
|
+
|
|
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`.
|
|
892
|
+
2. **Poll an address set or pool (`events/poll` or `poll_events`):**
|
|
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_...`.
|
|
894
|
+
- Omit `cursor` on the first call to establish a baseline cursor (`cur_...`), then pass the returned `cursor` on subsequent polls:
|
|
895
|
+
```json
|
|
896
|
+
{
|
|
897
|
+
"name": "locus.real_estate.changes_detected",
|
|
898
|
+
"arguments": {
|
|
899
|
+
"addresses": ["615 Hillsborough St, Raleigh, NC 27603"],
|
|
900
|
+
"lanes": ["locus_metro_permits", "locus_zoning", "locus_flood_zone"],
|
|
901
|
+
"includeUpcomingDays": 60
|
|
902
|
+
},
|
|
903
|
+
"cursor": "cur_..."
|
|
904
|
+
}
|
|
905
|
+
```
|
|
906
|
+
- On `/muse/mcp`, calling `poll_events` with `"deliverWebhooks": true` also runs a bounded webhook delivery sweep for the authenticated principal's active subscriptions.
|
|
907
|
+
3. **Subscribe to signed Standard Webhooks (`events/subscribe` or `subscribe_event`):**
|
|
908
|
+
- Connect to `https://mcp.locus.report/muse/mcp` (OAuth 2.1 with `pools events:subscribe` scopes) or pass `Authorization: Bearer lmc_...`.
|
|
909
|
+
- Provide a public HTTPS `delivery.url` (query parameters such as `?mcp_event_subscription=...` are preserved) and a Standard Webhooks signing secret (`whsec_<base64-of-24-to-64-bytes>`):
|
|
910
|
+
```json
|
|
911
|
+
{
|
|
912
|
+
"name": "locus.real_estate.deadline_approaching",
|
|
913
|
+
"arguments": {
|
|
914
|
+
"addresses": ["615 Hillsborough St, Raleigh, NC 27603"],
|
|
915
|
+
"horizonDays": 30,
|
|
916
|
+
"basis": ["statutory", "as filed"]
|
|
917
|
+
},
|
|
918
|
+
"delivery": {
|
|
919
|
+
"mode": "webhook",
|
|
920
|
+
"url": "https://receiver.example.com/webhooks/locus",
|
|
921
|
+
"secret": "whsec_..."
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
```
|
|
925
|
+
- **Synchronous challenge handshake:** Before storing the subscription, Locus POSTs `{ "type": "verification", "challenge": "<uuid>" }` signed with Standard Webhooks headers (`webhook-id`, `webhook-timestamp`, `webhook-signature`, `X-MCP-Subscription-Id`). The receiver must verify the HMAC-SHA256 signature (`v1,<base64>` over `${webhookId}.${timestamp}.${rawBody}`) and return HTTP 2xx with `{ "challenge": "<uuid>" }` within 5 seconds.
|
|
926
|
+
- **Event deliveries:** Each occurrence POST sets `webhook-id` equal to `event.eventId` (`evt_<sha256>`). Verify `webhook-signature` and `webhook-timestamp` before trusting the payload, deduplicate by `eventId`, and use `list_event_subscriptions` or `events/unsubscribe` (`unsubscribe_event`) to inspect or remove subscriptions. Never treat an event notification as payment authorization or a safe/unsafe verdict.
|
|
927
|
+
|
|
803
928
|
<!-- satellite-input-guide:start -->
|
|
804
929
|
### Prepare a satellite imagery purchase
|
|
805
930
|
|
|
@@ -839,10 +964,11 @@ weeks ago. Call `resources/list` and read any whose URI starts with
|
|
|
839
964
|
| `skill://locus/choosing-a-locus-tool` | Picking a tool. Search first, free lanes before paid, and the no-verdict boundary. |
|
|
840
965
|
| `skill://locus/reading-locus-coverage` | Reporting an empty result. Distinguishes `out_of_coverage`, `source_unavailable`, and a genuine empty. |
|
|
841
966
|
| `skill://locus/locus-place-workflow` | Any multi-tool question about a place. The resolve to preflight to fan-out to compose order. |
|
|
967
|
+
| `skill://locus/subscribing-to-locus-events` | Setting up, polling, or subscribing to dynamic real-estate MCP Events (`events/list`, `events/poll`, `events/subscribe`, `events/unsubscribe`, `poll_events`, `subscribe_event`), Standard Webhooks verification, and paid follow-up boundaries. |
|
|
842
968
|
|
|
843
969
|
This follows the draft Skills Extension (SEP-2640), so the capability is
|
|
844
970
|
advertised under `experimental` as `io.modelcontextprotocol/skills`. A client
|
|
845
|
-
that does not know the extension still sees
|
|
971
|
+
that does not know the extension still sees five ordinary markdown resources and
|
|
846
972
|
can read them normally.
|
|
847
973
|
|
|
848
974
|
These resources are guidance, never authorization. Free, paid, and admin
|
|
@@ -861,7 +987,7 @@ changes what a call is allowed to do.
|
|
|
861
987
|
|
|
862
988
|
## x402 payment flow
|
|
863
989
|
|
|
864
|
-
The paid catalog includes native products, promoted free duals, and
|
|
990
|
+
The paid catalog includes native products, promoted free duals, and paid-only atomics. Native tools use the transports listed in their catalogs. Paid-only atomics are REST-only.
|
|
865
991
|
|
|
866
992
|
1. **REST:** call `POST /api/<tool-slug>`. Read the x402 v2 `PaymentRequired` body from HTTP 402. Retry the identical request with `PAYMENT-SIGNATURE`. Read settlement from `PAYMENT-RESPONSE`. Legacy `X-PAYMENT` and `X-PAYMENT-RESPONSE` remain compatibility aliases.
|
|
867
993
|
2. **MCP:** use only paid entries present in the MCP catalog. Call `locus_execute`, then retry with `_meta["x402/payment"]` when challenged.
|
|
@@ -972,6 +1098,20 @@ Redirect these asks back to records plus verification questions:
|
|
|
972
1098
|
- Named-person dossiers, mugshots, exact victim/suspect addresses, or scraped personal profiles.
|
|
973
1099
|
- Legal advice or claims that a user must or should take a legal action.
|
|
974
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
|
+
|
|
975
1115
|
## Failure handling
|
|
976
1116
|
|
|
977
1117
|
- **Unsupported place:** return the coverage/source diagnostic and suggest the official source to check next.
|