Search Marketplace listings
search_public_listingsSearch pins ACROSS THE OPEN MARKETPLACE — the pins of every publicly published map on MappaIQ, not just this account. Use it for questions like 'what land is publicly listed under $2M around Rockwall' or 'show me every public retail listing'. Each hit is attributed to its map and owner (with the map's public page link); licensedBroker:true means MappaIQ checked the owner's TREC license, so say 'Licensed broker'. Filter by keyword (name/address/notes/city), assetClass, price and acreage ranges, or restrict to one public map with publicMapId (from list_public_maps). Returns EVERY pin on every public map, with every field as the owner stored it (name, address, price, size, notes, custom fields, etc.) plus the Listing broker's name and brokerage — because publishing a map makes the whole map public. Brokers label fields inconsistently, so the marketplace understands synonyms: size columns named SF / Sq Ft / Size / Available, price named Asking / List Price, land named Acres / Lot Size are all normalized into clean price / buildingSF / acreage / offerType / assetClass fields you can filter on (the broker's original columns are kept too). confirmedDaysAgo gives the age of a pin's Confirmed date, or null when it was never dated. One result per property: when several Accounts list the same property (a Co-listing), the most recently confirmed one's fields come first, offers says who offers what ("For sale (A) · For lease (B)") and listedBy gives each broker with the pin id for get_public_listing. No phone or email: get them with get_public_listing. 50 per page.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size. Default and max 50. | |
| offset | No | Skip this many matches (paging). Default 0. | |
| context | Yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution." | |
| keyword | No | Free-text match on name, address, notes, city, market fields. | |
| maxSqft | No | Maximum building size in square feet. | |
| minSqft | No | Minimum building size in square feet. | |
| maxPrice | No | ||
| minPrice | No | ||
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| assetClass | No | Land, Retail, Multifamily, Office, Industrial, etc. | |
| maxAcreage | No | ||
| minAcreage | No | ||
| publicMapId | No | Restrict to one public map (mapId from list_public_maps). | |
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. |