{"name":"ripple-receptionist-worker","version":"0.1.0","description":"Ripple Core multi-tenant AI receptionist — voice, SMS, contacts, campaigns, MCP","endpoints":{"POST /auth/otp/send":"Send SMS OTP to phone number","POST /auth/otp/verify":"Verify OTP code, returns JWT pair + contractor","POST /auth/refresh":"Refresh access token","POST /auth/logout":"Invalidate refresh token","GET  /auth/me":"Get current contractor profile","POST /contractors/onboard":"Set up business profile","PUT  /contractors/profile":"Update profile fields","DELETE /contractors/account":"Delete account","POST /calls/incoming":"Twilio voice webhook (incoming calls)","POST /calls/onboarding":"Trigger onboarding call to contractor (authed)","POST /calls/test":"Trigger test call with inbound prompt (authed)","GET  /calls/bridge/:callId":"WebSocket — Twilio Media Stream bridge","POST /calls/status":"Twilio status callback","POST /calls/lead-update":"ElevenLabs webhook — save structured lead data","GET  /calls":"Call history (authed)","GET  /calls/:callId":"Call detail with transcript (authed)","POST /scrape/website":"Scrape contractor website with Grok, auto-populate profile (authed)","GET  /admin/scrape-log":"List all scrape log entries (admin)","GET  /admin/scrape-log/:id":"Single scrape log detail (admin)","GET  /admin/settings/scrape-prompt":"Get current scrape prompt (admin)","PUT  /admin/settings/scrape-prompt":"Update scrape prompt (admin)","DELETE /admin/settings/scrape-prompt":"Reset scrape prompt to default (admin)","GET  /admin/prompts":"List all editable call prompts (admin)","GET  /admin/prompts/:key":"Get a specific call prompt (admin)","PUT  /admin/prompts/:key":"Update a call prompt (admin)","DELETE /admin/prompts/:key":"Reset a call prompt to default (admin)","POST /phone/search":"Search available Twilio numbers by area code (authed)","POST /phone/provision":"Purchase a Twilio number and assign to contractor (authed)","GET  /phone/mine":"Get contractor current Twilio number (authed)","PUT  /phone/settings":"Update phone settings (authed)","GET  /voices":"List available AI voices (authed)","POST /voices/preview":"Generate TTS preview for a voice (authed)","POST /mcp":"JSON-RPC over Streamable HTTP — call agent tools","GET  /knowledge-base":"List knowledge-base entries (authed)","POST /knowledge-base":"Add a knowledge-base entry (authed)","PUT  /knowledge-base/:id":"Update a knowledge-base entry (authed)","DELETE /knowledge-base/:id":"Soft-delete a knowledge-base entry (authed)","GET  /sms/conversations":"List SMS conversations (authed)","GET  /sms/conversations/:contactId":"Single SMS thread (authed)","POST /sms/send":"Send an SMS (authed, rate-limited)","GET  /contacts":"List contacts (authed)","GET  /contacts/:id":"Single contact + activity timeline (authed)","PUT  /contacts/:id":"Update contact (authed)","GET  /campaigns":"List campaigns (authed)","POST /campaigns":"Create a campaign (authed)","GET  /campaigns/:id":"Single campaign detail (authed)","PUT  /campaigns/:id":"Update campaign (authed)","POST /campaigns/:id/pause":"Pause campaign (authed)","POST /campaigns/:id/resume":"Resume campaign (authed)","POST /tags":"Add a tag to a contact (authed)","DELETE /tags":"Remove a tag (authed)","POST /privacy/request":"Submit a privacy request (CCPA / GDPR)"}}