# Real Estate Workspace

User-facing real estate tools use `/api/real-estate/*`. Discover route availability at `/api/ai/tools`; each endpoint retains its own session, API-key scope, organization-role, ownership, CSRF, and validation checks.

## Listings and properties
- `GET /api/real-estate/listings` searches published listings with supported filters.
- `GET /api/real-estate/listings/{id}` reads one listing.
- `POST /api/real-estate/listings` creates a listing for the signed-in user's own property or permitted organization.
- `PATCH|DELETE /api/real-estate/listings/{id}` updates or removes only a listing the caller may manage.
- `GET /api/real-estate/properties?mine=true` lists the caller's manageable properties; unknown filters are rejected.
- `GET /api/real-estate/organizations` shows organizations accessible to the caller.
- Listing media routes accept only private-media references owned by the current account; use the existing upload flow before attaching media.

## Buyer and analysis tools
- `POST /api/real-estate/inquiries` sends a contact inquiry. This is an external communication and always needs explicit confirmation.
- `GET /api/real-estate/inquiries/mine` lists the caller's inquiries.
- `GET /api/real-estate/favorites` lists favorites. `POST` saves or removes one using `{listingId, action: "save"|"remove"}`.
- Saved searches: GET/POST/DELETE `/api/real-estate/saved-searches`.
- Underwriting scenarios: GET/POST/DELETE `/api/real-estate/scenarios`. Inputs are bounded and calculations are deterministic; inspect the route schema before submitting.
- `POST /api/real-estate/reports` requests a report; confirm before any billable or externally delivered report.
- Viewings: GET/POST `/api/real-estate/viewings`, and PATCH `/api/real-estate/viewings/{id}`. Scheduling contacts another person, so require confirmation.

Never represent estimates as appraisals, legal advice, lender offers, or verified market facts. The route response is the source of truth. Do not invoke `/api/mod/real-estate` or any moderation route.
