io.github.setluca/luca-mcp
NPM · @SETLUCA/MCP · 2 COMPONENTS
SetLuca DM sales from any MCP client: 208 API tools and 15 task tools for leads, replies, calls.
Available components
Last scanned (12 hours ago)
Scores higher than 93% of npm servers
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 4 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to setluca/luca-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 11 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 39879 tokens (~176/item across 226 items; 223 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management62
- Stability check failed: the tool surface changed between 0.2.1 and 0.6.0: 73 tool removals, 3 breaking changes, 98 additions. See how to fix → Fail
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 74% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety98
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 13 of 14 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "luca_conversations_send_status" implies "send" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 225 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Oct 26 +26
- Malware scan: unverified → pass ▲ security
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 1.00 ▲ functional
- 24 Oct 26 −12
- Known CVEs: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Dependency health: 1.00 → unverified ▼ functional
- Package version: 0.5.2 → 0.6.0 functional
- 23 Oct 26 −4
- Malware scan: pass → unverified ▼ security
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 1.00 ▲ functional
- Package version: 0.5.1 → 0.5.2 functional
- 22 Oct 26 −6
- Known CVEs: pass → unverified ▼ security
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Source repository: fail → pass ▲ security
- Schema quality: 35121 → 39994 ▼ functional
- Schema quality: 35121 → 40034 ▼ functional
- Dependency health: 1.00 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Destructive annotations: 13 of 14 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "luca_conversations_send_status" implies "send" and declares readOnlyHint instead, contradicting what its own name says it does. functional
- Package version: 0.4.0 → 0.5.1 functional
- Package version: 0.4.0 → 0.5.0 functional
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63.
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 56.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 46 to 50.
- 14 Oct 26 +37
- Stability: unverified → fail ▼ security
- Injection markers: unverified → pass ▲ security
- Judged manipulation: unverified → pass ▲ security
- Schema quality: 151 → 170 ▼ functional
- Tool coverage: 92% → 100% ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Package version: 0.2.1 → 0.4.0 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/@setluca/mcp@0.6.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | setluca/luca-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/setluca/luca-mcp/.github/workflows/publish-mcp.yml@refs/tags/mcp-v0.6.0 |
| Rekor log index | 3437389699 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:8a88197a6a88d369331b3b23d0112097d6bd678e1a3823ca7a6158f079d41f81855c75cd0439b19d785eee85d3c80035ec73726dbd8d26231deecbc50 |
Background: How many MCP packages publish verified provenance →
Dependencies 4 packages
| Packages resolved | 4 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
luca_campaigns_set_status Pause, resume, or archive a campaign ~294
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
luca_campaigns_simulations_create Simulate a campaign ~168
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | – |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_campaigns_simulations_get Get a campaign simulation ~125
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| simulationId | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_campaigns_simulations_list List a campaign's simulations ~161
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| maxPages | integer | – | Max pages the server auto-fetches and merges (default 10, hard cap 50). If more remain, the result is marked truncated with a nextCursor to continue. |
| query | object | – | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_campaigns_versions_list List campaign versions ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_capabilities_get What this workspace supports ~129
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_channels_catalog List available channels ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_channels_features List channel features ~135
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_channels_get Get a channel account ~131
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_channels_list List channel accounts ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_channels_set_ai_dm_auto_send Turn auto-send on or off for a channel ~348
Turn Luca's DM auto-send on or off for one channel account. Off puts every Luca draft on that account in the review queue. On lets drafts that pass Luca's safety checks send without review, and also turns on the workspace switch, so every other account with its own switch on starts sending too. Campaign sends follow their own policy. WhatsApp and disconnected accounts answer 404. Luca operation: PATCH /api/channels/{id}/auto-send Required scopes: channels:write Required OAuth scope: luca:full; data sensitivity: redacted Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive when enabled is true (lets Luca's replies reach leads without review): 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_close_call_loop Close the loop on a call ~608
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 }.
| Name | Type | Req | Description |
|---|---|---|---|
| amountMinor | integer | – | Deal value in minor units (cents) when outcome is won. |
| attendance | string | yes | What happened to the call itself. |
| bookingId | string | yes | The booking whose call just happened. |
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| currency | string | – | ISO-4217 currency for amountMinor, uppercase. |
| expectedVersion | integer | – | The outcome version you read, when correcting an earlier outcome. A stale version returns 409 with the current one. |
| followUpTimezone | string | – | Required when outcome is open: IANA timezone the follow-up is scheduled in. |
| idempotencyKey | string | – | Reuse the same key when retrying this exact report. Both writes are scoped by route, so one key covers the pair. |
| lossReasonDefinitionId | string | – | Required when outcome is lost: a reason id from luca_bookings_outcome_reasons_list. |
| nextFollowUpAt | string | – | Required when outcome is open: ISO-8601 follow-up time. |
| notes | string | – | The coach's notes on the call, stored on the call event. |
| outcome | string | – | The revenue outcome. Leave it off to report attendance only and record the money later. |
| outcomeNote | string | – | Note stored on the revenue outcome, separate from notes. |
| rating | integer | – | The coach's 1-5 rating of the call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_coach_audit_log Read the audit log ~196
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.
| Name | Type | Req | Description |
|---|---|---|---|
| maxPages | integer | – | Max pages the server auto-fetches and merges (default 10, hard cap 50). If more remain, the result is marked truncated with a nextCursor to continue. |
| query | object | – | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_coach_niche Read the coach's niche ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_coach_niche_profile Read the coach's niche profile ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
luca_coach_objection_playbook Read the coach's objection playbook ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
luca_coach_post_call_crm_mapping Read the post-call CRM mapping ~125
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_coach_post_call_deal_sync Read the post-call deal sync settings ~115
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_coach_post_call_settings Read the post-call settings ~123
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_coach_profile Read the coach's profile ~127
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_conversations_get Get a conversation ~109
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_conversations_list List conversations ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| maxPages | integer | – | Max pages the server auto-fetches and merges (default 10, hard cap 50). If more remain, the result is marked truncated with a nextCursor to continue. |
| query | object | – | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_conversations_media_retry Retry a voice-note transcription ~218
Queue another transcription attempt for a voice note in this conversation. Only re-transcribes; never drafts or sends. A refusal says why: a retry is already running, the limit is reached, or the audio is gone. Luca operation: POST /api/conversations/{id}/messages/{messageId}/media/{mediaId}/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. Use workspaceId or workspaceSlug to override the default workspace configured by environment.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| mediaId | string | yes | – |
| messageId | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_conversations_messages Read a conversation's messages ~171
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| maxPages | integer | – | Max pages the server auto-fetches and merges (default 10, hard cap 50). If more remain, the result is marked truncated with a nextCursor to continue. |
| query | object | – | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_conversations_partial_send_retry Retry unsent message parts ~282
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| messageId | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_conversations_reply_failure_dismiss Dismiss a failed reply ~152
Close a failed reply the coach has given up on, so it leaves the thread on every device. Sends nothing. Dismissing twice changes nothing. Luca operation: POST /api/conversations/{id}/reply-failures/{failureId}/dismiss Required scopes: conversations:write Required OAuth scope: luca:queue_ops; data sensitivity: redacted Does not require idempotency. Use workspaceId or workspaceSlug to override the default workspace configured by environment.
| Name | Type | Req | Description |
|---|---|---|---|
| failureId | string | yes | – |
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_conversations_reply_failure_retry Resend a failed reply ~269
Send a reply the coach wrote that failed to go out, under the key it first went out with, so the lead never gets it twice. Only a failure that is safe to repeat can be retried. Sends a real message. Luca operation: POST /api/conversations/{id}/reply-failures/{failureId}/retry Required scopes: conversations:write Required OAuth scope: luca:queue_ops; 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| failureId | string | yes | – |
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_conversations_send Send a message to a lead ~314
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_conversations_send_status Check whether a reply was accepted ~168
Look up a manual reply by the idempotency key it was sent with, to learn whether the API accepted it for sending before you send it again. accepted means it is queued to go out, not that it was delivered; not_found means no accepted send exists under that key. Luca operation: GET /api/conversations/{id}/send-status Required scopes: conversations: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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| query | object | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
luca_draft_reply Draft a reply for a lead ~178
Draft a reply for a lead, written the way the coach writes, and put it in the SetLuca review queue, where it waits for the coach to approve it. Drafting again replaces this lead's earlier unapproved draft from this tool. It never sends, whatever the channel's auto-send setting. Optional guidance steers tone or content. Example: call with { leadId, guidance: "keep it short and warm" }.
| Name | Type | Req | Description |
|---|---|---|---|
| guidance | string | – | Optional steer for tone or content of the draft. |
| idempotencyKey | string | – | Reuse the same key when retrying this exact draft. |
| leadId | string | yes | The lead to draft a reply for. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_find_leads Find leads ~125
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | – | Optional channel filter. |
| limit | integer | – | Max results (default 10). |
| query | string | yes | Free-text search: name, handle, or keyword. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_flag_for_human Flag a lead for human attention ~182
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" }.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotencyKey | string | – | Reuse the same key when retrying this exact flag. |
| leadId | string | yes | The lead to flag. |
| reason | string | yes | Why a human should look — shown to the coach verbatim. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_insights_dismiss Dismiss an insight ~170
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_insights_mark_actioned Mark an insight actioned ~173
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_insights_mark_read Mark an insight read ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_insights_settings_get Read alert delivery settings ~139
Read which insight alerts reach the coach and how. Before the coach changes anything this returns the defaults, so it never 404s. Check it before concluding a quiet feed means nothing is happening, since alerts may 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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_insights_settings_update Update alert delivery settings ~171
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_insights_unread_count Count unread insights ~117
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_connectors_list List available connectors ~107
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_connections_create Create a CRM connection ~160
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_connections_disconnect Disconnect a CRM ~298
Disable a CRM connection and clear the credentials Luca holds, which stops every sync with that CRM until the coach connects it again. Saved mappings and event history stay. It does not revoke access on the CRM's side. Luca operation: POST /api/integrations/crm/connections/{id}/disconnect 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_connections_health Check a CRM connection's health ~159
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_connections_list List CRM connections ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_connections_schema Read a CRM's field schema ~115
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_integrations_crm_connections_webhooks_setup Set up a CRM's webhooks ~272
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | – |
| confirm | boolean | – | This tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events… |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_mappings_confirm Confirm CRM field mappings ~168
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_mappings_suggest Suggest CRM field mappings ~164
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_oauth_url Start a CRM connection ~131
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.
| Name | Type | Req | Description |
|---|---|---|---|
| provider | string | yes | – |
| query | object | – | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | object | yes | – |
No examples provided.
luca_integrations_crm_sync_runs_create Preview a CRM sync ~198
Record a dry-run preview of the changes a CRM sync would make, as a new sync run. Nothing is written to the CRM: the API refuses a live sync. 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. Use workspaceId or workspaceSlug to override the default workspace configured by environment.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | – |
| id | string | yes | – |
| idempotencyKey | string | – | Stable key for safe retries. If omitted, the MCP server generates a unique key for this call. |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
luca_integrations_crm_sync_runs_list List CRM sync runs ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| workspaceId | string | – | Optional Luca workspace id override. |
| workspaceSlug | string | – | Optional Luca workspace slug override. |
| Name | Type | Req | Description |
|---|---|---|---|
| provenance | object | – | – |
| result | object | yes | – |
No examples provided.
How do I install the io.github.setluca/luca-mcp server?
io.github.setluca/luca-mcp runs locally as an npm package, launched with npx -y @setluca/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @setluca/mcp
claude mcp add setluca-luca-mcp -- npx -y @setluca/mcp
What is the io.github.setluca/luca-mcp server?
io.github.setluca/luca-mcp is listed in the public MCP registry as io.github.setluca/luca-mcp. SetLuca DM sales from any MCP client: 208 API tools and 15 task tools for leads, replies, calls. This page covers its npm package (@setluca/mcp).
Is the io.github.setluca/luca-mcp server safe to use?
io.github.setluca/luca-mcp scores 89 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.setluca/luca-mcp server expose?
io.github.setluca/luca-mcp exposes 223 tools: luca_capabilities_get, luca_leads_list, luca_leads_get, luca_leads_explain, luca_leads_create, and 218 more. Their descriptions and schemas cost roughly 39,605 tokens of context every time the server is loaded.
Is the io.github.setluca/luca-mcp server still maintained?
io.github.setluca/luca-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.setluca/luca-mcp server under?
io.github.setluca/luca-mcp declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.