> ## Documentation Index
> Fetch the complete documentation index at: https://developers.investorlift.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The twenty-six tools

> Every tool, resource and prompt of the MCP endpoint with its inputs, generated from the server manifest.

Twenty-six tools, with the `godmode_` prefix, noun first, in the order `tools/list` returns them. A `*_lookup` takes exactly one input out of its group and answers with the record. When the name matched several, it answers with `resolved: false` and `candidates[]`. The group is an id or a name. For the parcel, the group is a point, a street `address` with `zip` or `city`, an APN with `county`, or a `property_id`. A `*_get` returns one record for one id.

Everything else pages a list with `limit` and `cursor`. Every tool is read-only, non-destructive, idempotent and closed-world. The API serves every one of them to a key at api.investorlift.com. All twenty-six, with the full JSON schema of every input, are the [`mcp-manifest.json`](/mcp-manifest.json) file, written from the same source as this page.

| Tool                            | What it answers                                                               |
| ------------------------------- | ----------------------------------------------------------------------------- |
| `godmode_coverage`              | List which data is available where, and where this key and account stand      |
| `godmode_deals_summary`         | Summarise investor deal activity around a location                            |
| `godmode_deals_search`          | List investor deals around a location, one page at a time                     |
| `godmode_deal_get`              | Open one investor deal by id, with the owner to contact on a current holding  |
| `godmode_buyers_match`          | Rank the investors who bought near a house as buyers for it                   |
| `godmode_investors_nearby`      | List the investors who bought, held or flipped inside an area                 |
| `godmode_investor_lookup`       | Open one investor's profile by id, or find the investor behind a name         |
| `godmode_investor_deals`        | List every deal of one investor across its market                             |
| `godmode_property_lookup`       | Open one parcel by coordinates, address, APN or id, with its owner and deals  |
| `godmode_agent_lookup`          | Open a listing agent by id, or find the agent behind a name or licence number |
| `godmode_agent_listings`        | List a listing agent's listings, newest first, with the parcel and its holder |
| `godmode_wholesale_listings`    | List Investorlift listings and the outcome the deeds show for each            |
| `godmode_wholesale_listing_get` | Open one Investorlift listing with its buyer and closing deed                 |
| `godmode_wholesaler_lookup`     | Open an Investorlift listing company by id or find it by name                 |
| `godmode_property_search`       | Search parcels by location, filters and quicklists                            |
| `godmode_property_financing`    | Read the financing, liens and valuation of one parcel (dated)                 |
| `godmode_property_permits`      | List the building permits on one parcel                                       |
| `godmode_property_history`      | Read what changed on one parcel, week by week                                 |
| `godmode_listing_history`       | Read the listing cycles of one parcel                                         |
| `godmode_property_comps`        | Read the comparable sales around one parcel                                   |
| `godmode_market_changes`        | Read the weekly change series of one ZIP                                      |
| `godmode_lender_lookup`         | Open a lender by id, or find it by any spelling of its name                   |
| `godmode_lenders_top`           | Rank the lenders of a market, or of one ZIP, city or county                   |
| `godmode_lender_loans`          | List a lender's loans, newest first, with the parcel and the terms as filed   |
| `godmode_lender_borrowers`      | List a lender's borrowers, most loans first, with the investor behind each    |
| `godmode_lenders_nearby`        | Rank the lenders active inside an area                                        |

Rules that hold across the catalogue:

* **Geometry.** A point is `latitude` and `longitude` with `radius_miles` (0.25 to 20, default 2). A viewport is `bbox`
  as an object with `west`, `south`, `east` and `north`. `property_id` searches around that parcel.
* **A place.** On the deals search and summary, the investors nearby and the wholesale listings, a place is `zip` (a
  list of 5-digit ZIPs) or `city`. A city is the parcel's postal city, in any case, and not the short-term rental
  jurisdiction. On the deals and investors tools, Free and Starter take one ZIP and no city (`plan_limit`), and the
  wholesale listings carry no plan limit.
* **One of the four, not two.** `radius_miles` with `bbox`, `property_id` beside either, or `zip` beside `city`, is
  `geometry_conflict`. A point beside a `bbox`, a `zip` or a `city` is allowed and is the reference point for distances
  only. `godmode_buyers_match` takes no place and answers `zip` or `city` with the same `geometry_conflict`: it ranks
  near a point. A ZIP or a city no loaded market's parcels carry is `outside_coverage`, which names it (`zips_unknown`,
  `city`).
* **Lenders nearby.** On `godmode_lenders_nearby` the API resolves the geometry to the H3 res-8 cells whose centre lies
  inside it. Each cell is about a third of a square mile. So the geometry's edge is a hex boundary, not the circle. Each row's
  `in_geometry` says how many cells it became and how many carry the lender.
* **Exactly one.** The four name lookups and the parcel lookup refuse zero or several of their input group before any
  query. The refusal names every field of the group. `godmode_wholesale_listings` does the same for its three scopes.
* **Auto-resolve.** A name opens a profile in two cases only. The first: exactly one candidate matched at the `exact`
  level, and `license` counts as exact for agents. The second: a single candidate matched at `tokens` or better. Two
  exact hits, or a lone `contains` or `trigram` hit, come back as `candidates`. A profile is where names and phones can
  appear, so the rule asks you to choose when the match is not certain.
* **`include_institutional`.** Lists hide iBuyers, production builders and bulk landlords by default. `true` keeps
  every scale tier. If you give `scale` beside it, the tool answers a conflict, because `scale` alone already decides
  who stays.
* **`response_format`, `limit` and `cursor`.** `response_format` is `concise` (the default) or `detailed`. Each format
  has its own cap on `limit`, and `cursor` pages a list. The three tools that take no format always return everything:
  `godmode_deals_summary`, `godmode_deal_get` and `godmode_wholesale_listing_get`. `godmode_coverage` takes a format,
  which caps its three long lists in concise.

## godmode\_coverage

Which data is available where: every loaded market with one status per dataset. Also the planned markets, a place lookup, what this key can get and where the account stands.

What it answers: which markets cover this place, for which datasets, and how fresh. Give at most one place: latitude with longitude, county (FIPS or name), zip, or market. No place: every market.

Reading the response: data.markets has one row per market: the covering ones with a place, \[] when none. Each row carries market, state, label, stage (general or beta), universe\_kind, counties, bbox, point\_tolerance\_miles, data\_end, dataset\_version and stale. Its datasets are deeds, listings, agents, wholesale, auction, str, parcels, financing, permits, owner\_profile, history, cash\_sale, lenders and addresses. Each cell carries status: served, partial (some of its scope), not\_measured (never measurable, do not wait) or not\_published (wait for a build). Each cell also carries dated (a snapshot valued at as\_of), stale (null: no rule), as\_of and gate (the error where not served).

Each cell ends with granularity, scope (its items, a status each) and features (lenders). place\_status reads served or outside, and null where the grain is undecidable. str\_cities and history\_zips summarise two scopes, beside the as-of dates and the lenders block.

data.place carries input, status (covered or outside), markets and counties. data.planned is intent, not a commitment.

account carries plan, tier, period\_end, credits (grant, line, used, remaining, budget), limits, requests and counters. key\_scope, contact\_via\_mcp and on\_behalf\_of\_present say what this call can get.

Gotchas: a new market arrives without a code change, so read this list, not memory. A place nothing covers is a normal result, never an error. Concise drops the scope list of every cell and caps history\_zips at ten. Detailed carries the whole row. remaining lags X-Credits-Remaining by the gateway's one-minute cache. meta.contact reads not\_on\_lists.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                    |
| ----------------- | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `county`          | string                      | no       | A county to look up: a 5-digit FIPS or a name ("Pinal", any case, "County" optional).                                                                                                      |
| `latitude`        | number                      | no       | With longitude: the point to look up. The API applies the bounding-box-and-tolerance rule of the data tools, so the two never disagree. At most one place: a point, county, zip or market. |
| `longitude`       | number                      | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                               |
| `market`          | string                      | no       | A market code to look up: its row alone. An unknown code answers place.status outside, never an error.                                                                                     |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                             |
| `zip`             | string                      | no       | A 5-digit ZIP to look up, resolved to every county it touches through the public ZIP-to-county crosswalk.                                                                                  |

## godmode\_deals\_summary

Counts and medians for investor deals in a radius, a viewport or around a parcel.

What it answers: "How active are investors here, and what does a typical deal look like?" One object, no paging.

Inputs: one location: latitude and longitude with radius\_miles, bbox, property\_id, zip (a list) or city. The shared filters narrow the set. investor\_id scopes it to one buyer, and deal\_id to one deal.

Reading the response: n\_deals is the count after the filters. by\_kind, by\_buyer\_status, by\_year and by\_scale each sum to it, but by\_investor\_kind and by\_channel do not. A deal counts under every kind its investor carries, id-less buyers in the null bucket. It counts in every channel bucket whose flag it carries (from\_wholesaler, from\_investor, distressed, auction), plus other\_or\_unknown for the rest. In a market without published auction counts, auction is null.

by\_year is by purchase date, oldest first, undated deals (n\_undated) last. n\_parcels counts a parcel once, and n\_investors counts registered investors only. Both median\_bought\_price and total\_volume use priced purchases (n\_unpriced left out). The resale, hold and profit medians use resold deals. Each is null when nothing qualifies. The API follows an old investor\_id (meta.resolved\_from).

Gotchas: the tool hides institutional investors unless include\_institutional is true or scale lists institutional, and public bodies unless include\_public is true. A price\_min or price\_max filter drops unpriced deals, and bought\_after or bought\_before undated ones, unless include\_unpriced or include\_undated is true. In Texas most off-market purchases carry no price, so price medians there use few rows. A location outside every market is an error that names the markets. meta.contact reads not\_on\_lists.

| Input                     | Type                                                                                     | Required | Meaning                                                                                                                                                                                                                                                                                                                                   |
| ------------------------- | ---------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `active_within_months`    | integer                                                                                  | no       | Keep investors whose last purchase is within this many months of data\_end.                                                                                                                                                                                                                                                               |
| `bbox`                    | object                                                                                   | no       | Viewport: west, south, east, north in WGS84 degrees (west \< east, south \< north, diagonal at most 40 miles, intersecting a loaded market). Not with radius\_miles or property\_id; latitude and longitude beside it are the reference point only.                                                                                       |
| `beds_min`                | integer                                                                                  | no       | Minimum bedrooms.                                                                                                                                                                                                                                                                                                                         |
| `bought_after`            | string                                                                                   | no       | Bought on or after this date. It drops undated rows unless include\_undated is true.                                                                                                                                                                                                                                                      |
| `bought_auction_kind`     | list of: `TRUSTEE_SALE`, `SHERIFF_SALE`, `HOA_TRUSTEE_SALE`, `TAX_SALE`, `TAX_LIEN_DEED` | no       | Deal filter: keep deals bought at a third-party auction of a listed kind. The API drops every other deal. An error where the market publishes no auction counts.                                                                                                                                                                          |
| `bought_before`           | string                                                                                   | no       | Bought on or before this date.                                                                                                                                                                                                                                                                                                            |
| `bought_distressed`       | boolean                                                                                  | no       | Deal filter: the purchase was a distressed sale: foreclosure, trustee, sheriff or tax instrument, deed in lieu, or REO. It is wider than bought\_auction\_kind.                                                                                                                                                                           |
| `bought_from_wholesaler`  | boolean                                                                                  | no       | Deal filter: bought from a wholesaler by a documented double close. Assignments leave no deed, so absence is not evidence.                                                                                                                                                                                                                |
| `buyer_status`            | list of: `registered`, `unclassified`, `excluded`, `unknown`                             | no       | Buyer statuses to keep.                                                                                                                                                                                                                                                                                                                   |
| `buys_at_auction`         | boolean                                                                                  | no       | Investor filter: true keeps investors who bought at a foreclosure auction (trustee or sheriff sale) in the 24 months before data\_end, the cash buyers. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                              |
| `buys_reo`                | boolean                                                                                  | no       | Investor filter: true keeps investors who bought a bank-owned (REO) house in the 24 months before data\_end, the weaker cash signal. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                 |
| `buys_wholesale`          | boolean                                                                                  | no       | Investor filter: bought from a wholesaler in the 36 months before data\_end.                                                                                                                                                                                                                                                              |
| `city`                    | string                                                                                   | no       | Place: this postal city (any case; not the STR jurisdiction); a point beside it is the reference only. Not with the other geometries or zip; plan\_limit on Free and Starter on the deals and investors tools.                                                                                                                            |
| `deal_id`                 | string                                                                                   | no       | Scope the rows to one deal.                                                                                                                                                                                                                                                                                                               |
| `financed_by`             | string                                                                                   | no       | Investor filter: keep investors with a loan on record from this lender id (len\_ plus 12 hex). A floor: the history sees one loan in five. An error where the market has no lender registry with the borrower match.                                                                                                                      |
| `holds_max`               | integer                                                                                  | no       | Investor filter: at most this many parcels held across the whole market at the deed data end (n\_holds). 0 keeps investors that hold nothing.                                                                                                                                                                                             |
| `holds_min`               | integer                                                                                  | no       | Investor filter: at least this many parcels held across the whole market at the deed data end (n\_holds). For example, 20 keeps the larger portfolios.                                                                                                                                                                                    |
| `include_institutional`   | boolean                                                                                  | no       | True includes institutional investors (iBuyers, production builders, bulk landlords), whom lists hide by default, keeping every scale tier. Not allowed beside scale, which alone decides who is kept.                                                                                                                                    |
| `include_public`          | boolean                                                                                  | no       | True includes public-body investors (counties, cities, housing authorities), hidden by default.                                                                                                                                                                                                                                           |
| `include_undated`         | boolean                                                                                  | no       | True keeps undated rows when you set bought\_after or bought\_before.                                                                                                                                                                                                                                                                     |
| `include_unpriced`        | boolean                                                                                  | no       | True keeps unpriced rows when you set price\_min or price\_max.                                                                                                                                                                                                                                                                           |
| `investor_confidence_min` | enum: `STRONG`, `PROBABLE`, `WEAK`                                                       | no       | Minimum registry confidence in the investor kind. WEAK admits everything.                                                                                                                                                                                                                                                                 |
| `investor_deals_min`      | integer                                                                                  | no       | Minimum purchase events of the investor inside the geometry, after the other filters.                                                                                                                                                                                                                                                     |
| `investor_id`             | string                                                                                   | no       | Scope the rows to one buyer. The API follows an old id to its successor (meta.resolved\_from). A retired id is an error.                                                                                                                                                                                                                  |
| `investor_kind`           | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                        | no       | Keep investors that carry any listed kind. Buyers without an investor id pass unless registered\_only is true.                                                                                                                                                                                                                            |
| `investor_kind_exclude`   | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                        | no       | Drop investors that carry any listed kind, checked after investor\_kind.                                                                                                                                                                                                                                                                  |
| `kind`                    | list of: `flip`, `wholesale`, `hold`, `long_hold`, `other`, `build`                      | no       | Deal kinds to keep. Default: every kind.                                                                                                                                                                                                                                                                                                  |
| `latitude`                | number                                                                                   | no       | Latitude of the point, WGS84. With longitude and radius\_miles it is the search geometry (default 2 miles); beside bbox, the reference point for distances only.                                                                                                                                                                          |
| `longitude`               | number                                                                                   | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                                                                                                                                                                              |
| `price_max`               | integer                                                                                  | no       | Maximum purchase price, whole dollars.                                                                                                                                                                                                                                                                                                    |
| `price_min`               | integer                                                                                  | no       | Minimum purchase price, whole dollars. It drops unpriced rows unless include\_unpriced is true.                                                                                                                                                                                                                                           |
| `property_id`             | string                                                                                   | no       | Parcel geometry: search around that parcel's centre with radius\_miles (default 2). Not with latitude, longitude or bbox.                                                                                                                                                                                                                 |
| `radius_miles`            | number                                                                                   | no       | Search radius in miles around the point or the property\_id parcel, 0.25-20 (default 2). Not with bbox.                                                                                                                                                                                                                                   |
| `registered_only`         | boolean                                                                                  | no       | Keep only rows whose buyer carries an investor id.                                                                                                                                                                                                                                                                                        |
| `scale`                   | list of: `individual`, `small`, `mid`, `large`, `institutional`                          | no       | Scale tiers to keep. Default: every tier except institutional. A list replaces the default entirely.                                                                                                                                                                                                                                      |
| `segment`                 | list of: `SFR`, `CONDO_TH`, `OTHER`                                                      | no       | Parcel segments to keep. Default: every segment.                                                                                                                                                                                                                                                                                          |
| `sold_after`              | string                                                                                   | no       | Resold deals only: sold on or after this date.                                                                                                                                                                                                                                                                                            |
| `sold_before`             | string                                                                                   | no       | Resold deals only: sold on or before this date.                                                                                                                                                                                                                                                                                           |
| `sqft_max`                | integer                                                                                  | no       | Maximum living area, square feet.                                                                                                                                                                                                                                                                                                         |
| `sqft_min`                | integer                                                                                  | no       | Minimum living area, square feet.                                                                                                                                                                                                                                                                                                         |
| `str_business_use`        | boolean                                                                                  | no       | With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one. Measured over LICENSED and PENDING records unless str\_status widens it. An error where a market in play has no short-term rental tables. |
| `str_holdings_min`        | integer                                                                                  | no       | Investor filter: at least this many holdings with a business-use short-term-rental licence. An error where the market has no short-term rental tables.                                                                                                                                                                                    |
| `str_operator`            | boolean                                                                                  | no       | Investor filter: true keeps investors that hold a parcel with a business-use short-term-rental licence, false those with none. An error where the market has no short-term rental tables.                                                                                                                                                 |
| `str_status`              | list of: `LICENSED`, `PENDING`, `EXPIRED`                                                | no       | Keep only holdings whose short-term rental status is one of LICENSED, PENDING or EXPIRED (NONE is not filterable). Rows that are not holdings never match. An error where a market in play has no short-term rental tables.                                                                                                               |
| `uses_private_lender`     | boolean                                                                                  | no       | Investor filter: true keeps investors with a loan from a hard-money, investor or person-named lender in the 24 months before the lender registry's slice date. That date is financing.as\_of on the profile. False keeps those with none. An error where the market has no lender registry with the borrower match.                       |
| `zip`                     | list of string                                                                           | no       | Place: these 5-digit ZIPs (a list, up to 50; one on Free and Starter on the deals and investors tools); a point beside it is the reference only. Not with the other geometries or city.                                                                                                                                                   |

## godmode\_deals\_search

Lists the investor deals inside a radius, a viewport or around a parcel. Each row carries its parcel, dates, prices, profit and the investor who bought.

What it answers: "What did investors buy and sell near here, and who bought it?" One page per call.

Inputs: one location: latitude and longitude with radius\_miles, bbox, property\_id, zip (a list) or city. The shared filters narrow the set. investor\_id scopes it to one buyer, and deal\_id to one deal inside the geometry. The sort orders the page: distance with a point, date\_desc with a bbox alone. A page carries no total.

Reading the response: kind is the deal kind: flip, wholesale, hold, long\_hold, other or build. Prices are whole dollars: null, never 0, means the deed carried no price, and price\_quality says which prices the row has. A registered investor has investor.name set. Without an investor id, name is null and buyer\_status says why. The block listing is the MLS listing on a holding, and wholesale\_listing the Investorlift listing this deed closed.

Contact details are never on this list (meta.contact not\_on\_lists). Concise (default) keeps the core facts, the parcel's address and size, the investor's id, name, kind and scale, and the first listing agent's id. Detailed returns every field, seller, end\_buyer and owner included.

Gotchas: the list hides institutional investors unless include\_institutional is true or scale lists institutional, and public bodies unless include\_public is true. The sort distance with a bbox and no point is an error. So is bought\_on\_investorlift where the market has no Investorlift tables. The API follows an old investor\_id (meta.resolved\_from). A retired one is an error.

Credits (public tier): one per deal new to the account; see the concepts resource.

| Input                     | Type                                                                                     | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | ---------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `active_within_months`    | integer                                                                                  | no       | Keep investors whose last purchase is within this many months of data\_end.                                                                                                                                                                                                                                                                                                                   |
| `bbox`                    | object                                                                                   | no       | Viewport: west, south, east, north in WGS84 degrees (west \< east, south \< north, diagonal at most 40 miles, intersecting a loaded market). Not with radius\_miles or property\_id; latitude and longitude beside it are the reference point only.                                                                                                                                           |
| `beds_min`                | integer                                                                                  | no       | Minimum bedrooms.                                                                                                                                                                                                                                                                                                                                                                             |
| `bought_after`            | string                                                                                   | no       | Bought on or after this date. It drops undated rows unless include\_undated is true.                                                                                                                                                                                                                                                                                                          |
| `bought_auction_kind`     | list of: `TRUSTEE_SALE`, `SHERIFF_SALE`, `HOA_TRUSTEE_SALE`, `TAX_SALE`, `TAX_LIEN_DEED` | no       | Deal filter: keep deals bought at a third-party auction of a listed kind. The API drops every other deal. An error where the market publishes no auction counts.                                                                                                                                                                                                                              |
| `bought_before`           | string                                                                                   | no       | Bought on or before this date.                                                                                                                                                                                                                                                                                                                                                                |
| `bought_distressed`       | boolean                                                                                  | no       | Deal filter: the purchase was a distressed sale: foreclosure, trustee, sheriff or tax instrument, deed in lieu, or REO. It is wider than bought\_auction\_kind.                                                                                                                                                                                                                               |
| `bought_from_wholesaler`  | boolean                                                                                  | no       | Deal filter: bought from a wholesaler by a documented double close. Assignments leave no deed, so absence is not evidence.                                                                                                                                                                                                                                                                    |
| `bought_on_investorlift`  | boolean                                                                                  | no       | Keep only deals whose closing deed closed an Investorlift listing. Those rows carry a wholesale\_listing block. The API answers 422 wholesale\_unavailable when the market has no wholesale tables (meta.coverage\[].wholesale\_as\_of null).                                                                                                                                                 |
| `buyer_status`            | list of: `registered`, `unclassified`, `excluded`, `unknown`                             | no       | Buyer statuses to keep.                                                                                                                                                                                                                                                                                                                                                                       |
| `buys_at_auction`         | boolean                                                                                  | no       | Investor filter: true keeps investors who bought at a foreclosure auction (trustee or sheriff sale) in the 24 months before data\_end, the cash buyers. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                                                  |
| `buys_reo`                | boolean                                                                                  | no       | Investor filter: true keeps investors who bought a bank-owned (REO) house in the 24 months before data\_end, the weaker cash signal. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                                                                     |
| `buys_wholesale`          | boolean                                                                                  | no       | Investor filter: bought from a wholesaler in the 36 months before data\_end.                                                                                                                                                                                                                                                                                                                  |
| `city`                    | string                                                                                   | no       | Place: this postal city (any case; not the STR jurisdiction); a point beside it is the reference only. Not with the other geometries or zip; plan\_limit on Free and Starter on the deals and investors tools.                                                                                                                                                                                |
| `cursor`                  | string                                                                                   | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                                                                                                               |
| `deal_id`                 | string                                                                                   | no       | Scope the rows to one deal.                                                                                                                                                                                                                                                                                                                                                                   |
| `financed_by`             | string                                                                                   | no       | Investor filter: keep investors with a loan on record from this lender id (len\_ plus 12 hex). A floor: the history sees one loan in five. An error where the market has no lender registry with the borrower match.                                                                                                                                                                          |
| `holds_max`               | integer                                                                                  | no       | Investor filter: at most this many parcels held across the whole market at the deed data end (n\_holds). 0 keeps investors that hold nothing.                                                                                                                                                                                                                                                 |
| `holds_min`               | integer                                                                                  | no       | Investor filter: at least this many parcels held across the whole market at the deed data end (n\_holds). For example, 20 keeps the larger portfolios.                                                                                                                                                                                                                                        |
| `include_institutional`   | boolean                                                                                  | no       | True includes institutional investors (iBuyers, production builders, bulk landlords), whom lists hide by default, keeping every scale tier. Not allowed beside scale, which alone decides who is kept.                                                                                                                                                                                        |
| `include_public`          | boolean                                                                                  | no       | True includes public-body investors (counties, cities, housing authorities), hidden by default.                                                                                                                                                                                                                                                                                               |
| `include_undated`         | boolean                                                                                  | no       | True keeps undated rows when you set bought\_after or bought\_before.                                                                                                                                                                                                                                                                                                                         |
| `include_unpriced`        | boolean                                                                                  | no       | True keeps unpriced rows when you set price\_min or price\_max.                                                                                                                                                                                                                                                                                                                               |
| `investor_confidence_min` | enum: `STRONG`, `PROBABLE`, `WEAK`                                                       | no       | Minimum registry confidence in the investor kind. WEAK admits everything.                                                                                                                                                                                                                                                                                                                     |
| `investor_deals_min`      | integer                                                                                  | no       | Minimum purchase events of the investor inside the geometry, after the other filters.                                                                                                                                                                                                                                                                                                         |
| `investor_id`             | string                                                                                   | no       | Scope the rows to one buyer. The API follows an old id to its successor (meta.resolved\_from). A retired id is an error.                                                                                                                                                                                                                                                                      |
| `investor_kind`           | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                        | no       | Keep investors that carry any listed kind. Buyers without an investor id pass unless registered\_only is true.                                                                                                                                                                                                                                                                                |
| `investor_kind_exclude`   | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                        | no       | Drop investors that carry any listed kind, checked after investor\_kind.                                                                                                                                                                                                                                                                                                                      |
| `kind`                    | list of: `flip`, `wholesale`, `hold`, `long_hold`, `other`, `build`                      | no       | Deal kinds to keep. Default: every kind.                                                                                                                                                                                                                                                                                                                                                      |
| `latitude`                | number                                                                                   | no       | Latitude of the point, WGS84. With longitude and radius\_miles it is the search geometry (default 2 miles); beside bbox, the reference point for distances only.                                                                                                                                                                                                                              |
| `limit`                   | integer                                                                                  | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                                                                                                            |
| `longitude`               | number                                                                                   | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                                                                                                                                                                                                                                  |
| `price_max`               | integer                                                                                  | no       | Maximum purchase price, whole dollars.                                                                                                                                                                                                                                                                                                                                                        |
| `price_min`               | integer                                                                                  | no       | Minimum purchase price, whole dollars. It drops unpriced rows unless include\_unpriced is true.                                                                                                                                                                                                                                                                                               |
| `property_id`             | string                                                                                   | no       | Parcel geometry: search around that parcel's centre with radius\_miles (default 2). Not with latitude, longitude or bbox.                                                                                                                                                                                                                                                                     |
| `radius_miles`            | number                                                                                   | no       | Search radius in miles around the point or the property\_id parcel, 0.25-20 (default 2). Not with bbox.                                                                                                                                                                                                                                                                                       |
| `registered_only`         | boolean                                                                                  | no       | Keep only rows whose buyer carries an investor id.                                                                                                                                                                                                                                                                                                                                            |
| `response_format`         | enum: `concise`, `detailed`                                                              | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                |
| `scale`                   | list of: `individual`, `small`, `mid`, `large`, `institutional`                          | no       | Scale tiers to keep. Default: every tier except institutional. A list replaces the default entirely.                                                                                                                                                                                                                                                                                          |
| `segment`                 | list of: `SFR`, `CONDO_TH`, `OTHER`                                                      | no       | Parcel segments to keep. Default: every segment.                                                                                                                                                                                                                                                                                                                                              |
| `sold_after`              | string                                                                                   | no       | Resold deals only: sold on or after this date.                                                                                                                                                                                                                                                                                                                                                |
| `sold_before`             | string                                                                                   | no       | Resold deals only: sold on or before this date.                                                                                                                                                                                                                                                                                                                                               |
| `sort`                    | enum: `distance`, `date_desc`, `date_asc`, `price_desc`, `price_asc`                     | no       | Row order: distance (nearest first), date\_desc (newest purchase first), date\_asc (oldest purchase first), price\_desc or price\_asc (on the purchase price). With a reference point the default is distance, which needs lat + lng or property\_id. With bbox alone the default is date\_desc. Undated rows come last under both date sorts, and unpriced rows last under both price sorts. |
| `sqft_max`                | integer                                                                                  | no       | Maximum living area, square feet.                                                                                                                                                                                                                                                                                                                                                             |
| `sqft_min`                | integer                                                                                  | no       | Minimum living area, square feet.                                                                                                                                                                                                                                                                                                                                                             |
| `str_business_use`        | boolean                                                                                  | no       | With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one. Measured over LICENSED and PENDING records unless str\_status widens it. An error where a market in play has no short-term rental tables.                                                     |
| `str_holdings_min`        | integer                                                                                  | no       | Investor filter: at least this many holdings with a business-use short-term-rental licence. An error where the market has no short-term rental tables.                                                                                                                                                                                                                                        |
| `str_operator`            | boolean                                                                                  | no       | Investor filter: true keeps investors that hold a parcel with a business-use short-term-rental licence, false those with none. An error where the market has no short-term rental tables.                                                                                                                                                                                                     |
| `str_status`              | list of: `LICENSED`, `PENDING`, `EXPIRED`                                                | no       | Keep only holdings whose short-term rental status is one of LICENSED, PENDING or EXPIRED (NONE is not filterable). Rows that are not holdings never match. An error where a market in play has no short-term rental tables.                                                                                                                                                                   |
| `uses_private_lender`     | boolean                                                                                  | no       | Investor filter: true keeps investors with a loan from a hard-money, investor or person-named lender in the 24 months before the lender registry's slice date. That date is financing.as\_of on the profile. False keeps those with none. An error where the market has no lender registry with the borrower match.                                                                           |
| `zip`                     | list of string                                                                           | no       | Place: these 5-digit ZIPs (a list, up to 50; one on Free and Starter on the deals and investors tools); a point beside it is the reference only. Not with the other geometries or city.                                                                                                                                                                                                       |

## godmode\_deal\_get

Returns one investor deal by id: the parcel, the dates and prices, the investor and the counterparties. On a confirmed current holding, the owner block names the person to contact about the house.

What it answers: "Tell me everything about this deal" and "Who owns this house now, and how do I reach them?"

Input: deal\_id (deal\_ plus 32 hex).

Reading the response: data is the full deal row, the same shape as a detailed search row, with distance\_miles null (no reference point). The row carries owner only when deal\_type is HOLDING and ownership\_confirmed is true. A PURCHASE row, with no resale and no ownership confirmation yet, has owner null, and so does every resold row.

Contact fields: owner.names (given-first), owner.mailing and the listing agents' names, phones, emails and licence numbers. They are present when this key can get contact through this server. Then meta.contact reads served and the API audits the call. Otherwise they are null with contact\_redacted true (meta.contact redacted\_no\_scope): a rule, not absent data. For an entity owner, owner.names\[].surname carries the whole entity name and given is null.

n\_parcels\_in\_event above 1 means a bulk buy: the investor bought that many parcels the same day. The row names seller and end\_buyer only when they are registered investors. It never names a household, only its kind (PERSON, TRUST or ENTITY). The block listing is the MLS listing on a holding, and owner\_test says if it is this investor's. The block wholesale\_listing is the Investorlift listing this deed closed.

Gotchas: the tool returns a deal reached by id whatever its buyer, institutional or public included. An id that no longer exists is not\_found. A data refresh can retire a purchase row when its resale deed arrives. An id without the deal\_ prefix is invalid. Nothing here is consent to call or text the people named.

Credits (public tier): one per deal new to the account; see the concepts resource.

| Input     | Type   | Required | Meaning                                                                                                                          |
| --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `deal_id` | string | yes      | Deal id: deal\_ followed by 32 hex characters, for example deal\_5d1b2c3d4e5f60718293a4b5c6d7e8f9. The prefix is part of the id. |

## godmode\_buyers\_match

Ranks the investors who bought near a house as buyers for it.

What it answers: "I have a house under contract here: who nearby buys houses like it?" A ranked page of investors with a 0 to 1 score and the reasons in words. A row has what the investor did in the radius, sample deals, MLS listing and Investorlift purchase counts. The reasons are proximity, recency, price fit, strategy, segment and wholesale buyer.

Inputs: a location as latitude and longitude with radius\_miles (0.25 to 20, default 2), a bbox or property\_id. A property\_id also fills segment, beds and sqft from the parcel. zip and city are refused: the match ranks near a point. Subject facts shape the score and never remove investors: subject\_asking\_price and subject\_arv in dollars, subject\_condition and subject\_segment.

w\_ weights reweight the factors (not all 0). w\_activity (0 to 1) adds the operator's chance to buy within 180 days. Filters remove investors and never score: active\_within\_months, kind, the price bounds, the wholesale and auction flags, investor\_kind\_exclude, scale, the institutional and public switches. Concise (the default) keeps two sample deals. Detailed returns every field.

Reading the response: score is gate times the weighted sum. reasons\[] explains each factor. summary counts the whole radius while data holds one page. Rows that share investor.operator\_id are one operation: contact it once. buyer\_signal.cycle\_state says where the operator is in its capital cycle. Contact details are never on this list: meta.contact reads not\_on\_lists.

Gotchas: the tool hides institutional buyers unless include\_institutional is true or scale lists institutional. A point outside every loaded market is an error that lists them. In Texas most purchase prices are null, so price fit is weak there.

Credits (public tier): one per investor new to the account, plus 2 a call; see the concepts resource.

| Input                     | Type                                                                                     | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------- | ---------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `active_within_months`    | integer                                                                                  | no       | Keep investors whose last purchase is within this many months of data\_end.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `bbox`                    | object                                                                                   | no       | Viewport: west, south, east, north in WGS84 degrees (west \< east, south \< north, diagonal at most 40 miles, intersecting a loaded market). Not with radius\_miles or property\_id; latitude and longitude beside it are the reference point only.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `beds_min`                | integer                                                                                  | no       | Minimum bedrooms.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `bought_after`            | string                                                                                   | no       | Bought on or after this date. It drops undated rows unless include\_undated is true.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `bought_auction_kind`     | list of: `TRUSTEE_SALE`, `SHERIFF_SALE`, `HOA_TRUSTEE_SALE`, `TAX_SALE`, `TAX_LIEN_DEED` | no       | Deal filter: keep deals bought at a third-party auction of a listed kind. The API drops every other deal. An error where the market publishes no auction counts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `bought_before`           | string                                                                                   | no       | Bought on or before this date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `bought_distressed`       | boolean                                                                                  | no       | Deal filter: the purchase was a distressed sale: foreclosure, trustee, sheriff or tax instrument, deed in lieu, or REO. It is wider than bought\_auction\_kind.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `bought_from_wholesaler`  | boolean                                                                                  | no       | Deal filter: bought from a wholesaler by a documented double close. Assignments leave no deed, so absence is not evidence.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `buyer_status`            | list of: `registered`, `unclassified`, `excluded`, `unknown`                             | no       | Buyer statuses to keep.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `buys_at_auction`         | boolean                                                                                  | no       | Investor filter: true keeps investors who bought at a foreclosure auction (trustee or sheriff sale) in the 24 months before data\_end, the cash buyers. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `buys_reo`                | boolean                                                                                  | no       | Investor filter: true keeps investors who bought a bank-owned (REO) house in the 24 months before data\_end, the weaker cash signal. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `buys_wholesale`          | boolean                                                                                  | no       | Investor filter: bought from a wholesaler in the 36 months before data\_end.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `city`                    | string                                                                                   | no       | Place: this postal city (any case; not the STR jurisdiction); a point beside it is the reference only. Not with the other geometries or zip; plan\_limit on Free and Starter on the deals and investors tools.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `cursor`                  | string                                                                                   | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `deal_id`                 | string                                                                                   | no       | Scope the rows to one deal.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `financed_by`             | string                                                                                   | no       | Investor filter: keep investors with a loan on record from this lender id (len\_ plus 12 hex). A floor: the history sees one loan in five. An error where the market has no lender registry with the borrower match.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `holds_max`               | integer                                                                                  | no       | Investor filter: at most this many parcels held across the whole market at the deed data end (n\_holds). 0 keeps investors that hold nothing.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `holds_min`               | integer                                                                                  | no       | Investor filter: at least this many parcels held across the whole market at the deed data end (n\_holds). For example, 20 keeps the larger portfolios.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `include_excluded`        | boolean                                                                                  | no       | With include\_unregistered=true, also list the excluded buyers: custodian trusts, relocation companies, auction houses and ambiguous surnames. Default false.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `include_institutional`   | boolean                                                                                  | no       | True includes institutional investors (iBuyers, production builders, bulk landlords), whom lists hide by default, keeping every scale tier. Not allowed beside scale, which alone decides who is kept.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `include_public`          | boolean                                                                                  | no       | True includes public-body investors (counties, cities, housing authorities), hidden by default.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `include_undated`         | boolean                                                                                  | no       | True keeps undated rows when you set bought\_after or bought\_before.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `include_unpriced`        | boolean                                                                                  | no       | True keeps unpriced rows when you set price\_min or price\_max.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `include_unregistered`    | boolean                                                                                  | no       | Add summary.unregistered\[]: the id-less buyers inside the geometry, households and unclassified names that bought here. The API scores them on proximity and recency only. A lead list, not a ranking: most have one deal.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `investor_confidence_min` | enum: `STRONG`, `PROBABLE`, `WEAK`                                                       | no       | Minimum registry confidence in the investor kind. WEAK admits everything.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `investor_deals_min`      | integer                                                                                  | no       | Minimum purchase events of the investor inside the geometry, after the other filters.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `investor_id`             | string                                                                                   | no       | Scope the rows to one buyer. The API follows an old id to its successor (meta.resolved\_from). A retired id is an error.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `investor_kind`           | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                        | no       | Keep investors that carry any listed kind. Buyers without an investor id pass unless registered\_only is true.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `investor_kind_exclude`   | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                        | no       | Drop investors that carry any listed kind, checked after investor\_kind.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `kind`                    | list of: `flip`, `wholesale`, `hold`, `long_hold`, `other`, `build`                      | no       | Deal kinds to keep. Default: every kind.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `latitude`                | number                                                                                   | no       | Latitude of the point, WGS84. With longitude and radius\_miles it is the search geometry (default 2 miles); beside bbox, the reference point for distances only.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `limit`                   | integer                                                                                  | no       | Rows per page. Concise format: default 10, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `longitude`               | number                                                                                   | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `price_max`               | integer                                                                                  | no       | Maximum purchase price, whole dollars.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `price_min`               | integer                                                                                  | no       | Minimum purchase price, whole dollars. It drops unpriced rows unless include\_unpriced is true.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `property_id`             | string                                                                                   | no       | Parcel geometry: search around that parcel's centre with radius\_miles (default 2). Not with latitude, longitude or bbox.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `radius_miles`            | number                                                                                   | no       | Search radius in miles around the point or the property\_id parcel, 0.25-20 (default 2). Not with bbox.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `registered_only`         | boolean                                                                                  | no       | Keep only rows whose buyer carries an investor id.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `response_format`         | enum: `concise`, `detailed`                                                              | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `scale`                   | list of: `individual`, `small`, `mid`, `large`, `institutional`                          | no       | Scale tiers to keep. Default: every tier except institutional. A list replaces the default entirely.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `segment`                 | list of: `SFR`, `CONDO_TH`, `OTHER`                                                      | no       | Parcel segments to keep. Default: every segment.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `sold_after`              | string                                                                                   | no       | Resold deals only: sold on or after this date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `sold_before`             | string                                                                                   | no       | Resold deals only: sold on or before this date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `sqft_max`                | integer                                                                                  | no       | Maximum living area, square feet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `sqft_min`                | integer                                                                                  | no       | Minimum living area, square feet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `str_holdings_min`        | integer                                                                                  | no       | Investor filter: at least this many holdings with a business-use short-term-rental licence. An error where the market has no short-term rental tables.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `str_operator`            | boolean                                                                                  | no       | Investor filter: true keeps investors that hold a parcel with a business-use short-term-rental licence, false those with none. An error where the market has no short-term rental tables.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `subject_arv`             | integer                                                                                  | no       | After-repair value of the subject, whole dollars, for example 560000. Send it only when it is known and above 0. Without an asking price it drives price\_fit through the buy-to-resale ratio of the investor, or else the ratio of the metro (meta.coverage\[].metro\_buy\_to\_resale\_ratio). It also enables the resale\_fit reason (weight 0 by default).                                                                                                                                                                                                                                                                                                                                                                     |
| `subject_asking_price`    | integer                                                                                  | no       | The contract or asking price of the subject deal, whole dollars, for example 250000. Send it only when the deal has an asking price. It feeds the price\_fit factor and never filters deals.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `subject_beds`            | integer                                                                                  | no       | Bedrooms of the subject, for example 3. It defaults from the parcel when the geometry is property\_id. The API accepts and echoes it for forward compatibility and does not score it in this version.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `subject_condition`       | enum: `TURN_KEY`, `LIGHT_REHAB`, `MAJOR_REHAB`, `FULL_GUT`, `TEAR_DOWN`                  | no       | Condition of the subject property, the Investorlift enum. TURN\_KEY: move-in ready, where landlords and iBuyers fit best. LIGHT\_REHAB: cosmetic work, for flippers and landlords. MAJOR\_REHAB and FULL\_GUT: heavy work, flippers first and builders next. TEAR\_DOWN: a lot, builders first. It drives the strategy factor: if you omit it, the API drops that factor.                                                                                                                                                                                                                                                                                                                                                         |
| `subject_segment`         | enum: `SFR`, `CONDO_TH`, `OTHER`                                                         | no       | Segment of the subject property: SFR, CONDO\_TH (condo or townhouse) or OTHER. OTHER is a mixed bucket: manufactured, multi-family, land and commercial. The subject segment drives the segment factor, the share of the deals of the investor in this segment. It defaults from the parcel when the geometry is property\_id. Otherwise omit it and the API drops the factor. Investorlift mapping: single\_family maps to SFR, condo and townhouse map to CONDO\_TH, and everything else maps to OTHER.                                                                                                                                                                                                                         |
| `subject_sqft`            | integer                                                                                  | no       | Living area of the subject in square feet, for example 1650. It defaults from the parcel when the geometry is property\_id. The API accepts and echoes it for forward compatibility and does not score it in this version.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `uses_private_lender`     | boolean                                                                                  | no       | Investor filter: true keeps investors with a loan from a hard-money, investor or person-named lender in the 24 months before the lender registry's slice date. That date is financing.as\_of on the profile. False keeps those with none. An error where the market has no lender registry with the borrower match.                                                                                                                                                                                                                                                                                                                                                                                                               |
| `w_activity`              | number                                                                                   | no       | Weight of the activity signal, 0 to 1 (default 0: off), not part of reasons\[] or meta.weights. The API multiplies the score by the probability that the operator buys in the 180 days after the data end (buyer\_signal.activity\_p\_180), raised to this power. A power of 1 ranks by expected purchases, 0.5 softens the effect, and 0 leaves the ranking as it is. Any change starts a new ranking and invalidates the cursor, and the activity\_multiplier of the row shows what the signal did. An investor with no probability, a dormant operator or one with no signal row, scores as 0.034, the measured dormant re-activation rate. In the Phoenix measurement 3.4% of dormant operators bought again within 180 days. |
| `w_price_fit`             | number                                                                                   | no       | Weight of the price\_fit factor, 0 to 1 (default 0.2). Price fit: if the subject price sits inside what they usually pay. Needs subject\_asking\_price or subject\_arv.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `w_proximity`             | number                                                                                   | no       | Weight of the proximity factor, 0 to 1 (default 0.3). Proximity: how many separate purchase days they had near the subject and how close.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `w_recency`               | number                                                                                   | no       | Weight of the recency factor, 0 to 1 (default 0.25). Recency: how close to the deed data end (meta.coverage\[].data\_end) they last bought, and how often they buy.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `w_resale_fit`            | number                                                                                   | no       | Weight of the resale\_fit factor, 0 to 1 (default 0). Resale fit: the subject ARV against their median flip resale. Needs subject\_arv. The default is 0, so the API shows the reason without moving the score.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `w_segment`               | number                                                                                   | no       | Weight of the segment factor, 0 to 1 (default 0.05). Segment: the share of their deals in the subject segment. Needs subject\_segment or property\_id.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `w_strategy`              | number                                                                                   | no       | Weight of the strategy factor, 0 to 1 (default 0.1). Strategy: if their kinds suit the subject condition. Needs subject\_condition.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `w_wholesale_buyer`       | number                                                                                   | no       | Weight of the wholesale\_buyer factor, 0 to 1 (default 0.1). Wholesale buyer: how many documented wholesale purchases they made in the 5 years ending on the deed data end (meta.coverage\[].data\_end).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `zip`                     | list of string                                                                           | no       | Place: these 5-digit ZIPs (a list, up to 50; one on Free and Starter on the deals and investors tools); a point beside it is the reference only. Not with the other geometries or city.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

## godmode\_investors\_nearby

Lists the investors active inside an area, one row per investor, ranked by what they did there.

What it answers: "Who buys, holds or flips houses around this location, and how active is each one here?"

Inputs: one location: latitude and longitude with radius\_miles, bbox, property\_id, zip (a list) or city. The sort orders the rows by what they did inside the geometry (events\_desc by default). The shared deal filters apply before the rollup: kind, price\_min, bought\_after, segment, investor\_kind, scale, buys\_wholesale and more.

Reading the response: investor is the market-wide record (kinds, scale, last\_bought\_on). The block in\_radius is what they did inside this geometry after the filters (n\_events, n\_parcels, volume, last\_bought\_on, n\_flips). Rows with one investor.operator\_id are one buying operation. listings counts what they have on the MLS now, and wholesale\_purchases what they bought off Investorlift. Both are null where the market has no such tables. summary covers the whole geometry, not the page.

Contact details are never on this list (meta.contact not\_on\_lists). Concise (default) keeps the identity, in\_radius and count fields. Detailed returns every field.

Gotchas: the list hides institutional investors unless include\_institutional is true or scale lists institutional. It hides public bodies unless include\_public is true. Buyers without an investor id never appear here. A location outside every loaded market is an error that names the markets. The API follows an old investor\_id (meta.resolved\_from). A retired one is an error.

Credits (public tier): one per investor new to the account; see the concepts resource.

| Input                     | Type                                                                                                                 | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `active_within_months`    | integer                                                                                                              | no       | Keep investors whose last purchase is within this many months of data\_end.                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `bbox`                    | object                                                                                                               | no       | Viewport: west, south, east, north in WGS84 degrees (west \< east, south \< north, diagonal at most 40 miles, intersecting a loaded market). Not with radius\_miles or property\_id; latitude and longitude beside it are the reference point only.                                                                                                                                                                                                                                                               |
| `beds_min`                | integer                                                                                                              | no       | Minimum bedrooms.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `bought_after`            | string                                                                                                               | no       | Bought on or after this date. It drops undated rows unless include\_undated is true.                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `bought_auction_kind`     | list of: `TRUSTEE_SALE`, `SHERIFF_SALE`, `HOA_TRUSTEE_SALE`, `TAX_SALE`, `TAX_LIEN_DEED`                             | no       | Deal filter: keep deals bought at a third-party auction of a listed kind. The API drops every other deal. An error where the market publishes no auction counts.                                                                                                                                                                                                                                                                                                                                                  |
| `bought_before`           | string                                                                                                               | no       | Bought on or before this date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `bought_distressed`       | boolean                                                                                                              | no       | Deal filter: the purchase was a distressed sale: foreclosure, trustee, sheriff or tax instrument, deed in lieu, or REO. It is wider than bought\_auction\_kind.                                                                                                                                                                                                                                                                                                                                                   |
| `bought_from_wholesaler`  | boolean                                                                                                              | no       | Deal filter: bought from a wholesaler by a documented double close. Assignments leave no deed, so absence is not evidence.                                                                                                                                                                                                                                                                                                                                                                                        |
| `buyer_status`            | list of: `registered`, `unclassified`, `excluded`, `unknown`                                                         | no       | Buyer statuses to keep.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `buys_at_auction`         | boolean                                                                                                              | no       | Investor filter: true keeps investors who bought at a foreclosure auction (trustee or sheriff sale) in the 24 months before data\_end, the cash buyers. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                                                                                                                                                                      |
| `buys_reo`                | boolean                                                                                                              | no       | Investor filter: true keeps investors who bought a bank-owned (REO) house in the 24 months before data\_end, the weaker cash signal. False keeps registered investors who did not. An error where the market publishes no auction counts.                                                                                                                                                                                                                                                                         |
| `buys_wholesale`          | boolean                                                                                                              | no       | Investor filter: bought from a wholesaler in the 36 months before data\_end.                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `city`                    | string                                                                                                               | no       | Place: this postal city (any case; not the STR jurisdiction); a point beside it is the reference only. Not with the other geometries or zip; plan\_limit on Free and Starter on the deals and investors tools.                                                                                                                                                                                                                                                                                                    |
| `cursor`                  | string                                                                                                               | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                                                                                                                                                                                                                                   |
| `deal_id`                 | string                                                                                                               | no       | Scope the rows to one deal.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `financed_by`             | string                                                                                                               | no       | Investor filter: keep investors with a loan on record from this lender id (len\_ plus 12 hex). A floor: the history sees one loan in five. An error where the market has no lender registry with the borrower match.                                                                                                                                                                                                                                                                                              |
| `holds_max`               | integer                                                                                                              | no       | Investor filter: at most this many parcels held across the whole market at the deed data end (n\_holds). 0 keeps investors that hold nothing.                                                                                                                                                                                                                                                                                                                                                                     |
| `holds_min`               | integer                                                                                                              | no       | Investor filter: at least this many parcels held across the whole market at the deed data end (n\_holds). For example, 20 keeps the larger portfolios.                                                                                                                                                                                                                                                                                                                                                            |
| `include_institutional`   | boolean                                                                                                              | no       | True includes institutional investors (iBuyers, production builders, bulk landlords), whom lists hide by default, keeping every scale tier. Not allowed beside scale, which alone decides who is kept.                                                                                                                                                                                                                                                                                                            |
| `include_public`          | boolean                                                                                                              | no       | True includes public-body investors (counties, cities, housing authorities), hidden by default.                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `include_undated`         | boolean                                                                                                              | no       | True keeps undated rows when you set bought\_after or bought\_before.                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `include_unpriced`        | boolean                                                                                                              | no       | True keeps unpriced rows when you set price\_min or price\_max.                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `investor_confidence_min` | enum: `STRONG`, `PROBABLE`, `WEAK`                                                                                   | no       | Minimum registry confidence in the investor kind. WEAK admits everything.                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `investor_deals_min`      | integer                                                                                                              | no       | Minimum purchase events of the investor inside the geometry, after the other filters.                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `investor_id`             | string                                                                                                               | no       | Scope the rows to one buyer. The API follows an old id to its successor (meta.resolved\_from). A retired id is an error.                                                                                                                                                                                                                                                                                                                                                                                          |
| `investor_kind`           | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                                                    | no       | Keep investors that carry any listed kind. Buyers without an investor id pass unless registered\_only is true.                                                                                                                                                                                                                                                                                                                                                                                                    |
| `investor_kind_exclude`   | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`                                                    | no       | Drop investors that carry any listed kind, checked after investor\_kind.                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `kind`                    | list of: `flip`, `wholesale`, `hold`, `long_hold`, `other`, `build`                                                  | no       | Deal kinds to keep. Default: every kind.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `latitude`                | number                                                                                                               | no       | Latitude of the point, WGS84. With longitude and radius\_miles it is the search geometry (default 2 miles); beside bbox, the reference point for distances only.                                                                                                                                                                                                                                                                                                                                                  |
| `limit`                   | integer                                                                                                              | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                                                                                                                                                                                                                                |
| `longitude`               | number                                                                                                               | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `price_max`               | integer                                                                                                              | no       | Maximum purchase price, whole dollars.                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `price_min`               | integer                                                                                                              | no       | Minimum purchase price, whole dollars. It drops unpriced rows unless include\_unpriced is true.                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `property_id`             | string                                                                                                               | no       | Parcel geometry: search around that parcel's centre with radius\_miles (default 2). Not with latitude, longitude or bbox.                                                                                                                                                                                                                                                                                                                                                                                         |
| `radius_miles`            | number                                                                                                               | no       | Search radius in miles around the point or the property\_id parcel, 0.25-20 (default 2). Not with bbox.                                                                                                                                                                                                                                                                                                                                                                                                           |
| `registered_only`         | boolean                                                                                                              | no       | Keep only rows whose buyer carries an investor id.                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `response_format`         | enum: `concise`, `detailed`                                                                                          | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                                                                                                                                    |
| `scale`                   | list of: `individual`, `small`, `mid`, `large`, `institutional`                                                      | no       | Scale tiers to keep. Default: every tier except institutional. A list replaces the default entirely.                                                                                                                                                                                                                                                                                                                                                                                                              |
| `segment`                 | list of: `SFR`, `CONDO_TH`, `OTHER`                                                                                  | no       | Parcel segments to keep. Default: every segment.                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `sold_after`              | string                                                                                                               | no       | Resold deals only: sold on or after this date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `sold_before`             | string                                                                                                               | no       | Resold deals only: sold on or before this date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `sort`                    | enum: `events_desc`, `parcels_desc`, `volume_desc`, `last_bought_desc`, `last_deal_desc`, `flips_desc`, `holds_desc` | no       | Row order over what the investor did inside the geometry. The default is events\_desc (most purchase days first). Or parcels\_desc (most parcels) or volume\_desc (largest purchase total). Or last\_bought\_desc (newest purchase) or last\_deal\_desc (newest purchase, sale or transfer). Or flips\_desc (most flips) or holds\_desc (most current holdings inside the geometry at data\_end). The holdings count is in\_radius.n\_holds, and the market-wide portfolio is the holds\_min / holds\_max filter. |
| `sqft_max`                | integer                                                                                                              | no       | Maximum living area, square feet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `sqft_min`                | integer                                                                                                              | no       | Minimum living area, square feet.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `str_holdings_min`        | integer                                                                                                              | no       | Investor filter: at least this many holdings with a business-use short-term-rental licence. An error where the market has no short-term rental tables.                                                                                                                                                                                                                                                                                                                                                            |
| `str_operator`            | boolean                                                                                                              | no       | Investor filter: true keeps investors that hold a parcel with a business-use short-term-rental licence, false those with none. An error where the market has no short-term rental tables.                                                                                                                                                                                                                                                                                                                         |
| `uses_private_lender`     | boolean                                                                                                              | no       | Investor filter: true keeps investors with a loan from a hard-money, investor or person-named lender in the 24 months before the lender registry's slice date. That date is financing.as\_of on the profile. False keeps those with none. An error where the market has no lender registry with the borrower match.                                                                                                                                                                                               |
| `zip`                     | list of string                                                                                                       | no       | Place: these 5-digit ZIPs (a list, up to 50; one on Free and Starter on the deals and investors tools); a point beside it is the reference only. Not with the other geometries or city.                                                                                                                                                                                                                                                                                                                           |

## godmode\_investor\_lookup

Opens one investor's profile by id, or finds the investor behind a name and opens the profile when the match is unambiguous.

What it answers: "Tell me about this investor" and "Find this investor by name". Inputs: exactly one of investor\_id (inv\_ plus 12 hex) or name: a person, LLC, trust or brand, under any deed name. Add market to narrow a name search, or when an id exists in several. n\_deals\_min and include\_public shape a name search.

Reading the response: resolved true carries data, the profile, with kinds, scale, counts by deal kind, first and last deed and days since last purchase. It has price\_band, segment\_mix, member\_names, buyer\_signal (cycle\_state, activity\_p\_180), listings, wholesale\_purchases and agent\_links. It has contact when the key can get contact through this server: person members (given and surname), mailing addresses and skip\_trace\_targets.

With resolved false, candidates lists each matching investor with id, name, market, match level (exact, tokens, contains, trigram) and deal count. A name resolves only when exactly one investor matches at the exact level, or a single investor matches at tokens or better. A lone contains or trigram hit stays a candidate. The capped flag is true when more matched than the list holds. Old ids merged into this one appear in meta.resolved\_from.

Formats: concise (default) omits members\[], id\_history and the classifier diagnostics. It caps names and cities at 10, and addresses, skip-trace targets and agent links at 5. Detailed returns the whole profile, over 50 KB for a large investor.

Gotchas: a retired id is an error. operator\_id can move after a refresh, so it groups rows within one response. A deed carries a name as SURNAME GIVEN, so read given and surname. Without contact access, member\_names lists entities and trusts only, and contact is null with contact\_redacted true.

Credits (public tier): one per investor new to the account; see the concepts resource.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                                                                                                                                                            |
| ----------------- | --------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `include_public`  | boolean                     | no       | Include public bodies (counties, cities, housing authorities). Default: false. Applies to a name search. The API serves a profile reached by id whatever its kind.                                                                                                                                                                 |
| `investor_id`     | string                      | no       | The investor to open: inv\_ followed by 12 hex characters, as served on any row. The API follows an old id from an earlier data refresh to the current investor (meta.resolved\_from). Exactly one of investor\_id or name.                                                                                                        |
| `market`          | string                      | no       | Market code, for example phx. The loaded markets are in meta.coverage\[]. With a name it narrows the search to that market. Otherwise the API searches every loaded market, and each candidate carries its market. With an id, the API needs it only when the id exists in more than one loaded market (market\_required says so). |
| `n_deals_min`     | integer                     | no       | Minimum investment deals as buyer inside the area loaded for the market, 0 to 1,000,000 (default 1). The default hides seller-only profiles, for example builders that never bought. A value of 0 shows them. Applies to a name search.                                                                                            |
| `name`            | string                      | no       | The name to find the investor behind, or part of one: a person, an LLC, a trust or a brand. The API accepts a person's name in either order (Dana Rivera or RIVERA DANA). The API searches every deed name the investor buys under, case and punctuation aside. At least 3 letters or digits. Exactly one of investor\_id or name. |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                     |

## godmode\_investor\_deals

Lists every deal of one investor across the whole market: what they bought, what they sold and what they made, as deal rows with coordinates.

What it answers: "What did this investor buy and sell, and what was the result of each deal?"

Inputs: investor\_id (inv\_ plus 12 hex). role picks the side: buyer (the default), seller, or any for both plus end-buyer rows, each deal once.

listing\_status keeps holdings by the MLS listing on the parcel. With source investorlift, the list keeps deals whose deed closed an Investorlift listing. The sort is date\_desc by default. Add market only when the id exists in several loaded markets.

Reading the response: each row is one deal: kind, the dates and prices, hold\_days, gross\_profit, price\_quality, the parcel (property) and the buyer (investor). With role seller or any, investor on a row is the buyer, often a household without an id. Then its name is null and buyer\_status says why. A hold row carries listing (status, list\_price, owner\_test, counted) when the parcel has an MLS record, and wholesale\_listing when the deed closed an Investorlift listing. Contact details are never on this list (meta.contact not\_on\_lists).

Concise (default) keeps the deal facts and the parcel and buyer identity. Detailed returns every field. meta.resolved\_from lists an old id.

Gotchas: in Texas most purchase prices are null. So bought\_price and gross\_profit are null while sold\_price is known (price\_quality SELL\_ONLY). The input listing\_status is an error where the market has no listing tables (listings\_unavailable), and source investorlift where it has no wholesale tables (wholesale\_unavailable). A retired id is an error.

Credits (public tier): one per deal new to the account; see the concepts resource.

| Input              | Type                                                                    | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------ | ----------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `cursor`           | string                                                                  | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `investor_id`      | string                                                                  | yes      | The investor whose deals are listed: inv\_ followed by 12 hex characters, as served on any row. The API follows an old id from an earlier data refresh to the current investor (meta.resolved\_from).                                                                                                                                                                                                                                                                                                                                                                                                        |
| `kind`             | list of: `flip`, `wholesale`, `hold`, `long_hold`, `other`, `build`     | no       | Deal kinds to keep (comma list or repeated key). Default: every kind.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `limit`            | integer                                                                 | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `listing_status`   | list of: `on_market`, `active`, `pending`, `sold`, `off_market`, `none` | no       | Keep only holdings whose MLS listing matches one of these values (comma list or repeated key). The value on\_market keeps the holdings listed at listings\_data\_end: ACTIVE or PENDING and not a rental. The values active, pending, sold and off\_market match the record's status, and none keeps holdings with no record. The API applies the filter before it cuts the page, so role=buyer\&listing\_status=on\_market is every listed holding in one page. It answers 422 listings\_unavailable when the market has no listing tables (meta.coverage\[].listings\_data\_end null). Default: every row. |
| `market`           | string                                                                  | no       | Market code, for example phx. The loaded markets are in meta.coverage\[]. Send it only when the id exists in more than one loaded market. 400 market\_required says so. Otherwise the API uses the id's own market.                                                                                                                                                                                                                                                                                                                                                                                          |
| `response_format`  | enum: `concise`, `detailed`                                             | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `role`             | enum: `buyer`, `seller`, `any`                                          | no       | Which side of the deals to list. With buyer (the default) the list holds the purchases, holdings and resales where the investor was the buyer. With seller it holds the deals where the investor sold to the buyer named on the row. With any it holds the buyer, seller and end-buyer rows together, each deal once.                                                                                                                                                                                                                                                                                        |
| `sort`             | enum: `date_desc`, `date_asc`, `price_desc`, `price_asc`                | no       | The values date\_desc (the default) and date\_asc sort on the purchase date for role=buyer. For role=seller and role=any they sort on the resale date, or on the purchase date for a deal with no resale. Null dates come last in both directions. The values price\_desc and price\_asc sort on the bought price, nulls last.                                                                                                                                                                                                                                                                               |
| `source`           | enum: `investorlift`                                                    | no       | The value investorlift keeps only deals whose closing deed closed an Investorlift listing. Those rows carry a wholesale\_listing block: the houses this investor bought off Investorlift. The API applies the filter before it cuts the page. It answers 422 wholesale\_unavailable when the market has no wholesale tables (meta.coverage\[].wholesale\_as\_of null). Default: every row.                                                                                                                                                                                                                   |
| `str_business_use` | boolean                                                                 | no       | With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one. Measured over LICENSED and PENDING records unless str\_status widens it. An error where a market in play has no short-term rental tables.                                                                                                                                                                                                                                                                    |
| `str_status`       | list of: `LICENSED`, `PENDING`, `EXPIRED`                               | no       | Keep only holdings whose short-term rental status is one of LICENSED, PENDING or EXPIRED (NONE is not filterable). Rows that are not holdings never match. An error where a market in play has no short-term rental tables.                                                                                                                                                                                                                                                                                                                                                                                  |

## godmode\_property\_lookup

Opens one parcel with its owner, MLS listing, deeds and Investorlift listings.

What it answers: "Who owns this house, how do they hold it, and what occurred on this parcel?"

Inputs: exactly one of latitude plus longitude (WGS84), address, apn or property\_id. A point opens the nearest parcel within 100 metres, else not\_found. One form is address (the street line as the county records it, with zip or city; unit picks one unit of a building). apn dashes are optional and county narrows it. Concise (the default) keeps the five newest deals and three newest Investorlift listings. Detailed keeps all.

Reading the response: resolved true carries data, the parcel: address, coordinates, segment, beds, baths, square feet, year built. owner has kind, owner\_occupied, absentee, holding\_kind, held\_since, last\_purchase, permits. Names and mailing need a confirmed investor holding on a contact key, else null with redacted\_reason. listing is the MLS record or null, and deals\[] is newest first with the hold row as the current holding. Detailed rows carry financing (the purchase loan the registry found; dated, stamped in meta.dated\[]). wholesale\_listings\[] are the Investorlift listings, null where not published.

resolved false carries candidates: the APN or address names several parcels (id, county\_fips, city, unit, n\_deals). For one building's units, pass unit.

Gotchas: a point beyond every market's tolerance is outside\_coverage. An address lookup with no published address table is addresses\_unavailable. Households and public bodies stay unnamed. Without contact access owner.names and owner.mailing are null (contact\_redacted true). In Texas most purchase prices are null.

Credits (public tier): one per parcel new to the account; see the concepts resource.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                                                                                                     |
| ----------------- | --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address`         | string                      | no       | Street line of the address as the county records it ("7522 E Cholla St"), given with zip or city. The line can hold a unit. One of the four lookup forms. Not with a point, apn or property\_id. A building of several units comes back as candidates until unit picks one. |
| `apn`             | string                      | no       | Assessor parcel number, with or without dashes: "131-28-253" and "13128253" name the same parcel. Punctuation and case do not matter. One of the four lookup forms. Not with a point, address or property\_id.                                                              |
| `city`            | string                      | no       | City of the address ("Scottsdale", case-insensitive), read when zip is absent. Only with address.                                                                                                                                                                           |
| `county`          | string                      | no       | Narrows an APN lookup to one county: a 5-digit FIPS ("04013") or the county name ("Maricopa", case-insensitive, "County" optional). Only with apn. Without it the tool searches every loaded county, and an APN that exists in two counties comes back as candidates.       |
| `latitude`        | number                      | no       | Latitude of the point to look up (WGS84), given together with longitude. The tool returns the nearest parcel within 100 metres. One of the four lookup forms. Not with address, apn or property\_id.                                                                        |
| `longitude`       | number                      | no       | Longitude of the point to look up (WGS84), given together with latitude.                                                                                                                                                                                                    |
| `property_id`     | string                      | no       | Parcel id: prop\_ followed by 32 hex characters, for example prop\_e93c776c53354a88de4e58448a6bf21b. The prefix is part of the id. Opens that parcel directly. One of the four lookup forms. Not with a point, an address or an APN.                                        |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                              |
| `unit`            | string                      | no       | Unit of the address ("2", "B"): picks one unit of a building that resolves to several parcels. Only with address.                                                                                                                                                           |
| `zip`             | string                      | no       | 5-digit ZIP of the address, the narrower key. The tool trims a ZIP+4 to five digits. Only with address, which needs zip or city.                                                                                                                                            |

## godmode\_agent\_lookup

Opens one listing agent's profile by id, or finds the agent behind a name or a state licence number.

What it answers: "I have an agent's name or licence number: who are they, what do they list, and is it their own inventory?" Pass agent\_id or name\_or\_license, and market to narrow a name search or to pick the market of an id in several.

Reading the response: resolved true carries data, the profile: kind, identity\_basis and license\_candidates, brokerages, listings (counts by status and year), n\_self\_listings and investor\_links. With contact access through this server the profile also has name, name\_variants, license and contact (phones and emails). The investor\_links are the investors the agent is a person member of.

resolved false carries candidates and capped, true when more matched than the list holds. A candidate has id, market, match level (license, exact, tokens, trigram), similarity, brokerage and listing counts. A name resolves only when exactly one candidate matches at the license or exact level, or one alone matches at tokens or better. A lone trigram hit never does. Store the current id: meta.resolved\_from lists old ids merged into it.

Concise (the default) keeps five brokerages and investor\_links and ten name\_variants, with the cuts in meta.truncated. Detailed returns the whole profile.

Gotchas: name, name\_variants, license, contact and the candidates' names and licence numbers are contact fields, null with contact\_redacted true without contact access. The profile still opens by id. license is also null when none matched.

A licence number matches exactly. A retired id is an error that says so. A licence-keyed agent has one id across markets and is one candidate per market. A market without a published agent registry answers agents\_unavailable.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------- | --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `agent_id`        | string                      | no       | Listing agent id: agt\_ followed by 12 hex characters, for example agt\_fdfd4a0f8bae. The registry mints the id from a matched state licence number, else from the name and contact keys. The id is stable across data refreshes. A licence-based id is the same in every market. The API follows an old id through the alias table. Store it as the identity. Opens that agent directly. Not with name\_or\_license.                         |
| `market`          | string                      | no       | Market code, for example phx. The loaded markets are in meta.coverage\[]. With name\_or\_license it narrows the search to that market. Without it the tool searches every loaded market with an agent registry, and each candidate carries its market. With agent\_id the tool needs it only when the id exists in more than one loaded market (market\_required says so). A licence-keyed agent has the same id in every market it lists in. |
| `name_or_license` | string                      | no       | The agent to look for: a name in either order ("Dana Rivera" or "Rivera Dana"), part of a name, or a state licence number. An Arizona licence number is SA or BR plus nine digits, for example "SA555000123". Case and punctuation do not matter. A name needs at least 3 letters after normalisation. The API answers 400 to a shorter name. Not with agent\_id.                                                                             |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                                                                |

## godmode\_agent\_listings

Lists every listing of one agent the MLS feed knows, newest first.

What it answers: "What has this agent listed and sold, and which of it was their own inventory?" Pass agent\_id (agt\_ plus 12 hex), and market only when the id is in more than one loaded market. status keeps a row when any listed value matches, as the registry recorded it at meta.coverage\[].agents\_data\_end. Its values are ACTIVE, PENDING, SOLD and OFF\_MARKET. Both listed\_from and listed\_to read the date the listing went live, as YYYY-MM-DD. A true self\_only keeps only the agent's own inventory: the listings on parcels of an investor the agent is a person member of. Page the rows with limit and cursor.

Reading the response: a row carries property\_id, address\_short, city and zip, is\_self\_listing, holder and listing. The holder is the parcel's investor as the registry recorded it, with investor\_id, name and display\_name. It is null for a household, a public body or an unregistered owner. listing has status, list\_price (the asking price), listed\_on and sold\_on. The last page has a null page.next\_cursor.

Contact details are never on this list: meta.contact reads not\_on\_lists. Concise (the default) is 20 rows, at most 50, and drops the agents inside each listing. Detailed is 5, at most 10, with the whole listing block: owner\_test, counted, price history, brokerage and agents. Its agents carry ids but null names, phones and licences.

Gotchas: the feed keeps one listing per parcel, the latest, so a parcel relisted by the same agent counts once. It names agents fully only from about 2018. The listing block's status and days read the feed at listings\_data\_end (its last update), never today. The busiest agents have thousands of rows, so page.

A retired id is an error that says so. A market without a published agent registry answers agents\_unavailable. When a registry run merged the id, meta.resolved\_from lists the old ids.

| Input             | Type                                               | Required | Meaning                                                                                                                                                                                                                                                                                                                                                        |
| ----------------- | -------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `agent_id`        | string                                             | yes      | Listing agent id: agt\_ followed by 12 hex characters, for example agt\_fdfd4a0f8bae. The registry mints the id from a matched state licence number, else from the name and contact keys. The id is stable across data refreshes. A licence-based id is the same in every market. The API follows an old id through the alias table. Store it as the identity. |
| `cursor`          | string                                             | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                                                                                |
| `limit`           | integer                                            | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                                                                             |
| `listed_from`     | string                                             | no       | Keep listings that went live on or after this date, YYYY-MM-DD.                                                                                                                                                                                                                                                                                                |
| `listed_to`       | string                                             | no       | Keep listings that went live on or before this date, YYYY-MM-DD. With listed\_from, one year is listed\_from=2025-01-01\&listed\_to=2025-12-31.                                                                                                                                                                                                                |
| `market`          | string                                             | no       | Market code, for example phx. The loaded markets are in meta.coverage\[]. Send it only when the id exists in more than one loaded market. 400 market\_required says so. Otherwise the API uses the id's own market.                                                                                                                                            |
| `response_format` | enum: `concise`, `detailed`                        | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                 |
| `self_only`       | boolean                                            | no       | Keep only the agent's own inventory, the rows with is\_self\_listing true. Those are listings on parcels that an investor holds, where the agent is a person member of that investor. Default false: every listing.                                                                                                                                            |
| `status`          | list of: `ACTIVE`, `PENDING`, `SOLD`, `OFF_MARKET` | no       | Keep only listings in one of these statuses (comma list or repeated key): ACTIVE, PENDING, SOLD, OFF\_MARKET. Default: every status.                                                                                                                                                                                                                           |

## godmode\_wholesale\_listings

Lists Investorlift listings with the outcome the county deeds show: if each closed, to whom, and for how much.

What it answers: "Which listings near here did investors buy?", "What did this wholesaler list?" and "Which listings did this investor buy?"

Inputs: exactly one scope. A location: latitude and longitude with radius\_miles, bbox, property\_id, zip (a list) or city. It lists the listings inside it with summary, counts over the whole area. Beside a geometry, wholesaler\_id and buyer\_investor\_id are filters. Alone, wholesaler\_id lists every listing of one company, and buyer\_investor\_id the listings one registry investor bought.

market picks the market when an id exists in several. Filters: outcome, verification, buyer\_tier, known\_investor, listed and closed date ranges, the asking range and primary\_only, true by default: one row per closing deed. The sort defaults to closed\_on.

Reading the response: verification is the verdict (CONFIRMED, RETAIL, OPEN, NONE), outcome the detail. confidence says how sure the deed match is. The block buyer names only a registry investor (buyer.id set) or an unregistered company. On any key, the row never names a person, a trust or an owner-occupant: buyer.tier describes it.

deed.price is null in a non-disclosure state such as Texas unless an MLS sale matched. The Investorlift app's own listing status is never served: the deed says what occurred. Concise (default) keeps the address, prices, verdict, buyer and deed per row. Detailed returns every field.

Gotchas: a market without published wholesale tables is an error that says so. A hidden-address listing with no closing deed appears under its wholesaler only. primary\_only false lists SUPERSEDED rows and every member of a shared closing. A closed date range drops rows without a deed. No wholesale row carries contact fields, so meta.contact reads not\_on\_lists.

| Input               | Type                                                                                                                                                                                                                                                                                             | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `asking_max`        | integer                                                                                                                                                                                                                                                                                          | no       | Maximum asking price, inclusive, whole dollars.                                                                                                                                                                                                                                                                                                                                                     |
| `asking_min`        | integer                                                                                                                                                                                                                                                                                          | no       | Minimum asking price, inclusive, whole dollars. Once you set asking\_min or asking\_max, the list drops unpriced rows.                                                                                                                                                                                                                                                                              |
| `bbox`              | object                                                                                                                                                                                                                                                                                           | no       | Viewport: west, south, east, north in WGS84 degrees (west \< east, south \< north, diagonal at most 40 miles, intersecting a loaded market). Not with radius\_miles or property\_id; latitude and longitude beside it are the reference point only.                                                                                                                                                 |
| `buyer_investor_id` | string                                                                                                                                                                                                                                                                                           | no       | Scope: the listings one registry investor bought per the closing deeds, in the investor's market. The id is inv\_ followed by 12 hex characters. Beside a geometry it is a filter on the rows inside it instead. The API follows an old id from an earlier data refresh to the current investor and echoes the old id in meta.resolved\_from. A retired id is an error that says so.                |
| `buyer_tier`        | list of: `REGISTRY_STRONG`, `REGISTRY_WEAK`, `IL_BUYER_CONFIRMED`, `ENTITY_UNREGISTERED`, `PERSON_ABSENTEE`, `OWNER_OCCUPANT`, `UNRESOLVED`                                                                                                                                                      | no       | Buyer tiers to keep (comma list or repeated key). Default: every tier.                                                                                                                                                                                                                                                                                                                              |
| `city`              | string                                                                                                                                                                                                                                                                                           | no       | Place: this postal city (any case; not the STR jurisdiction); a point beside it is the reference only. Not with the other geometries or zip; plan\_limit on Free and Starter on the deals and investors tools.                                                                                                                                                                                      |
| `closed_after`      | string                                                                                                                                                                                                                                                                                           | no       | Keep listings whose closing deed is on or after this date. Once you set closed\_after or closed\_before, the list drops rows without a deed.                                                                                                                                                                                                                                                        |
| `closed_before`     | string                                                                                                                                                                                                                                                                                           | no       | Keep listings whose closing deed is on or before this date.                                                                                                                                                                                                                                                                                                                                         |
| `cursor`            | string                                                                                                                                                                                                                                                                                           | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                                                                                                                     |
| `known_investor`    | boolean                                                                                                                                                                                                                                                                                          | no       | Keep only listings bought by a known investor (buyer\_tier REGISTRY\_STRONG, REGISTRY\_WEAK or IL\_BUYER\_CONFIRMED).                                                                                                                                                                                                                                                                               |
| `latitude`          | number                                                                                                                                                                                                                                                                                           | no       | Latitude of the point, WGS84. With longitude and radius\_miles it is the search geometry (default 2 miles); beside bbox, the reference point for distances only.                                                                                                                                                                                                                                    |
| `limit`             | integer                                                                                                                                                                                                                                                                                          | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                                                                                                                  |
| `listed_after`      | string                                                                                                                                                                                                                                                                                           | no       | Keep listings published on or after this date.                                                                                                                                                                                                                                                                                                                                                      |
| `listed_before`     | string                                                                                                                                                                                                                                                                                           | no       | Keep listings published on or before this date.                                                                                                                                                                                                                                                                                                                                                     |
| `longitude`         | number                                                                                                                                                                                                                                                                                           | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                                                                                                                                                                                                                                        |
| `market`            | string                                                                                                                                                                                                                                                                                           | no       | Market code, for example phx. The loaded markets are in meta.coverage\[]. Use it with the wholesaler\_id and buyer\_investor\_id scopes only. The API needs it when the company or investor is in more than one loaded market (market\_required says so). Otherwise the API uses the market of the company or investor. A geometry decides its markets itself, so market is not allowed beside one. |
| `outcome`           | list of: `ASSIGNED`, `DOUBLE_CLOSED`, `LISTER_HELD_THEN_SOLD`, `LISTER_SOLD_FROM_INVENTORY`, `SOLD_OFF_MARKET_GRANTOR`, `SOLD_TO_OWNER_OCCUPANT`, `FAILED_THEN_RETAIL_MLS`, `DISTRESSED_TRANSFER`, `LATE_TRANSFER`, `NO_TRANSFER_400`, `NO_DEED_120`, `PENDING`, `SUPERSEDED`, `AMBIGUOUS_DEEDS` | no       | Outcomes to keep (comma list or repeated key). Default: every outcome.                                                                                                                                                                                                                                                                                                                              |
| `primary_only`      | boolean                                                                                                                                                                                                                                                                                          | no       | Default true: drop SUPERSEDED rows and the non-credited members of a SHARED(n) group, so the list shows one closing deed once. The filter does not touch rows without a closing deed, so the list keeps every listing. primary\_only=false lists every row, duplicates included.                                                                                                                    |
| `property_id`       | string                                                                                                                                                                                                                                                                                           | no       | Parcel geometry: search around that parcel's centre with radius\_miles (default 2). Not with latitude, longitude or bbox.                                                                                                                                                                                                                                                                           |
| `radius_miles`      | number                                                                                                                                                                                                                                                                                           | no       | Search radius in miles around the point or the property\_id parcel, 0.25-20 (default 2). Not with bbox.                                                                                                                                                                                                                                                                                             |
| `response_format`   | enum: `concise`, `detailed`                                                                                                                                                                                                                                                                      | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                      |
| `sort`              | enum: `closed_on`, `listed_on`, `asking_price`                                                                                                                                                                                                                                                   | no       | The row order. The default closed\_on puts the newest closing deed first, rows without a deed last, then the newest listing first. With listed\_on, the newest listing comes first. With asking\_price, the highest asking price comes first and unpriced rows last. Every sort breaks ties on the listing id.                                                                                      |
| `verification`      | list of: `CONFIRMED`, `RETAIL`, `OPEN`, `NONE`                                                                                                                                                                                                                                                   | no       | Verdicts to keep (comma list or repeated key): CONFIRMED for verified transactions, OPEN for listings without a closing deed by the deed data\_end. Default: every verdict.                                                                                                                                                                                                                         |
| `wholesaler_id`     | string                                                                                                                                                                                                                                                                                           | no       | Scope: every listing of one company in the company's market, hidden-address listings included. The id is wsr\_ followed by 12 hex characters. Beside a geometry it is a filter on the rows inside it instead.                                                                                                                                                                                       |
| `zip`               | list of string                                                                                                                                                                                                                                                                                   | no       | Place: these 5-digit ZIPs (a list, up to 50; one on Free and Starter on the deals and investors tools); a point beside it is the reference only. Not with the other geometries or city.                                                                                                                                                                                                             |

## godmode\_wholesale\_listing\_get

Opens one Investorlift listing by id with everything the deeds show about it. The record carries the buyer, the closing deed, the chain of title and the retail signals.

What it answers: "What is the outcome of this Investorlift listing?" Input: wholesale\_listing\_id (wl\_ plus 32 hex).

Reading the response: data is the full listing row. The field verification is the verdict (CONFIRMED, RETAIL, OPEN, NONE), outcome the detail and outcome\_text the sentence to show. The confidence field says how sure the deed match is. The block buyer names only a registry investor (buyer.id set) or an unregistered company. On any key, the row never names a person, a trust or an owner-occupant: buyer.tier describes it.

The block intermediate names the party that held title between the homeowner and the end buyer on a double close, only through its registry id. The block deed carries closed\_on, pattern, price and price\_basis: RECORDED, or MLS\_DERIVED in a non-disclosure state. The fields lister\_on\_title and lister\_attribution say if the listing company held title and if this listing holds the credit for the deed. The list retail\_signals names the tests that fired. On a SUPERSEDED row, superseded\_by\_id points to the listing that holds the credit.

The Investorlift app's own listing status is never served: the deed says what occurred. distance\_miles is null (no reference point). The tool returns every field and has no concise format.

Gotchas: the API looks the id up over every loaded market with published wholesale tables. So a market without them is an error only when none has them. An unknown id is not\_found. Another prefix (deal\_, prop\_) is an invalid id. No wholesale row carries contact fields, so meta.contact reads redacted\_no\_scope on every key.

| Input                  | Type   | Required | Meaning                                                                                                                                                                                        |
| ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `wholesale_listing_id` | string | yes      | Investorlift listing id, wl\_ followed by 32 hex characters, from any wholesale row, a deal row's wholesale\_listing block or a parcel's wholesale\_listings\[]. The prefix is part of the id. |

## godmode\_wholesaler\_lookup

Opens one Investorlift listing company's profile by id, or finds the company behind a name and opens the profile when the match is unambiguous.

What it answers: "Tell me about this wholesaler" and "I know the company's name, find it". Inputs: wholesaler\_id (wsr\_ plus 12 hex) or name, a company, brand or legal entity name or part of one. Add market to narrow a name search, or when a company lists in several.

Reading the response: resolved true carries data, the profile, with name, brands, entity\_names (own and partner legal entities) and home\_state. It has investor\_id when the company itself buys as a registry investor, and counts by what the deeds show (n\_listings, n\_verified, n\_to\_investors and more). It has the first and last listing dates, median\_asking\_price, median\_days\_to\_deed and top\_buyers, the registry investors who bought most from it. A company in two markets has a profile per market.

With resolved false, candidates lists each matching company: id, market, name, counts, matched\_name, match level and similarity. The flag capped is true when more matched than limit allowed. A name resolves only when exactly one company matches at the exact level, or a single company matches at tokens or better. A lone contains or trigram hit does not. Concise (default) caps brands and entity names at 10 and top\_buyers at 5, and names each cut in meta.truncated. Detailed returns everything.

Gotchas: every name here is a business name, served to every key. The API names a buyer only as a registry investor or an unregistered company. The Investorlift app's own listing status is never served. A market without published wholesale tables is an error that says so. Under 3 letters or digits in name is a validation error. No wholesaler row carries contact fields, so meta.contact reads redacted\_no\_scope on every key.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                                                                                                                               |
| ----------------- | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `limit`           | integer                     | no       | Candidates to return when a name matches several companies, 1 to 25 (default 10) in either format. The resolved profile is one record. Over the cap is a validation error that names it.                                                                                                              |
| `market`          | string                      | no       | Market code, for example phx. The loaded markets are in meta.coverage\[]. With name it narrows the search to that market. Otherwise the API searches every loaded market with wholesale tables. With wholesaler\_id it picks the market when the company lists in several (market\_required says so). |
| `name`            | string                      | no       | The company to look for: its Investorlift name, a brand, or a legal entity name, or part of one. Case and punctuation do not matter. Give at least 3 letters or digits. Exactly one of wholesaler\_id and name.                                                                                       |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                        |
| `wholesaler_id`   | string                      | no       | The company's id, wsr\_ followed by 12 hex characters, from any wholesale row's wholesaler.id or a candidate of an earlier name lookup. Exactly one of wholesaler\_id and name.                                                                                                                       |

## godmode\_property\_search

Searches parcels by location, filter groups and quicklists over every parcel of the loaded markets.

What it answers: "Which houses here match these criteria?" Example: absentee owners with high equity and a recent permit in a ZIP.

Inputs: location, filters, quicklists, any\_quicklists, not\_quicklists, datasets, sort, limit, cursor, count\_only and require\_current. The filters groups are general, building, lot, legal, owner, sale, tax, listing, valuation, financing, liens, permits and history. Every field is optional, and a range is \{min, max}. A parcel must match all of quicklists, one of any\_quicklists and none of not\_quicklists.

Reading the response: data\[] rows carry id, address, general, building, lot and the requested owner, sale, tax, listing, valuation, financing, permit and history blocks. The summary block carries datasets and dated\_filters. The list meta.dated\[] names every dated snapshot block (valuation, financing) with its as-of date.

Gotchas: the valuation, financing and liens groups read a snapshot valued at the date in meta.coverage\[].parcel.financing.as\_of, not the current delivery. A market without the parcel tables is parcels\_unavailable. cash-buyer and sale.cash\_sale are cash\_sale\_unavailable where sale\_mortgage\_measured is false. The history group and quicklists like price-cut-listing match only parcels in the history ZIP set (meta.coverage\[].parcel.history.zips). Owner names are never on this tool. The error for an unknown quicklist names the dataset that unlocks it.

Credits (public tier): one per parcel new to the account; see the concepts resource.

| Input             | Type                                                                                                                                                                                                                                                                    | Required | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `any_quicklists`  | list of string                                                                                                                                                                                                                                                          | no       | At least one listed quicklist must match (OR).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `count_only`      | boolean                                                                                                                                                                                                                                                                 | no       | True returns the count of matching parcels in summary.total and no rows.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `cursor`          | string                                                                                                                                                                                                                                                                  | no       | Opaque cursor from page.next\_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid\_cursor). Then restart from page 1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `datasets`        | list of string                                                                                                                                                                                                                                                          | no       | Which blocks each row carries: core, owner, owner\_profile, sale, tax, listing, valuation, financing, permits, history, quicklists. Default: core, owner, sale, tax, listing. The valuation and financing blocks are dated (meta.dated\[]). The API answers 400 dataset\_unavailable to an unavailable name.                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `filters`         | object                                                                                                                                                                                                                                                                  | no       | The filter groups. Every group and every field is optional. The API combines the groups with AND.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `limit`           | integer                                                                                                                                                                                                                                                                 | no       | Page size, 1-500 (default 100). Ignored by CSV.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `location`        | object                                                                                                                                                                                                                                                                  | yes      | Where to search: at least one of zip, county\_fips, point, bbox or property\_id. Send only one of point, bbox and property\_id. You can combine that one with zip or county\_fips.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `not_quicklists`  | list of string                                                                                                                                                                                                                                                          | no       | Keep parcels that match none of the listed quicklists.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `quicklists`      | list of string                                                                                                                                                                                                                                                          | no       | Every listed quicklist must match (AND).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `require_current` | boolean                                                                                                                                                                                                                                                                 | no       | With true, the API answers 422 dated\_refused when the request filters on, sorts by or returns a dated block (valuation, financing, liens). Default false: the API serves dated blocks and stamps them in meta.dated\[].                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `response_format` | enum: `concise`, `detailed`                                                                                                                                                                                                                                             | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `sort`            | enum: `distance`, `id`, `last_sale_date_desc`, `last_sale_date_asc`, `last_owner_change_desc`, `equity_percent_desc`, `equity_percent_asc`, `listing_price_asc`, `listing_price_desc`, `avm_desc`, `year_built_desc`, `year_built_asc`, `sqft_desc`, `last_permit_desc` | no       | Row order, null values last on every sort. distance: nearest first, the default with a point or a property\_id. The sort id orders rows by market then id, the primary key order: stable and fast over any location, the default otherwise. The sorts last\_sale\_date\_desc and last\_sale\_date\_asc order by the last sale date, listing\_price\_asc and listing\_price\_desc by the list price. The sort last\_owner\_change\_desc puts the history ZIP set first and the others last. The sorts equity\_percent\_desc, equity\_percent\_asc and avm\_desc are dated (meta.dated\[]). The sorts year\_built\_desc, year\_built\_asc, sqft\_desc and last\_permit\_desc order by year built, the living area and the newest permit. |

## godmode\_property\_financing

Reads the financing of one parcel at the slice date. The record carries the AVM with equity and LTV, every open lien with lender, balance and rate, the recorded mortgage history and the involuntary liens.

What it answers: "What financing is on this house, how much equity is in it, and who lent on it?"

Inputs: property\_id and require\_current.

Reading the response: data carries as\_of, dated, valuation, summary, open\_liens\[], mortgage\_history\[] and involuntary\_liens\[]. valuation carries estimated\_value, range, equity\_percent and ltv. The summary block carries open\_lien\_count, open\_lien\_balance, the first lien, has\_heloc, free\_and\_clear and the last recorded mortgage with its lender\_class. Its lender\_class is BANK, NONBANK, PRIVATE, INDIVIDUAL or GOVERNMENT. The borrowers and parties keys are names, so they are present only when the key can get contact through this server. Otherwise the record leaves them out (meta.contact reads redacted\_no\_scope).

Gotchas: every value is as of data.as\_of, the same date as meta.coverage\[].parcel.financing.as\_of, and meta.dated\[] says so. A lien released since then still shows as open. A parcel outside the slice is not\_found. Zero open liens is a value (free and clear), not missing data.

Credits (public tier): one per parcel new to the account; see the concepts resource.

| Input             | Type                        | Required | Meaning                                                                                                                                        |
| ----------------- | --------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `property_id`     | string                      | yes      | Parcel id, prop\_ plus 32 hex characters, from the property lookup or any deal's property.id.                                                  |
| `require_current` | boolean                     | no       | True refuses the request while the financing slice is a dated snapshot. The default false serves it with meta.dated\[].                        |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either. |

## godmode\_property\_permits

Lists every building permit on one parcel from the jurisdictions' own rolls, newest first, with the per-parcel aggregates.

What it answers: "What work has a permit on this house, and is any of it still open?"

Inputs: property\_id.

Reading the response: data.summary carries n\_permits, n\_permits\_24m, last\_permit\_issue\_date, n\_open\_permits\_12m, major\_work\_36m, tags\_24m and job\_value\_24m, and is null when the parcel has no permit. Each row of data.permits\[] carries jurisdiction, permit\_number, type, status, tags, the dates and job\_value where reported. status is final, active, inactive or in\_review. The normalised tags include Solar, Pool and Hot Tub, ADU, New Construction and Remodel. The tool never serves applicant names or contact details.

Gotchas: about half of Maricopa permits report job\_value, and few elsewhere do. A blank status means the jurisdiction reports none. The snapshot date is data.as\_of.

Credits (public tier): one per parcel new to the account; see the concepts resource.

| Input             | Type                        | Required | Meaning                                                                                                                                        |
| ----------------- | --------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `property_id`     | string                      | yes      | Parcel id, prop\_ plus 32 hex characters, from the property lookup or any deal's property.id.                                                  |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either. |

## godmode\_property\_history

Reads what changed on one parcel week by week since the history lake began. The events cover owner changes with the deed that week, listing moves (listed, price cuts, sold, delisted), assessment and tax changes, and vacancy. Inside the dated window, they also cover the financing events.

What it answers: "What changed on this house over the last year?" and "when did it change hands, get listed, or go vacant?"

Inputs: property\_id, domains\[] (some domains only), since (a week, YYYY-MM-DD) and limit.

Reading the response: data.summary carries first\_week, last\_week, owner\_changes\_3y, last\_owner\_change, listing\_cycles\_1y, price\_cuts\_current\_listing, vacant\_since and delinquent\_since. data.coverage is per domain. The list data.events\[] runs newest first, each event with week, domain, kind, before, after, deed and span\_weeks. The count span\_weeks is the weeks since the lake last saw the parcel, more than 1 across a delivery gap.

The payload columns that name a person are present only when the key can get contact through this server. They are owner names and mailing, agent names, licences and keys, the listing office, borrowers and lien parties. Otherwise the record leaves them out (meta.contact reads redacted\_no\_scope).

Gotchas: only parcels in the ZIP codes the lake covers have a timeline. Another parcel answers history\_unavailable, and the coverage tool lists the ZIP codes as history\_zips. The lake dates an event to the week it saw the change, never to a guessed week inside a gap. Valuation and financing events exist only inside their delivery windows.

Credits (public tier): one per parcel new to the account; see the concepts resource.

| Input             | Type                                                                                                                                                                              | Required | Meaning                                                                                                                                        |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `domains`         | list of: `ownership`, `mailing`, `occupancy`, `vacancy`, `classification`, `structure`, `assessment`, `tax`, `sale`, `deed`, `listing`, `owner_profile`, `valuation`, `financing` | no       | Keep events of these domains only (comma list or repeated key).                                                                                |
| `limit`           | integer                                                                                                                                                                           | no       | How many events at most (default 200).                                                                                                         |
| `property_id`     | string                                                                                                                                                                            | yes      | Parcel id, prop\_ plus 32 hex characters, from the property lookup or any deal's property.id.                                                  |
| `response_format` | enum: `concise`, `detailed`                                                                                                                                                       | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either. |
| `since`           | string                                                                                                                                                                            | no       | Keep events seen in this week or later, YYYY-MM-DD.                                                                                            |

## godmode\_listing\_history

Reads every listing cycle observed on one parcel, with its price path, how it ended and the days on market. A cycle ended sold, canceled, expired, withdrawn or off market, or is still active.

What it answers: "How many listings did this house have, at what prices, and did it sell?"

Inputs: property\_id.

Reading the response: data.cycles\[] runs newest first. Each cycle carries cycle\_no, first\_week, last\_week, listed\_on, original\_price, last\_price, min\_price, n\_price\_cuts, status\_path, outcome, sold\_price, sold\_on, days\_on\_market and price\_path\[], every listing event of the cycle. The fields agent\_name and agent\_license, the first agent and their licence number, are present only when the key can get contact through this server. Otherwise the cycle leaves them out (meta.contact reads redacted\_no\_scope).

Gotchas: cycles come from the weekly files since the lake began (meta.coverage\[].parcel.history.first\_week), for the ZIP codes it covers. Elsewhere the API answers history\_unavailable. A cycle still active at the last week has outcome active. A cycle whose last status was neither active nor terminal is unknown.

Credits (public tier): one per parcel new to the account; see the concepts resource.

| Input             | Type                        | Required | Meaning                                                                                                                                        |
| ----------------- | --------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `property_id`     | string                      | yes      | Parcel id, prop\_ plus 32 hex characters, from the property lookup or any deal's property.id.                                                  |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either. |

## godmode\_property\_comps

Reads the comparable sales around one parcel, most similar first. The comps are the priced sales inside the radius and the window, on parcels within the bedroom, size and age tolerances of the subject. The list holds one sale per parcel.

What it answers: "What did houses like this one sell for nearby, and what price per square foot does that give this one?"

Inputs: property\_id, radius\_miles, days\_back, limit, the tolerances beds\_tolerance, sqft\_pct and year\_tolerance, and source.

Reading the response: data.subject carries the parcel and the facts the tolerances read. Each row of data.comps\[] carries distance\_miles, sold\_on, sold\_price, price\_per\_sqft, the building facts, source, cash\_sale\_proxy, last\_sale\_lender, deal and similarity (0 to 1). Its source reads DEED, the registry's arm's-length purchase, or MLS, a SOLD listing with days\_on\_market and list\_price. The API serves cash\_sale\_proxy and last\_sale\_lender where the market has the parcel layer, and cash\_sale\_proxy is null where unmeasured. The deal block is the registry's exit within 45 days of the sale, with gross\_profit and hold\_days, or null.

data.summary carries the counts by source, median\_price, median\_price\_per\_sqft, price\_per\_sqft\_value, min\_price, max\_price, the window, sources and the tolerances applied. The value price\_per\_sqft\_value is the median times the subject's sqft: an indication, not a valuation.

Gotchas: the comps carry no time or condition adjustment. The API skips a tolerance the subject cannot apply (summary.tolerances). Without listing tables, source mls is listings\_unavailable, and source both has no MLS side there (summary.sources). The medians are over the comps returned.

Credits (public tier): one per parcel new to the account, plus 2 a call; see the concepts resource.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                                                                          |
| ----------------- | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `beds_tolerance`  | integer                     | no       | Bedrooms either side of the subject's, 0 to 5 (default 1). The API skips it when the subject's bedrooms are unknown.                                                                                                                             |
| `days_back`       | integer                     | no       | Sales in the last N days before the market's data\_end, 30 to 1095 (default 180).                                                                                                                                                                |
| `limit`           | integer                     | no       | Comps to return, 1 to 50 (default 20), most similar first. A plan cap below this applies.                                                                                                                                                        |
| `property_id`     | string                      | yes      | Parcel id, prop\_ plus 32 hex characters, from the property lookup or any deal's property.id.                                                                                                                                                    |
| `radius_miles`    | number                      | no       | Radius around the subject in miles, 0.1 to 5 (default 1).                                                                                                                                                                                        |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                   |
| `source`          | enum: `deed`, `mls`, `both` | no       | With deed, the registry's arm's-length last purchases. With mls, SOLD listing records, and 422 listings\_unavailable where the market has none. With both, the default, one sale per parcel, and the MLS record wins within 45 days of the deed. |
| `sqft_pct`        | integer                     | no       | Percent either side of the subject's sqft, 0 to 50 (default 20). The API skips it when the sqft is unknown.                                                                                                                                      |
| `year_tolerance`  | integer                     | no       | Years either side of the subject's year\_built, 0 to 50 (default 15). The API skips it when the year\_built is unknown.                                                                                                                          |

## godmode\_market\_changes

Reads the weekly change series of one ZIP. The metrics are owner changes, new listings, relists, price cuts and rises, sales, delistings, vacancy and delinquency onsets and cures, and new mortgages. They also cover lien releases, involuntary liens, assessment and AVM changes, the median AVM move and permits issued.

What it answers: "Is turnover up in this ZIP?", "how many price cuts a week lately?", "did new mortgages fall off?"

Inputs: market and zip, one of the ZIPs the history lake covers, with weeks and metrics\[]. Over 52 weeks on Free and Starter is plan\_limit.

Reading the response: data.weeks\[] runs oldest first, each week with week, file\_kind (FULL or DELTA), parcels\_observed, n\_events and metrics\{}. The window applied is data.weeks\_applied, with data.first\_week and last\_week as its edges. The block data.totals is per metric over the weeks.

Gotchas: a DELTA week observes only the changed parcels. So parcels\_observed is the file's row count for the ZIP, not the ZIP's size. The financing metrics exist only inside the dated window (meta.dated\[]). A ZIP outside the lake's set is history\_unavailable.

| Input             | Type                                                                                                                                                                                                                                                                                                                                                              | Required | Meaning                                                                                                                                        |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `market`          | string                                                                                                                                                                                                                                                                                                                                                            | yes      | Market code, for example phx.                                                                                                                  |
| `metrics`         | list of: `owner_changes`, `listings`, `relists`, `price_cuts`, `price_rises`, `solds`, `delists`, `vacancy_onsets`, `vacancy_cleared`, `delinquency_onsets`, `delinquency_cured`, `new_mortgages`, `lien_releases`, `involuntary_liens`, `assessment_changes`, `avm_changes`, `structure_changes`, `portfolio_changes`, `avm_change_median_pct`, `permits_issued` | no       | Which series to return (comma list or repeated key). Default: every metric.                                                                    |
| `response_format` | enum: `concise`, `detailed`                                                                                                                                                                                                                                                                                                                                       | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either. |
| `weeks`           | integer                                                                                                                                                                                                                                                                                                                                                           | no       | How many of the most recent weeks (default 52, at most 160). Over 52 on Free and Starter is plan\_limit.                                       |
| `zip`             | string                                                                                                                                                                                                                                                                                                                                                            | yes      | The ZIP code. It must be one of meta.coverage\[].parcel.history.zips.                                                                          |

## godmode\_lender\_lookup

Opens one lender's profile by id, or finds it by any spelling of its name and opens an unambiguous match.

What it answers: "Who is this lender, how much do they lend here, and to whom?"

Inputs: lender\_id or name, and market to narrow either to one market.

Reading the response: with resolved true, data carries names\[], lender\_class with class\_basis (NAME or DICTIONARY), is\_hard\_money, nmls and the totals over markets\[]. Each market profile carries counts by year, product and purpose, terms, geography, rankings, borrowers, investor\_lending, flips\_financed, successor, id\_history and a summary. The successor is the acquirer or parent, and id\_history lists the ids merged in. The registry never merges books.

With resolved false, the body carries candidates\[] (id, market, matched\_name, match, size) and capped, true when more matched than the list holds. A lone contains or trigram hit stays a candidate. Concise (the default) drops the monthly series and the pairing diagnostics. It keeps ten ZIPs, cities and spellings, five top borrowers, competing lenders and investors, and three flip years.

Gotchas: the registry measures every count at as\_of (meta.dated\[]), not today. The history sees about one open lien in five, so all-time counts are floors and churn is a lower bound. Margins are null under 20 resold flips. A block not built for the market is null. A person-named lender has a profile only with 10 or more loans on 5 or more parcels.

A retired id is gone. No lender carries a phone or email, and no person's name is on the profile. A market with no registry is lenders\_unavailable.

| Input             | Type                        | Required | Meaning                                                                                                                                                                                          |
| ----------------- | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `lender_id`       | string                      | no       | The lender to open: len\_ plus 12 hex, as served on any row. The API follows an old id to the current lender (meta.resolved\_from). A retired id is an error. Exactly one of lender\_id or name. |
| `market`          | string                      | no       | Market code, for example phx. Narrows a name search or the profile to one market. If absent, the API uses every loaded market with a registry.                                                   |
| `name`            | string                      | no       | The lender to find: any spelling the instruments use, or part of one, at least 3 letters or digits. Case, punctuation and LLC, INC or NA do not matter. Exactly one of lender\_id or name.       |
| `response_format` | enum: `concise`, `detailed` | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                   |

## godmode\_lenders\_top

Ranks the lenders of one market, or of one ZIP, city or county inside it, one page at a time. The rank counts instruments recorded over a period, by default the 24 months to the slice date.

What it answers: "Who lends the most here, and which hard-money lenders are active in this ZIP?"

Inputs: market, and one of zip, city or county to rank inside a place. period, hard\_money, position and product narrow the count.

Reading the response: each row carries rank and lender (id, name, lender\_class, is\_hard\_money). The field n counts the instruments in the period once across the open-lien and recorded-history tables. The row also carries volume, share and share\_by\_volume, n\_open\_liens, open\_balance, median\_amount, last\_recorded\_on, n\_purchase\_money, n\_investor, n\_borrowers, n\_deals\_financed, as\_of and dated. Both shares are of every lender's total, and null under position or product. n\_deals\_financed is null before the deed link. Concise (the default) drops n\_unpriced, n\_first\_lien, n\_heloc and n\_parcels.

Gotchas: n counts every instrument, purchase money and refinance alike. The list leaves out INDIVIDUAL, PRIVATE and GOVERNMENT lenders. A geography outside the covered counties is outside\_coverage. A covered geography with no lending is an empty page. A period the place does not carry is a validation error.

The registry measures everything at as\_of (meta.dated\[]), not today. A market with no registry is lenders\_unavailable. So is a registry built before the place rankings, for any period but 24m.

| Input             | Type                                      | Required | Meaning                                                                                                                                                                                                                                             |
| ----------------- | ----------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `city`            | string                                    | no       | Rank inside one city as the parcel table writes it (any case). One of zip, city or county.                                                                                                                                                          |
| `county`          | string                                    | no       | Rank inside one county, a 5-digit FIPS such as 04013. One of zip, city or county.                                                                                                                                                                   |
| `cursor`          | string                                    | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                     |
| `hard_money`      | boolean                                   | no       | true keeps only hard-money lenders, by name or brand, or by behaviour. The behaviour test: a quarter of the book within 45 days of an investor purchase. false keeps the rest.                                                                      |
| `limit`           | integer                                   | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                  |
| `market`          | string                                    | no       | Market code, for example phx. Required with more than one loaded market (market\_required lists them).                                                                                                                                              |
| `period`          | string                                    | no       | The period the counts cover: 24m (the default), 12m, all, a calendar year YYYY from 2002, or a month. A month is YYYY-MM among the 36 to the slice month. Market-wide, only 24m and a month apply. Inside a geometry, only the three windows apply. |
| `position`        | integer                                   | no       | 1 counts first liens only (open lien position 1). With product, it counts the first liens of those products.                                                                                                                                        |
| `product`         | list of: `CONSTRUCTION`, `HELOC`, `OTHER` | no       | Count only these products. Then share is null.                                                                                                                                                                                                      |
| `response_format` | enum: `concise`, `detailed`               | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                      |
| `zip`             | string                                    | no       | Rank inside one 5-digit ZIP. A ZIP outside the covered counties is outside\_coverage. One of zip, city or county.                                                                                                                                   |

## godmode\_lender\_loans

Lists one lender's loans in one market, newest recording first, one page at a time.

What it answers: "What did this lender fund this year, where, on what terms, and for whom?"

Inputs: lender\_id, and market only when the id is in several loaded markets. Filters: source, recorded\_from and recorded\_to, product, term\_band, amount\_min, amount\_max, zip and city.

Reading the response: each row carries the parcel, source and position, in\_both, lender\_id and lender\_id\_open, the lender as recorded, the dates, amount and balance. Balance is on open rows only. The row also carries rate and term, term\_band, loan\_type, label, product, product\_proxy and purpose. The deeds decide purpose, never the label. It ends with deed (on a PURCHASE row), deal (the investor deal it funded), outcome, investor\_id, borrower\_match, as\_of and dated.

Concise (the default) is 20 rows, at most 50. It drops market, loan\_key, the outlier and pairing flags, identity\_basis, label\_as\_recorded, product\_basis, open\_position, assigned\_lender\_name, blanket\_n\_parcels, county\_fips, property\_type\_category, months\_to\_resolution, the borrower arrays, borrower\_match and foreclosed. It also drops the deed's date and, inside deal, all but deal\_id, kind, is\_purchase\_loan and investor\_id. Detailed is 5, at most 10, and returns the whole row.

Gotchas: the borrowers on a loan are contact fields, so this list leaves them out of every row, on any key (meta.contact reads not\_on\_lists). The busiest lenders have hundreds of thousands of rows: cut a window. The registry measures every row at as\_of (meta.dated\[]), not today. The history sees about one open lien in five, so older rows are a floor. Before the deed link, purpose, deal, outcome and investor\_id are null. A market with no registry is lenders\_unavailable.

| Input             | Type                                                                 | Required | Meaning                                                                                                                                                                                                                                                                                           |
| ----------------- | -------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `amount_max`      | integer                                                              | no       | Keep only loans with loan\_amount at or below this, in whole dollars. The filter drops unpriced loans.                                                                                                                                                                                            |
| `amount_min`      | integer                                                              | no       | Keep only loans with loan\_amount at or above this, in whole dollars. The filter drops unpriced loans.                                                                                                                                                                                            |
| `city`            | string                                                               | no       | Keep only loans on parcels in this city, as the parcel table writes it (case does not matter).                                                                                                                                                                                                    |
| `cursor`          | string                                                               | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                                                                   |
| `lender_id`       | string                                                               | yes      | The lender whose loans to list: len\_ plus 12 hex, as served on any row.                                                                                                                                                                                                                          |
| `limit`           | integer                                                              | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                                                                |
| `market`          | string                                                               | no       | Market code, for example phx. Required only when the lender is in more than one loaded market (market\_required says so).                                                                                                                                                                         |
| `product`         | list of: `CONSTRUCTION`, `HELOC`, `OTHER`                            | no       | Keep only these products: CONSTRUCTION, HELOC, OTHER.                                                                                                                                                                                                                                             |
| `recorded_from`   | string                                                               | no       | Keep loans recorded on or after this date, YYYY-MM-DD. The busiest lenders need a window.                                                                                                                                                                                                         |
| `recorded_to`     | string                                                               | no       | Keep loans recorded on or before this date, YYYY-MM-DD. With recorded\_from, one year is recorded\_from=2025-01-01\&recorded\_to=2025-12-31.                                                                                                                                                      |
| `response_format` | enum: `concise`, `detailed`                                          | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                                                                    |
| `sort`            | enum: `recorded_desc`, `recorded_asc`, `amount_desc`                 | no       | recorded\_desc (the default) puts the newest recording first, undated rows last. Oldest first is recorded\_asc. Largest first is amount\_desc, slower on the largest lenders.                                                                                                                     |
| `source`          | enum: `open`, `recorded`, `both`                                     | no       | Which rows to list. With open, the API lists open lien positions only. With recorded, it lists recorded history slots only, with duplicates as the history holds them. With both, the default, it lists one row per instrument: the open row where the instrument has one, else its recorded row. |
| `term_band`       | list of: `LE_24M`, `25_TO_120M`, `121_TO_359M`, `GE_360M`, `UNKNOWN` | no       | Keep only these term bands: LE\_24M, 25\_TO\_120M, 121\_TO\_359M, GE\_360M, UNKNOWN. LE\_24M is up to 24 months, the bridge range. UNKNOWN means no term or maturity on file, which covers most hard-money rows.                                                                                  |
| `zip`             | string                                                               | no       | Keep only loans on parcels in this 5-digit ZIP.                                                                                                                                                                                                                                                   |

## godmode\_lender\_borrowers

Lists one lender's borrowers in one market, most loans first, one page at a time.

What it answers: "Who borrows from this lender, which of them are registered investors, and who else funds them?"

Inputs: lender\_id, and market only when the id is in more than one loaded market. Filters: period, q, registered\_only, churned, investor\_kind and min\_loans.

Reading the response: each row carries borrower\_key, name, investor, is\_entity, is\_person, borrower\_match, n\_loans, n\_loans\_24m, volume\_24m, last\_loan\_on, n\_lenders\_used\_24m, other\_lender\_ids, churned, churn\_measured, moved\_to\_lender\_id, n\_deals\_financed, as\_of and dated. The key borrower\_key is a salted hash, the same on every lender's rows. name is a company's, and null for a person. The investor block carries id, name, kinds, scale and n\_deals, and is null when the key resolves to none.

Concise (the default) is 20 rows, at most 50. It drops market, party\_key, n\_loans\_12m, first\_loan\_on and other\_lenders, the stubs behind the ids. Detailed is 5, at most 10, and returns the whole row.

Gotchas: a person's name and party\_key are contact fields, so this list sets them to null on every row, on any key (meta.contact reads not\_on\_lists). The list serves a company's name and investor.name. churned is a lower bound of leaving, because the history sees one loan in five. With churn\_measured false, the registry cannot read churn for the row. The registry measures every count at as\_of (meta.dated\[]), not today. A market with no registry, or one built before the borrower match, is lenders\_unavailable.

| Input             | Type                                                                 | Required | Meaning                                                                                                                                           |
| ----------------- | -------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `churned`         | boolean                                                              | no       | true keeps borrowers who moved to another lender. false keeps the rest.                                                                           |
| `cursor`          | string                                                               | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.   |
| `investor_kind`   | list of: `FLIPPER`, `WHOLESALER`, `LANDLORD`, `BUILDER`, `IBUYER`    | no       | Keep borrowers whose investor carries any of these kinds.                                                                                         |
| `lender_id`       | string                                                               | yes      | The lender: len\_ plus 12 hex, as served on any row.                                                                                              |
| `limit`           | integer                                                              | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                |
| `market`          | string                                                               | no       | Market code, for example phx. Required when the lender is in more than one loaded market.                                                         |
| `min_loans`       | integer                                                              | no       | At least this many loans from the lender in the period.                                                                                           |
| `period`          | enum: `24m`, `all`                                                   | no       | What min\_loans and loans\_desc count: 24m or all. 24m, the default, is the 24 months to the slice date. all is every loan on record, and slower. |
| `q`               | string                                                               | no       | Words of a company borrower's name, 3 or more letters or digits. LLC, INC and case do not matter. A person never matches.                         |
| `registered_only` | boolean                                                              | no       | true keeps borrowers that resolve to a registered investor.                                                                                       |
| `response_format` | enum: `concise`, `detailed`                                          | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.    |
| `sort`            | enum: `loans_desc`, `volume_desc`, `last_loan_desc`, `churned_first` | no       | loans\_desc (the default) puts most loans in the period first. The others: volume\_desc, last\_loan\_desc, churned\_first.                        |

## godmode\_lenders\_nearby

Ranks the lenders active inside an area by instruments recorded there over a period, one page at a time.

What it answers: "Who lends around this house, and which hard-money lenders fund deals in this neighbourhood?"

Inputs: one geometry: latitude and longitude with radius\_miles, bbox, or property\_id. Filters: period, hard\_money, lender\_class, include\_persons, include\_government, position and product.

Reading the response: the API resolves the geometry to the H3 res-8 cells whose centre lies inside it (about 0.3 square miles each). So its edge is a hex boundary, not the circle.

Each row carries rank, lender (id, name, lender\_class, is\_hard\_money), n and volume inside those cells, and in\_geometry. The block in\_geometry carries res, n\_cells and n\_cells\_lent: the cells the geometry resolved to, and the cells the lender is in. The row also carries the market-wide n\_open\_liens, open\_balance and median\_amount, last\_recorded\_on inside the cells, n\_purchase\_money and n\_investor, as\_of and dated. Five fields are null, not measured over an arbitrary set of cells: share, share\_by\_volume, n\_unpriced, n\_borrowers and n\_deals\_financed. Concise (the default) drops n\_unpriced, n\_first\_lien, n\_heloc and n\_parcels.

Gotchas: the list leaves out INDIVIDUAL, PRIVATE and GOVERNMENT lenders unless you ask for them. A point outside every loaded market is outside\_coverage. A geometry outside the named market is a validation error. The registry measures everything at as\_of (meta.dated\[]), not today. A market with no registry, or one built before the place rankings, is lenders\_unavailable.

| Input                | Type                                                                                                             | Required | Meaning                                                                                                                                                                                                                                             |
| -------------------- | ---------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bbox`               | object                                                                                                           | no       | Viewport: west, south, east, north in WGS84 degrees (west \< east, south \< north, diagonal at most 40 miles, intersecting a loaded market). Not with radius\_miles or property\_id; latitude and longitude beside it are the reference point only. |
| `cursor`             | string                                                                                                           | no       | Opaque cursor from page.next\_cursor. Any change of query, sort, weights or data version invalidates it (invalid\_cursor): restart from page 1.                                                                                                     |
| `hard_money`         | boolean                                                                                                          | no       | true keeps only hard-money lenders, by name or brand, or by behaviour. false keeps the rest.                                                                                                                                                        |
| `include_government` | boolean                                                                                                          | no       | true includes GOVERNMENT lenders, whose counts are claims and insurance. The list hides them by default.                                                                                                                                            |
| `include_persons`    | boolean                                                                                                          | no       | true includes person-named lenders (INDIVIDUAL, PRIVATE), which the list hides by default.                                                                                                                                                          |
| `latitude`           | number                                                                                                           | no       | Latitude of the point, WGS84. With longitude and radius\_miles it is the search geometry (default 2 miles); beside bbox, the reference point for distances only.                                                                                    |
| `lender_class`       | list of: `BANK`, `NONBANK`, `PRIVATE`, `INDIVIDUAL`, `GOVERNMENT`                                                | no       | Keep only these classes: BANK, NONBANK, PRIVATE, INDIVIDUAL, GOVERNMENT. The two switches below still gate persons and government.                                                                                                                  |
| `limit`              | integer                                                                                                          | no       | Rows per page. Concise format: default 20, at most 50. Detailed format: default 5, at most 10. Over the cap is an error naming it.                                                                                                                  |
| `longitude`          | number                                                                                                           | no       | Longitude of the point, WGS84, given together with latitude.                                                                                                                                                                                        |
| `market`             | string                                                                                                           | no       | Market code, for example phx. Required with more than one loaded market (market\_required lists them). The geometry must lie inside it.                                                                                                             |
| `period`             | string                                                                                                           | no       | The window the counts cover inside the geometry: 24m (the default), 12m or all.                                                                                                                                                                     |
| `position`           | integer                                                                                                          | no       | 1 counts first liens only (open lien position 1). With product, it counts the first liens of those products.                                                                                                                                        |
| `product`            | list of: `CONSTRUCTION`, `HELOC`, `OTHER`                                                                        | no       | Count only these products. Then share is null.                                                                                                                                                                                                      |
| `property_id`        | string                                                                                                           | no       | Parcel geometry: search around that parcel's centre with radius\_miles (default 2). Not with latitude, longitude or bbox.                                                                                                                           |
| `radius_miles`       | number                                                                                                           | no       | Search radius in miles around the point or the property\_id parcel, 0.25-20 (default 2). Not with bbox.                                                                                                                                             |
| `response_format`    | enum: `concise`, `detailed`                                                                                      | no       | concise (default) drops low-value fields and caps arrays, naming cuts in meta.truncated; detailed returns every field; cursors work in either.                                                                                                      |
| `sort`               | enum: `loans_desc`, `volume_desc`, `open_liens_desc`, `open_balance_desc`, `last_recorded_desc`, `purchase_desc` | no       | loans\_desc (the default) ranks by most instruments inside the geometry. The others: volume\_desc, open\_liens\_desc, open\_balance\_desc, last\_recorded\_desc, purchase\_desc.                                                                    |

## Resources

| Resource                                              | URI                          | What it holds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------------------------------------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Loaded markets, their coverage matrix and as-of dates | `godmode://coverage`         | Every loaded market with the area the API computes its counts over, its counties, its bounding box and its point tolerance. Each row also carries the data version and the stale flag. Each market carries its coverage matrix: one status per dataset. The datasets are deeds, listings, agents, Investorlift listings, auction counts, short-term rentals, parcels, financing, permits, owner profile, history, the cash-sale proxy, lenders and addresses. Each cell carries the as-of date, the dated and stale flags, and the error a call meets where the API does not serve it. Each cell also names the counties, jurisdictions or ZIP codes that decide its status. |
| The concepts behind the data                          | `godmode://concepts`         | Plain-English definitions a reader needs. The topics are deal kinds, investor scale and the institutional default, recency, contact redaction, null versus zero, listings and Investorlift outcomes. More topics are agents, buyer rankings, names, locations, paging and errors.                                                                                                                                                                                                                                                                                                                                                                                            |
| The error catalogue                                   | `godmode://problems`         | Every problem code of the catalogue, with its HTTP status, title, description, the recovery sentence and its producer. A producer of origin or both marks a code a tool returns. A producer of gateway or both marks a code the gateway at the public host answers before a request reaches a tool.                                                                                                                                                                                                                                                                                                                                                                          |
| One loaded market                                     | `godmode://markets/{market}` | The coverage row of one market by its code, for example godmode://markets/phx. It carries the full short-term rental jurisdiction table, every permit issuer and every history ZIP.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

## Prompts

The recommended workflows. A client that exposes prompts shows them as commands (Claude Code as `/godmode:<name>`). [Prompts and chaining](/mcp/workflows) describes each one. A key at api.investorlift.com lists all seven.

### find\_buyers

Rank nearby investors for a house under contract, then profile the top few and group them by operation.

| Argument       | Required | Meaning                                                         |
| -------------- | -------- | --------------------------------------------------------------- |
| `latitude`     | yes      | Latitude of the house (WGS84).                                  |
| `longitude`    | yes      | Longitude of the house (WGS84).                                 |
| `asking_price` | yes      | The contract or asking price in whole dollars.                  |
| `condition`    | no       | TURN\_KEY, LIGHT\_REHAB, MAJOR\_REHAB, FULL\_GUT or TEAR\_DOWN. |
| `arv`          | no       | After-repair value in whole dollars, when known.                |

### profile\_investor

Open an investor by id or name, review their history and inventory, and summarise what they buy.

| Argument              | Required | Meaning                                                             |
| --------------------- | -------- | ------------------------------------------------------------------- |
| `investor_id_or_name` | yes      | An investor id (inv\_ plus 12 hex) or a name they buy under.        |
| `market`              | no       | Market code when the id exists in several markets, for example phx. |

### investorlift\_listing\_outcome

Read one Investorlift listing as a wholesale transaction and explain what the county deeds show occurred.

| Argument               | Required | Meaning                                      |
| ---------------------- | -------- | -------------------------------------------- |
| `wholesale_listing_id` | yes      | The listing id, wl\_ plus 32 hex characters. |

### market\_snapshot

Summarise investor activity, the most active investors and Investorlift listings around a location.

| Argument       | Required | Meaning                                  |
| -------------- | -------- | ---------------------------------------- |
| `latitude`     | yes      | Latitude of the centre (WGS84).          |
| `longitude`    | yes      | Longitude of the centre (WGS84).         |
| `radius_miles` | no       | Radius in miles, 0.25 to 20 (default 2). |

### who\_owns\_this\_house

Find the parcel at a point and explain who holds it and how. Do not treat a null owner as missing data.

| Argument    | Required | Meaning                         |
| ----------- | -------- | ------------------------------- |
| `latitude`  | yes      | Latitude of the house (WGS84).  |
| `longitude` | yes      | Longitude of the house (WGS84). |

### same\_buyer\_check

Compare several investor ids and report which belong to one operation and how sure the merge is.

| Argument       | Required | Meaning                                                          |
| -------------- | -------- | ---------------------------------------------------------------- |
| `investor_ids` | yes      | Comma-separated investor ids, each inv\_ plus 12 hex characters. |

### underwrite\_property

An underwrite for one house at a price. It chains the parcel, its financing, the comps, the flips around it, the ZIP's liquidity and the private lenders.

| Argument       | Required | Meaning                                                                                                                              |
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `asking_price` | yes      | The contract or asking price in whole dollars.                                                                                       |
| `property`     | yes      | The house: a property id (prop\_ plus 32 hex), a latitude,longitude pair (WGS84), or a street address with its ZIP or city after it. |


## Related topics

- [The MCP endpoint](/mcp/overview.md)
- [Changelog](/changelog.md)
- [Keys and headers](/mcp/keys.md)
- [Prompts and chaining](/mcp/workflows.md)
- [Introduction](/index.md)
