SetLuca
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| luca_capabilities_getA | Describe Luca's public API capabilities, scopes, and boundaries. Luca operation: GET /api/capabilities Required scopes: leads:read, conversations:read, bookings:read, campaigns:read, broadcasts:read, webhooks:read, integrations:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_listA | List leads. Query supports limit, cursor, channel, and q according to Luca OpenAPI. Luca operation: GET /api/leads Required scopes: leads:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_getA | Get a lead's full timeline and notes. Luca operation: GET /api/leads/{id} Required scopes: leads:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_explainA | Explain why a lead qualified: the qualifier's reasoning, signals, and confidence from its most recent drafted turn. Luca operation: GET /api/leads/{id}/explain Required scopes: leads:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_createA | Create or upsert a lead identity. Body requires channel and externalUserId. Luca operation: POST /api/leads Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_updateA | Update a lead's display name, stage, score, tags, or custom fields. Luca operation: PATCH /api/leads/{id} Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_field_definitions_listA | List custom lead field definitions. Luca operation: GET /api/leads/field-definitions Required scopes: leads:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_field_definitions_upsertA | Create or update a custom lead field definition. Luca operation: POST /api/leads/field-definitions Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_import_previewA | Preview a mapped CSV lead import before applying it. Luca operation: POST /api/leads/imports/preview Required scopes: leads:read Required OAuth scope: luca:draft; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_import_applyA | Apply a mapped lead import with consent evidence. Luca operation: POST /api/leads/imports/apply Required scopes: leads:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_identities_attachA | Attach a verified or claimed identity to a lead. Luca operation: POST /api/leads/{id}/identities Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_consents_grantA | Grant explicit lead consent for a channel purpose. Luca operation: POST /api/leads/{id}/consents Required scopes: leads:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_consents_revokeA | Revoke explicit lead consent for a channel purpose. Luca operation: POST /api/leads/{id}/consents/revoke Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_notes_addA | Append a coach note to a lead. Body requires body. Luca operation: POST /api/leads/{id}/notes Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_draftA | Draft a voice-matched reply for a lead on demand and queue it for review. Optional guidance steers tone or content. Luca operation: POST /api/leads/{id}/draft Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_leads_notes_deleteA | Remove one coach note from a lead and leave the rest of the timeline alone. This is how a note filed by mistake gets taken back. Luca operation: DELETE /api/leads/{id}/notes/{noteId} Required scopes: leads:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_conversations_listA | List recent conversations. Query supports limit, cursor, channel, and q. Luca operation: GET /api/conversations Required scopes: conversations:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_conversations_getA | Get a conversation with messages and lead context. Luca operation: GET /api/conversations/{id} Required scopes: conversations:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_conversations_messagesA | Page backward through a thread's older messages, for threads longer than the window the conversation read returns. Luca operation: GET /api/conversations/{id}/messages Required scopes: conversations:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_conversations_sendA | Send a message to the lead on their channel right away. This is the one conversation tool that reaches a real person without a reviewer seeing the message first, which is why it needs an explicit confirm. Prefer drafting into the review queue unless the coach has asked for this message to go out now. Luca operation: POST /api/conversations/{id}/send Required scopes: conversations:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_conversations_partial_send_retryA | Retry only the parts of a partially sent message that are known not to have reached the provider. Luca operation: POST /api/conversations/{id}/messages/{messageId}/retry Required scopes: conversations:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_listA | List review-queue items when the API key has review queue access. Luca operation: GET /api/review-queue Required scopes: review_queue:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_explainA | Explain the signals behind a drafted reply: its voice-match score, any critic findings, and the qualification that motivated it. Luca operation: GET /api/review-queue/{id}/explain Required scopes: review_queue:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_approveA | Approve a pending draft for sending; dispatches through the lead's channel. Sends a real message. Luca operation: POST /api/review-queue/{id}/approve Required scopes: review_queue:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_rejectA | Reject a pending review-queue draft so it never sends. Stops any related booking-recovery cadence and emits review.rejected. Luca operation: POST /api/review-queue/{id}/reject Required scopes: review_queue:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_restoreA | Restore a rejected review-queue item back to pending. Fails if it's a booking message whose recovery window already passed. Luca operation: POST /api/review-queue/{id}/restore Required scopes: review_queue:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_media_retryA | Retry a failed voice-note transcription so the draft can be reviewed. Only re-transcribes; never redrafts or sends. Luca operation: POST /api/review-queue/{id}/media/{mediaId}/retry Required scopes: review_queue:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_slaA | Read median first-response time and its daily trend. Tells you whether the queue is being cleared fast enough. Luca operation: GET /api/review-queue/sla Required scopes: review_queue:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_review_queue_objection_variantA | Record which objection-specialist variant was picked for one queued draft. It is how the objection tests learn which handling works, so record the variant the coach actually chose. Luca operation: POST /api/review-queue/{id}/objection-variant Required scopes: review_queue:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_listA | List bookings. Query supports limit, cursor, status, and upcoming. Luca operation: GET /api/bookings Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_createA | Create a provider-neutral booking record. Body requires leadId and slotAt. Luca operation: POST /api/bookings Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_getA | Read one booking: its slot, status, provider, and lead. Luca operation: GET /api/bookings/{id} Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_availabilityA | List open slots the coach can actually be booked into. Check this before booking. Luca operation: GET /api/bookings/availability Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_managed_availabilityA | List open slots for one of Luca's own call types, with calendar conflicts already removed. Luca operation: GET /api/bookings/managed-availability Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_listA | List the call types a booking can use, with their duration and provider. Luca operation: GET /api/bookings/types Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_scheduleA | Read a call type's weekly schedule: the hours it can be booked and its time zone. Luca operation: GET /api/bookings/types/{id}/schedule Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_attendeesA | List the people invited to every call of this type, on top of the lead. Luca operation: GET /api/bookings/types/{id}/attendees Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_providers_listA | List every booking provider, what each can do, and whether this coach's connection is healthy. Luca operation: GET /api/bookings/providers Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_providers_getA | List the event types and calendars in one connected provider account. Luca operation: GET /api/bookings/providers/{provider} Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_calendars_listA | List the calendars Luca reads for conflicts, and which one it writes new events to. Luca operation: GET /api/bookings/calendars Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_outcome_reasons_listA | List the reasons a sale can be lost or a call cancelled. Use one of these codes when recording an outcome. Luca operation: GET /api/bookings/outcome-reasons Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_outcome_getA | Read where the sale stands on a booking, plus the version you send back to correct it. Luca operation: GET /api/bookings/{id}/outcome Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_outcome_historyA | Read every outcome ever recorded on a booking, in order. Corrections append rather than overwrite. Luca operation: GET /api/bookings/{id}/outcome/history Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_needs_outcomeA | List attended calls with no outcome recorded yet. The work list for closing revenue attribution. Luca operation: GET /api/bookings/needs-outcome Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_lifecycle_attentionA | List bookings where Luca's record and the provider's disagree and a human has to decide. Luca operation: GET /api/bookings/lifecycle-attention Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_briefA | Read the pre-call brief: who the lead is, what they want, and the objections to expect. Luca operation: GET /api/bookings/{id}/brief Required scopes: bookings:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_updateA | Reschedule or update booking status. Luca operation: PATCH /api/bookings/{id} Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_cancelA | Cancel a booking. Luca operation: DELETE /api/bookings/{id} Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_outcome_recordA | Record what the call was worth: won, lost with a reason, or still open. Won and lost outcomes can update a connected CRM deal stage, so pass confirm: true for those outcomes. To correct an earlier outcome send the expectedVersion you read; a stale version returns 409 with the current one. Luca operation: POST /api/bookings/{id}/outcome Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive when status is won or lost (can update a connected CRM deal): has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_lifecycle_resolutionA | Settle one booking whose record disagrees with the provider's: retry the sync, dismiss the duplicate, or keep Luca's version. Luca operation: POST /api/bookings/{id}/lifecycle-resolution Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_provider_sync_retryA | Retry a failed write-back to the booking provider. A permanent failure returns 409 rather than retrying forever. Luca operation: POST /api/bookings/{id}/provider-sync/retry Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_guest_links_createA | Mint revocable reschedule and cancel links for one booking, so a lead can move the call without an account. Luca operation: POST /api/bookings/{id}/guest-links Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_guest_links_revokeA | Kill every outstanding guest link on a booking at once. Luca operation: DELETE /api/bookings/{id}/guest-links Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_outcome_reasons_createA | Add a lost-sale or cancellation reason in the workspace's own wording. A code already in use returns 409. Luca operation: POST /api/bookings/outcome-reasons Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_outcome_reasons_updateA | Rename, reorder, or archive an outcome reason. Archiving hides it from the picker and leaves recorded outcomes alone. Luca operation: PATCH /api/bookings/outcome-reasons/{id} Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_createA | Define a bookable call: how long it runs, where it happens, and how it looks to the lead. Give it a schedule next — a booking type with no schedule offers no slots and will never appear in availability. Luca operation: POST /api/bookings/types Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_updateA | Update only the fields you send on one booking type. Sending Luca operation: PATCH /api/bookings/types/{id} Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_deleteA | Remove a booking type and get back the types that are left. Calls already booked against it are not cancelled. Luca operation: DELETE /api/bookings/types/{id} Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_schedule_replaceA | Replace a booking type's schedule outright. Send every rule and override you want to keep — anything left out is dropped, which is also how you clear a day. Read the current schedule first unless you mean to start over. Luca operation: PUT /api/bookings/types/{id}/schedule Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_attendees_addA | Add a standing attendee to one booking type, so they are invited to every call booked against it. Returns the full attendee list. Luca operation: POST /api/bookings/types/{id}/attendees Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_types_attendees_removeA | Remove a standing attendee from one booking type and get back the ones that are left. Calls already booked keep the invitees they were created with. Luca operation: DELETE /api/bookings/types/{id}/attendees/{attendeeId} Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_calendars_selectA | Add or update a calendar selection, either for conflict checks or as the destination new bookings are written to. The destination has to be writable: a read-only calendar returns 400, and a Google connection needing attention returns 409. Luca operation: PUT /api/bookings/calendars Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_bookings_calendars_removeA | Stop using a calendar for conflict checks or as the booking destination. The calendar itself is left alone in Google; only Luca's selection changes. Luca operation: DELETE /api/bookings/calendars Required scopes: bookings:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_needing_feedbackA | List calls whose time has passed that still need the coach to say what happened. The post-call work queue. Luca operation: GET /api/call-events Required scopes: call_events:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_getA | Read one call event: outcome, rating, summary, and CRM sync state. Luca operation: GET /api/call-events/{id} Required scopes: call_events:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_by_bookingA | Find the call event attached to a booking. A booking whose call hasn't happened yet returns 404, which is normal. Luca operation: GET /api/call-events/by-booking/{bookingId} Required scopes: call_events:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_by_leadA | Read a lead's full call history, oldest first, so a second or third call reads in sequence. Luca operation: GET /api/call-events/by-lead/{leadId} Required scopes: call_events:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_feedbackA | File the coach's report on how a call went. A completed or no_show outcome also records booking attendance, and a completed call queues its summary. Luca operation: POST /api/call-events/{id}/feedback Required scopes: call_events:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive when outcome is no_show (can start recovery messaging): has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_summary_generateA | Queue a fresh summary and return straight away. Poll the call event for the result. Luca operation: POST /api/call-events/{id}/summary Required scopes: call_events:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_summary_replaceA | Replace the generated summary with the coach's own wording and push it. A summary already in the CRM updates that same note. Luca operation: PUT /api/call-events/{id}/summary Required scopes: call_events:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_push_to_crmA | Send the current summary to the CRM now, without waiting out the review window. Re-pushing updates the existing note. Luca operation: POST /api/call-events/{id}/push-to-crm Required scopes: call_events:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_undo_outcomeA | Clear a mistaken attendance mark and put the call back in the queue. The window is 48 hours from when the outcome was set. Luca operation: POST /api/call-events/{id}/undo-outcome Required scopes: call_events:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_call_events_backfillA | Create a call event for a booking that predates automatic creation, then queue its summary. Safe to call twice: an existing call event comes back as is. Luca operation: POST /api/call-events/backfill/{bookingId} Required scopes: call_events:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_listA | List campaigns. Query supports limit, cursor, and status. Luca operation: GET /api/campaigns Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_getA | Get campaign draft and latest published version. Luca operation: GET /api/campaigns/{id} Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_createA | Create a campaign draft. Body requires name and may include graph. Luca operation: POST /api/campaigns Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_generateA | Generate a safe AI campaign plan without creating or publishing it. Luca operation: POST /api/campaigns/generate Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_draft_updateB | Autosave a campaign draft. Luca operation: PATCH /api/campaigns/{id}/draft Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_enrollments_listA | List campaign enrollments. Luca operation: GET /api/campaigns/{id}/enrollments Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_enrollA | Enroll a lead in the latest published campaign version. Triggers the live campaign's automation for that lead. Luca operation: POST /api/campaigns/{id}/enrollments Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_analyticsA | Read campaign attribution and performance analytics. Luca operation: GET /api/campaigns/{id}/analytics Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_provider_capabilitiesA | Evaluate provider capability blockers for a campaign draft. Luca operation: GET /api/campaigns/{id}/provider-capabilities Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_comment_events_listA | List matched, suppressed, blocked, and replayed comment automation events. Luca operation: GET /api/campaigns/comment-events Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_simulations_listA | List persisted campaign simulation runs. Luca operation: GET /api/campaigns/{id}/simulations Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_simulations_createA | Run a persisted dry-run simulation without sending messages. Luca operation: POST /api/campaigns/{id}/simulations Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_simulations_getA | Get a campaign simulation run with trace. Luca operation: GET /api/campaigns/{id}/simulations/{simulationId} Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_comment_simulation_suite_runA | Run the Instagram comment-to-DM simulation suite against a campaign. Any campaign that uses comment automation has to pass it before it can publish, so run this before reaching for publish. Luca operation: POST /api/campaigns/{id}/comment-simulation-suite Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_publishA | Freeze the draft as a new immutable version and point new enrollments at it. Published versions never change, and enrollments against a live campaign reach real leads. Publish is blocked when the target provider cannot do something the campaign needs, so read the provider capabilities first. Luca operation: POST /api/campaigns/{id}/publish Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_set_statusA | Pause, resume, or archive a campaign. A transition that does not make sense for the campaign's current state is rejected rather than forced through. Luca operation: POST /api/campaigns/{id}/status Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive when status is published (resuming sends): has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_duplicateA | Copy a campaign into a fresh unpublished draft and leave the original alone. Use it to change a live campaign without touching what is currently running. Luca operation: POST /api/campaigns/{id}/duplicate Required scopes: campaigns:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_versions_listA | List a campaign's published version history. Published versions cannot change, so this is the record of what actually ran rather than what the draft says today. Luca operation: GET /api/campaigns/{id}/versions Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_campaigns_enrollments_timelineA | Read every step one enrollment has been through: what got sent, when, and how the lead responded. Luca operation: GET /api/campaigns/{id}/enrollments/{enrollmentId}/timeline Required scopes: campaigns:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_listA | List broadcasts. Query supports limit, cursor, and status. Luca operation: GET /api/broadcasts Required scopes: broadcasts:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_getA | Get broadcast detail. Luca operation: GET /api/broadcasts/{id} Required scopes: broadcasts:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_createA | Create a broadcast draft. Body requires campaignId and name. Luca operation: POST /api/broadcasts Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_previewA | Refresh broadcast recipient and sample-message preview. Luca operation: POST /api/broadcasts/{id}/preview Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_approveA | Approve a safe broadcast draft and snapshot recipients. Luca operation: POST /api/broadcasts/{id}/approve Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_launchA | Launch an approved broadcast. Sends messages to live leads. Luca operation: POST /api/broadcasts/{id}/launch Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_pauseA | Pause a running broadcast with an optional operator reason. Luca operation: POST /api/broadcasts/{id}/pause Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_retryA | Retry failed broadcast recipients after operator review. Re-sends messages to leads. Luca operation: POST /api/broadcasts/{id}/retry Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_broadcasts_cancelA | Cancel a draft, approved, running, paused, or failed broadcast. Luca operation: POST /api/broadcasts/{id}/cancel Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_subscriptions_listA | List outbound webhook subscriptions. Luca operation: GET /api/webhook-subscriptions Required scopes: webhooks:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_subscriptions_createA | Create an outbound webhook subscription. Luca operation: POST /api/webhook-subscriptions Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Does not require idempotency. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_subscriptions_updateA | Update an outbound webhook subscription. Luca operation: PATCH /api/webhook-subscriptions/{id} Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_subscriptions_deleteA | Delete an outbound webhook subscription. Terminal, idempotent soft delete: delivery history stays queryable and the subscription can never be resurrected. Luca operation: DELETE /api/webhook-subscriptions/{id} Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_test_deliveryA | Queue a canonical test webhook event. Luca operation: POST /api/webhook-subscriptions/test-delivery Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_deliveries_listA | List webhook deliveries. Luca operation: GET /api/webhook-subscriptions/deliveries Required scopes: webhooks:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_signature_guideA | Describe Luca webhook HMAC verification. Luca operation: GET /api/webhook-subscriptions/signature-guide Required scopes: webhooks:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_deliveries_replayA | Replay one webhook delivery without changing the event id. Re-triggers the subscriber's downstream automation. Luca operation: POST /api/webhook-subscriptions/deliveries/{deliveryId}/replay Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_events_listA | List canonical webhook events of one type, newest first, in the delivered payload fields. Falls back to a documented sample payload when the workspace has none yet. Luca operation: GET /api/webhook-events Required scopes: webhooks:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_events_replayA | Replay one canonical webhook event. Re-triggers subscribers' downstream automations. Luca operation: POST /api/webhook-subscriptions/events/{eventId}/replay Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_webhooks_events_bulk_replayA | Bulk replay webhook events by type and time range. Re-triggers downstream automations at scale. Luca operation: POST /api/webhook-subscriptions/events/replay Required scopes: webhooks:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_connectors_listA | List Zapier, Make, and CRM provider capabilities. Luca operation: GET /api/integrations/connectors Required scopes: integrations:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_oauth_urlA | Create a CRM provider OAuth URL and store its one-time state. Luca operation: GET /api/integrations/crm/providers/{provider}/oauth-url Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_connections_listA | List CRM connections. Luca operation: GET /api/integrations/crm/connections Required scopes: integrations:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_connections_createA | Create or update a workspace-scoped CRM connection. Luca operation: POST /api/integrations/crm/connections Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_connections_schemaA | Discover CRM provider schema. Luca operation: GET /api/integrations/crm/connections/{id}/schema Required scopes: integrations:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_connections_healthA | Probe CRM provider health. Luca operation: POST /api/integrations/crm/connections/{id}/health Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_connections_webhooks_setupA | Configure CRM provider webhook status. Luca operation: POST /api/integrations/crm/connections/{id}/webhooks/setup Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_mappings_suggestA | Suggest CRM field mappings. Luca operation: POST /api/integrations/crm/connections/{id}/mappings/suggest Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_mappings_confirmB | Confirm CRM field mappings. Luca operation: PUT /api/integrations/crm/connections/{id}/mappings Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_sync_runs_listA | List CRM sync history. Luca operation: GET /api/integrations/crm/connections/{id}/sync-runs Required scopes: integrations:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_crm_sync_runs_createA | Create a CRM dry-run or live sync run. Luca operation: POST /api/integrations/crm/connections/{id}/sync-runs Required scopes: integrations:write Required OAuth scope: luca:full; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_integrations_events_listA | List integration event log. Luca operation: GET /api/integrations/events Required scopes: integrations:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_voice_profileA | Read a non-verbatim voice-fingerprint summary: version, example count, and last refresh. No corpus text. Luca operation: GET /api/voice/profile Required scopes: voice:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_voice_corpusA | List the coach's voice corpus: the writing every draft is matched against. Entry id, source, channel, and age always come back; the writing itself is blanked for a redacted-tier key. Luca operation: GET /api/voice Required scopes: voice:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_profileA | Read the coach's account record: name, timezone, business hours, and tone slider. Use it to know when the coach is reachable and how formal they want to sound. Luca operation: GET /api/coaches/me Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_nicheA | Read the coach's canonical niche, the cohort key their benchmarks are compared against. Luca operation: GET /api/coaches/niche Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_niche_profileA | Read the coach's offer, audience, price range, promised outcomes, disqualifiers, and FAQs. This is the context that decides whether a lead is a fit. Luca operation: GET /api/coaches/niche-profile Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_objection_playbookA | Read how the coach wants each objection type handled — price, timing, trust, fit — before drafting a reply to one. Luca operation: GET /api/coaches/objection-playbook Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_post_call_settingsA | Read the coach's post-call preferences: what gets summarized, what gets pushed to the CRM, and what the coach fills in themselves. Luca operation: GET /api/coaches/post-call-settings Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_post_call_crm_mappingA | Read which CRM field each post-call value writes to. Check this before a CRM push to know what will land where. Luca operation: GET /api/coaches/post-call-crm-mapping Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_post_call_deal_syncA | Read the CRM pipeline and the stage each call outcome moves a deal to. Luca operation: GET /api/coaches/post-call-deal-sync Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_coach_audit_logA | Read the coach-visible audit trail, newest first, filterable by actor type, action, action prefix, or target. It is the one read that spans every domain, so use it to check what a previous run actually did instead of replaying each list route. Luca operation: GET /api/audit-log Required scopes: coach:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_usage_spendA | Read model spend for the period, rolled up by agent and by day, against the plan's cap. Luca operation: GET /api/usage Required scopes: usage:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_usage_messagesA | Read the message pool: used, allowed, and remaining for the period. Check this before starting work that drafts in bulk. Luca operation: GET /api/usage/messages Required scopes: usage:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_safety_accountsA | Read each connected channel account's safety status and 24-hour send count. Luca operation: GET /api/account-safety Required scopes: safety:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_channels_listA | List the coach's current channel accounts, one per provider account, with each one's status, health, and what the composer can send through it. Connecting, pausing, and repairing an account stay in the Luca app. Luca operation: GET /api/channels Required scopes: channels:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_channels_catalogA | List every channel Luca supports and whether it can be connected yet. Availability is per channel, not per coach. Luca operation: GET /api/channels/catalog Required scopes: channels:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_channels_featuresA | List what each provider supports, from sending media to interactive replies, and what still blocks a feature: a permission, a webhook field, or a provider approval. Check this before telling the coach a channel can do something. Luca operation: GET /api/channels/features Required scopes: channels:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_channels_getA | Read one channel account: status, health, cleanup state after a disconnect, and the actions the coach can take on it. Older rows stay readable by ID. Luca operation: GET /api/channels/{id} Required scopes: channels:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_reports_scorecardA | Read the sales scorecard for a window: calls booked and completed, show rate, won and lost, draft approvals, and hours saved. Luca operation: GET /api/reports/scorecard Required scopes: reports:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_reports_morningA | Structured 24h review-queue digest (items + counts) for the coach. No model call; summarize client-side. Luca operation: GET /api/reports/morning Required scopes: reports:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_insights_unread_countA | How many insights the coach has not read yet. Cheap enough to poll before pulling the whole feed. Luca operation: GET /api/insights/unread-count Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_insights_mark_readA | Mark one insight read, so it stops coming back at the top of the feed. Luca operation: POST /api/insights/{id}/read Required scopes: insights:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_insights_dismissA | Dismiss one insight the coach does not want to act on. Use this rather than leaving it unread forever. Luca operation: POST /api/insights/{id}/dismiss Required scopes: insights:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_insights_mark_actionedA | Record that the thing an insight asked for was actually done. Use it after doing the work, not instead of it. Luca operation: POST /api/insights/{id}/action Required scopes: insights:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_insights_settings_getA | Read which insight alerts reach the coach and how. The row is created with defaults on the first read, so this never 404s. Check it before concluding a quiet feed means nothing is happening — it may just be muted. Luca operation: GET /api/insights/settings Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_insights_settings_updateA | Merge-patch the coach's alert-delivery settings. Send only what you are changing; anything left out keeps its current value. Luca operation: PUT /api/insights/settings Required scopes: insights:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_learning_panelA | Read which of the three profile questions Luca still owes an answer to, with suggested answers inferred from the coach's own words. The worked example pair is blanked for a redacted-tier key. Luca operation: GET /api/teach-luca Required scopes: learning:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_learning_framework_performanceA | Win rate by objection bucket for the sales framework the coach has configured right now, over a rolling window. These numbers are correlational — read them as a signal, not as proof a framework caused the result. Luca operation: GET /api/framework-performance Required scopes: learning:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_learning_ab_tests_listA | List the coach's A/B tests, newest first, optionally filtered by status. Variant config comes back as stored, since its shape depends on what the test compares. Creating, starting, stopping, and adopting a test stay in the Luca app. Luca operation: GET /api/ab-tests Required scopes: learning:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_learning_ab_tests_getA | Read one A/B test with its per-variant numbers: how many leads each arm saw, and how each is doing against the success metric. Small samples swing widely, so say how many leads each arm has before calling a winner. Luca operation: GET /api/ab-tests/{id} Required scopes: learning:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_learning_proposals_listA | List what the coach's tests have learned and are proposing they act on, newest first. Dismissed proposals are left out unless you ask for them. Luca operation: GET /api/learning-proposals Required scopes: learning:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_learning_proposals_dismissA | Dismiss one learning proposal so it drops out of the default list. Use it when the coach has decided against the change, not when you have simply read it. Luca operation: POST /api/learning-proposals/{id}/dismiss Required scopes: learning:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_knowledge_suggestionsA | List profile changes proposed from the coach's own knowledge sources, each with the excerpt it was drawn from and the value it would replace. Luca operation: GET /api/knowledge/suggestions Required scopes: knowledge:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_knowledge_approve_suggestionA | Approve a profile suggestion and write it into the coach's profile. Every later draft reads the result, so check the excerpt supports the change before approving. Luca operation: POST /api/knowledge/suggestions/{id}/approve Required scopes: knowledge:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_knowledge_reject_suggestionA | Reject a profile suggestion so it stops being offered. The profile is left as it stands. Luca operation: POST /api/knowledge/suggestions/{id}/reject Required scopes: knowledge:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_knowledge_sources_listA | List the content sources the coach has connected — Notion, Google Docs, a website, an Instagram bio — with the sync state of each one. Connecting a new source is app-only; this lists what is already there. Luca operation: GET /api/knowledge/sources Required scopes: knowledge:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_knowledge_sources_syncA | Queue a re-read of one knowledge source now rather than waiting for its next scheduled sync. It returns as soon as the job is queued, so any new suggestions appear on a later read. Luca operation: POST /api/knowledge/sources/{id}/sync Required scopes: knowledge:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_knowledge_sources_disconnectA | Delete a knowledge source. Its pending suggestions go with it; values the coach already approved stay in the profile, because approving copies them there. Luca operation: DELETE /api/knowledge/sources/{id} Required scopes: knowledge:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_memory_listA | List what Luca remembers, filtered by lead, scope, source, trust level, or free text. The fact, the reasoning, and the quoted evidence are blanked for a redacted-tier key; trust level, lead, and dates always come back. Luca operation: GET /api/memory Required scopes: memory:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_memory_updateA | Correct one memory: edit the fact, flag it disputed when it turns out to be wrong, restore an archived one, or make it win over a conflicting memory. Luca operation: PATCH /api/memory/{id} Required scopes: memory:write Required OAuth scope: luca:draft; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_memory_set_archivedA | Archive or restore several memories at once. Archiving stops Luca using a fact while the record and its provenance survive, so it is always reversible. Luca operation: POST /api/memory/bulk Required scopes: memory:write Required OAuth scope: luca:draft; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_cadences_rescue_startA | Enroll silent leads into the multi-day rescue cadence. Starts outbound touches to real leads. Luca operation: POST /api/cadences/rescue Required scopes: cadences:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_cadences_pauseA | Pause (cancel) a lead's running rescue cadence with an optional reason. Luca operation: POST /api/leads/{id}/cadence/pause Required scopes: cadences:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_funnelA | Pipeline funnel stage counts with period and channel filters. Returns counts and conversion rates for each funnel stage plus period-over-period deltas. Luca operation: GET /api/analytics/funnel Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_revenueA | Revenue attribution and plan ROI for a period. Returns total revenue, ROI, and a per-channel revenue breakdown. Luca operation: GET /api/analytics/revenue Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_speed_impactA | Fast-vs-slow first-reply booking-rate impact for a period. Returns fast- and slow-reply conversion rates, a lost-opportunity estimate, and the peak performance reply window. Luca operation: GET /api/analytics/speed-impact Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_forecastA | Point-in-time pipeline revenue forecast with on-track, optimistic, and conservative scenarios based on pipeline stage probabilities and historical conversion rates. Luca operation: GET /api/analytics/forecast Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_call_intelligenceA | Post-call intelligence for a period: show rate, close rate, average rating and rating distribution, call-to-close lag, repeat-call cohort, day-of-week and call-sequence show rates, and surprise patterns, derived from post-call events and coach-recorded outcomes. Luca operation: GET /api/analytics/call-intelligence Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_call_intelligence_callsA | Most recent completed calls with a generated summary, newest first: the coach-facing summary, attendance outcome, rating, and lead name. Luca operation: GET /api/analytics/call-intelligence/calls Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_ghosted_leadsA | Summarize leads who stopped replying during a period, including their count, follow-up recovery rate, estimated lost revenue, and common reasons conversations stalled. This is an aggregate report, not a list of individual leads. Luca operation: GET /api/analytics/ghosted-leads Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_trust_scoreA | Draft approval, edit, and rejection rates plus the auto-send gate flag for a period. Luca operation: GET /api/analytics/trust-score Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_lead_scoreA | Predictive booking-likelihood score (0-100) for one lead from the coach's trained bucket-rate model, with a confidence tier and the top contributing features. Honest about insufficient data: an under-trained model returns a null score and low confidence instead of a fabricated number. Luca operation: GET /api/analytics/lead-score/{leadId} Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_loss_reasonsA | Category breakdown of automatic 'why you lost' analyses for a period: count and estimated lost revenue per category (price objection, ghosted after a call-to-action, competitor, slow reply, bad fit, other), derived from a per-lead loss analysis generated when a lead goes silent or lost. Luca operation: GET /api/analytics/loss-reasons Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_content_attributionA | Per-content rollup (leads touched, qualified, booked, revenue) of attributed touches for a period. Content is attributed automatically from an Instagram comment or Story reply that carries a real media id, or tagged manually; an honest empty list means no content is attributed yet, not zero performance. Luca operation: GET /api/analytics/content-attribution Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_content_performanceA | Per-post rollup (reach, engagement rate, likes/comments/saves/shares, attributed leads/bookings/revenue) for each Instagram post, reel, story, or carousel over a period. Insight fields stay null until the coach's account grants Instagram insights access — read that as not connected yet, not zero engagement. Luca operation: GET /api/analytics/content-performance Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_topic_performanceA | Weekly rollup by normalized content topic (post count, average engagement rate, attributed leads/bookings/revenue per theme). Defaults to the most recently computed week when weekStart is omitted; an empty items list is the honest, expected state until content topics are extracted, not zero performance. Luca operation: GET /api/analytics/topic-performance Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_benchmarksA | This coach's own cross-coach benchmark percentiles (e.g. 'top 15% for response speed among fitness coaches'), never another coach's data. Luca operation: GET /api/analytics/benchmarks Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_insightsA | The coach's proactive-insights feed (metric drops/spikes, opportunities, risks, milestones) surfaced by the daily insight-detection cron, newest first. Optionally filter to one status via the status query param (e.g. unread). An empty items list is the honest, expected state for a coach nothing has been flagged for yet — never a fabricated alert. Luca operation: GET /api/insights Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_trendsA | The coach's weekly metrics as a trend series (leads, qualified, booked, revenue, and rates week over week) for charting direction of travel. An empty series is the honest, expected state until enough weeks of history accrue — never fabricated points. Luca operation: GET /api/analytics/trends Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_recommendationsA | The coach's active prescriptive recommendations for a week (what to change and why), generated weekly from detected insights and deduped by title. An empty list is the honest, expected state when nothing is recommended for the window — never a fabricated action. Luca operation: GET /api/analytics/recommendations Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_benchmark_consentA | The coach's cross-coach benchmark opt-in state (whether this workspace contributes to and sees anonymized niche cohort percentiles). Read-only; the opt-in is changed from the app, not through this key surface. Luca operation: GET /api/analytics/benchmark-consent Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_learning_insightsA | Read-only rollup of the agent-improvement signals mined from post-call feedback for a period: total/applied/pending signal counts, a per-type breakdown (qualification, objection handling, lead quality, general), and recent example notes. An empty rollup is the honest, expected state until the coach submits call feedback — never fabricated learning. Luca operation: GET /api/analytics/learning-insights Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_crm_sync_healthA | Aggregate CRM-sync health for the coach's post-call summaries: counts of synced, pending, local-only, failed, and permanently-failed pushes. All zeros is the honest, expected state for a coach with no synced summaries yet — never a fabricated status. Luca operation: GET /api/analytics/crm-sync-health Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_objectionsA | Objection-bucket rollup over the review queue's qualifier signals for a period (price, timing, trust, fit, authority, smokescreen): per-bucket occurrence count, distinct leads, handled rate, wins, and up to three of the most frequent verbatim lead quotes. Filter by channel. An empty bucket list is the honest, expected state until objections are raised — never fabricated. Luca operation: GET /api/analytics/objections Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_analytics_objection_drilldownA | Per-conversation drilldown for one objection bucket: one row per matching conversation with the lead's display name, the verbatim objection quote, whether the draft was sent without an edit, and the lead's most recent call outcome. Bounded by a limit with a hasMore truncation flag; an empty list is the honest, expected state for a bucket with no conversations in the window. Luca operation: GET /api/analytics/objections/{type} Required scopes: analytics:read Required OAuth scope: luca:read; data sensitivity: full_content Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment. |
| luca_triage_inboxA | Return the coach's prioritized reply queue: pending drafts with lead context and, for the top items, why Luca drafted what it drafted. With a redacted OAuth grant, lead names and draft text can be blanked; describe them as unavailable rather than empty. Start every review session here, then act on an item with luca_approve_and_send, luca_draft_reply, or luca_review_queue_reject. Example: call with { explainTop: 3 } to get the queue plus explanations for the three most urgent drafts. |
| luca_morning_reportA | Return the coach's structured last-24h review-queue digest: queued drafts with status and confidence, plus counts by status. No model call — summarize it client-side. Example: call with {} at the start of the day. |
| luca_find_leadsA | Search the coach's leads by free-text query and optional channel. Use this to locate a lead before drafting, booking, or flagging. Example: call with { query: "maria instagram" } to find Maria's Instagram lead. |
| luca_flag_for_humanA | Add a note to a lead, tagged [needs-human], that the coach sees on the lead's timeline. This is an ordinary note with a prefix — it does not route, alert, or reprioritize anything. Use when a conversation needs judgment an agent should not exercise (payment claims, distress, legal), and tell the coach directly if it is urgent. Example: call with { leadId, reason: "lead mentioned a refund dispute" }. |
| luca_draft_replyA | Draft a voice-matched reply for a lead on demand and queue it for review — the middle step of the reply loop (triage → draft → approve). Optional guidance steers tone or content. Nothing is sent; approve it with luca_approve_and_send. Example: call with { leadId, guidance: "keep it short and warm" }. |
| luca_approve_and_sendA | Approve a pending review-queue draft and dispatch it through the lead's channel. THIS SENDS A REAL MESSAGE TO A REAL PERSON — only call it after a human has reviewed and intends to send. Pass confirm: true to proceed. Optional finalBody replaces the draft text before sending. Example: { reviewQueueId, confirm: true }. |
| luca_book_callA | Record a booked call for a lead in Luca. This does not create an event on the coach's calendar or send the lead an invite: book the call with the provider too, or have the lead book through the coach's booking link. Checks availability first, against the schedule of the booking type when bookingTypeId is given, and returns the open slots instead of booking when the requested one is taken. A call with an idempotencyKey skips that check so a retry gets the original result back. Booking moves the lead to booked and notifies the coach's webhook subscribers, so pass confirm: true only after the coach approves this exact slot. Example: call with { leadId, slotAt: "2026-07-14T15:00:00Z", confirm: true } after the lead agreed to a time. |
| luca_reschedule_callA | Move a booked call to a new time and hand back a fresh reschedule link for the lead. Checks the new slot is open first, against the schedule of its booking type when it has one, and returns the open slots instead of moving the call when it is taken. A call with an idempotencyKey skips that check so a retry gets the original result back. A manual booking moves in Luca only. A Cal.com or Google Calendar booking moves on that calendar too. A Calendly, GoHighLevel or iClosed booking is refused so the coach can move it with the provider, and so is a provider booking with no calendar event, such as one from luca_book_call. Moving the call re-arms the lead's reminder for the new time, so pass confirm: true only after the coach approves the move. Example: call with { bookingId, slotAt: "2026-07-16T15:00:00Z", confirm: true } after the lead asked to push the call. No message about the move is sent: send the lead the link yourself, or draft the message through the review queue. |
| luca_post_call_queueA | Return everything waiting on the coach after a call: calls that still need a report on how they went, and attended calls with no revenue outcome recorded. The two halves are tracked separately by the API, so a call can sit on one list and not the other. Close an item with luca_close_call_loop. Example: call with {} after a day of calls. |
| luca_close_call_loopA | File what happened on a call and what it was worth, in one call. Reports attendance on the call event (completed, no_show, rescheduled, or cancelled) and, when an outcome is given, records the booking outcome: won with an amount, lost with a reason id from luca_bookings_outcome_reasons_list, or open with the next follow-up. This tool sends no message to the lead itself, but the records it files start work in the API. Reporting a no_show can start no-show recovery, which schedules a message to the lead when the booking type has recovery on. A completed call queues its summary, which can later sync to the connected CRM. A won or lost outcome queues a CRM deal-stage update, and lost also moves the lead to lost. Pass confirm: true before reporting a no_show or recording a won or lost outcome. Example: { bookingId, attendance: "completed", outcome: "won", amountMinor: 250000, currency: "USD", confirm: true }. |
| luca_rescue_silent_leadsA | Enroll one or more silent leads into the multi-day rescue cadence. THIS STARTS OUTBOUND TOUCHES to real leads over the coming days — pass confirm: true to proceed. cadenceTemplate is light | standard | aggressive (default standard). Example: { leadIds: ["..."], cadenceTemplate: "standard", confirm: true }. |
| luca_pause_cadenceB | Cancel a lead's running rescue cadence so no further touches are sent. Safe to call twice (a no-op once cancelled). Example: call with { leadId, reason: "lead replied elsewhere" }. |
| luca_analytics_rollupA | Roll up performance across the coach's campaigns (per-campaign analytics for up to 5 recent campaigns) and recent broadcasts. When one half fails to load, the other still comes back and failedSections names the one that is missing. Example: call with {} for the default rollup, or { campaignLimit: 3 }. |
| luca_analytics_magic_mondayA | Return the current week's business report (called Magic Monday in Luca): pipeline funnel, revenue and ROI, response-speed impact, a point-in-time revenue forecast, and call intelligence (show/close rates). Composes five analytics reads into a single call. Example: call with {} for the weekly report. |
| luca_analytics_deep_diveA | Answer a specific business question by composing all seven analytics reads in one call: pipeline funnel, revenue and ROI, response-speed impact, a point-in-time revenue forecast, call intelligence (show/close rates), ghosted-lead recovery, and coach trust/auto-send status. Broader than luca_analytics_magic_monday (which is the fixed weekly report); use this when the coach asks a specific question that needs cross-referencing several of these numbers together. Example: call with {question: "why did close rate drop this month?", period: "this_month"}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| luca-api-planner | Plan a Luca API workflow using the MCP tools, scopes, and idempotency rules. |
| luca-morning-report | Summarize what needs attention: recent conversations, the review queue, upcoming bookings, and active-campaign performance. |
| luca-triage-queue | Walk the review queue and recommend an action for each pending item, with the reasoning. |
| luca-draft-reply | Gather a lead's context and propose a voice-matched reply for the coach to review. |
| luca-close-the-call-loop | Walk the calls that still need a report or a revenue outcome, and propose what to file for each. |
| luca-weekly-review | Read the week's numbers, name what moved and what did not, and propose the changes worth making next week. |
| luca-rescue-silent-leads | Find the leads who went quiet, pull the context behind each one, and propose who is worth a rescue touch. |
| luca-plan-campaign | Draft a campaign from the coach's goal, dry-run it, and check the channel can run it before anything goes live. |
| luca-plan-broadcast | Draft a one-off broadcast, preview who it reaches and what they get, and hold it for the coach to approve and launch. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| luca-public-operations | MCP operation manifest derived from Luca's public API key policy. |
| luca-queue-today | The current pending review queue: drafts awaiting the coach's approval. Reuses the pipeline's persisted triage; does not re-run it. |
| luca-voice-profile | A non-verbatim summary of the coach's voice fingerprint: version, example count, and last refresh. No corpus text. |
TDQS
Scored across 203 tools
There are effectively two overlapping layers: a granular raw-API surface (luca_review_queue_approve, luca_leads_draft, luca_cadences_pause, luca_bookings_outcome_record, luca_reports_morning) and an agent-friendly wrapper layer that re-implements the same actions (luca_approve_and_send, luca_draft_reply, luca_pause_cadence, luca_close_call_loop, luca_morning_report). An agent faces near-duplicate pairs like luca_leads_draft vs luca_draft_reply, luca_pause_cadence vs luca_cadences_pause, and luca_review_queue_list vs luca_triage_inbox with no clear rule for which to pick. Many individual domains (bookings, campaigns, review queue) also have adjacent tools whose boundaries blur.
The bulk of tools follow a clean luca_<resource>_<verb> pattern (luca_leads_list, luca_bookings_types_create, luca_campaigns_publish), but the wrapper/curated set breaks it with verb-first or noun-phrase names (luca_draft_reply, luca_approve_and_send, luca_book_call, luca_triage_inbox, luca_analytics_magic_monday). Everything is snake_case and readable, but the mixed verb styles across the two layers reduce predictability.
203 tools is an extreme mismatch for any single MCP surface, well beyond the 25+ range that already signals overload. The count is inflated by two parallel layers exposing the same operations plus many thin read-only analytics endpoints, making the set hard to navigate and select from.
Coverage is genuinely broad: leads, conversations, bookings (types, schedules, providers, outcomes), campaigns, broadcasts, webhooks, integrations, analytics, voice, memory, knowledge, and learning all have read plus create/update/delete operations. A few lifecycle actions are intentionally app-only (connecting channels, creating knowledge sources, CRM opt-in), which are reasonable gaps an agent can work around.