Agentic Travel Recommendations Service
README.md
# Agentic Travel Recommendations Service
A working proof-of-concept for an agent-discoverable travel recommendations API.
## What is included
- FastAPI backend
- Mock member profile and partner-configuration services
- Partner-specific recommendation caps
- Partner-specific category exclusions
- MCP-compatible JSON-RPC endpoint
- MCP tool discovery via `tools/list`
- MCP tool invocation via `tools/call`
- REST API
- Minimal browser UI
- Automated tests
## Run locally
```bash
python -m venv .venv
# macOS/Linux
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
uvicorn app.main:app --reload
```
Open:
- UI: http://127.0.0.1:8000
- Swagger: http://127.0.0.1:8000/docs
- Health: http://127.0.0.1:8000/health
## REST example
```bash
curl -X POST http://127.0.0.1:8000/api/recommendations \
-H "Content-Type: application/json" \
-d '{
"member_id": "member-1001",
"partner_id": "premium-bank",
"destination": "Portland",
"limit": 10
}'
```
## MCP discovery example
```bash
curl -X POST http://127.0.0.1:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
```
## MCP invocation example
```bash
curl -X POST http://127.0.0.1:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_recommendations",
"arguments": {
"member_id": "member-1001",
"partner_id": "premium-bank",
"destination": "Portland",
"limit": 10
}
}
}'
```
## Sample IDs
Members:
- `member-1001`
- `member-1002`
- `member-1003`
Partners:
- `premium-bank`
- `family-club`
- `business-card`
## Partner-rule examples
- `premium-bank`: maximum 5 results; excludes `hostel`
- `family-club`: maximum 4 results; excludes `nightlife` and `casino`
- `business-card`: maximum 3 results; excludes `hostel`, `nightlife`, and `casino`
## Test
```bash
pytest
```
## Design notes
The recommendation engine first scores candidates against a mocked member profile, then applies the partner policy before returning results. Policy enforcement is performed server-side, so a client or agent cannot bypass recommendation caps or excluded categories.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues