Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Design & media
Tmp.Vb01j6Bvtm
Try itFind, inspect, compare, and resolve Compass listings, photos, prices, addresses, and property records.
What it does
Query Compass listings by location and property filters, then retrieve details, photos, price history, nearby rentals, and agent listings. Resolve street addresses and compare up to 25 properties side by side, with errors reported for individual targets. Network tools use a signed-in Chrome tab through the fetchproxy extension, and setup requires compass-mcp and fetchproxy.
When to use it
- Search for-sale homes by area, budget, beds, baths, or home type
- Review a property’s details, photos, price history, or comparable rentals
- Resolve a free-text address to a canonical Compass listing
- Compare up to 25 properties or estimate mortgage affordability
The skill document
compass-mcp
MCP server for Compass — natural-language access to listings, property records, photos, price history, and address resolution. Routes every request through your signed-in compass.com tab via the fetchproxy browser extension, so AWS WAF sees a real browser session instead of a Node process.
⚠️ Compass does not publish a public consumer API. Unlike portals with a JSON API surface, compass.com is a server-rendered React app — there are no
/api/...data endpoints to call. Every tool extracts state from the inline scripts each page server-renders (global.uc.sharedReactAppProps.initialResultsfor search,window.__INITIAL_DATA__.props.listingRelation.listingfor homedetails). Requests are dispatched through your own signed-in browser tab via the fetchproxy extension. Use at your own discretion.
Setup
1. Install compass-mcp
.mcp.json (project) or ~/.claude/mcp.json (global):
{
"mcpServers": {
"compass": {
"command": "npx",
"args": ["-y", "compass-mcp"]
}
}
}
2. Install the fetchproxy extension (one-time, shared across all fetchproxy-based MCPs)
git clone https://github.com/chrischall/fetchproxy
cd fetchproxy
npm ci
npm --workspace=@fetchproxy/extension-chrome run build
Then in Chrome: chrome://extensions → Developer mode → Load unpacked → pick packages/extension-chrome/dist/.
3. Open compass.com and sign in.
That's it. No API keys, no env vars.
Tools
Listing data (public)
compass_search_properties— Search by location + filters (price band, beds/baths min, home type). Slugifies free-text into Compass's/homes-for-sale///URL routing and extracts the SSR listings array. Returns matching listings with price, beds/baths, sqft, address, and the Compass home URL.compass_get_property— Full record byurl(a Compass homedetails URL or path) orlisting_id_shaalone. When only the sha is supplied, the tool resolves the canonical path internally via the WAF-immune omnisuggest typeahead, then fetches the/homedetails//_lid/page. Returns address, neighborhood, beds/baths, sqft, lot size, price + $/sqft, monthly charges, MLS status, amenities, schools, parcel number, listing agent, andextracted_featuresparsed from the description.compass_get_property_photos— Full photo gallery fromlisting.media[]— original + thumbnail URLs and pixel dimensions. Floorplans/other media gated behindinclude_all_categories.compass_get_price_history— Listing-history events (Listed / Sold / Pending / Price Change / Delisted) with date, price, status, MLS attribution. Returns both this-listing and prior-listing aggregates.compass_get_comparable_rentals— Nearby rental listings for a property: lifts the target's city/state/zip, then searches rentals in the same locality. Returnsrentals: [](with target context) when none come back.compass_get_agent_listings— Other listings by the same agent, from/agents//(active by default; closed deals viainclude_closed).
Resolution & batch
compass_get_by_address— Resolve a free-text street address to the canonical Compass URL,listing_id_sha, andpid. Walks the structured typeahead first (WAF-immune), then SSR fallbacks; verifies each candidate against the query before accepting. Returns{ resolved: false, error }rather than leaking a wrong URL.compass_resolve_addresses— Bulk version ofget_by_address— concurrent server-side resolution of many addresses in one round trip, sharing the same rung walker and per-row error contract.compass_bulk_get— Unbounded structured fetch (up to 200 targets) byurlorlisting_id_sha. One row per target; per-target errors captured per-row. No summary table.compass_compare_properties— Fetch and align up to 25 properties side-by-side. Per-target errors captured per-row; an opt-in pivoted summary table viainclude_summary.
Local math (no network)
compass_calculate_mortgage— PITI calculator. Provide home price, interest rate, optional down payment / taxes / insurance / HOA / PMI; returns a full monthly breakdown + total interest over the term.compass_calculate_affordability— Max purchase price under the 28/36 DTI rule from income, debts, down payment, and rates.
Diagnostics & session
compass_healthcheck— Round-trips a no-op request (/robots.txt) through the full bridge to confirm the WebSocket bridge is up, the extension is connected, and the signed-in tab is responsive — in one call.compass_get_session_context— Lists every registered session and the active one.compass_set_active_session— Flips which registered session answers future requests.
Not yet supported
compass_get_saved_homes/compass_get_saved_searches— Compass renders/overview/favoritesand saved searches via an auth-scoped GraphQL endpoint that isn't reachable from a one-shot fetch. Both throw a clear "not yet supported" error today.
Trigger examples
- "Find me 2-bedroom condos under $1.5M in Brooklyn on Compass" →
compass_search_properties - "What does Compass say about 42 Monroe St in Brooklyn?" →
compass_get_by_address→compass_get_property - "Show me the photos for that Compass listing" →
compass_get_property_photos - "Price history for this Compass home" →
compass_get_price_history - "Compare these three Compass listings" →
compass_compare_properties - "Monthly payment on a $500k home, 20% down, 6.5% rate" →
compass_calculate_mortgage
Gotchas
- Sign-in required. If the user isn't signed into compass.com in the bridged Chrome tab, network tools fail with
SessionNotAuthenticatedError. Local-math tools work either way. - AWS WAF challenge. Compass serves a WAF challenge to fresh sessions and 403s some SSR free-text paths. The address resolver routes through the WAF-immune omnisuggest typeahead to avoid it, and sha-only lookups use the WAF-immune
/listing//viewredirect; solving a challenge in the Chrome tab once unblocks the SSR pages. - No write surface. All tools are read-only — no saving homes/searches or submitting contact forms.
- No market-report / Zestimate-history tool. Compass doesn't expose region-level market data or a historical estimate series in its SSR blob, so there's no equivalent to a market-report tool.
- Saved homes/searches are stubs. See "Not yet supported" above.
Questions people ask
- What setup and account access are required?
- Install compass-mcp, build and load the fetchproxy Chrome extension, then open compass.com and sign in. No API key or environment variable is required.
- How many properties can be fetched or compared at once?
- Bulk fetching supports up to 200 targets, while property comparison supports up to 25 properties. Both operations return per-target errors without discarding successful rows.
- Can I save homes or searches from Compass?
- No. All tools are read-only, and saved homes and saved searches are not yet supported; those tools return a clear not-yet-supported error.
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Site audit, content writing, and competitor analysis for organic search rankings.
More from chrischall
Browse all skillsRead and write OurFamilyWizard messages, calendar events, expenses, and journal entries from your agent.
Search, book, and cancel Resy reservations, plus favorites and Priority Notify alerts.
Manage iOffice buildings, rooms, visitors, maintenance, moves, and mail through natural-language commands.
Pull Credit Karma transactions into a local SQLite database and query them by category, merchant, or account.
Generate and edit images, short videos, and music through Google Gemini models via MCP.
Look up concert setlists, tour histories, and live-show data on setlist.fm through natural-language MCP tools.