{"name":"LangGraph Agents","description":"AI agents for database queries, SMS interactions, calendar operations, and data cleanup","endpoints":[{"path":"/query","method":"POST","description":"Process a natural language query against the database","body":{"question":"string"}},{"path":"/jake","method":"POST","description":"Conversational agent for database reporting with streaming support","body":{"query":"string","sessionId":"string (optional)","streaming":"boolean (optional, set to true to enable streaming)"},"response":{"output":"string","streaming":"boolean (present when streaming is enabled)","streamId":"string (present when streaming is enabled)"}},{"path":"/jake/stream/:streamId","method":"GET","description":"Get streaming status and content for a Jake agent streaming session","params":{"streamId":"string (required, the ID returned from a streaming Jake request)"},"response":{"streaming":"boolean (whether stream is still active)","text":"string (current accumulated text)","progress":"number (0-100 percentage)","error":"string (optional, present if an error occurred)"}},{"path":"/calendar","method":"POST","description":"Process calendar operations like checking availability and booking meetings","body":{"question":"string","companyId":"string (optional)"}},{"path":"/sms-agent/1","method":"POST","description":"Process incoming SMS messages via Twilio webhook","body":{"Body":"string","From":"string","To":"string"}},{"path":"/data-cleanup","method":"POST","description":"Clean and deduplicate lead data from CSV","body":{"csvData":"string (CSV content)"}},{"path":"/data-cleanup/:jobId/progress","method":"GET","description":"Get progress of a data cleanup job"},{"path":"/data-cleanup/:jobId/results","method":"GET","description":"Get results of a completed data cleanup job"},{"path":"/health","method":"GET","description":"Check service health"},{"path":"/sarah","method":"POST","description":"Conversational agent for database reporting with streaming support (Sarah)","body":{"query":"string","sessionId":"string (optional)","streaming":"boolean (optional, set to true to enable streaming)"},"response":{"output":"string","streaming":"boolean (present when streaming is enabled)","streamId":"string (present when streaming is enabled)"}},{"path":"/sarah/stream/:streamId","method":"GET","description":"Get streaming status and content for a Sarah agent streaming session","params":{"streamId":"string (required, the ID returned from a streaming Sarah request)"},"response":{"streaming":"boolean (whether stream is still active)","text":"string (current accumulated text)","progress":"number (0-100 percentage)","error":"string (optional, present if an error occurred)"}},{"path":"/kelsey","method":"POST","description":"Conversational agent for database reporting with streaming support (Kelsey)","body":{"query":"string","sessionId":"string (optional)","streaming":"boolean (optional, set to true to enable streaming)"},"response":{"output":"string","streaming":"boolean (present when streaming is enabled)","streamId":"string (present when streaming is enabled)"}},{"path":"/kelsey/stream/:streamId","method":"GET","description":"Get streaming status and content for a Kelsey agent streaming session","params":{"streamId":"string (required, the ID returned from a streaming Kelsey request)"},"response":{"streaming":"boolean (whether stream is still active)","text":"string (current accumulated text)","progress":"number (0-100 percentage)","error":"string (optional, present if an error occurred)"}},{"path":"/john","method":"POST","description":"Conversational agent for database reporting with streaming support (John)","body":{"query":"string","sessionId":"string (optional)","streaming":"boolean (optional, set to true to enable streaming)"},"response":{"output":"string","streaming":"boolean (present when streaming is enabled)","streamId":"string (present when streaming is enabled)"}},{"path":"/john/stream/:streamId","method":"GET","description":"Get streaming status and content for a John agent streaming session","params":{"streamId":"string (required, the ID returned from a streaming John request)"},"response":{"streaming":"boolean (whether stream is still active)","text":"string (current accumulated text)","progress":"number (0-100 percentage)","error":"string (optional, present if an error occurred)"}}]}