@velinussage/locus-agent-skill 0.1.14 → 0.1.19
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
|
[](https://skills.sh/velinussage/locus-agent-skill)
|
|
4
4
|
|
|
5
|
-
Install
|
|
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.
|
|
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
|
|
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.
|
|
16
16
|
|
|
17
17
|
Options:
|
|
18
18
|
|
|
@@ -65,10 +65,12 @@ npx skills use velinussage/locus-agent-skill --skill locus-agent-tools
|
|
|
65
65
|
|
|
66
66
|
## What the skills teach agents
|
|
67
67
|
|
|
68
|
-
- The
|
|
68
|
+
- The full free catalog exposes 98 tools, including 53 national free lanes. Read the live catalog because 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
|
+
- `locus_rental_registration_check` reads building-level municipal registration/license records and linked housing-enforcement components for Minneapolis, Seattle, and New York City. It returns no legal-rental or compliance verdict.
|
|
73
|
+
- 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.
|
|
72
74
|
- Paid endpoints use live x402 discovery, may offer USDC on Base and Solana, and require explicit user authorization. Agents choose one complete `accepts[]` entry.
|
|
73
75
|
- 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.
|
|
74
76
|
|
|
@@ -88,9 +90,11 @@ The live paid index is authoritative: <https://api.locus.report/.well-known/ai-t
|
|
|
88
90
|
| `POST /api/locus-before-you-sign` | `$0.07` | Pre-decision bundle over parcel, trend, and policy components. |
|
|
89
91
|
| `POST /api/locus-environmental-context` | `$0.05` | Address-level EPA TRI/RCRA/SDWIS/radon context ranked by distance where possible. |
|
|
90
92
|
| `POST /api/locus-property-tax` | `$0.05` | Residential property-tax artifact with assessed value, annual tax, history, effective rate, and provenance. |
|
|
93
|
+
| `POST /api/locus-rental-registration-check` | `$0.01` | Paid dual of the free exact-building rental registration and housing-enforcement lookup for Minneapolis, Seattle, and New York City. |
|
|
91
94
|
| `POST /api/locus-surrounding-area-analysis` | `$0.10` | Stored, bounded JSON evidence packet. Charge-suppressed unless the subject, surrounding-parcel foundation, and another component complete. |
|
|
92
95
|
| `POST /api/locus-surrounding-area-report` | `$0.15` | One HTML/PDF rendering of an eligible packet; no research rerun. |
|
|
93
96
|
| Six paid-only atomic REST routes | `$0.01` each | Workplace jobs, Wikipedia, Commons metadata, PFAS, NEI, and electricity. No free, MCP, or A2A counterpart. |
|
|
97
|
+
| `locus-evaluation-packet` paid-only atomic | `$0.35` | Lender evaluation-support packet. No free, MCP, or A2A counterpart. |
|
|
94
98
|
|
|
95
99
|
Unsupported, discovery-only, commercial, or insufficient-data cases return free diagnostics instead of charging where applicable.
|
|
96
100
|
|
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"];
|
|
10
|
+
const skillNames = ["locus-agent-tools", "locus-surrounding-area-analysis", "locus-property-tax-protest"];
|
|
11
11
|
|
|
12
12
|
function usage() {
|
|
13
13
|
return `Usage:
|
|
@@ -18,7 +18,7 @@ function usage() {
|
|
|
18
18
|
Options:
|
|
19
19
|
--target <dir> Skills root to install into. Defaults to $CODEX_HOME/skills or ~/.codex/skills.
|
|
20
20
|
--force Replace existing bundled Locus skill directories.
|
|
21
|
-
--print Print
|
|
21
|
+
--print Print all bundled SKILL.md files without writing files.
|
|
22
22
|
--help Show this help.
|
|
23
23
|
`;
|
|
24
24
|
}
|
|
@@ -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
|
|
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.");
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
async function main() {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velinussage/locus-agent-skill",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Install the general Locus agent skill
|
|
3
|
+
"version": "0.1.19",
|
|
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": {
|
|
7
7
|
"locus-agent-skill": "bin/locus-agent-skill.js"
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: locus-agent-tools
|
|
3
3
|
preamble-tier: 1
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.33.0
|
|
5
5
|
description: Use every time the task is a US address or place and you need cited official public records or local-government context — due diligence, flood, zoning, permits, taxes, what changed, or before you sign.
|
|
6
6
|
triggers:
|
|
7
7
|
- property due diligence
|
|
8
8
|
- flood zone
|
|
9
9
|
- zoning
|
|
10
10
|
- building permits
|
|
11
|
+
- rental registration check
|
|
12
|
+
- renovation site context
|
|
11
13
|
- property tax
|
|
12
14
|
- before you sign
|
|
13
15
|
- what changed at this address
|
|
@@ -33,12 +35,12 @@ Locus returns awareness and verification steps, not a verdict. Do not score, ran
|
|
|
33
35
|
|
|
34
36
|
## What to remember first
|
|
35
37
|
|
|
36
|
-
- **
|
|
38
|
+
- **53 national free tools are available with no payment or local coverage check.** The live free catalog exposes 98 tools total. Use national free lanes for rural addresses too, including flood, storm, wildfire, soil, groundwater-monitoring wells, cleanup, toxic-release, underground storage tank / leaking-tank, drought, water-system and non-UCMR PFAS records, water leak-policy candidates, electric service-territory candidates, sewer-overflow/CSO context, broadband, wetland, terrain, air-quality, governing-district, housing/economic, nearby-place, public-utility, county Medicare-spending, aggregate traffic-crash context, open disaster-assistance dates, conforming loan limits, and mortgage-calendar facts. Mirror-backed lanes return explicit missing, partial, stale, or unavailable states instead of treating missing data as favorable.
|
|
37
39
|
- **National free tools cover all 50 states for geocodable US addresses.** Local lanes are wired jurisdiction by jurisdiction and are growing. Always expect national context. Treat local parcel, zoning, permit, tax, and development-case depth as coverage-dependent.
|
|
38
40
|
- **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.
|
|
39
41
|
- **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.
|
|
40
42
|
- **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.
|
|
41
|
-
- **The
|
|
43
|
+
- **The full paid catalog has 94 endpoints: 29 native paid tools, 58 promoted dual-rail routes, and 7 paid-only atomic routes.** 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.
|
|
42
44
|
|
|
43
45
|
## Quick connect
|
|
44
46
|
|
|
@@ -63,7 +65,7 @@ Remote MCP server:
|
|
|
63
65
|
|
|
64
66
|
A2A and REST discovery:
|
|
65
67
|
|
|
66
|
-
- [Top agent endpoints](https://api.locus.report/.well-known/locus-agent-endpoints.json) - bundle-first menu for Before You Sign, Investor Diligence, and Policy + Environmental Brief.
|
|
68
|
+
- [Top agent endpoints](https://api.locus.report/.well-known/locus-agent-endpoints.json) - bundle-first menu for Before You Sign, Owner Action, Investor Diligence, Renovation Site Context, and Policy + Environmental Brief.
|
|
67
69
|
- [Unified tool catalog](https://api.locus.report/.well-known/locus-tools.json) - every free and paid schema, price, route, and free/paid counterpart.
|
|
68
70
|
- [Agent Card](https://api.locus.report/.well-known/agent-card.json) - A2A skills and message endpoint.
|
|
69
71
|
- [Free tool catalog](https://api.locus.report/tools/list) - free tool schemas, descriptions, and read-only metadata. JSON-only clients should use this or `GET /` instead of parsing the RFC 9727 linkset.
|
|
@@ -76,7 +78,7 @@ A2A and REST discovery:
|
|
|
76
78
|
|
|
77
79
|
Buyers do not need a Locus or Coinbase Developer Platform account API key. Free tools are open. Paid tools return a live x402 or advertised MPP challenge. `PAYMENT-SIGNATURE` is a signed payment credential, not an account API key.
|
|
78
80
|
|
|
79
|
-
For broad requests, start with the
|
|
81
|
+
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. The seven 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`.
|
|
80
82
|
|
|
81
83
|
The live catalogs are authoritative for tool names, schemas, prices, and endpoints. Do not copy stale tool definitions into prompts.
|
|
82
84
|
|
|
@@ -86,7 +88,7 @@ When the buyer wants more than the free `locus_surrounding_parcels` primitive an
|
|
|
86
88
|
|
|
87
89
|
## Workflow and coverage tools, know the difference
|
|
88
90
|
|
|
89
|
-
- **`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.
|
|
91
|
+
- **`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 `tax_delinquency_redemption`. 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.
|
|
90
92
|
- **`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.
|
|
91
93
|
- **`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.
|
|
92
94
|
- **`locus_coverage_map {}`** returns the whole registry view. Use it when an agent needs breadth, not one address.
|
|
@@ -118,7 +120,7 @@ When the buyer wants more than the free `locus_surrounding_parcels` primitive an
|
|
|
118
120
|
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.
|
|
119
121
|
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.
|
|
120
122
|
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.
|
|
121
|
-
6. **Run the smallest tool by intent.** Use each transport's own catalog. The
|
|
123
|
+
6. **Run the smallest tool by intent.** Use each transport's own catalog. The seven paid-only atomics use `POST /api/<hyphenated-slug>` over REST.
|
|
122
124
|
7. **Ground every fact.** Answer only from returned artifacts. Include source names, links or locators, fetched timestamps where present, and caveats.
|
|
123
125
|
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.
|
|
124
126
|
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.
|
|
@@ -154,6 +156,9 @@ Trimmed response example for a rural Montana ZIP:
|
|
|
154
156
|
"lanes": {
|
|
155
157
|
"national": [
|
|
156
158
|
{ "tool": "locus_flood_zone", "what": "FEMA flood-zone designation at the point", "access": "free" },
|
|
159
|
+
{ "tool": "locus_flood_determination_inputs", "what": "SFHDF form inputs: NFIP community, FIRM panel and date, zone, LOMA/LOMR, CBRS status", "access": "free" },
|
|
160
|
+
{ "tool": "locus_environmental_records_screen", "what": "ASTM E1527-21 government-records screen at standard search distances", "access": "free" },
|
|
161
|
+
{ "tool": "locus_tax_payment_status", "what": "Treasurer real-estate tax balances by parcel (Philadelphia)", "access": "free" },
|
|
157
162
|
{ "tool": "locus_radon_zone", "what": "EPA radon zone for the county", "access": "free" },
|
|
158
163
|
{ "tool": "locus_wildfire_risk", "what": "FEMA NRI wildfire risk rating", "access": "free" },
|
|
159
164
|
{ "tool": "locus_representatives", "what": "Cited state + federal officials for the point", "access": "free" }
|
|
@@ -198,16 +203,34 @@ Use the exact JSON shapes below as safe defaults. If a tool also accepts `latitu
|
|
|
198
203
|
| What policy sources govern here? | `locus_policy_sources` | `{ "place": "Raleigh, NC" }` | State, county, city policy-source list, legal geographies, source links. |
|
|
199
204
|
| Read aggregate coverage demand | `locus_coverage_demand` | `{}` | Aggregate requested-coverage demand, not place records. |
|
|
200
205
|
|
|
206
|
+
### High-value property workflows
|
|
207
|
+
|
|
208
|
+
Route these first when the buyer already knows the property or shortlist:
|
|
209
|
+
|
|
210
|
+
1. **Three known properties:** use `locus-three-property-buyer-comparison` at `$2.49`. It calculates cited cross-property differences such as living area, lot size, build year, bedrooms, and assessment movement, then returns executable next calls for all three properties without choosing a winner.
|
|
211
|
+
2. **A reassessment notice or owner cost question:** use `locus-owner-cost-review` at `$0.25`. The price includes one conservatively priced Turnkey signature. It leads with the recorded tax or assessment change, connects cited programs and dates, and returns ready calls for follow-up. It does not infer the cause or determine eligibility.
|
|
212
|
+
3. **Rental operations for one property:** use `locus-rental-operations-brief` at `$0.79`. It compares the third-party subject rent estimate with the ZIP rental-listing median, then returns ready calls for current local-record follow-up. It is not rent-setting advice or tenant screening.
|
|
213
|
+
4. **Rental registration or license record:** use free `locus_rental_registration_check` for an exact building in Minneapolis, Seattle, or New York City. It returns the source-published status, dates, units, linked housing-enforcement components, query limits, and verify-next questions. Agent-commerce callers may use the identical `$0.01` REST `locus-rental-registration-check` dual. It never decides whether the dwelling may lawfully be rented or whether a person or property complies.
|
|
214
|
+
5. **Rental-registration portfolio:** use `locus-record-batch` at `$0.05` with 2-25 exact addresses and `lanes: ["locus_rental_registration_check"]`. One async job returns results keyed by address. Addresses outside the three-city source registry remain explicit out-of-coverage items; do not treat them as unregistered.
|
|
215
|
+
|
|
216
|
+
These products return `nextCalls[]` instead of a prose narrative. Each call includes the exact `tool`, ready `input`, one-sentence `why`, supporting `evidenceIds`, `cost`, `urgency`, endpoint, and `requiresPaymentApproval`. `cost` is `free` or the exact dollar price from Locus's central price registry when the workflow was generated. `costAtGeneration` remains an identical compatibility alias. `nextCallPlan.pricedAt` timestamps the price snapshot; the next tool's live challenge remains authoritative. A small model may select and order only server-built candidate IDs. Locus owns and validates every returned tool name, argument object, price snapshot, evidence link, and payment flag. Model failure uses the deterministic candidate order. A paid next call is never executed without separate approval.
|
|
217
|
+
|
|
201
218
|
### Paid product ladder (use one path)
|
|
202
219
|
|
|
203
220
|
| Question | Prefer | Do not open with |
|
|
204
221
|
|---|---|---|
|
|
205
222
|
| Free snapshot | `locus_place_facts` (free) | Paid dual of the same |
|
|
206
223
|
| Pre-sign parcel + trend + policy | `locus-before-you-sign` ($0.07) | Three separate briefs |
|
|
224
|
+
| Owner programs, dates, appeal/tax rules, and parcel screens | `locus-owner-action-brief` ($0.05) | Six separate owner-action lanes |
|
|
207
225
|
| Neighbors, topology, multi-lane surrounding evidence | `locus-surrounding-area-analysis` ($0.10) ± report ($0.15) | `locus-ownership-loop` alone or many micro duals |
|
|
208
226
|
| EPA proximity bundle | `locus-environmental-context` ($0.05) | Parallel toxic/RCRA/water duals |
|
|
209
227
|
| Compiled place artifact | `locus-place-report` ($0.05) | Stitching free tools into a fake report |
|
|
210
228
|
| Recent official change + media | `locus-property-update` ($0.10) | Flyer first |
|
|
229
|
+
| Compare three known rooftops for solar | `locus-solar-property-comparison` ($1.09) | Calling roof, utility, and financial providers separately |
|
|
230
|
+
| Compare three known properties for a buyer | `locus-three-property-buyer-comparison` ($2.49) | Raw property, listing, market, and public-record calls without identity, deterministic differences, or ready next calls |
|
|
231
|
+
| Review owner costs and deadlines | `locus-owner-cost-review` ($0.25) | Inferring why taxes changed or treating a program as eligibility |
|
|
232
|
+
| Review rental property operations | `locus-rental-operations-brief` ($0.79) | Raw rent estimates without HUD, permit, tax, market, work items, or ready next calls |
|
|
233
|
+
| Check municipal rental registration | `locus_rental_registration_check` (free) or `locus-rental-registration-check` ($0.01) | Treating a source row or no-match as legal permission, compliance, habitability, or a landlord judgment |
|
|
211
234
|
|
|
212
235
|
Full inventory decisions: `docs/PAID_TOOL_INVENTORY.md`. Paid index entries also carry `seeAlso` for overlap routing.
|
|
213
236
|
|
|
@@ -222,27 +245,42 @@ Use these only after `locus_lane_availability` or the paid index says the call h
|
|
|
222
245
|
| `POST /api/locus-wikipedia-place-context` | `$0.01` | A research or media workflow needs bounded geotagged Wikipedia reference material with page and revision provenance. Results may cover places, institutions, events, or people and are not property or resident evidence. | No matching geotagged article or source failure returns `charged:false`. |
|
|
223
246
|
| `POST /api/locus-pfas-occurrence` | `$0.01` | Environmental diligence needs EPA UCMR 5 per-compound detection/non-detect counts, highest detections, or address-to-water-system resolution. | Missing system coverage, stale snapshot, unresolved service area, or unavailable source returns `charged:false`. |
|
|
224
247
|
| `POST /api/locus-nei-emissions-nearby` | `$0.01` | Environmental diligence needs distance-ranked EPA NEI facilities and per-pollutant annual quantities. Use `detailLevel: "full"` only for the complete large matrix. | No facility rows, unloaded year, or unavailable mirror returns `charged:false`. |
|
|
248
|
+
| `POST /api/locus-evaluation-packet` | `$0.35` | A lender needs the evaluation-support packet in Interagency Appraisal and Evaluation Guidelines order (parcel, zoning, permits, transfers, HPI, SFHDF flood inputs, ASTM E1527-21 screen, tax distress, treasurer status) with every source stamped. States no value. | Unresolved point or no property-description and hazard fact returns the packet with `charged: false`. |
|
|
225
249
|
| `POST /api/locus-electricity-context` | `$0.01` | Data-center, industrial, energy-development, or power-sensitive site screens need HIFLD line proximity plus EIA state price context before utility diligence. | An unresolved point or failure of both source components returns `charged:false`. |
|
|
250
|
+
| `POST /api/locus-record-batch` | `$0.05` | A portfolio or any-jurisdiction screen needs up to 6 free record lanes across 2-25 addresses as ONE async job keyed by address; poll `statusUrl`. | Unresolved addresses are listed and never charged; `charged: false` when no address resolves or no valid lane is named. |
|
|
226
251
|
| `POST /api/locus-surrounding-area-analysis` | `$0.10` | Buyer needs one stored multi-lane surrounding packet: topology-aware parcels, zoning, development, permits, legislation, capital/transport, environmental baseline, optional aerial. | Unstable subject, missing surrounding-parcel foundation, or under two completed components returns `charged:false`. |
|
|
227
252
|
| `POST /api/locus-surrounding-area-report` | `$0.15` | HTML+PDF upgrade of an active surrounding-area packet within the 24h upgrade window. | Invalid/expired proof, second report, or render failure does not charge. |
|
|
228
253
|
| `POST /api/locus-place-report` | `$0.05` | Agent needs one compiled cited property-context artifact for an address or ZIP. The artifact confirms the matched subject, lists every source, and carries an honest coverage ledger. After confirmed x402 settlement or seller-escrow, the paid parcel-financials lane may include the assessor owner-of-record name for the same exact parcel (cited, not a contact). Canonical storage stays owner-free; settled replay refreshes the official field. | Unsupported or discovery-only places return no-charge diagnostics. |
|
|
229
254
|
| `POST /api/locus-property-update` | `$0.10` | Agent needs an async exact-address decision check of recent or scheduled official-record changes, nearby activity, and physical comparability, with a shareable report, PDF, and temporary video. | Ambiguous, thin, or unsupported inputs return `charged:false`; on `clarification_required`, confirm and resend `retryInput`. Poll the job and, once `flyerReady:true`, use `flyerHandoff` immediately without waiting for video. |
|
|
230
|
-
| `POST /api/locus-property-
|
|
255
|
+
| `POST /api/locus-solar-property-comparison` | `$1.09` | Agent has exactly three known addresses and wants parcel-bound, dated Google Solar roof metrics beside utility candidates, cited solar-program rows, and one shared GridPulse reference. Input: `{ "addresses": ["...", "...", "..."], "financialZip": "27312", "systemKw": 8 }`. Results stay in input order for side-by-side review; Locus does not select a winner or recommend a property. | Fewer than two attributable Google Solar results return `charged:false`. The price includes up to four Turnkey signatures at the conservative Pay as You Go rate. GridPulse figures remain historical context. Licensed provider data is private, `no-store`, and excluded from public pinning. x402 only. |
|
|
256
|
+
| `POST /api/locus-three-property-buyer-comparison` | `$2.49` | Agent has exactly three known addresses and wants non-PII RentCast property/listing lookups, ZIP market context, bounded Locus public records, reusable work items, deterministic cross-property differences, and validated `nextCalls[]` for all three properties. | Invalid, unresolved, or duplicate resolved subjects fail before downstream spend. The price includes up to nine Turnkey signatures at the conservative Pay as You Go rate. Input order is preserved. No winner, valuation, prediction, or purchase recommendation. Private, `no-store`, x402 only. |
|
|
257
|
+
| `POST /api/locus-owner-cost-review` | `$0.25` | Owner or representative has a reassessment or cost question and needs one property/tax trajectory beside cited programs, published windows, work items, and validated `nextCalls[]` with exact arguments and urgency. | An unresolved subject fails before downstream spend. The price includes one conservatively priced Turnkey signature. The response does not infer why tax changed, determine eligibility, or advise an appeal. Private, `no-store`, x402 only. |
|
|
258
|
+
| `POST /api/locus-rental-operations-brief` | `$0.79` | Property operator needs a non-PII property lookup, third-party rent estimate, ZIP rental market, HUD/public-record context, work items, a deterministic rent-to-market difference, and validated `nextCalls[]`. | An unresolved subject fails before downstream spend. The price includes up to three Turnkey signatures at the conservative Pay as You Go rate. Comparable addresses and listing contacts are removed. No tenant screening, rent-setting advice, return calculation, or investment recommendation. Private, `no-store`, x402 only. |
|
|
259
|
+
| `POST /api/locus-rental-registration-check` | `$0.01` | Agent needs source-published building registration/license status and available housing-enforcement components for Minneapolis, Seattle, or New York City. The same lookup is free as `locus_rental_registration_check`. | Unsupported, unresolved, or registration-source-unavailable calls return `charged:false`. A successful exact-source no-match is chargeable and remains source-bounded. No owner, contact, property-name, apartment, narrative, or nearby-address fields; no legal-rental or compliance verdict. |
|
|
260
|
+
| `POST /api/locus-property-flyer` | `$0.99` | After obtaining a proof-gated PDF URL + expiry from a report workflow, the agent wants a general 4:5 property shareable whose top-right QR opens that PDF. Pass the property-update job's copy-ready `flyerHandoff` as the flyer-specific `reportHandoff`; do not synthesize a proof or reuse the video render contract. A licensed subject image is optional. Brand it with `brand.logo`, `brand.contact` (name, brokerage, license, phone, email, website), and `brand.headshot`. | Missing runtime, usable research, imagery, or premium model output returns `charged:false`. The price includes one conservative Turnkey signature when StableEnrich research runs. |
|
|
231
261
|
| `POST /api/locus-place-report-batch` | `$0.25` | Agent has a 3-50 address portfolio and wants one async job plus one settlement. | If all items are unsupported or discovery-only, no charge. Unsupported items inside a paid job remain item-level diagnostics. |
|
|
232
262
|
| `POST /api/locus-local-trend-brief` | `$0.05` | Agent needs permit, 311, or code-case local-change series where the registry has enough source coverage. | Unsupported, discovery-only, or insufficient-data places return `charged:false` diagnostics. |
|
|
233
263
|
| `POST /api/locus-local-policy-brief` | `$0.07` | Agent needs property-relevant bills, agendas, ordinances, tax, fee, bond, housing, or permit-change policy context. | Unsupported places return no-charge diagnostics. |
|
|
234
264
|
| `POST /api/locus-local-fiscal-context` | `$0.05` | Agent needs separate cited local-government fiscal/audit observations and a bounded five-year trend from an offline verified snapshot. Peer comparison remains disabled until Locus can verify complete official cohorts. | Missing, stale, or thin snapshots return `charged:false`; never returns an integrity, corruption, government-quality, credit, or place score. |
|
|
235
|
-
| `POST /api/locus-before-you-sign` | `$0.07` | Agent needs a pre-decision bundle over parcel, trend, and policy components for one street address. Optional `context` and `followUp` frame the output without changing data access. After confirmed x402 settlement or seller-escrow, `parcelFacts` may include the assessor owner-of-record name for the same exact parcel (cited, not a contact). | Weak component readiness returns a no-charge `coverage_diagnostic` with `componentReadiness`
|
|
265
|
+
| `POST /api/locus-before-you-sign` | `$0.07` | Agent needs a pre-decision bundle over parcel, trend, and policy components for one street address. Optional `context` and `followUp` frame the output without changing data access. After confirmed x402 settlement or seller-escrow, `parcelFacts` may include the assessor owner-of-record name for the same exact parcel (cited, not a contact). | Weak component readiness returns a no-charge `coverage_diagnostic` with byte-stable `componentReadiness`, one-sentence `componentReadinessDetail` reasons for trend/parcel/policy, and `suggestedAlternative`. Charged bundles put the same detail next to `componentStatus`. |
|
|
266
|
+
| `POST /api/locus-owner-action-brief` | `$0.05` | Agent needs one cited bundle of owner programs, exact program dates, the state appeal rule, tax-calendar framing and county pointer, the FEMA LOMA screen when applicable, and the special-valuation parcel screen. Request body: `{ "address": "...", "noticeDate": "2026-04-01", "withinDays": 120 }`; `noticeDate` and `withinDays` are optional. | Fewer than two substantive sections return `owner_action_brief_diagnostic` with `charged:false`. The brief lists programs and rules; it does not determine eligibility or recommend action. |
|
|
267
|
+
| `POST /api/locus-owner-programs` | `$0.01` | Agent needs the free owner-program lookup through a top-level paid route, including curated rows and statewide derived tax/appeal rows. | No registry or derived row returns `charged:false`. The same lookup remains free as `locus_owner_programs`. |
|
|
268
|
+
| `POST /api/locus-mitigation-incentives` | `$0.01` | Agent needs cited mitigation, discount-mandate, flood-map, or flood-protection program rows. | No program row returns `charged:false`. The same lookup remains free as `locus_mitigation_incentives`. |
|
|
269
|
+
| `POST /api/locus-utility-credits` | `$0.01` | Agent needs cited stormwater, lead-line, sidewalk, or flood-protection credit rows. | No program row returns `charged:false`. The same lookup remains free as `locus_utility_credits`. |
|
|
270
|
+
| `POST /api/locus-fraud-alert-pointer` | `$0.01` | Agent needs a registered county property-fraud alert row rather than the generic recorder search pointer. | The generic pointer alone returns `charged:false`. The same lookup remains free as `locus_fraud_alert_pointer`. |
|
|
271
|
+
| `POST /api/locus-program-windows` | `$0.01` | Agent needs exact upcoming or recently passed dates printed in owner-program registry rows. | No dated item returns `charged:false`. The same lookup remains free as `locus_program_windows`. |
|
|
272
|
+
| `POST /api/locus-special-valuation-screen` | `$0.01` | Agent needs parcel acreage plus cited special-valuation, historic, or solar rows. | An unresolved parcel or no program row returns `charged:false`. The same lookup remains free as `locus_special_valuation_screen`. |
|
|
273
|
+
| `POST /api/locus-appeal-window` | `$0.01` | Agent needs cited appeal/protest date arithmetic for an address, two-letter state code, full state name, or covered locality. | An uncovered state/locality returns `charged:false`. The same lookup remains free as `locus_appeal_window`. |
|
|
236
274
|
| `POST /api/locus-environmental-context` | `$0.05` | Agent needs address-level EPA TRI/RCRA/SDWIS/radon public-record context ranked by distance where possible. | Unsupported or unresolvable inputs return no-charge diagnostics. |
|
|
237
275
|
| `POST /api/locus-air-quality-history` | `$0.05` | Agent needs nearby EPA AQS annual monitor summaries, NOAA HMS smoke-over-point days, and separately labeled CDC modeled PM2.5 gap-fill. | No substantive monitor/smoke/modeled rows or missing mirror coverage returns `charged:false`; never substitutes missing years with “good air.” |
|
|
238
276
|
| `POST /api/locus-property-tax` | `$0.05` | Agent needs a residential US property-tax artifact with assessed value, annual tax, tax history, effective rate, and provenance. | Commercial, uncovered, or unresolvable addresses return `charged:false` diagnostics pointing to the free `.gov` tax lanes or place report. |
|
|
239
277
|
| `POST /api/locus-rent-estimate` | `$0.05` | Agent needs a third-party residential long-term rent estimate, range, comparable count, and HUD FMR area anchor. | No estimate, no comparables, commercial use, missing key, or uncovered inputs return `charged:false`. Not a Locus-authored valuation. |
|
|
240
|
-
| `POST /api/locus-valuation-challenge` | `$0.10` | Agent wants to
|
|
278
|
+
| `POST /api/locus-valuation-challenge` | `$0.10` | Agent wants to stress-test a caller-supplied property price or `source: "assessment_notice"` figure against cited sale, parcel, permit, hazard, tax, zoning, policy, and same-roll assessment-uniformity evidence without Locus creating a price. | Fewer than two substantive cited sections return `charged:false`; uniformity needs at least five same-class parcels to count. |
|
|
241
279
|
| `POST /api/locus-road-access` | `$0.05` | Agent needs nearest mapped public-road proximity from an address/point as an early access screen. | Unresolved address or total source failure returns `charged:false`. Never a legal-access, easement, frontage, or landlocked determination. |
|
|
242
280
|
| `POST /api/locus-power-water-evidence-pack` | `$0.05` | Agent needs pre-development proximity/context from HIFLD/EIA power, EPA public-water-system, and FCC broadband sources. | Missing substantive evidence suppresses charge. Never claims capacity, interconnection, service availability, timing, or cost. |
|
|
243
281
|
| `POST /api/locus-landslide-diligence` | `$0.05` | Agent needs separate USGS documented inventory history and exact source-native n10 model-cell evidence. | Unless both components answer, returns `charged:false`. Never a probability, parcel stability finding, engineering assessment, or safety label. |
|
|
244
|
-
| `POST /api/locus-permit-closeout-check` | `$0.05` | Agent needs exact-
|
|
245
|
-
| `POST /api/locus-transaction-follow-up` | `$0.10` | Agent needs one explicit homebuyer, land-investor, developer-predevelopment,
|
|
282
|
+
| `POST /api/locus-permit-closeout-check` | `$0.05` | Agent needs exact-subject permit status plus source-published closeout or occupancy-document evidence. Registry coverage: Raleigh, unincorporated Wake County, Durham, Austin, Seattle, Chicago, Los Angeles, and New York City. It accepts an address or up to 25 jurisdiction-scoped `parcelIds`. The coverage label is generated from the source registry. | Uncovered, uncertain, unavailable, unpublished, and no-exact-match states are charge-suppressed. Not condition, compliance, suite/use permission, or closing approval. |
|
|
283
|
+
| `POST /api/locus-transaction-follow-up` | `$0.10` | Agent needs one explicit homebuyer, land-investor, developer-predevelopment, commercial-tenant, or renovation-planning packet with cited handoffs. For renovation use `intent: "renovation_planning"`, `transactionStage: "pre_construction"`, `projectArchetype: "residential"`, and a short caller-supplied `projectType`. The profile checks recorded parcel facts, exact-subject permits, USDA basement and shallow-excavation soil interpretations, sampled terrain, FEMA flood, mapped wetlands, and EPA county radon context. | Profile-specific component/group thresholds control chargeability. Assessor totals never establish above-grade or finished-basement area. The result is not a feasibility, condition, drainage-design, permit-requirement, cost, or valuation conclusion. Thin evidence is charge-free. |
|
|
246
284
|
|
|
247
285
|
### Best first call for supported address context
|
|
248
286
|
|
|
@@ -262,6 +300,9 @@ These work for geocodable US addresses at no cost. Some accept address directly.
|
|
|
262
300
|
| The question | Tool | Exact arguments | What it returns |
|
|
263
301
|
|---|---|---|---|
|
|
264
302
|
| 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. |
|
|
303
|
+
| 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. |
|
|
304
|
+
| 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. |
|
|
305
|
+
| 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. |
|
|
265
306
|
| Nearby flood gauges | `locus_flood_gauges` | `{ "address": "...", "radiusMeters": 20000 }` | Nearby USGS/NWS gauges, latest stage/flow observations when available, threshold metadata, source links. |
|
|
266
307
|
| Governing districts | `locus_governing_districts` | `{ "address": "..." }` | Congressional, state senate, state house, county, municipality, and other governing geographies when resolved. |
|
|
267
308
|
| Representatives | `locus_representatives` | `{ "address": "..." }` | Cited federal and state officials for the address, districts, party/office/contact links where available. |
|
|
@@ -281,6 +322,9 @@ These work for geocodable US addresses at no cost. Some accept address directly.
|
|
|
281
322
|
| Drinking-water violations | `locus_drinking_water_violations` | `{ "address": "..." }` or `{ "state": "MT", "county": "Park County" }` or `{ "pwsids": ["MT0000000"] }` | SDWIS/ECHO violation and enforcement rows, system ids, caveats that this is not proof of tap-water quality. |
|
|
282
323
|
| NOAA storm events | `locus_storm_events` | `{ "stateFips": "30", "countyName": "Park", "countyFips3": "067" }` | NOAA Storm Events history, event type, dates, damage estimates, narratives, and source links. Use `stateFips`, not `state`. |
|
|
283
324
|
| 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. |
|
|
325
|
+
| 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. |
|
|
326
|
+
| 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. |
|
|
327
|
+
| 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. |
|
|
284
328
|
| 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. |
|
|
285
329
|
| HUD fair-market rents | `locus_fair_market_rents` | `{ "stateFips": "30", "countyFips3": "067", "year": 2026 }` | HUD FMR values by bedroom count and county/FIPS basis. |
|
|
286
330
|
| Qualified Opportunity Zone | `locus_opportunity_zone` | `{ "address": "..." }` or `{ "latitude": 35.22, "longitude": -80.84 }` | Whether the point is in a Treasury/IRS Qualified Opportunity Zone tract, cited to HUD. A `not_designated` zero-hit is a valid designation answer, not a coverage failure. Not tax or investment advice. |
|
|
@@ -312,7 +356,7 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
|
|
|
312
356
|
| Zoning district and overlays | `locus_zoning` | `{ "address": "..." }` or `{ "latitude": 35.78, "longitude": -78.64 }` | Governing zoning district, overlays/planning context where wired, source links. Rich coverage only in wired jurisdictions. |
|
|
313
357
|
| Development or rezoning nearby | `locus_development_cases` | `{ "address": "...", "radiusMeters": 1500 }` | Nearby development/rezoning case records, statuses, dates, identifiers, citations where wired. |
|
|
314
358
|
| Public capital projects nearby | `locus_capital_projects` | `{ "address": "...", "radiusMeters": 1609 }` | Government capital projects, public works, assessments where wired, with project ids and source links. |
|
|
315
|
-
| Building permits
|
|
359
|
+
| Building permits for a place, parcel set, or supported metro | `locus_metro_permits` | Exact project: `{ "parcelIds": ["0736544606", "0736845188"], "state": "NC", "county": "Wake" }`; point mode: `{ "city": "chicago", "latitude": 41.878, "longitude": -87.629, "radiusMeters": 1000, "sinceDate": "2025-01-01" }` | 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. |
|
|
316
360
|
| Transportation projects and traffic counts | `locus_transportation_context` | `{ "address": "...", "radiusMeters": 2000 }` | State DOT funded projects, traffic-count stations, routes, statuses where wired. |
|
|
317
361
|
| 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. |
|
|
318
362
|
| 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. |
|
|
@@ -321,9 +365,23 @@ Temporarily degraded national tools may appear in `lanes.degraded` when an upstr
|
|
|
321
365
|
| Property-tax estimate | `locus_property_tax_estimate` | `{ "address": "..." }` | Estimated annual property tax from assessed value and NC rates where wired. Computed estimates are NC-only; out-of-NC addresses fail closed and may return official-source prompt guidance. Not a valuation. |
|
|
322
366
|
| Paid residential property-tax report | `locus-property-tax` | `POST https://api.locus.report/api/locus-property-tax` with `{ "address": "600 E 4th St, Charlotte, NC" }` | x402-paid residential property-tax artifact: assessed value, annual tax, tax history, effective rate, and provenance from RentCast aggregator records. Commercial or uncovered addresses return `charged:false` diagnostics. Not an official tax bill or valuation. |
|
|
323
367
|
| Tax calendar | `locus_tax_calendar` | `{ "county": "Harris County, TX" }` or `{ "address": "..." }` | State property-tax statutory framework (cited to the state tax code) for NC, TX, CA, FL, NY, plus the official county source pointer and a current-year live-lookup prompt for the volatile per-cycle dates; verified prior-cycle county dates where curated (NC). |
|
|
368
|
+
| Tax-sale and redemption calendar | `locus_tax_sale_calendar` | `{ "place": "Los Angeles, CA", "asOf": "2026-09-03", "withinDays": 120 }` | Cited tax-sale and redemption rules plus exact published dates. A row with only past dates returns `needsRefresh` and is never called the next sale. No parcel sale, delinquency, title, or redemption determination. |
|
|
369
|
+
| 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. |
|
|
370
|
+
| 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. |
|
|
371
|
+
| 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. |
|
|
372
|
+
| 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. |
|
|
373
|
+
| 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. |
|
|
374
|
+
| 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. |
|
|
375
|
+
| Electric utility and rebate candidates | `locus_electric_utility_resolver` | `{ "address": "..." }` | Every containing HIFLD retail-service-territory candidate, EIA utility ID and ownership type, source vintage, and rebates joined only by registered utility ID. Overlaps stay visible. Never proof of service, capacity, tariff, interconnection, timing, reliability, or cost. |
|
|
376
|
+
| Water leak-adjustment rules | `locus_water_utility_leak_adjustment_rules` | `{ "address": "..." }` or `{ "confirmedPwsid": "NC0160010" }` | EPA public-water-system candidates and cited Chicago, Charlotte, or Philadelphia policy only after a caller-confirmed PWSID or provider-supplied official boundary. Modeled matches remain candidates. No account eligibility or bill calculation. |
|
|
377
|
+
| Owner-facing permit rules | `locus_permit_rules` | `{ "place": "Seattle, WA", "includeNotVerified": true }` | Field-level cited exemption, fee, expiration, extension, and waiver research for Seattle, Austin, and verified Chicago fields. Missing fields stay `not_verified`, never `none`. Not a property-specific permit determination. |
|
|
378
|
+
| Property-fraud alert pointer | `locus_fraud_alert_pointer` | `{ "place": "Miami-Dade County, FL" }` | Cited local, state, and national title-protection rows in that order. If no local row is registered, neutral county-recorder search guidance follows those rows; it does not claim that the county operates an alert. |
|
|
379
|
+
| Program dates | `locus_program_windows` | `{ "place": "Berkeley, CA", "asOf": "2026-09-02", "withinDays": 120 }` | Exact dates from matching registry rows, split into upcoming and recently passed windows through deterministic date filtering. |
|
|
380
|
+
| 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. |
|
|
324
381
|
| 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. |
|
|
325
382
|
| 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. |
|
|
326
|
-
|
|
|
383
|
+
| Rental registration and housing enforcement | `locus_rental_registration_check` | `{ "address": "1531 Belmont Ave, Seattle, WA 98122" }` | Exact-building registration/license rows and source-specific enforcement components for Minneapolis, Seattle, and New York City. Excludes owner/contact/unit/narrative fields. A no-match is limited to the named datasets, not a compliance finding. |
|
|
384
|
+
| 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. |
|
|
327
385
|
| 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. |
|
|
328
386
|
| 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. |
|
|
329
387
|
| ACS housing stock | `locus_housing_stock` | `{ "address": "..." }` | Census tract housing units, tenure, median rent/value, year built when upstream is healthy. |
|
|
@@ -419,7 +477,7 @@ Use the argument key from the tool schema. Do not send every place as `place`; m
|
|
|
419
477
|
## Paid report rules
|
|
420
478
|
|
|
421
479
|
- Unsupported or discovery-only places return a free diagnostic, not a payment challenge.
|
|
422
|
-
- Most
|
|
480
|
+
- Most focused tools list between $0.05 and $0.10 USDC. Turnkey-backed composites cost more because their prices include the conservative Pay as You Go signature rate: the flyer is $0.99, solar comparison is $1.09, rental operations is $0.79, and the three-property buyer comparison is $2.49. Free signature allowances are excluded from unit economics. Read the live challenge before payment.
|
|
423
481
|
- The price, network, asset, and recipient appear before payment.
|
|
424
482
|
- Paid results return only after settlement succeeds.
|
|
425
483
|
- Settled x402 replay returns the stored canonical artifact without another charge. Owner-of-record is an ephemeral paid enrichment: the first settled response and a later replay each fetch the current official field for the same exact verified parcel, with a fresh citation. Canonical replay, public/share/pin/model persist, Stripe, Watch, free, and unpaid remain owner-free. Optional caller context guides presentation only.
|
|
@@ -428,7 +486,7 @@ Use the argument key from the tool schema. Do not send every place as `place`; m
|
|
|
428
486
|
|
|
429
487
|
## x402 payment flow
|
|
430
488
|
|
|
431
|
-
The paid catalog includes native products, promoted free duals, and the
|
|
489
|
+
The paid catalog includes native products, promoted free duals, and the seven paid-only atomics listed above. Native tools use the transports listed in their catalogs. The seven paid-only atomics are REST-only.
|
|
432
490
|
|
|
433
491
|
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.
|
|
434
492
|
2. **MCP:** use only paid entries present in the MCP catalog. Call `locus_execute`, then retry with `_meta["x402/payment"]` when challenged.
|
|
@@ -439,7 +497,7 @@ Locus may advertise more than one x402 option in `accepts[]`. Production offers
|
|
|
439
497
|
|
|
440
498
|
### Probe the challenge without paying
|
|
441
499
|
|
|
442
|
-
`GET` on any paid endpoint returns a side-effect-free
|
|
500
|
+
`GET` on any paid endpoint returns a side-effect-free discovery challenge. Do not sign that challenge for a Turnkey-backed workflow because it has no exact request body and reserves no provider capacity. Send the exact `POST` body without payment first. That charge-free preflight either returns a current 402 or an uncharged availability error.
|
|
443
501
|
|
|
444
502
|
```bash
|
|
445
503
|
curl -si https://api.locus.report/api/locus-place-report
|
|
@@ -447,13 +505,15 @@ curl -si https://api.locus.report/api/locus-place-report
|
|
|
447
505
|
|
|
448
506
|
Read `accepts[]` for the exact price, network, asset, recipient, and any network-specific fields such as Solana `extra.feePayer`. Native and dual routes may also advertise mppx/Tempo. Paid-only atomics are x402-only.
|
|
449
507
|
|
|
508
|
+
For RentCast workflows, inspect `X-Locus-Provider-Budget-State` and `X-Locus-Provider-Budget-Reserved` on the 402. `not_enforced` means exact per-request Turnkey policies apply without a shared daily circuit breaker. If an operator enables the optional breaker, `X-Locus-Provider-Budget-Reset-At` and uncharged retry metadata appear when it is exhausted. A signed authorization is not a settlement receipt; only `PAYMENT-RESPONSE` or a confirmed settlement transaction proves payment.
|
|
509
|
+
|
|
450
510
|
### Prove settlement once before automation
|
|
451
511
|
|
|
452
512
|
A 402 challenge alone is not proof that end-to-end paid settlement works for your client. Before relying on paid Locus calls in automation, validate the full pay-and-retry loop once with a $0.01 promoted lookup such as `locus-parcel-lookup` or `locus-flood-zone`:
|
|
453
513
|
|
|
454
514
|
1. `POST https://api.locus.report/api/locus-flood-zone` with a real address, satisfy the $0.01 challenge, and confirm a 200 with a `PAYMENT-RESPONSE` header (or the legacy `X-PAYMENT-RESPONSE` compatibility header).
|
|
455
515
|
2. Keep the payment challenge and settlement receipt. Keep signed `offer-receipt` evidence when present. The current EIP-712 receipt extension is EVM-only, so a Solana settlement may omit that additive extension while still returning the standard `PAYMENT-RESPONSE` transaction receipt.
|
|
456
|
-
3. Only then move to
|
|
516
|
+
3. Only then move to higher-priced tools. Read the live challenge instead of relying on a copied price range.
|
|
457
517
|
|
|
458
518
|
### Charging behavior you can rely on
|
|
459
519
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: locus-property-tax-protest
|
|
3
|
+
preamble-tier: 1
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Use when an owner or their agent wants to contest a property-tax assessment for one US address and needs the deadline, the cited evidence, the filing steps and an outcome baseline from Locus tools.
|
|
6
|
+
triggers:
|
|
7
|
+
- protest my property taxes
|
|
8
|
+
- appeal my assessment
|
|
9
|
+
- notice of appraised value
|
|
10
|
+
- notice of assessment too high
|
|
11
|
+
- ARB hearing
|
|
12
|
+
- value adjustment board petition
|
|
13
|
+
- board of review appeal
|
|
14
|
+
- assessment grievance
|
|
15
|
+
allowed-tools: Bash Read AskUserQuestion
|
|
16
|
+
license: MIT
|
|
17
|
+
---
|
|
18
|
+
# Locus property-tax protest workflow
|
|
19
|
+
|
|
20
|
+
Locus supplies the clock, the cited record evidence, the filing rules and the public outcome
|
|
21
|
+
baseline. The agent and the owner own the argument, the value position, the filing and the
|
|
22
|
+
hearing. Never let a Locus output be presented as "you are over-assessed", "you should protest",
|
|
23
|
+
"your value should be X" or "you will win": Locus does not produce those statements and neither
|
|
24
|
+
may you on Locus's behalf. Report record facts and arithmetic, attribute every number to its source.
|
|
25
|
+
|
|
26
|
+
Inputs you need from the owner before spending money: the street address; the noticed (appraised
|
|
27
|
+
or assessed) value and the date printed on the notice; whether the home is the owner's primary
|
|
28
|
+
residence; the tax year. Do not collect or forward Social Security numbers, account numbers or
|
|
29
|
+
anything the filing portal does not require.
|
|
30
|
+
|
|
31
|
+
## 1. Clock first (free)
|
|
32
|
+
|
|
33
|
+
1. `locus_appeal_window` with `{ address, noticeDate }` or `{ state, noticeDate }`; state accepts a two-letter code or full name (add `locality` for NY or Philadelphia,
|
|
34
|
+
`revaluationYear` for NJ, `countyExtended` for WA). Read the computed deadline, the statute and
|
|
35
|
+
the caveats. If `matched` is false the state is not covered: fall back to
|
|
36
|
+
`locus_tax_calendar` for the statutory framing and the county's official source, and say so.
|
|
37
|
+
2. `locus_tax_calendar` with the county and state: reappraisal cadence, exemption deadlines, bill
|
|
38
|
+
and delinquency rules. If a homestead or relief deadline is still open, surface it; it is often
|
|
39
|
+
worth more than the value protest.
|
|
40
|
+
3. If the deadline has passed in Texas, check the late-correction rule (Tax Code 25.25(d), in the
|
|
41
|
+
tax calendar framing) and report it as a rule, not advice.
|
|
42
|
+
|
|
43
|
+
## 2. Evidence (paid, one settlement each)
|
|
44
|
+
|
|
45
|
+
4. `locus-valuation-challenge` with `{ address, proposedValue: <noticed value>, source:
|
|
46
|
+
"assessment_notice", purpose: "protest", noticeYear }`. It returns cited sections: recorded
|
|
47
|
+
sales in the window, the subject parcel's public facts, permits, hazards, tax and zoning
|
|
48
|
+
records, and the assessment-uniformity section (same-class parcels on the same roll, assessed
|
|
49
|
+
and per-square-foot distributions, the subject's percentile, the noticed-versus-median
|
|
50
|
+
difference). `charged:false` means fewer than two sections were substantive; do not retry to
|
|
51
|
+
force a charge.
|
|
52
|
+
5. `locus-comps-brief` only when you need more recorded sales than the challenge carried
|
|
53
|
+
(different radius or months). Same rules: arithmetic over public records, no valuation.
|
|
54
|
+
6. Present the two grounds the boards recognize as two record tables, not conclusions:
|
|
55
|
+
market evidence (recorded sales, dates, prices, price per land square foot) and uniformity
|
|
56
|
+
evidence (assessed values of same-class neighbors and where the subject sits). Any adjustment
|
|
57
|
+
for size, age or condition is the owner's or agent's judgment; label it as such and keep it
|
|
58
|
+
outside the cited tables.
|
|
59
|
+
|
|
60
|
+
## 3. Programs the notice may hide (free)
|
|
61
|
+
|
|
62
|
+
7. `locus_owner_programs` and `locus_program_windows` for the address: homestead and relief
|
|
63
|
+
deadlines, caps that should already be on the notice, local freezes, amnesties. If the notice
|
|
64
|
+
lacks a homestead exemption the owner believes is on file, that is a separate filing with its
|
|
65
|
+
own deadline; say so.
|
|
66
|
+
|
|
67
|
+
## 4. Filing steps and handoff
|
|
68
|
+
|
|
69
|
+
8. `locus_appeal_filing_guide` (when available) for the jurisdiction: the form or portal, the fee,
|
|
70
|
+
the hearing type, the evidence-exchange rights (Texas: the district must deliver its evidence
|
|
71
|
+
14 days before the hearing under HB 1533), the decision timeline and the next appeal level.
|
|
72
|
+
Where the guide is not yet published for the jurisdiction, use `locus_tax_calendar`'s official
|
|
73
|
+
county pointer and read the appraisal authority's own instructions.
|
|
74
|
+
9. Filing is a browser task on the authority's portal. The Locus response carries a
|
|
75
|
+
`workflowHandoff` block naming the portal and the inputs it requires, plus x402-payable
|
|
76
|
+
browser-automation providers discovered on the agent bazaar. Pick one, drive it with the
|
|
77
|
+
owner's inputs, upload the evidence packet, and save the confirmation the portal returns.
|
|
78
|
+
Locus does not file and does not see the portal session.
|
|
79
|
+
|
|
80
|
+
## 5. Outcome baseline (free)
|
|
81
|
+
|
|
82
|
+
10. `locus_appeal_outcomes` (when available) with the address, or with state plus county: published outcome counts and
|
|
83
|
+
value changes by class, township or district and year, from the board's own open data
|
|
84
|
+
(Cook County Board of Review decision history; Texas Comptroller ARB survey). These are
|
|
85
|
+
aggregates. Never map them onto the owner's parcel as a probability.
|
|
86
|
+
|
|
87
|
+
## Completion
|
|
88
|
+
|
|
89
|
+
The owner has: the deadline and its statute; the cited evidence tables with source URLs and
|
|
90
|
+
fetched-at dates; the programs and deadlines that apply; the filing steps and portal; the
|
|
91
|
+
confirmation from the portal if filed; the outcome baseline for the jurisdiction. Every number
|
|
92
|
+
in your write-up traces to a Locus citation or to an input the owner gave you.
|