Skip to main content
Glama

Send Luma Invites

send_luma_invites
Destructive

Luma emails each recipient an invite to the event and adds them to the roster as invited. This is a real send with no approval step and no undo — treat calling it as sending, and confirm the recipient list with the user first unless they have already approved this exact wave.

Distinct from the LinkedIn/email outreach queues: those are Sliq-sent cold sequences with pacing and approval gating, whereas this is Luma's branded event invite from the calendar the user owns. Use the queues to pitch the event to people who don't know it exists; use this to invite people who should land directly on the event's guest list.

Anyone already on the roster — invited, going, pending approval, waitlisted, or declined — is skipped, so re-running with the same list invites only the genuinely new people. That makes retries safe.

Every invite is recorded against the matching person Sliq tracks (under data['luma_invites'], one entry per event), so who-we-invited is answerable from our own records and not only from Luma's roster.

Recipients Sliq isn't tracking are still invited — they just get no such record, which means an RSVP from them won't appear in the funnel. That is normal (hand-typed addresses, people who were never prospects), and most waves have some, but the user can't see it from Luma's side. When not_tracked is non-empty, say so in the reply — how many, and which addresses — instead of reporting a clean send. A summary dict {event_id, invited: [...], invited_count, skipped: [{email, reason}], skipped_count, tracked_count, not_tracked: [...], not_tracked_count} — plus note, user-facing wording for the untracked recipients, present only when there are any. invited lists the addresses actually sent to; a fully-deduplicated call returns invited_count 0 and is a success, not an error. tracked_count counts recipients Sliq already knows; it is lower than invited_count whenever the wave includes people who aren't tracked.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
emailsYesRecipient email addresses. Deduplicated case-insensitively, then filtered against the live roster.
messageNoOptional personal note included in the invite email, max 200 characters. Written for the whole wave — Luma has no per-recipient placeholder substitution here, so don't try to personalize it with names.
event_idYesThe Luma event id from get_luma_events (starts with "evt-").

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, and the description fully corroborates and extends this: 'real send with no approval step and no undo — treat calling it as sending.' It discloses side effects beyond annotations — the skip-on-roster behavior, the tracking record under data['luma_invites'], and the critical caveat that untracked recipients get invited without a record ('When not_tracked is non-empty, say so in the reply'). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured into <summary> and <returns> blocks, front-loading the critical safety and routing information. Every sentence carries distinct value — dedup safety, tracking semantics, the not_tracked warning mandate, and the return dict. It is verbose in places but remains purposeful over several paragraphs of genuinely useful caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description's <returns> section is essential and it delivers — documenting all return fields (event_id, invited, invited_count, skipped, skipped_count, tracked_count, not_tracked, not_tracked_count) plus the conditional note. It clarifies that 'a fully-deduplicated call returns invited_count 0 and is a success, not an error' and explains why tracked_count may be lower than invited_count. For a destructive, side-effecting call, nothing an agent needs to invoke and interpret it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema descriptions are already informative — emails are 'deduplicated case-insensitively, then filtered against the live roster,' message is capped at 200 chars with 'no per-recipient placeholder substitution,' and event_id 'starts with evt-'. The description adds little parameter-level detail beyond this; the baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific, unambiguous operation: 'Send Luma's own event invitations to a list of email addresses.' It then deliberately distinguishes itself from its closest siblings — 'Distinct from the LinkedIn/email outreach queues... this is Luma's branded event invite from the calendar the user owns.' An agent can immediately tell it apart from manage_email_outreach_queue, manage_linkedin_invite_queue, and send_email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and when-not-to-use guidance is present: 'Use the queues to pitch the event to people who don't know it exists; use this to invite people who should land directly on the event's guest list.' It also instructs the agent to 'confirm the recipient list with the user first unless they have already approved this exact wave' and explains when retrying is safe due to deduplication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources