Home · MCP API

Live v0.1.0 MCP-compatible 7 tools

LandlordIQ — Agent & MCP integration guide

A read-only rental-intelligence API built for AI agents. Wire it into Claude Desktop, Cursor, or any MCP client in two minutes, then call seven tools that return data, a confidence score, and a freshness stamp on every response.

Quick start

The fastest path is a raw HTTP call. No key is required on the free tier (60 requests/hour/IP). Every endpoint is a GET with query parameters.

Every response uses the same envelope, so an agent can branch on confidence and freshness without per-tool parsing:

{
  "data": { "...": "tool-specific fields" },
  "confidence_score": 90,
  "data_freshness": "2024-10-15T14:23:11.000Z",
  "data_source": "HUD FMR FY2024 (public) + BLS CPI Shelter trend",
  "error": null
}

Connect an MCP client

LandlordIQ exposes a tool-discovery manifest at /manifest.json. An MCP client reads it once, then knows every tool, its parameters, and its auth requirements. Below are drop-in configs for the most common clients. Swap YOUR_API_KEY only if you have a paid key — the free tier needs none.

Claude Desktop

Add this to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/). It uses an HTTP-to-MCP bridge so Claude can call the REST tools directly.

Cursor

Add to .cursor/mcp.json in your project root (or the global Cursor MCP settings).

Generic MCP client

Any MCP-aware runtime can point at the manifest URL. Discovery and auth follow the standard tool-manifest convention.

No bridge installed? Any agent that can make HTTP requests (LangChain, the OpenAI/Anthropic tool-calling APIs, a cron job, a spreadsheet script) can call the same endpoints directly — see the playbooks.

Authentication & rate limits

  • Free tier: 60 requests / hour / IP. No key required.
  • Paid tier: 10,000 requests / day per X-API-Key header. Email api@rentalanalytics.com to provision a key.

Every response sets X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and X-RateLimit-Tier headers. CORS is enabled, so browser-based agents work too.

Reading confidence & freshness

Every tool returns a confidence_score from 0–100 and a data_freshness timestamp. Agents should treat these as first-class inputs, not decoration. Use the bands below to decide whether to act, hedge, or ask a human.

72–92 · High

Direct HUD anchor or curated dataset match. Safe to use for screening and ballpark underwriting. Still confirm against live comps before a binding price.

50–71 · Moderate

Estimated blend (vacancy, growth, cap-rate bands). Directionally useful; widen your margin of safety and label outputs as estimates.

1–49 · Low

National fallback or extrapolation (ZIP not in sample, 5+ BR, uncovered metro). Treat as a placeholder and prompt for a human check.

Recommended agent rule: if confidence_score < 50, do not present a single number as fact — present a range and flag it as extrapolated. The data_freshness field is the as-of date of the underlying source, not the request time; HUD anchors are FY2024 and aged forward with a labeled CPI trend.

Tool catalog

Seven tools. get_landlord_market_summary is the preferred one-call rollup; the others are focused lookups. Expand each for parameters, response fields, and confidence behavior.

GETget_landlord_market_summary — one-call rollup (start here)

Single call that returns rent by bedroom, vacancy, YoY growth, cap-rate band, and a regulation snapshot for a ZIP. Cheapest way for an agent to brief itself on a market.

ParamTypeRequiredNotes
zip_codestring (5-digit)yesU.S. ZIP

Returns: rent_by_bedroom, vacancy_rate, yoy_growth, cap_rate_band, regulation_snapshot, metro, metro_tier. Confidence is the lowest of its component tools so a single low input pulls the rollup down.

GETget_market_rent — HUD-anchored rent estimate

Market rent for a ZIP, bedroom count, and property type.

ParamTypeRequiredDefault
zip_codestring (5-digit)yes
bedroomsint (0–8)no2
property_typeapartment · single_family · townhouse · condo · duplex_unitnoapartment

Returns: median_rent, low, high, percentile_in_metro, comparable_count, city, state, metro, fallback. Confidence 72–92 on a direct ZIP match; ~38 on national fallback (fallback: true).

GETget_vacancy_rate — metro vacancy

Metro-level rental vacancy for a U.S. city, with an optional property-type adjustment.

ParamTypeRequired
citystringyes
statestring (2-letter)yes
property_typestringno

Returns: vacancy_rate, metro, as_of. Estimated blend — moderate confidence (50–71).

GETget_rent_growth — YoY + forward projection

Year-over-year rent growth and a 12-month forward projection for a metro.

ParamTypeRequired
metroslug or name (e.g. "austin-tx")yes
timeframeyoy · 12mo_projection · cagrno

Returns: yoy_pct, projection_12mo_pct, metro, method. Moderate confidence; projection blends recent trend with BLS shelter CPI.

GETget_cap_rate_benchmark — metro cap-rate band

Typical cap-rate band for a metro tier and property type.

ParamTypeRequired
zip_codestringno (defaults to Tier 2)
property_typesingle_family · small_multifamily_2_4 · multifamily_5_plus · condono

Returns: tier, low, mid, high, property_type. Estimated from CBRE survey ranges + NCREIF tiers — moderate confidence.

GETget_lease_renewal_recommendation — renewal rent + retention risk

Compares current rent to market and recommends a renewal rent plus a retention-risk tier.

ParamTypeRequired
current_rentnumberyes
zip_codestringyes
bedroomsintno

Returns: recommended_rent, gap_to_market_pct, retention_risk (low/moderate/high), rationale. Confidence inherits from the underlying rent estimate.

GETget_regulations — landlord-tenant summary

Plain-English landlord-tenant regulation summary for a covered city (top 20 U.S. cities).

ParamTypeRequired
citystringyes
statestring (2-letter)yes

Returns: rent_control, late_fee_cap_pct, security_deposit_max, notice_to_vacate_days, just_cause_eviction, notes, reviewed_on. Editorial summary, not legal advice — agents should surface the disclaimer with any regulation output.

Prompt recipes

Paste these into Claude, ChatGPT, or Perplexity once the MCP server is connected. They are written so the model knows which tool to call and how to read confidence.

Landlord — should I renew at this rent?

get_lease_renewal_recommendationget_market_rent

Investor — does this deal clear my hurdle?

get_landlord_market_summaryget_cap_rate_benchmark

Property manager — brief me on a new market

get_landlord_market_summaryget_regulations

Chained workflow

A typical underwriting agent chains several tools, gating each step on confidence. Example: from a ZIP to a renewal decision and a written summary.

  1. Call get_landlord_market_summary?zip_code=78704 to pull rent, vacancy, growth, cap-rate band, and regulations in one shot.
  2. If cap_rate_band confidence is moderate or better, call get_cap_rate_benchmark for the specific property type to benchmark the deal's underwritten cap rate.
  3. For an existing tenant, call get_lease_renewal_recommendation?current_rent=...&zip_code=78704 to get a renewal rent and retention-risk read.
  4. Compose a summary citing each data_source and data_freshness; flag any field with confidence < 50 as estimated and recommend a human confirm against live comps.

Error handling

Any failure returns HTTP 400/429 with the same envelope: data: null, confidence_score: 0, and a human-readable error string. Agents should read error and either retry with corrected params or report the problem — never fabricate a value.

{
  "data": null,
  "confidence_score": 0,
  "data_freshness": "2024-10-15T14:23:11.000Z",
  "data_source": "HUD FMR FY2024 (public)",
  "error": "zip_code must be a 5-digit U.S. ZIP"
}
  • 400 — bad or missing parameters. Read error, fix params, retry once.
  • 429 — rate limited. Back off until X-RateLimit-Reset, or provision a key.
  • fallback: true (in data) — the ZIP was not in the sample; the number is a national extrapolation. Confidence will be low; present a range, not a point.

Run locally

$ cd server && npm install
$ PORT=8787 LANDLORDIQ_API_KEYS=demo-key-001 npm start
LandlordIQ listening on http://0.0.0.0:8787

# Discover tools
$ curl http://localhost:8787/manifest.json
# Read the OpenAPI spec
$ curl http://localhost:8787/openapi.json

Data & license

The API is free-tier. Data sources retain their original licenses: HUD, BLS, and U.S. Census are public-domain; CBRE / ApartmentList / Zillow figures are blended estimates, not republished verbatim. Regulation summaries are editorial and not legal advice. User-count figures shown elsewhere on the site are simulated for demonstration and labeled as such.