API Reference
search
auto_awesomeVibecoding com MCP — não é prompt genérico

Conecte a IA ao nosso repositório e deixe ela trabalhar

O MCP Iterpec expõe 4 tools (list_endpoints, get_endpoint, get_changelog, get_reference) que dão à sua IA acesso direto ao schema, exemplos curl, changelog e regras operacionais. Escolha o prompt-base abaixo de acordo com quem vai usar.

Quickstart em 3 passos

  1. 1. Vire cliente Iterpec — preencha o formulário comercial e assine contrato. Só assim você recebe Username + Password de produção da API (Search, GetBookingConditions, DoBooking) e o Bearer do MCP. Sem contrato, o MCP responde apenas documentação; as chamadas reais à API são bloqueadas.
  2. 2. Receba o Bearer MCP do time Iterpec (comercial@iterpec.com) — cada cliente recebe um token único, assinado e auditável.
  3. 3. Configure o MCP no seu cliente (Claude / Cursor / Lovable / n8n) — ver aba MCP.
  4. 4. Cole o prompt-base abaixo na primeira mensagem do chat. A IA descobre endpoints sozinha via list_endpoints e usa seu Username/Password para chamadas em produção.
# Sistema: Agente de Integração Iterpec (autônomo)

Você é um agente de IA conectado ao MCP da Iterpec (https://iterpec.com/api/mcp).
Sua missão: ler a documentação por conta própria e executar o fluxo Search →
GetBookingConditions → DoBooking → Cancel sem reuniões humanas.

## Ferramentas disponíveis (via MCP)
- list_endpoints({product?, search?}) — descobre endpoints
- get_endpoint({endpointId}) — schema completo + curl de exemplo
- get_changelog({service?, since?, limit?}) — mudanças recentes
- get_reference({topic}) — booking_statuses | retoken | date_conventions

## Protocolo obrigatório
1. SEMPRE comece chamando list_endpoints para mapear o terreno antes de
   inventar campos. Nunca chute parâmetro.
2. Antes de qualquer DoBooking, valide com GetBookingConditions e confirme
   PricingInfo + CancelPolicies com o usuário humano.
3. Datas: ISO-8601 em UTC (ver get_reference({topic:"date_conventions"})).
4. Token expirado → get_reference({topic:"retoken"}) e regenere antes de
   reexecutar.
5. Status de reserva ambíguo → get_reference({topic:"booking_statuses"})
   antes de afirmar sucesso/falha ao usuário.

## Saída esperada
Para cada tarefa, devolva: (a) endpoint escolhido + justificativa, (b) payload
final, (c) checklist de validação executada, (d) próximo passo sugerido.

Se faltar contexto crítico (CityCode, datas, ocupação, credencial), pergunte
antes de executar — não invente.

Como a IA navega nosso repositório

list_endpoints
Sempre primeiro. Descobre Search, GetBookingConditions, DoBooking, Cancel, etc.
args: product?, search?
get_endpoint
Depois de identificar o endpoint — devolve params, exemplo curl e resposta.
args: endpointId
get_changelog
Antes de subir integração nova — confirma se nada mudou nos últimos dias.
args: service?, since?, limit?
get_reference
Para regras transversais: status, ReToken, convenções de data.
args: topic

Complexidades do manual que ninguém te conta (cole no system prompt)

Essas regras vivem espalhadas pelo manual e são as principais causas de integração quebrada. Cole este bloco no system prompt da sua IA (ou adicione ao README do seu repo) para evitar 90% dos bugs.

# Iterpec/Cangooroo — Tips obrigatórios de implementação

## 1. Token rotaciona a cada passo
- Search → Token_A (válido 30 min)
- GetBookingConditions → consome Token_A, devolve Token_B
- DoBooking → consome Token_B (NÃO Token_A)
Sempre encaminhe o Token devolvido pelo passo anterior. Nunca o do Search.

## 2. ReToken & RevalidateBookingConditions
Se o Token do Search expirou e o ReToken está ativo, GetBookingConditions
devolve "RevalidateBookingConditions":
- SameRoomsFound → siga.
- RoomsFoundWithChanges → preço/disponibilidade MUDARAM. Avise o usuário
  e peça novo OK. NÃO siga silenciosamente.
- RoomsNotFound → quarto sumiu. Volte ao Search.

## 3. RestrictionType muda o significado de "reserva criada"
- CanBook → confirmação direta possível.
- OnRequest → reserva fica SOB CONSULTA do fornecedor. Pode levar horas.
  bookingStatus inicial será OnRequest/PENDING. NÃO trate como sucesso.
- Faça polling de GetBooking até virar CONFIRMED ou expirar (24h típico).

## 4. CanPayLater define o gatilho de cobrança
- true → você pode postergar a cobrança do cartão.
- false → cobrança no ato. Confirme que o gateway está armado ANTES do
  DoBooking, ou estoura inconsistência financeira.

## 5. Taxas locais vêm em DOIS lugares (complementares, não excludentes)
- PropertyTaxes[] (estruturado): Name, Amount, Currency, Type
  (PerNight | PerStay | PerPerson | PerPersonPerNight)
- MoreInformation (texto livre): pode conter taxas não estruturadas
  ("mandatory resort fee USD 35 per night").
Sempre processe os DOIS. Sempre exiba MoreInformation integral. Ver skill
iterpec-taxas-locais.

## 6. Moeda da taxa ≠ moeda da reserva
Reserva em BRL pode trazer Resort Fee em USD e City Tax em EUR no mesmo
quarto. NÃO some tudo numa moeda só sem conversão explícita marcada como
"aproximada".

## 7. Datas são ISO-8601 em UTC
CheckIn, CheckOut, CheckInHour, CheckOutHour, EndDate de
CancellationPolicies — tudo UTC. Se for exibir hora local ao hóspede,
converta no front e marque o fuso.

## 8. DoBooking NÃO é idempotente
Em timeout/erro de rede, NÃO retente cegamente. Chame GetBooking com o
ID esperado primeiro para descobrir se a reserva foi criada do outro lado.
Implemente lock por (HotelId + RoomIds + CheckIn + usuário) durante o fluxo.

## 9. CancellationPolicies é um array de janelas
Cada janela tem StartDate, EndDate, Value, Currency. Mostre TODAS, mas
destaque a próxima fronteira ("grátis até DD/MM, depois multa de R$ X").

## 10. Comparação de preço Search vs BookingConditions
TotalSellingPrice no BookingConditions é a fonte de verdade. Se diverge do
Search, AVISE o usuário antes de pedir confirmação. Não esconda diferença.

## 11. BookingId="0" cria reserva nova
Para anexar um serviço (transfer, tour, car) a uma reserva existente,
mande o BookingId real. Para reserva nova, "0".

## 12. Erros do fornecedor não são erros HTTP
A API pode retornar 200 OK com bookingStatus=FAILED ou Errors[] no corpo.
SEMPRE inspecione o body antes de declarar sucesso.

## 13. ReturnOnRequestRooms (Search)
Por padrão o Search NÃO devolve quartos OnRequest. Se você quer mostrar
inventário sob consulta ao usuário, setar true no Search — e marcar
claramente esses quartos no resultado.

## 14. PropertyTaxes pode estar ausente mesmo havendo taxa
Ausência de PropertyTaxes NÃO significa "sem taxa". Pode estar enterrada
no MoreInformation. Sempre rode extração no MoreInformation.

## 15. Logs auditáveis
Para cada reserva, persista: Token usado em cada passo, body bruto do
GetBookingConditions, body bruto do DoBooking, BookingId, ConfirmationNumber,
timestamp UTC. Quando dá ruim, é o que vai te salvar com o cliente.

Teste de fumaça (handshake → discovery → schema)

# 1) Liste o que o MCP oferece
curl https://iterpec.com/api/mcp \
  -H "Authorization: Bearer $ITERPEC_MCP_TOKEN" \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# 2) Descubra endpoints de hotel
curl https://iterpec.com/api/mcp \
  -H "Authorization: Bearer $ITERPEC_MCP_TOKEN" \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"list_endpoints","arguments":{"product":"hotel"}}}'

# 3) Pegue o schema completo de um endpoint
curl https://iterpec.com/api/mcp \
  -H "Authorization: Bearer $ITERPEC_MCP_TOKEN" \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
       "params":{"name":"get_endpoint","arguments":{"endpointId":"hotel-search"}}}'