US land for sale and any US parcel by address or APN: maps, Property checks, taxes, trust documents.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Answer questions about how Fabrica works from Fabrica's own published documents: docs.fabrica.land, the help center and the US trust agreement. Returns the best matching passages with their URLs, so an answer can be cited. Covers the trust structure, fees, Property checks, lending, property taxes, adding and removing a property, the legal framework, the glossary and the MCP server itself. When the question names a specific property, wallet or listing, the result also suggests which lookup tool to call. Retrieval is lexical over a committed index, with no external call.
The question in plain language, e.g. 'Who is the trustee of the trust that holds my property?'
Restrict to one source: 'docs', 'help' (help center), 'trust-agreement', or 'all' (default)
How many passages to return (1-10, default 5)
Tool list last changed Oct 25, 2026.
Answer questions about how Fabrica works from Fabrica's own published documents: docs.fabrica.land, the help center and the US trust agreement. Returns the best matching passages with their URLs, so an answer can be cited. Covers the trust structure, fees, Property checks, lending, property taxes, adding and removing a property, the legal framework, the glossary and the MCP server itself. When the question names a specific property, wallet or listing, the result also suggests which lookup tool to call. Retrieval is lexical over a committed index, with no external call.
| Argument | Type | Description |
|---|---|---|
| source | string | Restrict to one source: 'docs', 'help' (help center), 'trust-agreement', or 'all' (default) |
| question* | string | The question in plain language, e.g. 'Who is the trustee of the trust that holds my property?' |
| maxPassages | integer | How many passages to return (1-10, default 5) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"source": {
"enum": [
"docs",
"help",
"trust-agreement",
"all"
],
"type": "string",
"description": "Restrict to one source: 'docs', 'help' (help center), 'trust-agreement', or 'all' (default)"
},
"question": {
"type": "string",
"maxLength": 1000,
"minLength": 3,
"description": "The question in plain language, e.g. 'Who is the trustee of the trust that holds my property?'"
},
"maxPassages": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many passages to return (1-10, default 5)"
}
}
}Whether a US county (or a whole state) can be added to Fabrica online: supported, notConfigured or unsupported, and for a supported county the deed and forms the owner signs (and which are notarized), witness requirements, the questions the owner is asked, and the steps to add a property. Answers from a table of Fabrica's rules for adding property as of 2026-10-16, refreshed by hand, so each answer carries that date; the add-property page on fabrica.land is the live answer. Give a 5-digit county FIPS, or a two-letter state with or without a county. No fee amounts (ask_fabrica has them) and no owner data.
| Argument | Type | Description |
|---|---|---|
| fips | string | 5-digit county FIPS code, e.g. '06065' |
| state | string | Two-letter US state code, e.g. 'CA' |
| county | string | County name, e.g. 'Riverside' (with state) |
| ownerType | string | Who holds title today: individual (default), entity or concurrent (co-owners) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fips": {
"type": "string",
"pattern": "^[0-9]{5}$",
"description": "5-digit county FIPS code, e.g. '06065'"
},
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter US state code, e.g. 'CA'"
},
"county": {
"type": "string",
"maxLength": 80,
"description": "County name, e.g. 'Riverside' (with state)"
},
"ownerType": {
"enum": [
"individual",
"entity",
"concurrent"
],
"type": "string",
"description": "Who holds title today: individual (default), entity or concurrent (co-owners)"
}
}
}Hand a question to Fabrica's support team when the documents (ask_fabrica) do not answer it or a person is needed: adding a property that is stuck, a document question, a dispute. Returns the help center section for the topic, the support email address, and a mailto link that drafts an email with the summary and the property link (the same fabrica.land page the other tools link). subject sets the subject in the person's words; a line saying an AI agent drafted it is added unless discloseAgent is false. Nothing is sent by this tool; the person sends the email and replies come back by email. Summaries containing a private key or seed phrase are refused.
| Argument | Type | Description |
|---|---|---|
| topic | string | Help center section: getting_started, adding_property, buying_selling, borrowing_lending, trust_legal, troubleshooting, other (default) |
| subject | string | Email subject, in the person's words (default: the topic, plus the token ID when given) |
| summary* | string | What the person is trying to do, what happened, and what was already checked |
| tokenId | string | Token ID of the property the question is about (digits only) |
| discloseAgent | boolean | Add a line saying the email was drafted by an AI agent through the Fabrica MCP server (default: true) |
Estimate how much can be borrowed against a property on Fabrica: DeFi lending pool liquidity (max loan amount, durations), existing loan status, the reasons when the pool shows no capacity (tax status, price oracle checks), and in limits what binds the amount (limitedBy: pool_liquidity, ltv, pool_limit, tax_status, oracle, existing_loan or unknown) with the collateral price, the pool's free liquidity and the highest loan-to-value. The oracle block shows how the collateral price is derived from the valuation sources. toRaise lists what would raise the amount, one entry per lever (setup, tax_status, deed_check, fees, existing_loan, price, ltv, pool_liquidity), each with where it stands today, what the pool would allow once it moves (wouldAllow, USD where computable) and the step or mechanism that moves it; pass amountUsd to test a loan amount. Answers questions such as 'How much can I borrow against this property?'. The amount is an estimate; the rate is set by a live quote when borrowing.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| tokenId | string | The token ID of the property |
| amountUsd | number | A loan amount in USD to test: toRaise then says what collateral price the pool's highest loan-to-value needs for it, and how much more pool liquidity it needs |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
},
"amountUsd": {
"type": "number",
"description": "A loan amount in USD to test: toRaise then says what collateral price the pool's highest loan-to-value needs for it, and how much more pool liquidity it needs",
"exclusiveMinimum": 0
}
}
}Explain a Fabrica property's Property checks from their numeric encoding (formerly called the confidence score). The encoding is a 5-digit positional number where each digit represents a different verification group: recovery status (ten-thousands), past title (thousands), ownership (hundreds), onchain history (tens), basic validation (ones). Each digit is a category value, not a count; with a tokenId the response also counts the individual checks that pass. Max: 75342. Property checks are a starting point for your own research, not a title search or title insurance.
| Argument | Type | Description |
|---|---|---|
| score | integer | The 5-digit Property checks number to explain, as an integer (e.g. 73242) |
| tokenId | string | Look up and explain the Property checks of this property |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"score": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "The 5-digit Property checks number to explain, as an integer (e.g. 73242)"
},
"tokenId": {
"type": "string",
"description": "Look up and explain the Property checks of this property"
}
}
}Look up any US land parcel by street address or parcel number (APN): address, place, APN, state and county, and whether it is already on Fabrica (token ID and property link). For a parcel not on Fabrica, links.addToFabrica is the fabrica.land link to add that parcel; it starts adding it only when a person opens it and decides there. The tool itself creates nothing. An ambiguous query returns up to 5 candidates, whose Fabrica status is matched by parcel number only; state and county narrow it to one, which gets the full check. When the US parcel search is not answering, properties already on Fabrica that the query names come back from Fabrica's own records as unconfirmed candidates (match: unconfirmed, matchSource: fabrica-index); present them as likely, not confirmed. Owner names from parcel data are never returned. For a list, queries takes up to 10 addresses or parcel numbers under one state and county scope and returns one row per resolved query (onFabrica, tokenId or addToFabrica, coverage) plus an unresolved list with the reason. Limited to 30 lookups per minute per client; each query in a list counts as one.
| Argument | Type | Description |
|---|---|---|
| query | string | Street address (with city and state when known) or parcel number (APN). Give this or queries, not both |
| state | string | Two-letter US state code, e.g. 'AZ' |
| county | string | County name, e.g. 'Navajo' |
| queries | array | Up to 10 addresses or parcel numbers sharing the same state and county scope; each counts as one lookup against the per-client limit. Returns one row per resolved query and an unresolved list with the reason |
Get an overview of the Fabrica lending market: loan counts, loans, DeFi lending pool liquidity and utilization, average APR, and recent loan events (the distribution of the whole history, by loan-to-value, state and outcome, is in get_fabrica_loan_book). Owners borrow against their properties through the DeFi lending pool (pool-based lending). Loan records also include historical peer-to-peer loans made through a former integration that is now retired.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max loan results (default 20, max 100) |
| since | string | ISO date. Only return loans started after this date. |
| lender | string | Filter by lender wallet address |
| status | string | Filter loans by status (default: 'all') |
| borrower | string | Filter by borrower wallet address |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max loan results (default 20, max 100)"
},
"since": {
"type": "string",
"description": "ISO date. Only return loans started after this date."
},
"lender": {
"type": "string",
"description": "Filter by lender wallet address"
},
"status": {
"enum": [
"active",
"repaid",
"liquidated",
"all"
],
"type": "string",
"description": "Filter loans by status (default: 'all')"
},
"borrower": {
"type": "string",
"description": "Filter by borrower wallet address"
}
}
}Get the lending history of the Fabrica protocol as a distribution: loan counts and principal by status and provider, loan-to-value bands against today's property estimates, exposure by state and acreage, APR and duration spread, repaid and liquidated counts, originations by month for the last 12 months, and the largest loans with their property pages. Covers DeFi lending pool loans and historical peer-to-peer loans. Counts come from the loan records; where the pool data source's counters differ, both are shown.
| Argument | Type | Description |
|---|---|---|
| status | string | Only loans with this status (default all). |
| groupBy | string | Adds a groups table: loans, principal and outcome counts per state, provider, status, loan-to-value band or acre band. |
| largest | integer | How many of the largest loans to list (default 10, max 25). |
| provider | string | pool: the DeFi lending pool. peer-to-peer: historical loans through the retired NFTfi integration. Default all. |
| sinceDays | integer | Only loans started in the last N days (default: the whole history). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"enum": [
"active",
"repaid",
"liquidated",
"all"
],
"type": "string",
"description": "Only loans with this status (default all)."
},
"groupBy": {
"enum": [
"state",
"provider",
"status",
"ltvBand",
"acreBand"
],
"type": "string",
"description": "Adds a groups table: loans, principal and outcome counts per state, provider, status, loan-to-value band or acre band."
},
"largest": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "How many of the largest loans to list (default 10, max 25)."
},
"provider": {
"enum": [
"pool",
"peer-to-peer",
"all"
],
"type": "string",
"description": "pool: the DeFi lending pool. peer-to-peer: historical loans through the retired NFTfi integration. Default all."
},
"sinceDays": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Only loans started in the last N days (default: the whole history)."
}
}
}Get network-wide statistics for Fabrica, where US land is held in trusts represented by tokens: total properties, estimated value, lending volume and loan counts, DeFi lending pool TVL and utilization, geographic distribution, and contract addresses.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Get the activity feed for a property or wallet, or, with no tokenId, slug or address, the most recent activity across every property on the network: properties added, transfers, sales, listings, loans started, repaid or liquidated, configuration changes, and more. Covers transaction history and event timelines.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug (for property activity) |
| type | string | Filter by activity type, matched against the API's event names (e.g. 'loan', 'transfer', 'sale', 'mint' for properties added) |
| limit | integer | Max results (default 20, max 100) |
| address | string | Wallet address (for wallet activity) |
| tokenId | string | Property token ID (for property activity). Leave tokenId, slug and address out for the recent activity across every property on the network. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug (for property activity)"
},
"type": {
"type": "string",
"description": "Filter by activity type, matched against the API's event names (e.g. 'loan', 'transfer', 'sale', 'mint' for properties added)"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max results (default 20, max 100)"
},
"address": {
"type": "string",
"description": "Wallet address (for wallet activity)"
},
"tokenId": {
"type": "string",
"description": "Property token ID (for property activity). Leave tokenId, slug and address out for the recent activity across every property on the network."
}
}
}Get the parcel boundary of a property on Fabrica as GeoJSON, for mapping, spatial analysis, and visualization. The county boundary is added only with includeCountyBounds: true.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| tokenId | string | The token ID of the property |
| includeCountyBounds | boolean | Also return the county boundary polygon, a large decorative layer (default: false) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
},
"includeCountyBounds": {
"type": "boolean",
"description": "Also return the county boundary polygon, a large decorative layer (default: false)"
}
}
}Get one loan against a property on Fabrica: status (active, repaid, liquidated), provider, principal, APR, start, maturity, the full repayment and, for an active loan, the payoff today, with the borrower and lender wallets shortened and the property link. Give a property (tokenId or slug) for its active or latest loan, add loanId for a specific one, or give loanId alone to look it up across the network. otherLoans lists the property's other loans.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| loanId | string | The loan id; with no property, the loan is looked up across the network |
| tokenId | string | The token ID of the property |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"loanId": {
"type": "string",
"pattern": "^[0-9]{1,100}$",
"description": "The loan id; with no property, the loan is looked up across the network"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
}
}
}Get a static map image of a property on Fabrica showing its parcel boundary (or a pin marker if no boundary is available). Returns an inline image. Supports dark/light themes and custom dimensions.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| theme | string | Map theme (default: 'dark') |
| width | integer | Image width in pixels (100-1280, default 640) |
| height | integer | Image height in pixels (100-1280, default 640) |
| tokenId | string | The token ID of the property |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Map theme (default: 'dark')"
},
"width": {
"type": "integer",
"maximum": 1280,
"minimum": 100,
"description": "Image width in pixels (100-1280, default 640)"
},
"height": {
"type": "integer",
"maximum": 1280,
"minimum": 100,
"description": "Image height in pixels (100-1280, default 640)"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
}
}
}Get the listings and offers on one property on Fabrica: the lowest active listing, all listings, and offers sorted from highest to lowest, each with price in USD and in its currency, seller or buyer, expiry (ISO 8601 and relative), any buyer restriction and disclosure documents. Shows whether the property is still being added to Fabrica and whether it is collateral for an active loan, with what that means for a sale. Expired, canceled and filled listings and offers are left out unless status is 'all'. Links to the property page, where offers are made.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| status | string | 'active' (default): live orders only. 'all': also expired, canceled and filled orders. |
| tokenId | string | The token ID of the property |
| minOfferUsd | number | Only return offers at or above this USD amount |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"status": {
"enum": [
"active",
"all"
],
"type": "string",
"description": "'active' (default): live orders only. 'all': also expired, canceled and filled orders."
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
},
"minOfferUsd": {
"type": "number",
"minimum": 0,
"description": "Only return offers at or above this USD amount"
}
}
}Get a wallet's land portfolio on Fabrica: properties owned (paged), active loans (as borrower or lender), listings and offers, credit history, and total portfolio value. Counts and totals always cover the whole wallet.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max properties to list (default 50, max 200) |
| offset | integer | Properties to skip, for paging (propertiesPage.nextOffset) |
| address* | string | Ethereum wallet address (0x...) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max properties to list (default 50, max 200)"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Properties to skip, for paging (propertiesPage.nextOffset)"
},
"address": {
"type": "string",
"description": "Ethereum wallet address (0x...)"
}
}
}Get a static map image showing all properties a wallet owns on Fabrica, plotted as points on a single map. Returns an inline image. Supports dark/light themes and custom dimensions.
| Argument | Type | Description |
|---|---|---|
| theme | string | Map theme (default: 'dark') |
| width | integer | Image width in pixels (100-1280, default 640) |
| height | integer | Image height in pixels (100-1280, default 640) |
| address* | string | Ethereum wallet address (0x...) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Map theme (default: 'dark')"
},
"width": {
"type": "integer",
"maximum": 1280,
"minimum": 100,
"description": "Image width in pixels (100-1280, default 640)"
},
"height": {
"type": "integer",
"maximum": 1280,
"minimum": 100,
"description": "Image height in pixels (100-1280, default 640)"
},
"address": {
"type": "string",
"description": "Ethereum wallet address (0x...)"
}
}
}Get the full record of one property on Fabrica (Ethereum Mainnet), including legal description, valuation, property tax status, Property checks (with their 5-digit numeric encoding), current ownership and holders, active loans, marketplace listings and offers, recent activity, photos and a parcel map image link. Also its lifecycle stage (unclaimed, being added, replaced, live, removal in progress, removed, retired), fees assessed on the token with approval and payment state (fees is null when none are assessed), and flags for a duplicate parcel claim or the marketplace screen (an empty list when none apply). A token ID that was replaced when the property's token was issued returns that issued token. Boundary geometry is returned by get_land_boundary. The response includes the URL of the operating agreement (the trust instrument) that governs the token; get_land_trust_documents returns the full legal record. Pass display: "fullscreen" to ask a host that renders the property card to open it fullscreen (the host may decline). Owner names: the majority holder's chosen display name is returned; the deed grantor from Fabrica's own records is in get_land_trust_documents; owner names from third-party parcel data are never returned.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| display | string | Hosts that render the property card: ask for it inline (default) or fullscreen. The host may decline. |
| tokenId | string | The token ID of the property |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"display": {
"enum": [
"inline",
"fullscreen"
],
"type": "string",
"description": "Hosts that render the property card: ask for it inline (default) or fullscreen. The host may decline."
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
}
}
}Get whether a property's taxes are current, past due or unknown, according to Fabrica's Property checks: the status, which signal it comes from (the Property Taxes Current check, the DeFi lending pool's block reason, both, or a note that they disagree), when it was checked and when the checks expire, and whether it limits borrowing. It is a data lookup, not the county's own statement; the amount due and the due date are not available.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| tokenId | string | The token ID of the property |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
}
}
}Get the legal record of a tokenized property: the trust that holds it (holding entity, formation date), the trust agreement that governs the token (name, version, link), the legal description, the parcel identifiers (FIPS, APN, county, state), the recorded deed reference and grantor, and documents the owner uploaded. The agreement text is included only when includeAgreementText is true (it is long); trust.agreementResource is the MCP resource with this token's own agreement. Owner names: the deed grantor from Fabrica's own records is returned; a holder's chosen display name is in get_land_property; owner names from third-party parcel data are never returned. Property checks are not a title search or title insurance. The token represents the beneficial interest in the trust; the trustee is designated by the token holder and is, by default, the holder.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| tokenId | string | The token ID of the property |
| includeAgreementText | boolean | Also return the full text of the trust agreement, about 150 KB (default: false; the link is always returned) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
},
"includeAgreementText": {
"type": "boolean",
"description": "Also return the full text of the trust agreement, about 150 KB (default: false; the link is always returned)"
}
}
}Get every value the Fabrica API holds for a property, each with its source, date and confidence: the estimate and the sources it comes from, the Fabrica AVM, Prycd and county assessor figures, the signed valuations the DeFi lending pool reads, the pool's oracle state (feed freshness, onchain price, usable price) with the reason when a price is missing, and the valuation report link. Presents data with its provenance; it suggests no price.
| Argument | Type | Description |
|---|---|---|
| slug | string | Property slug from the URL |
| tokenId | string | The token ID of the property |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "Property slug from the URL"
},
"tokenId": {
"type": "string",
"description": "The token ID of the property"
}
}
}Search US land on Fabrica (Ethereum Mainnet): land for sale and every other property on the network, mostly vacant lots and acreage. Returns a list of properties matching the given filters (location, size, Property checks, listing status, listing price and price per acre, distance from a point), sorted by price, price per acre, acres, estimated value, Property checks, date added or distance; each row carries its price per acre (listing or estimate, labeled) and, with near, its straight-line distance. Or counts per state or county with groupBy. When a state or county is given, the response includes the link to that location's page on fabrica.land. Each result is a real parcel of land in the US, held in a trust whose beneficial interest is an ERC-1155 token.
| Argument | Type | Description |
|---|---|---|
| near | object | A point to measure distance from, in decimal degrees. Each row then carries distanceMiles (straight-line), and the default sort is by distance. |
| limit | integer | Max results (default 20, max 100) |
| county | string | County name, case-insensitive, the 'County' suffix optional (e.g. 'Costilla' or 'Mohave County'). Combine with region when the name exists in more than one state. |
| offset | integer | Pagination offset |
| region | string | US state code (e.g. 'TX', 'CA', 'NV') |
| sortBy | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"summary"
],
"properties": {
"topic": {
"enum": [
"getting_started",
"adding_property",
"buying_selling",
"borrowing_lending",
"trust_legal",
"troubleshooting",
"other"
],
"type": "string",
"description": "Help center section: getting_started, adding_property, buying_selling, borrowing_lending, trust_legal, troubleshooting, other (default)"
},
"subject": {
"type": "string",
"maxLength": 150,
"minLength": 3,
"description": "Email subject, in the person's words (default: the topic, plus the token ID when given)"
},
"summary": {
"type": "string",
"maxLength": 2000,
"minLength": 10,
"description": "What the person is trying to do, what happened, and what was already checked"
},
"tokenId": {
"type": "string",
"pattern": "^[0-9]{1,80}$",
"description": "Token ID of the property the question is about (digits only)"
},
"discloseAgent": {
"type": "boolean",
"description": "Add a line saying the email was drafted by an AI agent through the Fabrica MCP server (default: true)"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"minLength": 3,
"description": "Street address (with city and state when known) or parcel number (APN). Give this or queries, not both"
},
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter US state code, e.g. 'AZ'"
},
"county": {
"type": "string",
"maxLength": 80,
"description": "County name, e.g. 'Navajo'"
},
"queries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 3
},
"maxItems": 10,
"minItems": 1,
"description": "Up to 10 addresses or parcel numbers sharing the same state and county scope; each counts as one lookup against the per-client limit. Returns one row per resolved query and an unresolved list with the reason"
}
}
}| Order of the rows. price and pricePerAcre use the listing price and put unlisted properties last; newest is by the date the property was added; distance needs near. Default: the API's order, or distance when near is set. |
| groupBy | string | Return one row per state or county (property count, count for sale, total acres, location page link) instead of property rows. limit and offset page through the groups. |
| ownedBy | string | Filter by owner wallet address |
| sortDir | string | asc (default) or desc. newest is always most recent first. |
| hasLoans | boolean | Only show properties with active loans |
| maxAcres | number | Maximum parcel size in acres |
| maxPrice | number | Maximum listing price in USD. Only listed properties match any price filter. |
| minAcres | number | Minimum parcel size in acres |
| minPrice | number | Minimum listing price in USD. Only listed properties match any price filter. |
| minScore | integer | Minimum Property checks number: the 5-digit numeric encoding of Property checks, an integer. Defaults to 72032, the marketplace threshold, except when ownedBy is set (then every property in that wallet is listed). Any minimum also requires a verified deed. Max: 75342. |
| hasListings | boolean | Only show properties with active sale listings |
| maxPricePerAcre | number | Maximum listing price per acre in USD (listing price over acres; unlisted properties never match). |
| minPricePerAcre | number | Minimum listing price per acre in USD (listing price over acres; unlisted properties never match). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"near": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"radiusMiles": {
"type": "number",
"maximum": 3000,
"description": "Keep only properties within this many miles of the point (default: no limit, every row gets its distance).",
"exclusiveMinimum": 0
}
},
"description": "A point to measure distance from, in decimal degrees. Each row then carries distanceMiles (straight-line), and the default sort is by distance."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max results (default 20, max 100)"
},
"county": {
"type": "string",
"description": "County name, case-insensitive, the 'County' suffix optional (e.g. 'Costilla' or 'Mohave County'). Combine with region when the name exists in more than one state."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset"
},
"region": {
"type": "string",
"description": "US state code (e.g. 'TX', 'CA', 'NV')"
},
"sortBy": {
"enum": [
"price",
"pricePerAcre",
"acres",
"estimatedValue",
"score",
"newest",
"distance"
],
"type": "string",
"description": "Order of the rows. price and pricePerAcre use the listing price and put unlisted properties last; newest is by the date the property was added; distance needs near. Default: the API's order, or distance when near is set."
},
"groupBy": {
"enum": [
"state",
"county"
],
"type": "string",
"description": "Return one row per state or county (property count, count for sale, total acres, location page link) instead of property rows. limit and offset page through the groups."
},
"ownedBy": {
"type": "string",
"description": "Filter by owner wallet address"
},
"sortDir": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc (default) or desc. newest is always most recent first."
},
"hasLoans": {
"type": "boolean",
"description": "Only show properties with active loans"
},
"maxAcres": {
"type": "number",
"minimum": 0,
"description": "Maximum parcel size in acres"
},
"maxPrice": {
"type": "number",
"minimum": 0,
"description": "Maximum listing price in USD. Only listed properties match any price filter."
},
"minAcres": {
"type": "number",
"minimum": 0,
"description": "Minimum parcel size in acres"
},
"minPrice": {
"type": "number",
"minimum": 0,
"description": "Minimum listing price in USD. Only listed properties match any price filter."
},
"minScore": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum Property checks number: the 5-digit numeric encoding of Property checks, an integer. Defaults to 72032, the marketplace threshold, except when ownedBy is set (then every property in that wallet is listed). Any minimum also requires a verified deed. Max: 75342."
},
"hasListings": {
"type": "boolean",
"description": "Only show properties with active sale listings"
},
"maxPricePerAcre": {
"type": "number",
"minimum": 0,
"description": "Maximum listing price per acre in USD (listing price over acres; unlisted properties never match)."
},
"minPricePerAcre": {
"type": "number",
"minimum": 0,
"description": "Minimum listing price per acre in USD (listing price over acres; unlisted properties never match)."
}
}
}