version: 1
name: Compass
slug: compass
summary: >-
  Compass real-estate access for Claude — search listings, fetch property
  details, market reports, saved homes
#
# Hosting note (a comment, not user-facing summary text): this is a
# BROWSER-BRIDGE MCP — it reaches its site through the user's signed-in
# tab via the fetchproxy bridge. A bridged registration also needs runtime
# `fly-shared`, `bridge: true` and a `bridgePortEnv`, which are registration
# fields this manifest has no schema for (set them over the control API).
# `state.dataDir` below is required for `bridge`.
env:
  - name: COMPASS_WS_PORT
    required: false
    help: >-
      Override the fetchproxy WebSocket port (default 37149).
  - name: COMPASS_COMMUNITIES_FILE
    required: false
    help: >-
      Path to a JSON file overriding the built-in community-name vocabulary
      (which is tuned to the Lake Lure / mountain-NC market). Used to recognise
      community names in listing prose.
state:
  dataDir: true
  reason: >-
    The fetchproxy identity lives at $HOME/.fetchproxy/identity/<name>.json
    and the pair code derives from it. Without a persistent $HOME every cold
    start mints a fresh identity and re-prompts pairing in the browser; the
    API refuses bridge without it.
egress:
  # Only hosts the SERVER process actually fetches. Hosts that appear
  # solely in a URL this server BUILDS and returns are excluded.
  #
  # This server has ONE mode, the browser bridge: every request goes
  # through CompassTransport.fetch -> @fetchproxy/server, and the
  # user's signed-in tab dials compass.com / www.compass.com. The
  # process itself opens only the loopback concentrator port, so those
  # hosts are NOT dials by the process and do not belong here. There is
  # no direct, bootstrap or anonymous mode. The `https://www.compass.com`
  # strings in src/ (by-address.ts, search.ts, photos.ts, ...) only
  # build URLs that are returned in tool results.
  allow: []
