ChatHome Protected Agent API

Authenticated endpoint returning full property estimate reports, using the same contract and AI quota as the authenticated MCP get_price_estimate tool; accepts an X-API-Key header or the ChatHome MCP OAuth bearer token (market:read scope).

GitHub OpenAPI

Operations 1

POST /api/agent/v1/estimates Full estimate report with optional property facts and public qualifications #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chathome-lu:protected-agent-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

chathome-lu-agent-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ChatHome protected Agent API
  version: 1.0.0
  description: Full property estimate reports using the same contract and AI quota as authenticated MCP get_price_estimate. No profile or caller owner ID is accepted. Anonymous numeric estimates and other public reads are documented at /openapi.json.
servers:
- url: https://chathome.lu
security:
- apiKey: []
- bearer: []
tags:
- name: Agent
paths:
  /api/agent/v1/estimates:
    post:
      operationId: getPropertyEstimateReport
      summary: Full estimate report with optional property facts and public qualifications
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: https://json-schema.org/draft/2020-12/schema
              type: object
              properties:
                commune:
                  type: string
                  minLength: 1
                  maxLength: 150
                  pattern: ^[^\u0000-\u001f\u007f]+$
                propertyType:
                  type: string
                  enum:
                  - apartment
                  - house
                  - studio
                  - land
                listingType:
                  type: string
                  enum:
                  - rent
                  - sale
                areaSqm:
                  type: number
                  minimum: 1
                  maximum: 10000
                  description: Living area for homes; plot area for land, in m². For land, an explicitly supplied landAreaSqm takes precedence.
                locale:
                  description: 'Response locale: en, fr, de, lu (Luxembourgish), pt (default: en; ''lb'' is a deprecated alias for ''lu'')'
                  type: string
                  enum:
                  - en
                  - fr
                  - de
                  - lu
                  - pt
                  - lb
                bedrooms:
                  type: integer
                  minimum: 0
                  maximum: 50
                bathrooms:
                  type: integer
                  minimum: 0
                  maximum: 50
                rooms:
                  type: integer
                  minimum: 0
                  maximum: 100
                landAreaSqm:
                  type: number
                  minimum: 1
                  maximum: 100000
                outdoorAreaSqm:
                  type: number
                  minimum: 0
                  maximum: 100000
                floor:
                  type: integer
                  minimum: -10
                  maximum: 100
                totalFloors:
                  type: integer
                  minimum: 1
                  maximum: 100
                constructionYear:
                  type: integer
                  minimum: 1700
                  maximum: 9007199254740991
                renovationYear:
                  type: integer
                  minimum: 1700
                  maximum: 9007199254740991
                energyClass:
                  type: string
                  enum:
                  - A+
                  - A
                  - B
                  - C
                  - D
                  - E
                  - F
                  - G
                  - H
                  - I
                buildingCondition:
                  type: string
                  minLength: 1
                  maxLength: 150
                  pattern: ^[^\u0000-\u001f\u007f]+$
                renovationMajorNeeded:
                  type: boolean
                hasGarage:
                  type: boolean
                hasParking:
                  type: boolean
                hasGarden:
                  type: boolean
                hasTerrace:
                  type: boolean
                hasBalcony:
                  type: boolean
                hasPool:
                  type: boolean
                hasCellar:
                  type: boolean
                hasLift:
                  type: boolean
                indoorParkingAvailable:
                  type: boolean
                isFurnished:
                  type: boolean
                parkingCount:
                  type: integer
                  minimum: 0
                  maximum: 100
                glazing:
                  type: string
                  enum:
                  - single
                  - double
                  - triple
                district:
                  type: string
                  minLength: 1
                  maxLength: 150
                  pattern: ^[^\u0000-\u001f\u007f]+$
                street:
                  type: string
                  minLength: 1
                  maxLength: 150
                  pattern: ^[^\u0000-\u001f\u007f]+$
                heating:
                  type: string
                  minLength: 1
                  maxLength: 150
                  pattern: ^[^\u0000-\u001f\u007f]+$
              required:
              - commune
              - propertyType
              - listingType
              - areaSqm
              additionalProperties: false
      responses:
        '200':
          description: Estimate report
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  schemaVersion:
                    type: string
                    const: property-estimate.v1
                  status:
                    type: string
                    const: available
                  mode:
                    type: string
                    const: report
                  propertyType:
                    type: string
                  listingType:
                    type: string
                    enum:
                    - rent
                    - sale
                  commune:
                    type: string
                  areaSqm:
                    type: number
                  areaUnit:
                    type: string
                    const: m2
                  currency:
                    type: string
                    const: EUR
                  priceUnit:
                    type: string
                    enum:
                    - EUR
                    - EUR/month
                  pricePerSqmUnit:
                    type: string
                    enum:
                    - EUR/m2
                    - EUR/m2/month
                  estimatedPrice:
                    type: number
                  priceRangeLow:
                    type: number
                  priceRangeHigh:
                    type: number
                  estimatedPricePerSqm:
                    type:
                    - number
                    - 'null'
                  confidence:
                    type: string
                    enum:
                    - low
                    - medium
                    - high
                  valuationBasis:
                    type: string
                    enum:
                    - commune_average
                    - model_estimate
                    - market_reference
                    - not_disclosed
                  priceBasis:
                    type: string
                    const: asking_prices_not_completed_sales
                  limitations:
                    type: string
                  locationPrecision:
                    type: string
                  locationResolution:
                    type: object
                    properties: {}
                    additionalProperties: {}
                  roughEstimate:
                    type: boolean
                  usedModelPrice:
                    type: boolean
                  communeAverageAdverts:
                    type: number
                  sampleSize:
                    type:
                    - number
                    - 'null'
                  priceRangeCoverage:
                    type: number
                  priceRangeWideLow:
                    type: number
                  priceRangeWideHigh:
                    type: number
                  priceRangeWideCoverage:
                    type: number
                  assumptions:
                    type: array
                    items:
                      type: object
                      properties: {}
                      additionalProperties: {}
                  drivers:
                    type: array
                    items:
                      type: object
                      properties: {}
                      additionalProperties: {}
                  clarificationQuestions:
                    type: array
                    items:
                      type: object
                      properties: {}
                      additionalProperties: {}
                  transactionAnchor:
                    type: object
                    properties: {}
                    additionalProperties: {}
                  sourceObservedAt:
                    type:
                    - string
                    - 'null'
                  calculatedAt:
                    type:
                    - string
                    - 'null'
                  trust:
                    type: object
                    properties:
                      generatedAt:
                        type: string
                      sources:
                        type: array
                        items:
                          type: string
                      confidence:
                        type: string
                        enum:
                        - low
                        - medium
                        - high
                        - unknown
                      freshness:
                        type: string
                        enum:
                        - fresh
                        - recent
                        - stale
                        - unknown
                      fallback:
                        type: boolean
                      missingFields:
                        type: array
                        items:
                          type: string
                    required:
                    - sources
                    - confidence
                    - freshness
                    additionalProperties: {}
                required:
                - schemaVersion
                - status
                - mode
                - propertyType
                - listingType
                - commune
                - areaSqm
                - areaUnit
                - currency
                - priceUnit
                - pricePerSqmUnit
                - valuationBasis
                - priceBasis
                - limitations
                - locationResolution
                - sourceObservedAt
                - calculatedAt
                - trust
                additionalProperties: {}
        '400':
          description: Invalid inputs
        '401':
          description: Authentication required
        '403':
          description: market:read scope required
        '422':
          description: Outside model coverage
        '429':
          description: Shared MCP AI quota exhausted
        '503':
          description: Model unavailable
      tags:
      - Agent
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
    bearer:
      type: http
      scheme: bearer
      description: Use the ChatHome MCP OAuth token, bound to /api/mcp, with market:read scope.