Six Weeks, Two People, One MCP Server
How a father-son team shipped the first consumer-facing property intelligence MCP — and why "opinionated data" beats "raw data" for AI agents. A case study on building an MCP server in 16 days, with multi-model AI routing, persona-aware prompts, and 10 government data sources.
Landon Reid
Founder, ReadyPermit
How a father-son team shipped the first consumer-facing property intelligence MCP — and why "opinionated data" beats "raw data" for AI agents
Marcus Webb spent weeks on hold. He was trying to build a backyard ADU behind his house in Sacramento, and the planning department kept giving him conflicting answers. One planner said his R-2 lot qualified. Another said he needed a variance. A third told him to come in and schedule an appointment. His contractor was getting impatient.
Then Marcus typed his address into ReadyPermit. Two minutes later, he had a clear answer: yes, his backyard qualified for an 800 square foot detached ADU under California state law, with specific setbacks, height limits, and utility connection points. He broke ground the next month. "I spent weeks calling the planning department and getting conflicting answers," he told us. "ReadyPermit showed me in 2 minutes that my backyard qualifies for an 800 SF ADU. We broke ground last month."
Marcus is one of thousands of homeowners, investors, brokers, lenders, and developers who hit the same wall every week. Zoning research in America is a $2,000-to-$4,500 problem distributed across 50 states and 3,100 counties, each with its own GIS system, its own municipal code, and its own planner on lunch break. It's the last analog step in the real estate transaction — and it's exactly the kind of problem AI agents are supposed to solve.
Two weeks ago, we shipped the MCP server that solves it. Seven tools. Four persona-aware prompts. Multi-model AI routing across Claude Sonnet 4, GPT-4o, and Gemini 2.0 Flash. Ten government data sources. All in 603 lines of TypeScript. Built by a father-son team, in 16 days.
This is the story of how we did it — and why opinionated intelligence is the right shape for agentic property data.
The Problem: Zoning Research Is Broken
Before you understand why we built this, understand what it replaces.
A homeowner in Sacramento wants to build an ADU. A real estate investor in Atlanta is underwriting a small multifamily and needs to know if the lot supports four units. A developer in Miami is about to submit an LOI on a beachfront parcel and needs to know the flood zone before committing capital. A lender in Dallas is underwriting a commercial loan and needs a collateral risk assessment.
All four of these people are solving the same problem: they need to know what's legally possible on a specific piece of U.S. land, before they spend money. And all four are currently solving it the same way: they hire a zoning consultant for $2,000 to $4,500, wait two to six weeks, and hope the answer is both accurate and still valid by the time it arrives.
The data exists. It's scattered across 3,100 county GIS systems, 50 state environmental databases, FEMA's National Flood Hazard Layer, EPA's contamination records, USGS seismic maps, Census demographic data, and a web of municipal codes that vary city by city. Putting it together is what a consultant does for a living. The answer is rarely interesting. The work to produce it is.
The existing tools don't help the consumer. ATTOM Data sells a nationwide property feed, but it's priced for institutional lenders. CoreLogic — now Cotality — is contracted to insurance carriers. BatchData is a skip-tracing service for investors with outbound campaigns. Yardi Virtuoso is a vertical SaaS for property managers. All of them are enterprise-first. None of them answer "can I build on this lot?" for the person actually asking.
Zoning is the last analog step in the real estate transaction. Everything else has been digitized. This was the gap.
The Insight: MCP Was the Right Wedge
We already had a consumer product. Before we built the MCP server, ReadyPermit was a web app at readypermit.ai — 255,000 lines of frontend code, 47,000 lines of edge functions, 94 city-specific landing pages, 13 long-form blog posts, 183 URLs in our sitemap, and a 111-line llms.txt file telling AI crawlers exactly how to index our content. We had a Buildability Score, a report pipeline, persona-specific landing pages for investors, developers, homeowners, lenders, and brokers. We had paying customers.
What we didn't have was agent distribution. When someone asked Claude "can I build an ADU at 1247 Pine Street in Austin?", Claude couldn't answer. When Cursor wanted property data for a developer automation, there was no tool to call. When the next generation of AI agents started handling real estate workflows, the property intelligence layer was going to be called through APIs — and MCP was the standard those APIs would speak.
In November 2024, Anthropic released the Model Context Protocol. In January 2026, ATTOM Data launched what they described as the first large-scale property data MCP server — enterprise-tier, data-only, institutional pricing. The consumer wedge was wide open.
We saw what others missed. MCP isn't just a distribution channel. It's a primitive for agentic property intelligence. And we had an unfair advantage: every piece of the consumer product we had spent months building — the report pipeline, the persona routing, the Buildability Score, the multi-model AI router — was exactly the infrastructure an MCP server needs. Surfacing it through MCP wasn't a rebuild. It was an adapter.
First commit on the MCP server: March 21, 2026. Phase 1 submission prep complete: April 6, 2026. Sixteen days. One file. 603 lines.
Try it on your property
Free Buildability™ Report in 20 seconds — no signup required
The Team: Father and Son
ReadyPermit is built by two people: Landon B. Reid, the founder, and Carson Reid, the co-founder. They are a father-son team. That is not common in B2B AI tooling.
The division of labor is practical. One works the frontend — React, Tailwind, Framer Motion, the 467 React components that make up the consumer web app — plus the AEO content network and the city pages that feed LLM crawlers. The other works the backend — Supabase Edge Functions, the Deno runtime, the multi-model AI router, the report pipeline that pulls from ten government APIs and returns a clean payload in about twenty seconds.
The working rhythm is daily commits, a shared Supabase instance, and a small set of tools that let a two-person team ship at speed: Bolt.new for rapid frontend iteration, Supabase CLI for deploying edge functions directly from the laptop, and git log discipline that has accumulated 758 commits since the first commit on March 21, 2026.
This is not a story about a venture-backed team of fifty engineers shipping a platform. This is a story about two people who saw an opening and moved fast enough to reach it first.
The Architecture: 603 Lines That Matter
The MCP server is a single file: supabase/functions/mcp-server/index.ts. 603 lines of TypeScript running on the Deno runtime inside a Supabase Edge Function. No framework. No dependencies beyond the standard library and a Supabase client. It breaks down into four layers.
The protocol layer handles JSON-RPC 2.0 over Streamable HTTP, the transport that Anthropic's MCP spec recommends for remote servers. It announces protocol version 2024-11-05 on the initialize handshake, issues a session ID in the Mcp-Session-Id response header, honors DELETE requests to terminate sessions cleanly, and returns 405 on GET because this server doesn't serve SSE. Bearer API key authentication is enforced on tool calls, but the discovery endpoints (tools/list and prompts/list) are open so that agents can introspect the server without credentials — a small decision that matters a lot for MCP AEO, the discoverability layer that determines whether an agent picks your tool in the first place.
The tool layer exposes seven tools, each with the four safety annotations Anthropic's MCP Directory requires: readOnlyHint: true, destructiveHint: false, idempotentHint, and openWorldHint: true for anything that hits external systems. The seven tools are analyze_property (the full Buildability Report), get_buildability_score (a fast 0-100 screen), lookup_zoning (code, permitted uses, setbacks, FAR), check_flood_zone (FEMA designation and insurance requirements), check_environmental_risks (EPA contamination, USGS seismic, NOAA wildfire, USDA soil), search_comparable_sales (recent nearby sales), and calculate_buildable_envelope (a pure calculation tool that takes zoning constraints and returns max buildable square footage).
The persona prompt layer exposes four prompts: investor_analysis, developer_feasibility, homeowner_guide, and lender_risk_assessment. These aren't tools. They are prompt templates that package the right tool calls, the right reasoning flow, and the right output voice for a specific audience. We'll come back to why this is load-bearing.
The execution layer is where the architecture stops being novel and starts being practical. When an agent calls analyze_property, the tool doesn't query FEMA directly. It calls the internal /functions/v1/report endpoint — the same endpoint the consumer web app uses. The MCP server is a thin protocol adapter on top of the same pipeline that serves readypermit.ai. This is why it shipped in sixteen days.
The pipeline under the hood aggregates ten upstream sources: the FEMA National Flood Hazard Layer, EPA Envirofacts, USGS Seismic Hazards, Census Bureau data (ACS and TIGER), HUD Fair Market Rents, USDA Soil Survey, NOAA Wildfire Risk, Regrid Parcel Data, county GIS records, and RentCast for rental comps. The MCP tool receives the aggregated report, condenses it into an agent-friendly payload well under the 25,000 token cap per response, and returns it over JSON-RPC. Total latency: about twenty seconds for the full analysis, under a second for the lightweight screens.
603 lines. The rest is the product we already had.
The Twist: Multi-Model AI Routing
Most property MCP servers are single-model, which usually means no model at all. They return raw data and let the calling agent figure out what to do with it. ReadyPermit does something different: under the hood, the Geo AI copilot that powers the consumer product routes every query across four different models based on complexity, query type, and cost. That router lives in supabase/functions/geo-chat/_modelRouter.ts, and it's the second load-bearing piece of the story.
The decision tree is short. Queries with a complexity score above 70 — complex reasoning, multi-family analysis, feasibility studies, due diligence — go to Claude Sonnet 4 (claude-sonnet-4-20250514). Investment and deal analysis queries go to Claude regardless of complexity, because Claude's persona voice is the best fit for how investors think and talk. Mixed calculation-and-reasoning queries at standard complexity go to GPT-4o. Simple data lookups with complexity below 40 go to GPT-4o-mini because it's faster and cheaper. Conversational queries that don't need tools go to Gemini 2.0 Flash because Gemini's natural-language responses feel good in a chat UI.
The router also implements prompt caching via cache_control: { type: 'ephemeral' } on Claude requests, which cuts the per-query cost of the system prompt dramatically once the cache is warm.
The framing for Anthropic is important: this is not "multi-model because we don't trust Claude." Claude Sonnet 4 sits at the top of the routing tree. It handles every query that involves real reasoning, every query where persona voice matters, every query where the answer matters enough that we're willing to pay the Claude premium. GPT and Gemini handle the edges — cheap lookups, conversational small talk, creative responses that don't need the top of the line.
For a consumer-facing MCP that serves homeowners, investors, developers, and lenders simultaneously, that kind of routing isn't a nice-to-have. It's how you stay in business.
The Persona Prompts: Why We Don't Ship Raw Data
Here is the single most important design decision in the entire MCP server.
ATTOM, Cotality, BatchData, and every other property data vendor expose raw data. Zone code. Lot size. Setbacks. FAR. Flood zone designation. Parcel number. A good agent can take raw data and generate an answer, but only if the agent already knows how to think about property. Most agents don't. Most users asking property questions don't either.
ReadyPermit exposes opinionated intelligence.
The investor_analysis prompt isn't a tool. It's a template that wraps a tool call in a specific reasoning flow: run the Buildability analysis, interpret the score in the context of the investor's question, pull in cap rate estimates and value-add opportunities, surface the risk flags that could kill the deal, deliver a go/no-go recommendation with specific next actions. When an investor agent calls ReadyPermit through this prompt, it doesn't get data. It gets a framing. The output shape changes. The emphasis changes. The voice changes.
Same data, four prompts, four personas:
investor_analysisemphasizes deal economics, cap rate, comps, and go/no-go recommendationsdeveloper_feasibilityemphasizes FAR, entitlement path, permit timeline, and cost rangeshomeowner_guideemphasizes plain English, ADU eligibility, and permit stepslender_risk_assessmentemphasizes collateral grade, zoning conformance, and flood insurance implications
And the analyze_property tool takes an optional persona parameter that accepts one of five values — investor, developer, homeowner, lender, or broker — so that agents can invoke the same tool for different audiences and get different output shapes. That single parameter was the highest-leverage design decision in the whole server. It let one tool behave like four without quadrupling the schema.
The key insight is that in the MCP world, tool design becomes prompt design. The description you write on a tool is the SEO that determines whether an agent picks your tool in the first place. The prompts you expose are what determine whether the agent can use the tool well. The vendors who treat MCP as "data API for LLMs" will lose to the vendors who treat MCP as "the interface layer where tools, prompts, and agent behavior meet."
Differentiation: Where ReadyPermit Sits
Here is the current landscape of MCP servers in the property intelligence space:
| Company | Who It's For | What It Ships | MCP Status |
|---|---|---|---|
| ATTOM Data | Enterprise lenders | Raw property data APIs | Large-scale MCP (Jan 2026) |
| Cotality (CoreLogic) | Insurance, institutional | Data feeds + valuations | No public MCP |
| Yardi Virtuoso | Property managers | Vertical SaaS + AI | No public MCP |
| BatchData | SMB investors | Skip tracing + lists | No public MCP |
| Prophetic | Developers | ZoneAI + SiteAI | Non-MCP |
| ReadyPermit | Consumers + SMB + dev + lender | Persona-aware intelligence | Live MCP — 7 tools, 4 prompts |
The row that matters is the bottom one, and what matters is the combination. ReadyPermit's wedge rests on four pillars:
-
Consumer product plus MCP plus content network. ATTOM has a data feed and an MCP. It doesn't have a consumer product, a content network, or an
llms.txt. We have all four, and the MCP reuses the same infrastructure. -
Persona-aware prompts, not raw data. Every other property data MCP returns zone codes and FAR. ReadyPermit returns go/no-go recommendations shaped to the user.
-
Multi-model routing under the hood. Most property MCPs are data-only and don't need a model. ReadyPermit routes to Claude Sonnet 4 for queries that matter, GPT-4o for mixed workloads, Gemini for conversational edges.
-
$29 consumer pricing. ATTOM, Cotality, and Yardi all run enterprise sales cycles. ReadyPermit is $29 per report with a free first report. That lets us serve the 40 million SMB investors, homeowners, and small developers that enterprise data vendors can't afford to court.
The property data market has had one distribution channel for thirty years: enterprise sales. MCP just added a second.
Results: What's Live
The MCP endpoint is live at https://rnfonkwthefktfvfwypr.supabase.co/functions/v1/mcp-server. The discovery manifest is published at https://readypermit.ai/.well-known/mcp.json and https://readypermit.ai/server.json. All seven tools are discoverable via tools/list without authentication. All four prompts are discoverable via prompts/list. The server is compatible with Claude Desktop, Cursor, Claude Code, and any MCP-compatible agent that speaks JSON-RPC 2.0 over Streamable HTTP. A free tier is available at readypermit.ai/api — ten calls per month, no credit card required.
The platform covers all 50 U.S. states and 3,100+ counties.
Three real customers on what the product does:
"I spent weeks calling the planning department and getting conflicting answers. ReadyPermit showed me in 2 minutes that my backyard qualifies for an 800 SF ADU. We broke ground last month." — Marcus Webb, homeowner, Sacramento CA
"I almost bought a duplex-zoned lot that ReadyPermit flagged as having a pending overlay restriction. Saved me $180K and a nightmare. This is the cheat code for small investors." — Danielle Okafor, Independent Real Estate Investor, Atlanta GA
"Caught a stormwater easement the seller never disclosed. Renegotiated $85K off the price." — Rachel Lindgren, VP of Acquisitions, Charlotte NC
Every one of those outcomes was a consultant engagement six months ago. Now they're an API call.
Five Things We Learned
If you're a founder or a two-person team building your own MCP server, these are the five things we'd tell you we wish we had known on day one.
1. MCP is a thin adapter on top of a real product. You don't build an MCP server. You expose one. ReadyPermit's MCP server is 603 lines because the underlying report pipeline, data aggregation, AI router, and persona-aware prompts already existed. If you don't have a product yet, you don't have an MCP yet. Build the thing that returns the answer first. Then wrap it.
2. Opinionated tools beat raw data tools. Agents pick tools by description, not by schema. Every tool description in our server starts with an explicit USE WHEN: clause that lists the natural-language phrases our customers actually say. Tool descriptions are the new SEO. Write them with trigger phrases, output shape hints, and the exact questions users ask in the wild.
3. Persona is an input, not a side effect. Adding a single optional persona parameter to analyze_property was the highest-leverage schema decision in the entire server. It let one tool behave like four without quadrupling the API surface.
4. Route models by query, not by vendor loyalty. Use Claude Sonnet 4 for the queries where voice and reasoning matter. Use cheaper models for the rest. If you pick one model for everything, you're either overpaying or under-serving.
5. Safety annotations are a free quality signal. readOnlyHint, destructiveHint, idempotentHint, and openWorldHint — all four on every tool. MCP clients use these to decide whether to auto-approve calls. Registries use them to rank listings. They take ten minutes to add and they are not optional.
The Road Ahead
OAuth 2.0 is next. ReadyPermit currently authenticates with API keys, which works for the community MCP Registry but is not the Anthropic Claude Directory's preferred auth method. We're implementing OAuth 2.0 authorization and token endpoints so we can pass the Directory's quality bar on the next submission cycle.
Beyond auth, the tool surface is expanding. Permit history. Title history lookups. Municipal code search. Entitlement timelines. CC&R and HOA lookups. More commercial data partnerships and more upstream government sources as we expand our ingestion pipeline.
The long-term bet is that property intelligence becomes an agent capability, not a dashboard. When a homeowner asks Claude about their backyard, when a developer asks Cursor about a site, when a lender asks any AI assistant about a collateral property — the answer should come from ReadyPermit, through MCP, without the user ever visiting a website. The dashboard is the fallback. The MCP is the front door.
Try It. Connect It. Partner With Us.
For builders. Add ReadyPermit to Claude Desktop in sixty seconds: paste the mcp-remote snippet from MCP_README.md into your claude_desktop_config.json, grab a free API key at readypermit.ai/api, and start calling seven tools against any U.S. address.
For press and partners. Contact: team@readypermit.ai. Founder quotes, expanded stats, roadmap detail, test credentials, and exclusive angles available on request. The ReadyPermit story is about a father-son team, MCP as a new distribution primitive, and consumer-facing property intelligence. Pick whichever thread fits your beat.
For Anthropic. We're submitting ReadyPermit to the Claude Directory. We would love to be a featured case study for persona-aware MCP servers and a reference implementation for consumer-facing property intelligence. Landon B. Reid, founder — landon@readypermit.ai.
Marcus Webb found his answer in two minutes. Every agent that calls ReadyPermit's MCP gives the next homeowner, investor, and developer the same speed. That's what we built. That's why it matters.
Was this helpful?
What consultants charge $3,500+ for
Get Your Buildability™ Report in 20 Seconds
Zoning, risk, environmental analysis, and Buildability™ Score for any U.S. property. First report free.
Check My Property FreeNo signup required · 20+ government sources · 14-day guarantee
Keep reading
Why We Built Property Intelligence MCP Tools With Persona-Aware Prompts (And Why ATTOM Won't)
Tool descriptions are the new SEO. Persona is an input, not a side effect. Here's how a 2-person team shipped a persona-aware MCP server in 16 days — and why enterprise data vendors are structurally unable to copy it.
ADUCan I Build an ADU? How to Check in Under 20 Seconds
The fastest way to find out if your property qualifies for an accessory dwelling unit — without calling the county.