Lodging Decision MCP

Ferramenta voltada para agentes que classifica candidatos de hospedagem com uma recomendação determinística e baseada em evidências.

Documentação

Servidor Lodging Decision MCP (alpha)

Servidor MCP estreito e voltado para agentes que encapsula o kernel de decisão de hospedagem do PR #25 (Scenic-Stay/staygraph, branch agent/scenicgraph-lodging-decision-api) sem modificações. Regido por gauntlet/projects/decision-intelligence-v0.1/WORK-ORDERS.yaml (DI-001-A) em Scenic-Stay/scenic-intelligence. Leia essa Ordem de Trabalho antes de alterar o escopo.

Em produção: https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp

Extraído de Scenic-Stay/staygraph (services/di-001-a-mcp-decision-server/, branch agent/di-001-a-mcp-decision-server, commits 8c8f4c7/f7df7b3) para um repositório público próprio para que a descoberta de MCP baseada no GitHub (o Registro Oficial de MCP, o crawler da Glama) possa encontrá-lo sem expor o restante do código de staygraph. Esse branch é preservado como registro histórico; implante a partir deste repositório daqui em diante.

O que é

Uma ferramenta MCP, lodging_decision. Os chamadores fornecem um perfil de viajante, contexto de viagem e uma lista de anúncios candidatos; a ferramenta retorna uma recomendação determinística e baseada em evidências com detalhamento de pontuação, tradeoffs, sinalizadores de risco, informações ausentes e confiança. Ela não pesquisa inventário, não reserva, não transaciona nem persiste nada.

Escopo

Apenas categorias não sensíveis: orçamento, localização, comodidades, qualidade/avaliações, política de cancelamento, taxas, enquadramento de viagem para trabalho remoto/família/negócios/realocação/eventos e necessidades de acessibilidade declaradas. Nenhuma entrada relacionada a Safety & Belonging, Medical Recovery ou características protegidas é aceita — veja src/guard.ts, uma denylist de defesa em profundidade que rejeita (não remove silenciosamente) campos de texto livre que referenciem uma característica protegida ou critério discriminatório de direcionamento, além do fato de que o kernel subjacente não possui tais campos em primeiro lugar.

Estrutura

  • src/kernel/ — contratos, scorer, validação e fixtures do PR #25, copiados byte a byte (test/kernel-parity.test.ts prova isso contra os seis testes do próprio PR #25 e os exemplos de fixtures commitados).
  • src/guard.ts — a proteção denylist descrita acima.
  • src/worker.ts — ponto de entrada do Cloudflare Worker: MCP WebStandardStreamableHTTPServerTransport em POST /mcp, além de um teto diário suave de requisições baseado em KV e uma verificação de /health.
  • test/ — testes de paridade do kernel, testes da proteção.

Desenvolvimento local

npm install
npm test        # kernel parity + guard tests
npm run typecheck
npm run dev      # wrangler dev, serves http://127.0.0.1:8787/mcp

Implantação

npm run deploy   # wrangler deploy

Requer o namespace KV DI_001_A_ABUSE_CEILING vinculado em wrangler.jsonc (já provisionado; veja o execution_result da Ordem de Trabalho para o ID do namespace e o custo real da Cloudflare registrado no momento da implantação).

Limitações conhecidas (herdadas do PR #25, não resolvidas aqui)

Não autenticado, sem versão, sem limite de taxa além do teto diário suave, não calibrado contra decisões reais de reserva humana. Não exponha a tráfego de alto volume não confiável sem uma decisão adicional de endurecimento — veja os circuit breakers da Ordem de Trabalho para o kill-switch manual (remova o Worker; retire de todos os diretórios) se sinais de abuso aparecerem.