Booli Mcp

io.github.chrischallPublished by GitHub account chrischallv2.2.0Updated Nov 7, 2026

Booli.se real estate for Claude: search listings, sold prices, areas & market stats

VerifiedSTDIODesktop onlyLocation & LifestyleData & Analytics

Overview

AI-generated overview

Read-only MCP server for the Swedish property portal Booli: search for-sale and sold listings, resolve areas, and compute market statistics.

What you can do
  • Resolve place names to Booli area ids for municipalities, districts and streets
  • Search active for-sale listings by area or free text, filtered by price, rooms, living area, plot, object type and construction year
  • Fetch full details for a single property by residence id, for active or sold homes
  • Search sold properties (slutpriser) with final price and over/under-asking percentage, filtered by sold price, date, rooms, area and type
  • Compute aggregate sold-price statistics for an area: median and average final price, price per square metre, average over/under-asking
  • Run a healthcheck that reports which data path served the probe and the state of the browser bridge
When to use it
Useful when you want an assistant to research the Swedish housing market: comparing asking prices with sold comparables, valuing a home, or summarising price trends for a municipality or district. It is aimed at Booli.se data only, with amounts in SEK and areas in square metres.
Requirements
Runs locally via npx from the npm package @chrischall/booli-mcp (Node.js). Booli blocks server-side clients, so the default path needs the ContextMint Bridge browser extension installed in Chrome, a signed-in www.booli.se tab kept open, and a one-time pairing approval. No Booli login is required. Optional environment variables: BOOLI_TRANSPORT, BOOLI_WS_PORT, FETCHPROXY_IDENTITY_DIR, FETCHPROXY_WS_HOST.
Before you install
Queries are routed through your own signed-in booli.se browser tab, reusing your Cloudflare-cleared session, so traffic goes through that browser extension; the README advises checking a release zip against its published checksum. The bridge stores a long-term identity keypair on disk (FETCHPROXY_IDENTITY_DIR). The README states it was developed by AI and to use it at your own discretion and within booli.se's terms of use. All tools are read-only.

Installation

In SourceWeft

  1. Open Booli Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

booli-mcp

An MCP server for Booli, the Swedish property portal — search active for-sale listings, sold prices (slutpriser), resolve areas, and compute market statistics, all from Claude.

Developed and maintained by AI (Claude Code). Use at your own discretion and within booli.se's terms of use.

How it works

Booli fronts www.booli.se — including its GraphQL API — with a Cloudflare bot wall that blocks server-side clients. booli-mcp therefore reads Booli's consumer GraphQL API by routing each query through your own signed-in www.booli.se browser tab via the fetchproxy bridge (the ContextMint Bridge browser extension), reusing your Cloudflare-cleared session. No Booli login is required — just a normal page view. All tools are read-only.

BOOLI_TRANSPORT selects the path: auto (default — direct fetch first, browser-bridge fallback when walled), fetchproxy (always the bridge), or direct. The fetchproxy fleet shares WS port 37149 (BOOLI_WS_PORT).

Setup

  1. Install ContextMint Bridge from its releases page — Chrome: download the chrome zip, unzip it, and load it unpacked at chrome://extensions (Developer mode). Safari isn't available yet (it will ship inside the ContextMint app, which has no public download), so use Chrome for now. Keep a www.booli.se tab open.

    ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).

  2. On the first request, approve the one-time pairing prompt in ContextMint Bridge.

  3. Run booli_healthcheck to confirm the path is working. Its transport field says which leg served the probe (direct or fetchproxy) and, once the bridge exists, bridge.session_state says whether the extension is linked, pair_pending (approve the pair code it names), or extension_disconnected.

Install

jsonc
// mcp config{  "mcpServers": {    "booli": {      "command": "npx",      "args": ["-y", "@chrischall/booli-mcp"]    }  }}

Tools

ToolWhat it does
booli_search_areasResolve a place name to Booli area ids
booli_search_listingsSearch active for-sale listings by area + filters
booli_get_listingFull detail for one property (active or sold) by residence id
booli_search_soldSearch sold listings (slutpriser) with final prices
booli_market_statsMedian/average sold-price statistics for an area
booli_healthcheckProbe the data path and report transport (direct / fetchproxy, the BOOLI_TRANSPORT mode) and, once the bridge is up, bridge (role, port, extension link session_state, pending pair code) with a next-step hint

Searches scope by area_id (from booli_search_areas) or a free-text location. Money is SEK, areas m². See docs/BOOLI-API.md for the underlying GraphQL API.

Development

npm installnpm test          # vitest, no networknpm run build     # tsc + esbuild bundle

License

MIT

Source: README.md at commit e7ea253

Tools

6

booli_search_areas

Resolve a Booli area

Resolve a place name to Booli areas — municipalities, districts, streets — each with its `area_id` to pass as `area_id` into booli_search_listings / booli_search_sold. Read-only.

Parameterslimitqueryrequired

booli_search_listings

Search Booli for-sale listings

Search active for-sale property listings on booli.se. Scope by `area_id` (from booli_search_areas) or a free-text `location`, and filter by price, rooms, living area, plot, object type, construction year. Paginated by `page`; check `total_count`/`pages`. Read-only.

Parameterspagesortviewarea_idlocationascendingmax_roomsmin_roomsobject_typemax_plot_areamin_plot_areamax_list_price+8 more

booli_get_listing

Get a Booli property

Full detail for one property by its Booli residence id — the number in a booli.se/bostad/<id> URL, or the `residence_id` from a search result. Works for both active and sold properties. Read-only.

Parametersviewresidence_idrequired

booli_search_sold

Search Booli sold listings (slutpriser)

Search sold properties (slutpriser) on booli.se with the achieved final price and over/under-asking % — the comparables for valuation. Scope by `area_id` or free-text `location`, filter by sold price, sold date, rooms, area, object type. Paginated by `page`. Read-only.

Parameterspagesortviewarea_idlocationascendingmax_roomsmin_roomsobject_typemax_plot_areamax_sold_datemin_plot_area+10 more

booli_market_stats

Booli sold-price market statistics

Aggregate sold-price statistics (median/average final price, price per m², average over/under-asking %) for an area on booli.se. Takes the same scope and filters as booli_search_sold, computed over ONE page of sold results (most recent first by default) — `page`/`pages` say which, and `total_count` is the whole matching set, not the sample. `sample_size` is the rows on the page; `sold_price_count` / `price_per_sqm_count` / `price_change_count` are the rows that fed each metric. Check them before trusting a thin median. Read-only.

Parameterspagesortviewarea_idlocationascendingmax_roomsmin_roomsobject_typemax_plot_areamax_sold_datemin_plot_area+10 more

booli_healthcheck

Verify the ContextMint Bridge connection end-to-end

Round-trips a small public www.booli.se URL (/graphql) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real www.booli.se-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.

Takes no parameters.

Version history

15
  1. v2.2.0LatestNov 4, 2026
  2. v2.1.11Oct 20, 2026
  3. v2.1.10Oct 17, 2026
  4. v2.1.9Oct 16, 2026
  5. v2.1.8Oct 10, 2026
  6. v2.1.7Oct 7, 2026
  7. v2.1.6Oct 5, 2026
  8. v2.1.5Oct 3, 2026
  9. v2.1.4Sep 28, 2026
  10. v2.1.3Sep 23, 2026
  11. v2.1.2Sep 23, 2026
  12. v2.1.1Sep 21, 2026
  13. v2.1.0Sep 20, 2026
  14. v2.0.0Sep 17, 2026
  15. v1.3.3Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts