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.
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.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.# 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"}}}'