{"welcome":"Bienvenido al CLI de Portal Inmuebles","version":"2.1.0","description":"API para gestión de propiedades inmobiliarias, analytics, balance, espacios promocionales y más.","endpoints":{"/api/cli":{"method":"GET","auth_required":false,"description":"Esta documentación (lo que estás leyendo)"},"/.well-known/ai-cli.json":{"method":"GET","auth_required":false,"description":"Endpoint de descubrimiento automático para agentes AI"},"/api/cli/execute":{"method":"POST","auth_required":true,"description":"Ejecutar comandos del CLI","headers":{"Authorization":"Bearer cli_[tu_token_de_64_caracteres]","Content-Type":"application/json"},"body":{"command":"string (REQUERIDO) - Grupo de comando. Ej: \"properties\", \"credits\", \"analytics\"","subcommand":"string (REQUERIDO) - Accion especifica. Ej: \"list\", \"create\", \"get\"","args":"object (opcional) - Argumentos del comando"},"IMPORTANTE":"command y subcommand son campos SEPARADOS. Ejemplo: {\"command\":\"properties\",\"subcommand\":\"create\",\"args\":{...}}. NUNCA enviar \"command\":\"properties:create\"."},"/api/cli/token":{"method":"GET/POST","auth_required":true,"description":"Gestionar tokens CLI (listar, generar, revocar)","note":"Requiere sesión de usuario autenticado (no token CLI)"},"/api/cli/subscription":{"method":"GET/POST","auth_required":true,"description":"Gestionar suscripción CLI (ver estado, cambiar plan)"}},"getting_started":{"paso_1":{"titulo":"Crear cuenta","url":"https://portalinmuebles.cl/auth/register","descripcion":"Registra una cuenta gratuita"},"paso_2":{"titulo":"Obtener token CLI","url":"https://portalinmuebles.cl/dashboard/cli","descripcion":"Solicita tu token CLI (se envía por email por seguridad)"},"paso_3":{"titulo":"Revelar token","descripcion":"Haz clic en el link del email para ver tu token (una sola vez)"},"paso_4":{"titulo":"Ejecutar comandos","descripcion":"Usa POST /api/cli/execute con tu token"}},"commands":{"properties":{"description":"Gestión de propiedades inmobiliarias publicadas en el portal","subcommands":{"list":{"description":"Listar tus propiedades publicadas. Solo retorna las del usuario autenticado.","tier":"FREE","params":{"limit":{"type":"integer","required":false,"default":10,"max":50},"offset":{"type":"integer","required":false,"default":0},"status":{"type":"string","required":false,"enum":["active","inactive","sold","rented","expired"]}},"example_body":{"command":"properties","subcommand":"list","args":{"limit":5}}},"get":{"description":"Obtener detalles completos de una propiedad por ID","tier":"FREE","params":{"id":{"type":"uuid","required":true}},"example_body":{"command":"properties","subcommand":"get","args":{"id":"<uuid>"}}},"create":{"description":"Crear nueva propiedad. Descuenta crédito de publicación.","tier":"BASIC","params":{"data":{"type":"object","required":true,"fields":{"title":"string requerido","description":"string requerido","property_type":"enum: casa, departamento, oficina, local, terreno, parcela, bodega, hotel, estacionamiento","listing_type":"enum: sale, rent, temporal","price":"number requerido","moneda_publicacion":"enum: CLP, UF","address":"string requerido","city":"string requerido","state":"string requerido (región)","bedrooms":"integer opcional","bathrooms":"integer opcional","square_meters":"number opcional"}}}},"update":{"description":"Actualizar campos de propiedad existente.","tier":"BASIC","params":{"id":"uuid requerido","data":"object requerido"}},"delete":{"description":"Eliminar propiedad.","tier":"PRO","params":{"id":"uuid requerido"}},"activate":{"description":"Activar propiedad (status=active).","tier":"BASIC","params":{"id":"uuid requerido"}},"deactivate":{"description":"Desactivar propiedad (status=inactive). No la elimina.","tier":"BASIC","params":{"id":"uuid requerido"}},"republish":{"description":"Re-publicar propiedad expirada o vendida (descuenta nuevo crédito).","tier":"BASIC","params":{"id":"uuid requerido"}},"clone":{"description":"Clonar propiedad como nueva (no descuenta crédito hasta publicar).","tier":"BASIC","params":{"id":"uuid requerido"}},"add-image":{"description":"Agregar imagen a propiedad (URL debe ser https de Supabase Storage).","tier":"BASIC","params":{"id":"uuid","url":"string https url","alt":"string opcional"}},"remove-image":{"description":"Eliminar imagen de propiedad.","tier":"BASIC","params":{"id":"uuid","url":"string url"}},"add-video":{"description":"Agregar URL de video (YouTube o Vimeo) a propiedad.","tier":"BASIC","params":{"id":"uuid","url":"string url"}},"remove-video":{"description":"Eliminar video de propiedad.","tier":"BASIC","params":{"id":"uuid","url":"string url"}},"bulk-create":{"description":"Publicar múltiples propiedades desde array. Útil para CSV import.","tier":"PRO","params":{"properties":"array de objetos data"}},"bulk-update":{"description":"Actualizar múltiples propiedades con un solo request.","tier":"PRO","params":{"updates":"array {id, data}"}}},"error_codes":{"PROPERTY_NOT_FOUND":"ID inexistente o no pertenece al user","INSUFFICIENT_CREDITS":"No alcanzan créditos para publicar","VALIDATION_FAILED":"Datos invalidos (campos faltantes/tipos)"}},"analytics":{"description":"Métricas y analítica de propiedades, visitantes y conversiones","subcommands":{"summary":{"description":"Resumen agregado: total de propiedades, vistas totales, leads.","tier":"BASIC","params":{"days":{"type":"integer","required":false,"default":30}}},"views":{"description":"Vistas detalladas por propiedad.","tier":"PRO","params":{"property_id":"uuid opcional","days":"integer"}},"visitors":{"description":"Visitantes únicos con fingerprints (anonimizados).","tier":"BASIC","params":{"days":"integer"}},"export":{"description":"Exportar analytics a CSV/JSON.","tier":"PRO","params":{"format":"enum: csv, json","days":"integer"}}}},"credits":{"description":"Sistema de créditos para publicar propiedades. 1 crédito = 1 publicación.","subcommands":{"balance":{"description":"Consultar saldo actual de créditos del usuario.","tier":"FREE","params":{},"example_body":{"command":"credits","subcommand":"balance"}},"history":{"description":"Historial de transacciones de créditos.","tier":"BASIC","params":{"limit":"integer opcional"}},"packs":{"description":"Listar paquetes de créditos disponibles para compra.","tier":"FREE","params":{}}}},"balance":{"description":"Wallet del usuario (CLP). Diferente de credits (que son para publicar).","subcommands":{"check":{"description":"Consultar saldo CLP actual.","tier":"FREE","params":{}},"history":{"description":"Historial de movimientos del wallet.","tier":"BASIC","params":{"limit":"integer"}},"add":{"description":"Recargar wallet (vía Webpay).","tier":"PRO","params":{"amount_clp":"integer"}}}},"uf":{"description":"Valor de la Unidad de Fomento (UF) chilena en CLP. Público.","subcommands":{"current":{"description":"Obtener el valor actual de la UF del día (en CLP). Sin parámetros.","tier":"FREE","params":{},"example_body":{"command":"uf","subcommand":"current"}}}},"search":{"description":"Búsqueda de propiedades en el portal (incluye propiedades de otros usuarios)","subcommands":{"properties":{"description":"Buscar propiedades por texto, ciudad, tipo, rango de precio.","tier":"FREE","params":{"query":{"type":"string","required":false},"city":{"type":"string","required":false},"property_type":{"type":"string","required":false},"listing_type":{"type":"enum: sale, rent","required":false},"min_price":{"type":"number","required":false},"max_price":{"type":"number","required":false},"limit":{"type":"integer","required":false,"default":20}}}}},"profile":{"description":"Perfil del usuario autenticado","subcommands":{"get":{"description":"Obtener datos del perfil actual.","tier":"FREE","params":{}},"update":{"description":"Actualizar campos del perfil (nombre, teléfono, preferencias).","tier":"FREE","params":{"data":"object con campos a actualizar"}}}},"subscription":{"description":"Estado de suscripción del usuario (planes pagos del CLI: FREE/BASIC/PRO/ENTERPRISE)","subcommands":{"status":{"description":"Tier actual + límites + fecha expiración.","tier":"FREE","params":{}},"plans":{"description":"Listar todos los planes disponibles con precios y features.","tier":"FREE","params":{}}}},"spaces":{"description":"Espacios promocionales pagos (sidebar, hero, etc.) en el portal","subcommands":{"list":{"description":"Listar espacios promocionales disponibles.","tier":"BASIC","params":{}},"buy":{"description":"Comprar espacio promocional para una propiedad.","tier":"PRO","params":{"space_id":"uuid","property_id":"uuid","duration_days":"integer"}}}},"tasacion":{"description":"Sistema de tasación de propiedades inmobiliarias. 1 gratis/mes, después 0.25 UF.","subcommands":{"cuota":{"description":"Consultar cuota mensual disponible (gratis/usado).","tier":"FREE","params":{}},"iniciar":{"description":"Iniciar nueva tasación de una propiedad.","tier":"FREE","params":{"property_data":"object con datos para tasar"}},"estado":{"description":"Estado de tasación en curso por ID.","tier":"FREE","params":{"id":"uuid"}},"historial":{"description":"Historial de tasaciones del usuario.","tier":"FREE","params":{"limit":"integer"}},"packs":{"description":"Paquetes de tasaciones para compra.","tier":"FREE","params":{}}}},"viral":{"description":"Sistema viral pay-per-lead: promotores comparten propiedades y cobran por leads verificados","subcommands":{"balance":{"description":"Saldo del wallet del promotor (ganancias pendientes y disponibles).","tier":"FREE","params":{}},"commissions":{"description":"Historial de comisiones ganadas por leads aprobados.","tier":"FREE","params":{"limit":"integer"}},"referrals":{"description":"Lista de referrals/leads generados con sus estados.","tier":"FREE","params":{"limit":"integer"}}}},"blog":{"description":"Posts de blog del portal","subcommands":{"list":{"description":"Listar posts publicados.","tier":"FREE","params":{"limit":"integer"}},"get":{"description":"Detalle de un post por slug.","tier":"FREE","params":{"slug":"string"}}}},"feedback":{"description":"Canal de feedback de agentes IA al portal","subcommands":{"submit":{"description":"Enviar feedback de un agente IA. Útil cuando algo no funciona como debería.","tier":"FREE","params":{"type":"string","message":"string","context":"object"}},"types":{"description":"Listar tipos de feedback disponibles.","tier":"FREE","params":{}},"list":{"description":"Listar feedback enviado (admin).","tier":"BASIC","params":{"limit":"integer"}},"stats":{"description":"Estadísticas agregadas del feedback (admin).","tier":"PRO","params":{}}}},"auth":{"description":"Ciclo de vida del token CLI vigente","subcommands":{"logout":{"description":"Cierra la sesión revocando el token actual (is_active=false, revoked_by=self). El humano dueño del token recibe un email de confirmación. Recomendado al final de cada sesión del agente IA para minimizar la ventana de exposición del token.","tier":"FREE","params":{},"example_body":{"command":"auth","subcommand":"logout"},"example_response":{"success":true,"result":{"message":"Token revocado. Adiós.","lived_for_minutes":47,"next_step":"Para una nueva sesión genera otro token en /dashboard/cli."}}}}}},"commands_note":"Listado autoritativo: GET /api/cli/discover con Authorization Bearer devuelve el catálogo filtrado por el tier real de tu token (incluye ENTERPRISE/ADMIN_CEO si aplica).","feature_map":[{"nombre":"Importación / Sincronización desde fuentes externas","descripcion":"Importa propiedades masivamente desde tu CMS o portal configurado (ej. Veridica). NO está en el CLI: se opera desde el dashboard web.","api_base":"/api/sync/data-sources","ui_url":"/dashboard/data-sources","en_cli":false,"requiere_tier":"BASIC","como_empezar":"Ve a /dashboard/data-sources, configura tu fuente y pulsa \"Sincronizar\". Cada propiedad sincronizada consume 1 unidad de tu cuota mensual; si la excedes puedes comprar un pack on-demand."},{"nombre":"Sistema viral / referidos","descripcion":"Programa de referidos con comisiones por conversión. Gestión de promotores y enlaces personalizados.","api_base":"/api/viral","ui_url":"/dashboard/viral-settings","en_cli":false,"como_empezar":"Configura tus reglas de comisión y enlaces en /dashboard/viral-settings."},{"nombre":"Comisiones","descripcion":"Configuración de comisiones por propiedad y liquidaciones.","api_base":"/api/commission","ui_url":"/dashboard/viral-settings","en_cli":false,"como_empezar":"Las comisiones se configuran junto al sistema viral en /dashboard/viral-settings."},{"nombre":"Mensajería","descripcion":"Conversaciones entre interesados y brokers/propietarios.","api_base":"/api/messages","ui_url":"/dashboard/messages","en_cli":false,"como_empezar":"Revisa y responde mensajes en /dashboard/messages."},{"nombre":"Monetización (espacios promocionales)","descripcion":"Espacios pagos (sidebar, hero, destacados) y subastas de posición. El CLI expone parte vía spaces:*; la gestión completa es web.","api_base":"/api/monetization","ui_url":"/dashboard/monetization","en_cli":true,"como_empezar":"Gestiona promoción de propiedades en /dashboard/monetization."}],"onboarding":{"principio":"Accede solo a TUS recursos. El CLI está scoped por tu token (RLS en BD). Enumerar endpoints o comandos inexistentes se registra y puede activar rate-limit agresivo.","pasos":["PASO 1: Token cli_xxx vía /dashboard/cli (humano, una vez) o pídelo al usuario.","PASO 2: Catálogo completo de TU tier: GET /api/cli/discover con Authorization Bearer.","PASO 3: Ejecutar: POST /api/cli/execute con {command, subcommand, args} (command y subcommand SIEMPRE separados).","PASO 4: ¿Buscas import/sync u otra feature que no es comando CLI? Revisa feature_map — varias features se operan desde el dashboard web, no por CLI."],"feedback":"Si falta una capacidad, repórtalo en POST /api/feedback/ai con type=missing_capability en vez de enumerar a ciegas."},"tiers":{"FREE":{"nombre":"Gratuito","precio_clp":0,"precio_display":"Gratis","limite_propiedades":3,"rate_limits":{"per_minute":5,"per_hour":30},"comandos":["auth:logout","balance:check","blog:get","blog:list","credits:balance","credits:packs","feedback:submit","feedback:types","profile:get","profile:update","properties:get","properties:list","search:properties","subscription:plans","subscription:status","tasacion:cuota","tasacion:estado","tasacion:historial","tasacion:iniciar","tasacion:packs","uf:current","viral:balance","viral:commissions","viral:referrals"]},"BASIC":{"nombre":"Básico","precio_clp":9990,"precio_display":"$9.990/mes","limite_propiedades":10,"rate_limits":{"per_minute":20,"per_hour":200},"comandos":["analytics:summary","analytics:visitors","auth:logout","balance:check","balance:history","blog:get","blog:list","credits:balance","credits:history","credits:packs","feedback:list","feedback:submit","feedback:types","profile:get","profile:update","properties:activate","properties:add-image","properties:add-video","properties:clone","properties:create","properties:deactivate","properties:get","properties:list","properties:remove-image","properties:remove-video","properties:republish","properties:update","search:properties","spaces:list","subscription:plans","subscription:status","tasacion:cuota","tasacion:estado","tasacion:historial","tasacion:iniciar","tasacion:packs","uf:current","viral:balance","viral:commissions","viral:referrals"]},"PRO":{"nombre":"Profesional","precio_clp":49990,"precio_display":"$49.990/mes","limite_propiedades":50,"rate_limits":{"per_minute":60,"per_hour":1000},"comandos":["analytics:export","analytics:summary","analytics:views","analytics:visitors","auth:logout","balance:add","balance:check","balance:history","blog:get","blog:list","credits:balance","credits:history","credits:packs","feedback:list","feedback:stats","feedback:submit","feedback:types","profile:get","profile:update","properties:activate","properties:add-image","properties:add-video","properties:bulk-create","properties:bulk-update","properties:clone","properties:create","properties:deactivate","properties:delete","properties:get","properties:list","properties:remove-image","properties:remove-video","properties:republish","properties:update","search:properties","spaces:buy","spaces:list","subscription:plans","subscription:status","tasacion:cuota","tasacion:estado","tasacion:historial","tasacion:iniciar","tasacion:packs","uf:current","viral:balance","viral:commissions","viral:referrals"]},"ENTERPRISE":{"nombre":"Enterprise","precio_clp":99990,"precio_display":"$99.990/mes","limite_propiedades":200,"rate_limits":{"per_minute":120,"per_hour":3000},"comandos":["analytics:export","analytics:summary","analytics:trends","analytics:views","analytics:visitors","auth:logout","balance:add","balance:check","balance:history","balance:transfer","blog:get","blog:list","credits:balance","credits:history","credits:packs","feedback:list","feedback:stats","feedback:submit","feedback:types","profile:get","profile:update","properties:activate","properties:add-image","properties:add-video","properties:bulk-create","properties:bulk-delete","properties:bulk-update","properties:clone","properties:create","properties:deactivate","properties:delete","properties:get","properties:list","properties:remove-image","properties:remove-video","properties:republish","properties:update","search:properties","spaces:buy","spaces:history","spaces:list","subscription:plans","subscription:status","tasacion:cuota","tasacion:estado","tasacion:historial","tasacion:iniciar","tasacion:packs","uf:current","viral:balance","viral:commissions","viral:referrals"]}},"ejemplos":{"listar_propiedades_activas":{"descripcion":"Listar las primeras 10 propiedades activas","request":{"method":"POST","url":"/api/cli/execute","headers":{"Authorization":"Bearer cli_abc123...","Content-Type":"application/json"},"body":{"command":"properties","subcommand":"list","args":{"limit":10,"status":"active"}}},"response":{"success":true,"result":{"properties":[{"id":"uuid-1","title":"Departamento en Providencia","property_type":"departamento","listing_type":"sale","price":250000000,"status":"active","city":"Santiago","views_count":45}],"count":10,"total":50},"execution_time_ms":150,"rate_limit":{"remaining":4,"reset_at":"2026-02-03T10:15:00Z"}}},"consultar_saldo":{"descripcion":"Ver saldo actual del wallet","request":{"method":"POST","url":"/api/cli/execute","headers":{"Authorization":"Bearer cli_abc123...","Content-Type":"application/json"},"body":{"command":"balance","subcommand":"check"}},"response":{"success":true,"result":{"balance":150000,"currency":"CLP"},"execution_time_ms":45}},"ver_estado_suscripcion":{"descripcion":"Consultar estado de la suscripción CLI","request":{"method":"POST","url":"/api/cli/execute","headers":{"Authorization":"Bearer cli_abc123...","Content-Type":"application/json"},"body":{"command":"subscription","subcommand":"status"}},"response":{"success":true,"result":{"has_subscription":true,"plan_type":"professional","plan_name":"Profesional","property_limit":50,"properties_count":12,"properties_remaining":38,"current_tier":"PRO","expires_at":"2026-03-15T00:00:00Z"},"execution_time_ms":80}},"reportar_bug":{"descripcion":"Enviar reporte de bug","request":{"method":"POST","url":"/api/cli/execute","headers":{"Authorization":"Bearer cli_abc123...","Content-Type":"application/json"},"body":{"command":"feedback","subcommand":"submit","args":{"type":"bug_report","message":"El endpoint /api/cli/execute devuelve 500 cuando args contiene valores null","severity":"high"}}},"response":{"success":true,"result":{"id":"uuid-feedback","message":"Feedback enviado. Gracias!"},"execution_time_ms":120}}},"error_codes":{"MISSING_TOKEN":{"http_status":401,"descripcion":"No se proporcionó token de autenticación","solucion":"Incluir header Authorization: Bearer cli_xxx"},"INVALID_TOKEN_FORMAT":{"http_status":401,"descripcion":"Formato de token inválido","solucion":"El token debe tener formato cli_[64 caracteres hex]"},"TOKEN_NOT_FOUND":{"http_status":401,"descripcion":"Token no encontrado en la base de datos","solucion":"Generar nuevo token en /dashboard/cli"},"TOKEN_REVOKED":{"http_status":401,"descripcion":"El token ha sido revocado","solucion":"Generar nuevo token en /dashboard/cli"},"TOKEN_EXPIRED":{"http_status":401,"descripcion":"El token ha expirado (duración: 90 días)","solucion":"Generar nuevo token en /dashboard/cli"},"COMMAND_NOT_ALLOWED":{"http_status":403,"descripcion":"Comando no permitido para tu tier de suscripción","solucion":"Actualizar plan en /dashboard/cli"},"RATE_LIMIT_EXCEEDED":{"http_status":429,"descripcion":"Excediste el límite de requests","solucion":"Esperar hasta reset_at indicado en response"},"PROPERTY_LIMIT_EXCEEDED":{"http_status":403,"descripcion":"Alcanzaste el límite de propiedades de tu plan","solucion":"Actualizar plan o eliminar propiedades existentes"},"INVALID_JSON":{"http_status":400,"descripcion":"El body de la request no es JSON válido","solucion":"Verificar sintaxis del JSON enviado"},"MISSING_COMMAND":{"http_status":400,"descripcion":"Falta el campo \"command\" en el body","solucion":"Incluir campo command en el JSON"},"TIMEOUT":{"http_status":504,"descripcion":"El comando excedió el tiempo máximo (25 segundos)","solucion":"Reducir scope del comando o reintentar"},"INTERNAL_ERROR":{"http_status":500,"descripcion":"Error interno del servidor","solucion":"Reportar via feedback:submit con detalles"}},"response_headers":{"X-RateLimit-Remaining":"Requests restantes en la ventana actual","X-RateLimit-Reset":"Timestamp ISO de cuando se resetea el límite","X-Execution-Time":"Milisegundos que tomó ejecutar el comando"},"seguridad":{"capas":["1. Validación de token (SHA256, activo, no expirado)","2. Rate limiting por tier (5-120 req/min)","3. Whitelist de comandos por tier","4. Verificación de ownership (solo tus recursos)","5. Row Level Security en base de datos","6. Auditoría completa de todas las operaciones"],"comandos_bloqueados":["database:* (operaciones de BD directas)","accounts:* (gestión de cuentas)","moderation:* (sistema de moderación)","ai:* (configuración de IA)","auth:* (autenticación interna)"],"nota":"El token CLI solo permite acceder a TUS propios recursos. No puedes ver ni modificar datos de otros usuarios."},"notas_para_agentes_ai":{"descubrimiento":"Este endpoint (/api/cli) y /.well-known/ai-cli.json no requieren autenticación","feedback":"Usa feedback:submit para reportar bugs o sugerencias - ayuda a mejorar el sistema","rate_limiting":"Respeta X-RateLimit-Remaining para evitar bloqueos temporales","sandbox":"Cada usuario solo accede a sus propios recursos (excepto admin)","mejores_practicas":["Verificar subscription:status antes de operaciones masivas","Usar limit y offset para paginar resultados grandes","Revisar error_code en respuestas de error para diagnóstico","El campo execution_time_ms ayuda a optimizar requests"]},"credits":{"description":"Créditos de publicación de propiedades","disponible_desde":"FREE","nota":"Todos los tiers tienen acceso a credits:balance, credits:history, credits:packs. Solo ADMIN_CEO tiene credits:grant.","subcommands":{"balance":{"description":"Saldo actual","tier_minimo":"FREE"},"history":{"description":"Historial de movimientos","tier_minimo":"FREE","args":{"limit":"number (max 50)"}},"packs":{"description":"Catálogo de packs disponibles","tier_minimo":"FREE"},"grant":{"description":"Asignar/descontar créditos (positivo o negativo)","tier_minimo":"ADMIN_CEO","args":{"user_id":"string","credits":"number","reason":"string (opcional)"}}}},"tasacion":{"description":"Tasación de inmuebles por capitalización de rentas, comparables y costo de reposición","disponible_desde":"FREE","nota":"Todos los tiers tienen 1 tasación gratuita/mes. El motor corre en worker Railway (async). Usar tasacion:estado para obtener resultado.","subcommands":{"cuota":{"description":"Ver cuota gratuita y créditos pagados disponibles","tier_minimo":"FREE"},"iniciar":{"description":"Iniciar una tasación. Retorna tasacion_id. Hacer polling con tasacion:estado.","tier_minimo":"FREE","args":{"input_data":{"comuna":"string (requerido)","tipo_propiedad":"string (requerido) — departamento|casa|oficina|local_comercial|bodega|terreno|parcela","superficie_construida":"number (m²)","dormitorios":"number","banos":"number","anio_construccion":"number","estado_conservacion":"excelente|bueno|regular|malo","arriendo_estimado":"number (CLP/mes)","tiene_estacionamiento":"boolean","tiene_bodega":"boolean","vista_especial":"mar|panoramica|montana|parque"}}},"estado":{"description":"Consultar estado y resultado de una tasación","tier_minimo":"FREE","args":{"id":"string (UUID tasacion_id)"},"polling_tip":"Verificar cada 5 segundos. Timeout recomendado 90 segundos.","statuses":["pendiente","procesando","completado","error"]},"historial":{"description":"Últimas tasaciones del usuario","tier_minimo":"FREE","args":{"limit":"number (max 50)"}},"packs":{"description":"Catálogo de packs de créditos de tasación","tier_minimo":"FREE"}}},"visit-orders":{"description":"Órdenes de visita recibidas por el broker o propietario","disponible_desde":"BASIC","subcommands":{"list":{"description":"Listar órdenes","tier_minimo":"BASIC","args":{"limit":"number","status":"pending|confirmed|cancelled|completed"}},"get":{"description":"Detalle de una orden","tier_minimo":"BASIC","args":{"id":"string"}},"update-status":{"description":"Cambiar estado de una orden","tier_minimo":"BASIC","args":{"id":"string","status":"pending|confirmed|cancelled|completed"}}}},"links":{"registro":"https://portalinmuebles.cl/auth/register","dashboard_cli":"https://portalinmuebles.cl/dashboard/cli","dashboard_tasacion":"https://portalinmuebles.cl/dashboard/tasacion","centro_ayuda":"https://portalinmuebles.cl/ayuda","discovery_cli":"https://portalinmuebles.cl/.well-known/ai-cli.json","discovery_tasacion":"https://portalinmuebles.cl/.well-known/ai-tasacion.json","tasacion_docs":"https://portalinmuebles.cl/api/tasacion","tasar_web":"https://portalinmuebles.cl/tasar"}}