HOUSINGFAX

Immediate home report for a building or flat in Spain: 22 checks from official public sources.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
95%
Calidad de los nombres
95%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~8,011Tokens (definiciones de herramientas)
~8.4 KBTamaño de respuesta típico
Impacto significativo en la atención (6.26% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mcp": {
      "url": "https://housingfax.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://housingfax.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (8)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢get_products(language)

Returns the three HOUSINGFAX report types for a home in Spain with prices in EUR, VAT included: Free report (€0), Essential report (€11 VAT included) and Complete report with building condition (€19 VAT included; upgrade from the essential one €8 VAT included). Also returns the free-report limits and the consent text (with its SHA-256) that the person must accept before create_free_report. Use it when someone asks what HOUSINGFAX offers, how much it costs, or before ordering. The complete report can only be ordered when the building has an IEE/ITE record. Always tell the person: it is a preliminary, automated report built from public records, not a technical inspection, valuation, certificate, safety assessment or legal advice; probabilities are given as words (very low to very high), never as percentages; a check without data (○) means unknown, not negative or safe; Navarra is not covered yet; the report is only available as a private link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the texts in the answer (and of the report): es, en, de, nl or fr. Default es."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "currency": {
      "type": "string",
      "const": "EUR"
    },
    "vatIncluded": {
      "type": "boolean",
      "const": true
    },
    "priceNote": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    },
    "products": {
      "minItems": 3,
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tier": {
            "type": "string",
            "enum": [
              "free",
              "simple",
              "complete"
            ]
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "priceCents": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "price": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "requiresBuildingConditionRecord": {
            "type": "boolean"
          },
          "format": {
            "type": "string",
            "enum": [
              "redacted_web_preview",
              "web_and_pdf"
            ]
          },
          "emailRequired": {
            "type": "boolean"
          },
          "orderChannel": {
            "type": "string",
            "enum": [
              "agent_api",
              "web"
            ]
          }
        },
        "required": [
          "tier",
          "name",
          "priceCents",
          "price",
          "description",
          "requiresBuildingConditionRecord",
          "format",
          "emailRequired",
          "orderChannel"
        ],
        "additionalProperties": false
      }
    },
    "upgrade": {
      "type": "object",
      "properties": {
        "from": {
          "type": "string",
          "const": "simple"
        },
        "to": {
          "type": "string",
          "const": "complete"
        },
        "priceCents": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "price": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        }
      },
      "required": [
        "from",
        "to",
        "priceCents",
        "price"
      ],
      "additionalProperties": false
    },
    "freeReportLimits": {
      "type": "object",
      "properties": {
        "perEmail": {
          "type": "object",
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            "windowDays": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            }
          },
          "required": [
            "count",
            "windowDays"
          ],
          "additionalProperties": false
        },
        "note": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        },
        "agentChannelPerDay": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "perEmail",
        "note",
        "agentChannelPerDay"
      ],
      "additionalProperties": false
    },
    "consent": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        },
        "statementSha256": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "termsVersion": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16
        },
        "termsUrl": {
          "type": "string",
          "maxLength": 400,
          "pattern": "^https:\\/\\/[^\\s]+$"
        },
        "agentContractingTermsUrl": {
          "type": "string",
          "maxLength": 400,
          "pattern": "^https:\\/\\/[^\\s]+$"
        },
        "privacyUrl": {
          "type": "string",
          "maxLength": 400,
          "pattern": "^https:\\/\\/[^\\s]+$"
        }
      },
      "required": [
        "text",
        "statementSha256",
        "termsVersion",
        "termsUrl",
        "privacyUrl"
      ],
      "additionalProperties": false
    },
    "checksCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pricingUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "orderUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "exampleReportUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "disclaimer": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "currency",
    "vatIncluded",
    "priceNote",
    "products",
    "upgrade",
    "freeReportLimits",
    "consent",
    "checksCount",
    "pricingUrl",
    "orderUrl",
    "exampleReportUrl",
    "disclaimer"
  ],
  "additionalProperties": false
}
🟢list_checks(language)

Lists the 22 numbered checks of the report (title, question it answers, whether its source is integrated yet and which report types include it) and the meaning of the ✓ / ⚠ / ○ marks. Use it to explain what the report looks at. Checks marked pending_integration show as ○ no data, never as a negative result. Always tell the person: it is a preliminary, automated report built from public records, not a technical inspection, valuation, certificate, safety assessment or legal advice; probabilities are given as words (very low to very high), never as percentages; a check without data (○) means unknown, not negative or safe; Navarra is not covered yet; the report is only available as a private link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the texts in the answer (and of the report): es, en, de, nl or fr. Default es."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "checks": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99
          },
          "key": {
            "type": "string",
            "enum": [
              "aluminosis",
              "iee",
              "risks_by_year",
              "asbestos",
              "cadastral_record",
              "building_condition",
              "energy_certificate",
              "land_history",
              "ground_motion",
              "geology_and_drainage",
              "flooding",
              "seismic",
              "radon",
              "sun_hours",
              "solar_potential",
              "price_and_market",
              "surroundings_and_noise",
              "land_affections",
              "land_classification",
              "climate_and_light",
              "wildfire",
              "industrial_facilities",
              "public_safety"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "question": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "integration": {
            "type": "string",
            "enum": [
              "integrated",
              "pending_integration"
            ]
          },
          "includedIn": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "free",
                "simple",
                "complete"
              ]
            }
          }
        },
        "required": [
          "number",
          "key",
          "title",
          "question",
          "integration",
          "includedIn"
        ],
        "additionalProperties": false
      }
    },
    "semaphore": {
      "type": "object",
      "properties": {
        "ok": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        },
        "attention": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        },
        "no_data": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        },
        "not_included": {
          "type": "string",
          "minLength": 1,
          "maxLength": 600
        }
      },
      "required": [
        "ok",
        "attention",
        "no_data",
        "not_included"
      ],
      "additionalProperties": false
    },
    "methodologyUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    }
  },
  "required": [
    "contract",
    "language",
    "count",
    "checks",
    "semaphore",
    "methodologyUrl"
  ],
  "additionalProperties": false
}
🟢check_coverage(language, province, municipality)

Says whether HOUSINGFAX can produce a report for a province (name or two-digit INE code) and, optionally, finds the municipality in the official street directory. Status covered, not_yet_covered (Navarra: foral adapter pending) or unrecognized; not_yet_covered never means no risk. In the Basque Country (Araba, Bizkaia, Gipuzkoa) the report covers the whole building, not a single flat. municipalityLookup unavailable means the directory did not answer: unknown, not missing. Call it before search_address when you are not sure the place is covered.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the texts in the answer (and of the report): es, en, de, nl or fr. Default es."
    },
    "province": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Spanish province by name (Madrid, València, Bizkaia…) or two-digit INE code (28). Omit both fields to list every province."
    },
    "municipality": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "Optional municipality name; it is looked up in the official street directory of the province."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "provinces": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "provinceCode": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "provinceLabel": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              {
                "type": "null"
              }
            ]
          },
          "territoryCode": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "covered",
              "not_yet_covered",
              "unrecognized"
            ]
          },
          "foral": {
            "type": "boolean"
          },
          "addressSource": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "dgc",
                  "nora_foral_cadastres"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "unitSelection": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "dwelling_or_building",
                  "building_only"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "buildingConditionRegistry": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "integrated",
                  "not_integrated"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "reason": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "foral_adapter_pending",
                  "not_a_spanish_province"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          }
        },
        "required": [
          "provinceCode",
          "provinceLabel",
          "territoryCode",
          "status",
          "foral",
          "addressSource",
          "unitSelection",
          "buildingConditionRegistry",
          "reason",
          "note"
        ],
        "additionalProperties": false
      }
    },
    "municipalities": {
      "anyOf": [
        {
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "provinceCode": {
                "type": "string",
                "pattern": "^\\d{2}$"
              },
              "municipalityDgcCode": {
                "type": "string",
                "pattern": "^\\d{1,3}$"
              },
              "municipalityIneCode": {
                "type": "string",
                "pattern": "^\\d{3}$"
              },
              "officialLabel": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              }
            },
            "required": [
              "provinceCode",
              "municipalityDgcCode",
              "municipalityIneCode",
              "officialLabel"
            ],
            "additionalProperties": false
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "municipalityLookup": {
      "type": "string",
      "enum": [
        "not_requested",
        "found",
        "not_found",
        "unavailable"
      ]
    },
    "coverageNote": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "provinces",
    "municipalities",
    "municipalityLookup",
    "coverageNote"
  ],
  "additionalProperties": false
}
🟢search_address(kind, language, provinceCode, q, municipalityDgcCode, ...)

Two steps to build an address. kind=municipality with provinceCode and q returns municipalities and their codes. kind=street with provinceCode, municipalityDgcCode, municipalityIneCode (from the first step) and q returns streets with streetTypeCode and streetCode (and localityId in the Basque Country). Pass the chosen street, the house number and the codes to resolve_building. Only for places check_coverage reports as covered. Do not store or publish the address.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "municipality",
        "street"
      ],
      "description": "municipality (step 1) or street (step 2)."
    },
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the texts in the answer (and of the report): es, en, de, nl or fr. Default es."
    },
    "provinceCode": {
      "type": "string",
      "pattern": "^\\d{2}$",
      "description": "Two-digit INE province code (e.g. 28 Madrid, 08 Barcelona)."
    },
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Text to search: municipality name, or street name optionally followed by the number (\"Colón, 5\")."
    },
    "municipalityDgcCode": {
      "type": "string",
      "pattern": "^\\d{1,3}$",
      "description": "Only with kind=street: municipalityDgcCode from step 1."
    },
    "municipalityIneCode": {
      "type": "string",
      "pattern": "^\\d{3}$",
      "description": "Only with kind=street: municipalityIneCode from step 1."
    },
    "streetTypeCode": {
      "type": "string",
      "pattern": "^[A-Z0-9]{1,4}$",
      "description": "Only with kind=street, optional: street type code to narrow the search (CL, AV, PZ…)."
    }
  },
  "required": [
    "kind",
    "provinceCode",
    "q"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "kind": {
      "type": "string",
      "enum": [
        "municipality",
        "street"
      ]
    },
    "options": {
      "anyOf": [
        {
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "provinceCode": {
                "type": "string",
                "pattern": "^\\d{2}$"
              },
              "municipalityDgcCode": {
                "type": "string",
                "pattern": "^\\d{1,3}$"
              },
              "municipalityIneCode": {
                "type": "string",
                "pattern": "^\\d{3}$"
              },
              "officialLabel": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              }
            },
            "required": [
              "provinceCode",
              "municipalityDgcCode",
              "municipalityIneCode",
              "officialLabel"
            ],
            "additionalProperties": false
          }
        },
        {
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "provinceCode": {
                "type": "string",
                "pattern": "^\\d{2}$"
              },
              "municipalityDgcCode": {
                "type": "string",
                "pattern": "^\\d{1,3}$"
              },
              "municipalityIneCode": {
                "type": "string",
                "pattern": "^\\d{3}$"
              },
              "officialLabel": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "streetTypeCode": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,4}$"
              },
              "streetCode": {
                "type": "string",
                "pattern": "^[A-Z0-9]{1,15}$"
              },
              "streetTypeLabel": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "localityId": {
                "type": "string",
                "pattern": "^[0-9]{14}$"
              },
              "localityLabel": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              }
            },
            "required": [
              "provinceCode",
              "municipalityDgcCode",
              "municipalityIneCode",
              "officialLabel",
              "streetTypeCode",
              "streetCode"
            ],
            "additionalProperties": false
          }
        }
      ]
    },
    "numberHint": {
      "type": "string",
      "minLength": 1,
      "maxLength": 16
    }
  },
  "required": [
    "contract",
    "language",
    "kind",
    "options"
  ],
  "additionalProperties": false
}
🟢resolve_building(language, cadastralReference, scope, address)

Identifies the building from an address found with search_address (object address) or from a cadastral reference (14 characters = building or plot; 18 or 20 = a single flat). Give either cadastralReference or address, not both. status resolved returns a resolutionToken (valid 15 minutes) for create_free_report, the building's public cadastral data, whether an IEE/ITE record exists (ieeAvailability; unverified means the registry did not answer, not that there is none) and the report types that can be ordered. status select_unit lists the units: ask the person which flat, or repeat with the 14-character reference and scope=building for the whole building. Only non-protected cadastral data is returned. Do not publish the address or reference.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the texts in the answer (and of the report): es, en, de, nl or fr. Default es."
    },
    "cadastralReference": {
      "type": "string",
      "pattern": "^[A-Z0-9]{14}([A-Z0-9]{4}|[A-Z0-9]{6})?$",
      "description": "Cadastral reference: 14 characters (building or plot), 18 or 20 (a flat). Use instead of address."
    },
    "scope": {
      "type": "string",
      "const": "building",
      "description": "Only with a 14-character cadastralReference: building to report on the whole building."
    },
    "address": {
      "type": "object",
      "properties": {
        "provinceCode": {
          "type": "string",
          "pattern": "^\\d{2}$"
        },
        "municipalityDgcCode": {
          "type": "string",
          "pattern": "^\\d{1,3}$"
        },
        "municipalityIneCode": {
          "type": "string",
          "pattern": "^\\d{3}$"
        },
        "streetTypeCode": {
          "type": "string",
          "pattern": "^[A-Z0-9]{1,4}$"
        },
        "streetCode": {
          "type": "string",
          "pattern": "^[A-Z0-9]{1,15}$"
        },
        "number": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16,
          "pattern": "^[\\p{L}\\p{N}/ -]+$"
        },
        "localityId": {
          "type": "string",
          "pattern": "^[0-9]{14}$"
        },
        "block": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16,
          "pattern": "^[\\p{L}\\p{N}/ .-]+$"
        },
        "stair": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16,
          "pattern": "^[\\p{L}\\p{N}/ .-]+$"
        },
        "floor": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16,
          "pattern": "^[\\p{L}\\p{N}/ .-]+$"
        },
        "door": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16,
          "pattern": "^[\\p{L}\\p{N}/ .-]+$"
        }
      },
      "required": [
        "provinceCode",
        "municipalityDgcCode",
        "municipalityIneCode",
        "streetTypeCode",
        "streetCode",
        "number"
      ],
      "additionalProperties": false,
      "description": "Coded address from search_address (provinceCode, municipalityDgcCode, municipalityIneCode, streetTypeCode, streetCode, number; localityId in the Basque Country; optional block, stair, floor, door). Use instead of cadastralReference."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "resolved",
        "select_unit",
        "not_found",
        "unconfirmed"
      ]
    },
    "evaluationScope": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "building",
            "dwelling"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "building": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "cadastralReference": {
              "type": "string",
              "pattern": "^[A-Z0-9]{14,20}$"
            },
            "rc14": {
              "type": "string",
              "pattern": "^[A-Z0-9]{14}$"
            },
            "address": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "postalCode": {
              "type": "string",
              "pattern": "^\\d{5}$"
            },
            "municipality": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "province": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "use": {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            "surfaceAreaM2": {
              "type": "number",
              "exclusiveMinimum": 0
            },
            "constructionYear": {
              "type": "integer",
              "minimum": 1000,
              "maximum": 2100
            },
            "stair": {
              "type": "string",
              "minLength": 1,
              "maxLength": 16
            },
            "floor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 16
            },
            "door": {
              "type": "string",
              "minLength": 1,
              "maxLength": 16
            }
          },
          "required": [
            "cadastralReference",
            "rc14"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "candidates": {
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "cadastralReference": {
            "type": "string",
            "pattern": "^[A-Z0-9]{14,20}$"
          },
          "rc14": {
            "type": "string",
            "pattern": "^[A-Z0-9]{14}$"
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "postalCode": {
            "type": "string",
            "pattern": "^\\d{5}$"
          },
          "municipality": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "province": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "use": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "surfaceAreaM2": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "constructionYear": {
            "type": "integer",
            "minimum": 1000,
            "maximum": 2100
          },
          "stair": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "floor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "door": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          }
        },
        "required": [
          "cadastralReference",
          "rc14"
        ],
        "additionalProperties": false
      }
    },
    "availableNumbers": {
      "maxItems": 40,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 16
      }
    },
    "resolutionToken": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{43}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "resolutionExpiresInSeconds": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "ieeAvailability": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "available",
            "none",
            "not_integrated",
            "unverified"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "availableTiers": {
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "free",
          "simple",
          "complete"
        ]
      }
    },
    "notice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "status",
    "evaluationScope",
    "building",
    "candidates",
    "resolutionToken",
    "resolutionExpiresInSeconds",
    "ieeAvailability",
    "availableTiers",
    "notice"
  ],
  "additionalProperties": false
}
🟡create_free_report(language, resolutionToken, consent, consentStatementSha256, email)

Queues the free report for the building resolved with resolve_building and returns a private link (previewUrl) and a statusToken for get_report_status. The free report is a blurred web preview without PDF; it is generated in minutes. CONSENT: before calling, show the person the consent text returned by get_products (consent.text, same language) with its terms and privacy links, and set consent=true only if the person has explicitly accepted it in this conversation; pass consent.statementSha256 as consentStatementSha256. Never accept on the person's behalf. The email is optional (ready notice; at most 2 free reports per email every 14 days) and only with the person's permission. The link is private: give it only to the person, never publish it. Always tell the person: it is a preliminary, automated report built from public records, not a technical inspection, valuation, certificate, safety assessment or legal advice; probabilities are given as words (very low to very high), never as percentages; a check without data (○) means unknown, not negative or safe; Navarra is not covered yet; the report is only available as a private link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the report and of the texts: es, en, de, nl or fr. Default es. Must be the language of the consent text shown."
    },
    "resolutionToken": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{43}$",
      "description": "resolutionToken returned by resolve_building (valid 15 minutes)."
    },
    "consent": {
      "type": "boolean",
      "const": true,
      "description": "true only if the person explicitly accepted the consent text from get_products."
    },
    "consentStatementSha256": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "consent.statementSha256 from get_products for the same language."
    },
    "email": {
      "type": "string",
      "minLength": 6,
      "maxLength": 254,
      "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$",
      "description": "Optional email of the person for the ready notice, only with their permission."
    }
  },
  "required": [
    "resolutionToken",
    "consent",
    "consentStatementSha256"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "jobId": {
      "type": "string",
      "pattern": "^scr_[A-Za-z0-9_-]{22}$"
    },
    "status": {
      "type": "string",
      "const": "queued"
    },
    "statusToken": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{43}\\.[A-Za-z0-9_-]{43}$"
    },
    "previewUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "pollAfterSeconds": {
      "type": "integer",
      "minimum": 1,
      "maximum": 600
    },
    "emailNotice": {
      "type": "boolean"
    },
    "notice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "jobId",
    "status",
    "statusToken",
    "previewUrl",
    "pollAfterSeconds",
    "emailNotice",
    "notice"
  ],
  "additionalProperties": false
}
🟢get_report_status(language, jobId, statusToken)

Returns the status of a report created with create_free_report: queued, in_progress, ready, failed or expired, with the private link when ready. Wait pollAfterSeconds between calls. withLimitations=true means some source did not answer and its check shows ○ no data with the reason (unknown, not negative). Give the link only to the person.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the texts in the answer (and of the report): es, en, de, nl or fr. Default es."
    },
    "jobId": {
      "type": "string",
      "pattern": "^scr_[A-Za-z0-9_-]{22}$",
      "description": "jobId returned by create_free_report or purchase_report."
    },
    "statusToken": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{43}\\.[A-Za-z0-9_-]{43}$",
      "description": "statusToken returned by create_free_report or purchase_report."
    }
  },
  "required": [
    "jobId",
    "statusToken"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "jobId": {
      "type": "string",
      "pattern": "^scr_[A-Za-z0-9_-]{22}$"
    },
    "status": {
      "type": "string",
      "enum": [
        "awaiting_payment",
        "payment_received",
        "queued",
        "in_progress",
        "ready",
        "failed",
        "expired",
        "payment_expired",
        "refunded"
      ]
    },
    "stage": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[A-Z0-9_]{1,64}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "queuePosition": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "estimatedSeconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "previewUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "withLimitations": {
      "type": "boolean"
    },
    "errorCode": {
      "type": "string",
      "pattern": "^[A-Z0-9_]{1,100}$"
    },
    "pollAfterSeconds": {
      "type": "integer",
      "minimum": 1,
      "maximum": 600
    },
    "payment": {
      "type": "object",
      "properties": {
        "orderId": {
          "type": "string",
          "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
        },
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "paid",
            "expired",
            "failed",
            "refunded"
          ]
        }
      },
      "required": [
        "orderId",
        "status"
      ],
      "additionalProperties": false
    },
    "notice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "jobId",
    "status",
    "stage",
    "notice"
  ],
  "additionalProperties": false
}
🟡purchase_report(language, tier, resolutionToken, freeReport, email, ...)

Opens an order for a paid report and returns a Stripe Checkout URL (checkoutUrl) where the person, or you on their behalf, pays: Essential report €11 VAT included or Complete report with building condition €19 VAT included, VAT included, one-off payment, no subscription. Use it only when the person has decided to buy that report type. The complete report can only be bought when resolve_building says ieeAvailability=available. The building comes from resolve_building (resolutionToken, valid 15 minutes) or from a free report that is ready (freeReport with its jobId and statusToken; the paid report then reuses its sources). ACCEPTANCE: by calling it you accept, on the person's behalf, the consent text from get_products (data processing, immediate execution and loss of the right of withdrawal) and the Terms in force, including the clause on contracting through an agent; the person who delegates to you is bound by it, so tell them before calling. Pass consent=true with consent.statementSha256, termsVersion from get_products, acceptTerms=true and waiveWithdrawalRight=true. The email is required: receipt, report link and withdrawal confirmation go there. Nothing is generated until Stripe confirms the payment; then the report is ready in minutes (the AI summary follows) and the link is emailed. Poll get_report_status with the returned jobId and statusToken: awaiting_payment, payment_received, queued, in_progress, ready (or payment_expired, refunded, failed). Never publish the checkout or report link. Always tell the person: it is a preliminary, automated report built from public records, not a technical inspection, valuation, certificate, safety assessment or legal advice; probabilities are given as words (very low to very high), never as percentages; a check without data (○) means unknown, not negative or safe; Navarra is not covered yet; the report is only available as a private link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "default": "es",
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ],
      "description": "Language of the report, the checkout page and the texts: es, en, de, nl or fr. Default es. Must be the language of the consent text shown."
    },
    "tier": {
      "type": "string",
      "enum": [
        "simple",
        "complete"
      ],
      "description": "simple (essential report) or complete (only when the building has an IEE/ITE record)."
    },
    "resolutionToken": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{43}$",
      "description": "resolutionToken returned by resolve_building (valid 15 minutes). Give this or freeReport, not both."
    },
    "freeReport": {
      "type": "object",
      "properties": {
        "jobId": {
          "type": "string",
          "pattern": "^scr_[A-Za-z0-9_-]{22}$"
        },
        "statusToken": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{43}\\.[A-Za-z0-9_-]{43}$"
        }
      },
      "required": [
        "jobId",
        "statusToken"
      ],
      "additionalProperties": false,
      "description": "A ready free report of the same person to buy from: { jobId, statusToken } from create_free_report. Give this or resolutionToken, not both."
    },
    "email": {
      "type": "string",
      "minLength": 6,
      "maxLength": 254,
      "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$",
      "description": "Email of the person (required): receipt, private report link and withdrawal confirmation."
    },
    "consent": {
      "type": "boolean",
      "const": true,
      "description": "true: you accept the consent text from get_products on the person's behalf."
    },
    "consentStatementSha256": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "consent.statementSha256 from get_products for the same language."
    },
    "termsVersion": {
      "type": "string",
      "minLength": 1,
      "maxLength": 16,
      "description": "consent.termsVersion from get_products (the Terms version you accept)."
    },
    "acceptTerms": {
      "type": "boolean",
      "const": true,
      "description": "true: you accept the Terms, including the clause on contracting through an agent (consent.agentContractingTermsUrl)."
    },
    "waiveWithdrawalRight": {
      "type": "boolean",
      "const": true,
      "description": "true: the person asks for immediate execution and loses the 14-day right of withdrawal once the report is supplied."
    }
  },
  "required": [
    "tier",
    "email",
    "consent",
    "consentStatementSha256",
    "termsVersion",
    "acceptTerms",
    "waiveWithdrawalRight"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "const": "agent-api-1.1.0"
    },
    "language": {
      "type": "string",
      "enum": [
        "es",
        "en",
        "de",
        "nl",
        "fr"
      ]
    },
    "orderId": {
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
    },
    "status": {
      "type": "string",
      "const": "awaiting_payment"
    },
    "tier": {
      "type": "string",
      "enum": [
        "simple",
        "complete"
      ]
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    },
    "priceCents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "price": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    },
    "currency": {
      "type": "string",
      "const": "EUR"
    },
    "vatIncluded": {
      "type": "boolean",
      "const": true
    },
    "checkoutUrl": {
      "type": "string",
      "maxLength": 2048,
      "pattern": "^https:\\/\\/checkout\\.stripe\\.com\\/\\S+$"
    },
    "checkoutExpiresAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
    },
    "jobId": {
      "type": "string",
      "pattern": "^scr_[A-Za-z0-9_-]{22}$"
    },
    "statusToken": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{43}\\.[A-Za-z0-9_-]{43}$"
    },
    "reportUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "pollAfterSeconds": {
      "type": "integer",
      "minimum": 1,
      "maximum": 600
    },
    "termsVersion": {
      "type": "string",
      "minLength": 1,
      "maxLength": 16
    },
    "agentContractingTermsUrl": {
      "type": "string",
      "maxLength": 400,
      "pattern": "^https:\\/\\/[^\\s]+$"
    },
    "notice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600
    }
  },
  "required": [
    "contract",
    "language",
    "orderId",
    "status",
    "tier",
    "name",
    "priceCents",
    "price",
    "currency",
    "vatIncluded",
    "checkoutUrl",
    "checkoutExpiresAt",
    "jobId",
    "statusToken",
    "reportUrl",
    "pollAfterSeconds",
    "termsVersion",
    "agentContractingTermsUrl",
    "notice"
  ],
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada8 herramientas