{"service":"central-inteligencia","status":"ok","version":"0.12.0-meta-oauth","env":"staging","db":"up","queues":["ci-sync","ci-sync-dlq","ci-wa"],"consumers":["ci-sync","ci-sync-dlq","ci-wa"],"cron":{"sync":"0 * * * *","alerts":"15 * * * *","note":"UTC. scheduled() não é HTTP (fail-closed). Sync: ci-sync + idempotência horária. Alertas: só tenants com regra habilitada; POST /alerts/eval exige tenantId."},"connectors":{"storage":"tenant_connectors","wrapKey":"configured","adminWrite":"dedicated_secret+allowlist","adminSecret":"configured","adminAllowlist":"configured","aad":"required","cipher":"v1.aad.","cv":"tenant_scoped","sienge":"tenant_scoped","metaAds":"tenant_scoped","metaAdsOauth":"configured","googleAds":"tenant_scoped","titan":"tenant_scoped","note":"Encrypt-at-rest AES-GCM+AAD (tenant_id+provider) em D1 (`v1.aad.`). Write: CI_CONNECTOR_ADMIN_SECRET + CI_CONNECTOR_ADMIN_TENANTS + X-CI-Tenant (enqueue NÃO escreve). Sem wrap key / sem AAD / plaintext → skip. Meta Ads: Conectar com Facebook (token longo ~60 dias, ads_read + business_management) só com CI_ENV=staging e META_APP_ID/META_APP_SECRET/META_OAUTH_REDIRECT_URI; fora disso metaAdsOauth=disabled. Colar token de System User continua. Aviso no painel: Expira em N dias (≤10) ou Expirado — Reconectar. Sync com token vencido = token_expired, fail-soft. Google Ads: developer token + OAuth refresh, só com CI_ENV=staging (fora disso googleAds=disabled, sem HTTP). Titan: Private Integration Token + locationId do LeadConnector, só com CI_ENV=staging (fora disso titan=disabled, sem HTTP). Sync read-only. Nunca segredo em claro no D1 nem em logs. Rotação da wrap key = follow-up."},"messaging":{"stevo":"configured"},"alerts":{"cron":"15 * * * *","kinds":["sync.atrasada","meta","inadimplencia","funil"],"dispatch":"configured","waRequires":["destination","wa_allowlist"],"note":"WA só com destination E.164 na wa_allowlist do tenant; senão só alert_events/painel. Stevo sem template oficial."},"mcp":{"transport":"streamable-http","oauth":"configured","scopes":["mcp:read"],"tools":["listar_empreendimentos","obter_empreendimento","listar_unidades","resumo_estoque","freshness_sync","alertas_resumidos","resumo_funil","listar_leads","resumo_vendas","listar_reservas","listar_clientes","resumo_inadimplencia"],"note":"A Central expõe MCP. Claude/ChatGPT do cliente conecta. Sem chamada Anthropic/OpenAI."},"piloto":{"inboundWa":"blocked_pending_secret","mcpOperator":"missing","mcpOperatorAllowlist":"missing","mcpPepper":"fallback_sync","pending":["STEVO_WEBHOOK_SECRET","CI_MCP_OPERATOR_SECRET","CI_MCP_OPERATOR_ALLOWLIST","CI_MCP_TOKEN_SECRET"],"note":"Valores só via wrangler secret / .dev.vars — nunca no Git. Inbound WA bloqueado até STEVO_WEBHOOK_SECRET (Allan)."},"fase":7}