Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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.

0 this week 89 Trust /100

Last scanned (13 hours ago)

Scores higher than 93% of npm servers

Category CRM and Sales

Trust breakdown (7 categories)

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
Changelog

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
Diagnostics

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 →

MCP tools · 223 exposed · ~39,605 tokens

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 →

Tool Tokens
luca_integrations_events_list ~148

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.

NameTypeReqDescription
maxPagesinteger–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.
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_knowledge_reject_suggestion ~170

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.

NameTypeReqDescription
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_knowledge_sources_disconnect ~176

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.

NameTypeReqDescription
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_knowledge_sources_list ~139

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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_knowledge_sources_sync ~188

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.

NameTypeReqDescription
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_knowledge_suggestions ~163

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. Approving one is app-only, so a person checks each change before it reaches the profile; this lists them and luca_knowledge_reject_suggestion turns one down. 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.

NameTypeReqDescription
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_leads_consents_grant ~268

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.

NameTypeReqDescription
bodyobjectyes–
confirmboolean–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…
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
result–yes–

No examples provided.

luca_leads_consents_revoke ~169

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.

NameTypeReqDescription
bodyobjectyes–
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
result–yes–

No examples provided.

luca_leads_create ~158

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.

NameTypeReqDescription
bodyobjectyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_leads_draft ~216

Draft a reply for a lead, written the way the coach writes, and put it in the review queue for the coach to approve. 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. 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.

NameTypeReqDescription
bodyobject––
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_leads_drafting_pause ~238

Stop Luca drafting replies, running follow-up cadences, and sending campaign messages to one lead, for 1h, 24h, 7d, 30d, or until resumed. A draft in flight stops at its next step. Opt-outs and crisis messages are still handled. Pausing again replaces the earlier pause. A timed pause resumes the lead by itself when it ends. Luca operation: POST /api/leads/{id}/drafting/pause 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. Use workspaceId or workspaceSlug to override the default workspace configured by environment.

NameTypeReqDescription
bodyobjectyes–
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_leads_drafting_resume ~318

Clear a lead's pause and have Luca draft one reply over each conversation's unanswered messages. With auto-send on for the channel, that reply can send without review. A conversation is skipped when the coach already replied or the messaging window closed, and skippedReason says why nothing restarted. Resuming a lead that isn't paused succeeds. Luca operation: POST /api/leads/{id}/drafting/resume 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.

NameTypeReqDescription
confirmboolean–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…
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_leads_explain ~126

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.

NameTypeReqDescription
idstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_leads_field_definitions_list ~104

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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_leads_field_definitions_upsert ~159

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.

NameTypeReqDescription
bodyobjectyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
result–yes–

No examples provided.

luca_leads_get ~109

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.

NameTypeReqDescription
idstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_leads_identities_attach ~166

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.

NameTypeReqDescription
bodyobjectyes–
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_leads_import_apply ~258

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.

NameTypeReqDescription
bodyobjectyes–
confirmboolean–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…
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_leads_import_preview ~113

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.

NameTypeReqDescription
bodyobjectyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_leads_list ~159

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.

NameTypeReqDescription
maxPagesinteger–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.
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_leads_notes_add ~166

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.

NameTypeReqDescription
bodyobjectyes–
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_leads_notes_delete ~186

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.

NameTypeReqDescription
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
noteIdstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_leads_update ~174

Update a lead's display name, stage, tags, or custom fields. Tags are replaced as a whole list. 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.

NameTypeReqDescription
bodyobjectyes–
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_learning_ab_tests_get ~149

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.

NameTypeReqDescription
idstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_learning_ab_tests_list ~149

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.

NameTypeReqDescription
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_learning_framework_performance ~141

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.

NameTypeReqDescription
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_learning_panel ~131

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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_learning_proposals_dismiss ~183

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.

NameTypeReqDescription
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_learning_proposals_list ~132

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.

NameTypeReqDescription
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_memory_list ~148

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.

NameTypeReqDescription
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_memory_set_archived ~174

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.

NameTypeReqDescription
bodyobjectyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_memory_update ~183

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.

NameTypeReqDescription
bodyobject––
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_morning_report ~84

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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_pause_cadence ~130

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" }.

NameTypeReqDescription
idempotencyKeystring–Reuse the same key when retrying this exact pause.
leadIdstringyesThe lead whose cadence to pause.
reasonstring–Optional operator reason, stored on the cadence.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_post_call_queue ~120

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. An item leaves the list once the coach reports how the call went and what it was worth. Example: call with {} after a day of calls.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_reports_morning ~118

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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_reports_scorecard ~122

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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_reschedule_call ~564

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 SetLuca only. A Cal.com or Google Calendar booking moves on that calendar too, but only once the provider confirms: until then the booking's operation.state reads pending_provider and it keeps its old time, so read the booking again before telling the coach the call moved. 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 recorded with luca_bookings_create. 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. SetLuca sends the lead no DM about the move, but a Google Calendar booking's calendar emails the lead the updated invite, and Cal.com may too. Send the lead the link yourself, or draft the message through the review queue.

NameTypeReqDescription
bookingIdstringyesThe booking to move.
confirmboolean–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…
expiresInHoursinteger–How long the new reschedule link stays usable. Defaults to 168 hours.
idempotencyKeystring–Reuse the same key when retrying this exact reschedule. A keyed call skips the availability check and lets the API replay the first result.
providerstring–The coach's booking provider. Used only for the availability check, and only when the booking has no booking type. The booking keeps the provider it already has. Pass it when the coach is not on Cale…
slotAtstringyesISO-8601 start time to move the call to, with an offset.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_rescue_silent_leads ~243

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 }.

NameTypeReqDescription
cadenceTemplatestring–Cadence intensity (default standard).
confirmboolean–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…
idempotencyKeystring–Reuse the same key when retrying this exact enrollment.
leadIdsarrayyesLead ids to enroll (max 100). Non-tenant ids are skipped.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_review_queue_approve ~280

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.

NameTypeReqDescription
bodyobject––
confirmboolean–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…
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_review_queue_bulk_approve ~293

Approve several pending drafts as they stand and send each one through its lead's channel. Returns one outcome per id; a draft already handled or not in the queue is skipped. Sends real messages. Luca operation: POST /api/review-queue/bulk-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.

NameTypeReqDescription
bodyobjectyes–
confirmboolean–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…
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_review_queue_bulk_reject ~185

Reject several pending drafts so none of them sends, with no reason recorded. Returns one outcome per id; a draft already handled or not in the queue is skipped. Luca operation: POST /api/review-queue/bulk-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.

NameTypeReqDescription
bodyobjectyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_review_queue_changes ~143

Read which drafts entered and left the pending queue since the version an earlier call returned, with the pending and drafting counts. reload: true means that version is too old, so list the queue again. Luca operation: GET /api/review-queue/changes Required scopes: review_queue: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.

NameTypeReqDescription
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
result–yes–

No examples provided.

luca_review_queue_drafting ~147

List the inbound turns Luca is still writing a reply for, with each one's state, a preview of the lead's message, and how many restarts are left. Cancelled, paused, and failed turns stay on the list for 24 hours. Luca operation: GET /api/review-queue/drafting 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.

NameTypeReqDescription
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_review_queue_drafting_cancel ~206

Stop the reply Luca is writing for one inbound turn. A queued draft that is still pending is taken back; an approved or sent one is not. The turn stays on the drafting list for 24 hours so it can be retried or dismissed. Luca operation: POST /api/review-queue/drafting/{turnId}/cancel 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.

NameTypeReqDescription
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
turnIdstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_review_queue_drafting_dismiss ~180

Remove a cancelled, paused, or failed turn from the drafting list without drafting again. Dismissing twice succeeds. Luca operation: POST /api/review-queue/drafting/{turnId}/dismiss 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.

NameTypeReqDescription
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
turnIdstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
result–yes–

No examples provided.

luca_review_queue_drafting_retry ~309

Have Luca draft again for a cancelled, paused, or failed turn. Only the lead's latest turn in a conversation restarts, at most 3 times across retry and regenerate. With auto-send on for the channel, the new draft can send without review. Luca operation: POST /api/review-queue/drafting/{turnId}/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. 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.

NameTypeReqDescription
confirmboolean–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…
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
turnIdstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

luca_review_queue_explain ~131

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.

NameTypeReqDescription
idstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
result–yes–

No examples provided.

luca_review_queue_list ~157

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.

NameTypeReqDescription
maxPagesinteger–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.
queryobject––
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
provenanceobject––
resultobjectyes–

No examples provided.

luca_review_queue_media_retry ~188

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.

NameTypeReqDescription
idstringyes–
idempotencyKeystring–Stable key for safe retries. If omitted, the MCP server generates a unique key for this call.
mediaIdstringyes–
workspaceIdstring–Optional Luca workspace id override.
workspaceSlugstring–Optional Luca workspace slug override.
NameTypeReqDescription
resultobjectyes–

No examples provided.

Install

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

# add to Claude Code
claude mcp add setluca-luca-mcp -- npx -y @setluca/mcp
Common questions

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.