Real Estate Stack · Chapter 04 of 10
MLS and the CMA
The MLS is not an open API you call from your laptop. It is a member system you log into, and the comparative market analysis you build from it is the single most defensible thing you hand a seller.
This chapter has two jobs. First, it sets straight what an individual agent can and cannot actually do with MLS data, because most of the "AI real estate API" language you will see online is aimed at vendors and brokers, not you. Second, it walks through building a comparative market analysis (CMA) the way a working agent actually builds one: starting at the county record, not the MLS search box, because the county record decides which comps even count and it routinely surfaces the fact that matters most in the listing conversation.
What an individual agent can and cannot pull
Every technical access route into MLS data (RESO Web API implementations, Spark, Trestle, Bridge, SimplyRETS) is built for vendors and technology providers, not for an individual agent calling an API directly. RETS, the older protocol, is formally deprecated by the standards body RESO, though no single industry-wide shutoff date exists; each MLS sets its own sunset verified [1]. As a working agent, your access to live MLS data runs through your MLS's own front end (Flexmls, Matrix, or your MLS's equivalent), signed in with your own subscriber credentials, not through a raw feed.
| Route | Who can use it | Cost (dated 2026-09-03) | What it is for | Chip |
|---|---|---|---|---|
| Flexmls / Matrix, signed in | Individual agent, own subscriber login | Included in MLS dues | Saved searches, hotsheets, CMAs, client portals for your own clients | verified |
| FBS Spark API | Registered developer with an MLS data license | $50/month per MLS | Building a custom app or integration on top of MLS data | claim |
| Trestle (CoreLogic/Cotality) | Technology providers/vendors, not individual agents | From $100/month plus about $75/month per MLS feed | Vendor products that need Matrix-sourced data (CRMs, CMA tools) | claim |
| Bridge Interactive (Zillow) | MLS-affiliated vendors/enterprises via agreement | Not published | Zillow-affiliated technology integrations | claim / report |
| SimplyRETS | Agents/developers who already hold MLS-issued RETS or RESO credentials | $49/month plus $99 one-time per connection | A simpler wrapper API for someone who already has a data license | claim |
| RPR (Realtors Property Resource) | Every NAR member REALTOR, app and web platform | Free, included in NAR dues | CMA and market reports, mapping, AI ScriptWriter for market content; up to 2,000 owner records exported per month | verified |
| IDX broker feed | MLS Participants/Subscribers via broker sign-off | Roughly $20 to $50/month added fee | Public-facing property search on your own website | report |
The practical read: unless you are also running a technology business, none of the vendor API rows in that table are for you. Your MLS login, RPR, and whatever CMA tool your MLS bundles in are the whole toolkit for an individual agent, and they cost nothing beyond your dues.
Your MLS's own rulebook also restricts what you can do with data you can see. ARMLS's rules state that ARMLS "will not allow third-party access to Aggregated Data without a prior written agreement," and subscribers "may not use or convey all or any portion of the ARMLS Compilation... to any non-Subscriber, non-Participant" verified [2]. In plain terms: you may pull your own listings, run saved searches, and build CMAs and client reports for your own clients under your own login, but you may not resell the data, scrape it in bulk, or hand your login or exports to someone who is not a subscriber. Bright MLS and CRMLS carry similarly worded restrictions on sharing data with unauthorized third parties report [3][4]. If a tool you are considering asks you to share your MLS credentials so it can "sync automatically," that is exactly the kind of unauthorized third-party access your MLS rulebook prohibits; check with your MLS or broker before doing it.
MLS setup basics
Before you run a single CMA, set up the ordinary parts of your MLS account that make daily work faster:
- Saved searches for your farm areas or active client criteria, so new listings surface without a manual search every time.
- Hotsheets, the daily or period digest of new, price-changed, and status-changed listings in your saved search criteria. These are the raw numbers behind the monthly market update workflow later in this chapter.
- Client portals, if your MLS front end offers them, so a buyer or seller can see a live filtered feed rather than you forwarding listings by hand.
Two MLS front ends dominate: Flexmls (FBS) and Matrix (CoreLogic/Cotality). A working agent's notes on Flexmls, specifically ARMLS's implementation, surface quirks that are easy to lose an afternoon to if nobody warns you operator:
- Remarks search is exact-substring, not fuzzy. Searching listing remarks for a phrase only returns listings where that exact string appears; there is no wildcard or stemming, so plan your search term carefully rather than assuming a partial match will work.
- The date-range box appends rather than replaces. Opening the date range selector to set a Close of Escrow window and then reopening it to change the window can add a second range instead of replacing the first, which silently pulls in listings you did not mean to include. Check the applied filter chips after setting a date range, not just the picker itself.
- Status selection with multiple clicks does not always register individually in the listbox; selecting a contiguous range (click the first, then extend the selection) is the reliable method rather than clicking each status one at a time.
- A dropped filter chip is silent. An autocomplete filter (zip code, for example) that is typed but not confirmed by clicking the suggested match can vanish the moment the next filter is set, quietly widening your result set without any error message.
- The result set caps out on export or print views at a fixed size in some flows; if you are exporting a large comp set, check that the export actually contains every record you expect rather than assuming it does.
Matrix behaves similarly in spirit (saved searches, hotsheets, CMA wizards) but with its own UI, so the specific clicks differ even where the underlying MLS data model does not.
The county-record-first CMA
Verify the subject property at the county assessor's office before you touch the MLS. This is the order that matters, and it is not a formality: the county record decides which comps count, and it routinely surfaces the single most important fact you will bring to the listing appointment.
Pull from the assessor's public parcel lookup: livable square footage, lot size, year built, garage stalls, pool, and any recorded permits. Also pull the owner of record, the sale date, and the sale price. A homeowner who bought directly from a builder within the last few years, for example, is a materially different pricing conversation than one who bought a decade ago, and that fact often does not show up anywhere in the MLS at all, because builder-direct sales never hit the MLS in the first place. If the subject address returns zero MLS records, that absence is itself a finding: there is no listing history to anchor the seller's price expectations to, and you should say so plainly.
Why this order matters, concretely operator: MLS square footage is typically labeled "per Assessor" anyway, so the county is the authority the MLS itself defers to. Where the MLS and the county disagree on a comp's size or price, note the disagreement in your deliverable rather than silently picking one number.
The comp method
Once the subject is verified, build the comp set with a repeatable procedure rather than an ad hoc search:
- Set a radius and time window. A tight geographic radius (or a matching subdivision) and a defined closed-sale window, commonly the trailing 12 months, keeps the set relevant to current conditions.
- Match the same product type. Bracket square footage (roughly plus or minus 10 to 15 percent of the subject) and year built to the subject's era; comparing a builder tract home to a custom estate on the same street is not a comp, it is a coincidence of address.
- Pull both closed and active listings. Closed sales tell you what buyers actually paid; current actives tell you what today's competition is asking, and a same-size competitor listed today caps the achievable price regardless of what closed six months ago. Skipping actives and reconciling from closed sales alone is one of the most common ways a CMA lands too high.
- Net every comp to a cash-equivalent price. A sale with a seller-paid buyer concession is not the same as a sale with none; subtract the concession before comparing $/square foot across comps, or the comparison misleads.
- Interpolate, do not flat-average, price per square foot across size groups. Smaller homes in a given market typically carry a higher $/sqft than larger ones; a straight average across size groups understates the correct number for a subject sitting between them.
- Adjust qualitatively for the differences that are actually verified (a third garage bay, a finished versus unfinished yard, a lot premium, resale versus new-with-warranty) in dollar ranges, and only where the difference is confirmed, not assumed.
- Reconcile with more than one method (for example a per-square-foot method and a paired-sale method) and show the range in your deliverable. If the methods cluster closely, that agreement is what earns the number; if they do not, name the outlier and explain why it is being weighted differently.
- Set list price rungs. Present the seller with more than one pricing strategy (for example, a faster-sale price, a market-aligned price, and a test-the-top price), each with a realistic expected market time and range, rather than a single number with no context for the tradeoff.
| Adjustment | Applies to |
|---|---|
| Concession netting | Every comp with a recorded seller-paid buyer credit; subtract before comparing |
| Size interpolation | $/sqft comparisons across comps of different square footage than the subject |
| Feature adjustment | Verified differences only: garage bays, yard condition, lot premium, pool |
| New-versus-resale adjustment | Any comp that is a new-construction closing rather than a resale |
Claude for the CMA narrative and net sheet
Claude never pulls MLS data itself, and it never states a value as fact. Its role in a CMA is to take numbers a human already pulled and personally verified at the county and in the MLS, and turn them into a readable narrative and a seller net sheet. That distinction matters because the Anthropic Usage Policy classifies housing and financial-eligibility decisions as high-risk use, requiring a qualified professional to review the output before it is finalized or shared, and disclosure of AI use to the affected person verified [5]. A CMA narrative or net sheet fits squarely in that category: you are the qualified professional doing the review, every time, before a seller sees it.
Prompt structure that keeps Claude in its lane:
Subject: [address], verified county record: [sqft, lot, year, pool, garage, last sale] Comps (I pulled and verified these): [list with address, sold/active status, sold date, sold price, sqft, $/sqft, notable concessions or adjustments] Market context: [months of supply, average days on market, sold-to-list ratio by DOM bucket] Reconciliation: [my value range and how I got there] Proposed list price rungs: [price A / price B / price C, with commission %] Write: 1. A short narrative for the seller explaining the value range and why, in plain language. 2. A net sheet at each of the three list prices, using these line items: [list your brokerage's standard closing cost line items and typical percentages]. Do not add any comp, statistic, or claim that is not in the numbers above. Label this a broker's opinion of probable market positioning, not an appraisal.
Claude drafts; you check every number against your own worksheet before it goes to the seller, and you keep the final say on the recommended price.
Listing remarks rules
Fair housing rules govern every word in a listing, whether a human or Claude drafted it. The core rule: it is unlawful to publish any ad for the sale or rental of a dwelling that states a preference, limitation, or discrimination based on a protected class verified [6]. There is no current official HUD list of banned words; the widely circulated "forbidden words" list traces to a 1989 HUD memo that was withdrawn and never formally replaced, though HUD has said it still references the old list informally in enforcement report [7]. Treat it as risk-reduction guidance, not binding statute text, and apply the underlying rule of thumb it teaches: describe the property, never who should live in it. "Family room" describes a room; "perfect for families" describes a preferred buyer, and the second one is the risk.
- Avoid: "exclusive," "restricted," "limited," "no children," "family-friendly," "perfect for families," "singles preferred," and any religious or ethnic reference to the neighborhood.
- Factual proximity language ("walk to the bus stop," "fourth-floor walk-up") is generally treated as permitted description, not a violation, but a safer phrasing swap ("short distance to," "close to") reduces risk further when the phrase could be read as targeting a group rather than describing a location.
MLS photo labeling rules are a live, moving target through 2026, driven in large part by California's AB 723, effective January 1, 2026, which requires any listing with significantly altered images to include the original unaltered images plus a disclosure identifying which images were altered verified [8].
| MLS | Rule | Effective | Fine |
|---|---|---|---|
| ARMLS | Rule 8.23: AI or software-added/removed/significantly changed content requires a "[Digitally Altered]" watermark paired with the original image | May 28, 2026; enforcement from Dec 2026 | $200 per violation after the education phase |
| CRMLS | Rule 11.5.2: original image must appear immediately before or after the altered one, labeled "digitally enhanced," "digitally altered," or "virtually staged"; AI-generated landscaping prohibited outright | Jan 1, 2026 | $250 after an uncorrected warning |
| Bright MLS | "VIRTUALLY STAGED" required in all caps on the image or caption; edits changing permanent/structural elements prohibited | Effective per Bright's rules document | $250 under Bright's media rule 1.7 (branded media, unauthorized media, no photo); no separate line for a missing staging label verified [11] |
Standard brightness, contrast, and crop edits are exempt from these rules under both ARMLS and CRMLS language; the trigger is added, removed, or significantly changed content, not routine photo correction verified [9][10]. Check your own MLS's current rule before publishing any AI-touched photo; the fine and the exact wording required differ by MLS, and this table will not stay current forever.
Monthly market update draft
A short monthly market update for your farm area or client list is one of the easiest recurring pieces of content to produce well, and one of the easiest to get subtly wrong if the numbers are not checked. Export your hotsheet or a saved search's summary numbers (new listings, closed sales, median sold price, average days on market, months of supply) for the period, then hand those numbers, not a request to "look up the market," to Claude for the draft.
Claude workflow: county-record-first CMA narrative
Trigger: a listing appointment is on the calendar, or the operator equivalent, an /cma-style request naming an address.
What Claude prepares: once the human has pulled and verified the county record and the MLS comp set, Claude drafts the narrative that explains the value range, the reconciliation logic across methods, and the three list price rungs in plain seller-facing language.
What the human checks and does: pulls every county and MLS figure personally, verifies the subject's condition where the county record cannot (pool state, upgrades, backyard condition), checks every number Claude's draft references against the original worksheet, and sets the final recommended price.
What is never automated: pulling MLS data directly, inventing a comp or a statistic, and stating a value as settled fact rather than a broker's opinion of probable market positioning.
Claude workflow: seller net sheet at three list prices
Trigger: the CMA reconciliation is done and it is time to show the seller what they will actually net.
What Claude prepares: a net sheet at each of the three list price rungs, using the closing cost line items and typical local percentages the human supplies (buyer's brokerage commission, listing commission, buyer closing-cost credit, title, escrow, recording, HOA transfer, home warranty, inspection repair allowance).
What the human checks and does: confirms every line item and percentage against current local norms and the specific transaction's known facts, and labels the net sheet clearly as a planning estimate that excludes mortgage payoff and prorations, which only escrow can produce as binding figures.
What is never automated: presenting the estimate as the buyer's or seller's actual final numbers rather than a planning tool.
Claude workflow: monthly market update from the hotsheet
Trigger: the end of the month, or a recurring content schedule for a farm area newsletter or social post.
What Claude prepares: a short market update draft from the exact hotsheet numbers the human exported (new listings, closings, median price, days on market, months of supply), written for a consumer audience.
What the human checks and does: verifies every figure in the draft against the exported hotsheet before it is published anywhere, and confirms the listing-remarks and fair housing wording rules from this chapter apply equally to market update copy that describes neighborhoods.
What is never automated: publishing a market statistic that the human has not personally checked against the source export.
What stays human
- Every MLS search, filter, and data pull; Claude never logs into or queries the MLS itself.
- Verifying the subject property at the county assessor before trusting any MLS-listed square footage or lot size.
- Choosing, weighting, and adjusting the comp set, including which outliers to include or exclude and why.
- Reviewing every number in a Claude-drafted narrative, net sheet, or market update against the original worksheet before it reaches a client.
- Confirming current fair housing wording and MLS photo-labeling rules before publishing any listing content, since these rules change MLS by MLS and year by year.
- Stating the final recommended list price and commission to the seller.
Do this today
- Confirm which MLS front end you use and set up at least one saved search and hotsheet if you have not already.
- Pull the county assessor record for one active listing or upcoming appointment before you touch the MLS for it, and note anything that surprises you.
- Check your own MLS's current AI photo disclosure rule (ARMLS, CRMLS, Bright, or your local MLS's equivalent) so you know the labeling requirement before you touch a virtually staged or AI-edited photo.
Sources
- RESO: RETS sunset, retrieved 2026-09-03.
- ARMLS Rules and Regulations, retrieved 2026-09-03.
- Bright MLS Rules, effective Aug 14 2024, retrieved 2026-09-03.
- CRMLS Rules and Policies, retrieved 2026-09-03.
- Anthropic Usage Policy: high-risk use cases, retrieved 2026-09-03.
- HUD: Fair Housing Act advertising rule, retrieved 2026-09-03.
- HUD 1989 word-list status, via secondary legal/industry summaries, retrieved 2026-09-03.
- California AB 723, effective Jan 1 2026, via secondary legal/industry summaries, retrieved 2026-09-03.
- ARMLS Rule 8.23, Digitally Altered Media, retrieved 2026-09-03.
- CRMLS digitally altered image guidance, retrieved 2026-09-03.
- Bright MLS, Policy on Rules Enforcement, Schedule 1 sanctions (media violations $250, inaccurate information $100, credential sharing $500), assets.ctfassets.net PDF, retrieved 2026-09-04
Starting from zero? Use the field manuals first.
02 · BEFORE YOU BUY SOFTWARE
If you're still choosing the buyer, offer, stack, agents, content, customers, and delivery, don't start with a tool: start with the manuals. These create local worksheets only: no checkout, outreach, or account setup.
Find the first manual
Not sure which guide to open first? Start from your stuck point and let the finder recommend the next manual and the first worksheet question. No personal data is collected: it just points you at the right starting move.
Work the starter pack
Move through buyer, offer, stack, agents, content, customers, and delivery as a sequence of short local worksheet sessions. One artifact at a time, in order, so you build the business instead of browsing for it.
See what "done" looks like
Read a fully worked field manual before writing your own version, so the output feels concrete: a real, numbered workflow with the risky steps gated, not a fake proof claim.