{"name":"ripple-receptionist-worker","version":"0.1.0","description":"Ripple Core multi-tenant AI receptionist — voice, SMS, contacts, MCP","endpoints":{"POST /auth/otp/send":"Disabled (410 legacy_login_disabled); sign in with Clerk","POST /auth/otp/verify":"Disabled (410 legacy_login_disabled); sign in with Clerk","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","GET  /contractors/workspace-profiles":"Business identity for the caller's workspaces (switcher)","DELETE /contractors/account":"Delete account","POST /agent/ask-ripple":"Rippler dashboard chat endpoint (authed)","POST /calls/incoming":"Twilio voice webhook (incoming calls)","POST /calls/phone-tree":"Twilio Gather action for the Ghost Agent phone-tree menu","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/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 — fails if one is already assigned (authed)","GET  /phone/mine":"Get contractor current Twilio number (authed)","DELETE /phone/mine":"Release the 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)","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  /contacts/:id":"Single contact + activity timeline (authed)","POST /contacts/:id/activities":"Add a manual contact activity (authed)","POST /contacts/:id/send-email":"Send email from a connected account (authed)","POST /tags/:tag/contacts":"Add a tag to contacts (authed)","GET  /tags/:tag/contacts":"List contacts with a tag (authed)","GET  /summary":"Receptionist hero metrics: callsToday, callsThisWeek, voicemailsOpen, pendingActions, qualifiedLeads24h (authed)","GET  /customer-skills":"List owner-authored skills (?include_templates=1 to include platform templates) (authed)","GET  /customer-skills/:skillKey":"Single skill (authed)","POST /customer-skills":"Create a per-tenant skill (authed)","PUT  /customer-skills/:skillKey":"Update an owner skill (authed)","DELETE /customer-skills/:skillKey":"Soft-delete an owner skill (authed)","POST /customer-skills/from-template":"Clone selected templates into the contractor namespace (authed)","GET  /autonomy-policy":"Owner reads their current autonomy gates (authed)","PUT  /autonomy-policy":"Update one or more autonomy gates / daily budgets (authed)","POST /ghost-agent/element-feedback":"Ghost Agent: one signal on one call element, stored as a trainer label (authed)","GET  /ghost-agent/info-situations/:situationId":"Caller-info ranker: the \"What did you need to know here?\" checklist for one recorded moment (authed)","POST /ghost-agent/info-situations/:situationId/needed":"Caller-info ranker: the hiring answer (ticked facts + free text), stored as a training label (authed)","GET  /api/ghost-agent/calls/:callId/approvals":"Ghost Agent Sidekick: functions Ghost Agent ran or asked to run on a call (authed)","POST /api/ghost-agent/calls/:callId/approvals/:id/approve":"Ghost Agent Sidekick: approve a Needs a yes function; it runs with the rep's permissions (authed)","POST /api/ghost-agent/calls/:callId/approvals/:id/deny":"Ghost Agent Sidekick: deny a Needs a yes function; nothing runs (authed)","POST /ghost-agent/wrap":"Ghost Agent: Close ticket — the call note on the caller's record and the rep's follow-up tasks (authed)","GET  /ghost-agent/handled":"Full Agent: calls Ghost Agent handled and the ones that need you (authed)","POST /ghost-agent/handled/:callId/verdict":"Full Agent: record the final verdict on a Needs you call (authed)","GET  /ghost-agent/now":"Full Agent: the calls Ghost Agent is on now and the ones waiting for a rep (authed)","POST /ghost-agent/now/:callId/take-over":"Full Agent: move a live call to the pressing rep and ring their sidecar (authed)","GET  /dashboard/pending-actions":"Dashboard pending agent actions (authed)","POST /dashboard/pending-actions/:id/approve":"Approve a pending agent action (authed)","POST /dashboard/pending-actions/:id/reject":"Reject a pending agent action (authed)","GET  /dashboard/meetings/pending-actions":"Meeting Studio pending actions (authed)","POST /dashboard/meetings/pending-actions/:id/approve":"Approve a Meeting Studio pending action (authed)","POST /dashboard/meetings/pending-actions/:id/reject":"Reject a Meeting Studio pending action (authed)","GET  /dashboard/activity":"Dashboard agent activity feed (authed)","GET  /dashboard/appointments":"Dashboard appointment calendar and agenda (authed)","POST /dashboard/appointments":"Create a receptionist appointment (authed)","PUT  /dashboard/appointments/:id":"Update a receptionist appointment (authed)","DELETE /dashboard/appointments/:id":"Soft-delete a receptionist appointment (authed)","GET  /dashboard/tasks":"Dashboard tasks list (authed)","POST /dashboard/tasks":"Create a task (authed)","PUT  /dashboard/tasks/:id":"Update a task (authed)","DELETE /dashboard/tasks/:id":"Soft-delete a task (authed)","GET  /dashboard/projects":"Dashboard projects list (authed)","POST /dashboard/projects":"Create a project (authed)","PUT  /dashboard/projects/:id":"Update a project (authed)","DELETE /dashboard/projects/:id":"Soft-delete a project (authed)","GET  /website-studio/projects":"List Website Studio remake projects (authed)","GET  /website-studio/settings":"Read Website Studio generation settings (authed)","PUT  /website-studio/settings":"Update Website Studio generation settings (authed)","POST /website-studio/projects":"Create and capture a Website Studio project from a source URL (authed)","DELETE /website-studio/projects/current":"Delete the current Website Studio project slot (authed, dev tuning)","PUT  /website-studio/projects/:id/brief":"Save the initial Website Studio build brief (authed)","POST /website-studio/projects/:id/assistant-messages":"Chat with the project Managed Agent design assistant (authed)","POST /website-studio/projects/:id/generate-preview":"Generate a preview version from selected captured pages (authed)","POST /website-studio/projects/:id/versions/:versionId/publish":"Publish an approved Website Studio version live (authed)","POST /privacy/request":"Submit a privacy request (CCPA / GDPR)"}}