"""Postman API Demo - REST API Tools from Postman Collections"""
import os
import argparse
from pathlib import Path
from kuralit.server.agent_session import AgentSession
from kuralit.server.websocket_server import create_app
def validate_api_key(api_key: str) -> bool:
"""Validate API key."""
expected_key = os.getenv("KURALIT_API_KEY", "demo-api-key")
return api_key == expected_key
if __name__ == "__main__":
import uvicorn
# Parse command-line arguments
parser = argparse.ArgumentParser(
description="Kuralit WebSocket Server with Postman API Tools"
)
parser.add_argument(
"--collection",
type=str,
default="postman.json",
help="Path to Postman collection JSON file"
)
parser.add_argument(
"--base-url",
type=str,
default=os.getenv("API_BASE_URL", "http://localhost:35814"),
help="Base URL for the API"
)
args = parser.parse_args()
# Load Postman collection
tools = []
collection_path = Path(args.collection)
if collection_path.exists():
try:
from kuralit.tools.api import RESTAPIToolkit
api_toolkit = RESTAPIToolkit.from_postman_collection(
collection_path=str(collection_path),
base_url=args.base_url
)
tools.append(api_toolkit)
print(f"✅ Loaded {len(api_toolkit.get_functions())} API tools")
except Exception as e:
print(f"⚠️ Failed to load Postman collection: {e}")
# Create agent with API tools
agent_session = AgentSession(
stt="deepgram/nova-2:en-US",
llm="gemini/gemini-2.0-flash-001",
vad="silero/v3",
turn_detection="multilingual/v1",
tools=tools if tools else None,
instructions="You are a helpful assistant with access to REST API tools.",
)
app = create_app(
api_key_validator=validate_api_key,
agent_session=agent_session,
)
uvicorn.run(app, host="0.0.0.0", port=8000)