Skip to main content
Glama

Server Details

Schedule meetings, manage event types, and check availability through Lunacal's scheduling platform.

Ownership verified
Status
Healthy
Uptime
82.9% over 23 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
Lunacal

TDQS

A4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool maps to a distinct resource+action pair: bookings (create/cancel/reschedule/list), event types (create/get/update/list/publish), plus slot search and profile. Descriptions explicitly state preconditions and boundaries (e.g. find_available_slots only returns slots, create_booking does not check availability), leaving no realistic misselection.

Naming Consistency5/5

Uniform snake_case verb_noun convention throughout (create_booking, list_bookings, get_event_type, update_event_type, set_event_type_published). Verbs are used predictably for their operations (get/list for reads, create/update/cancel for mutations).

Tool Count5/5

Eleven tools is well within the ideal 3-15 range and every tool earns its place, covering both bookings and event types without redundancy. No thin or bloated areas.

Completeness4/5

Covers the core scheduling lifecycle: slot discovery, booking create/cancel/reschedule/list, and event type create/get/update/list/publish. The main gap is no delete_event_type (though set_event_type_published hiding is a partial workaround) and no single-booking getter, both of which agents can work around.

Available Tools

11 tools
cancel_bookingCancel bookingA
Destructive
Inspect

Cancel a booking by uid (not the numeric id). Confirm with the user first. This cannot be undone, and Lunacal emails the attendees. allRemainingBookings also cancels the rest of a recurring series. If Lunacal requires a reason, pass cancellationReason.

NameRequiredDescriptionDefault
uidYesBooking uid
cancellationReasonNo
allRemainingBookingsNoAlso cancel the rest of a recurring series

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds materially new behavior: the action is irreversible, Lunacal emails attendees, and allRemainingBookings also kills the rest of a recurring series. Those are consequences an agent cannot infer from the annotation flags alone.

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

Conciseness5/5

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

Four short sentences, front-loaded with the identifier requirement and the confirmation precondition, followed by consequences and the optional parameter. Nothing is redundant and no sentence could be dropped without losing information.

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

Completeness4/5

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

For a 3-parameter destructive tool with no output schema, the description covers irreversibility, attendee notification, recurring-series scope, and the conditional reason field. It stops short of saying what the call returns or how partial failures on a series are reported, which would fully close the loop.

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

Parameters4/5

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

Schema coverage is 67% and the undocumented parameter is cancellationReason, which the description explains ('If Lunacal requires a reason, pass cancellationReason'). It also adds the uid-vs-numeric-id distinction that the schema's 'Booking uid' label does not make explicit.

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?

States a specific verb and resource ('Cancel a booking') and immediately pins down the identifier ('by uid (not the numeric id)'), which is exactly the ambiguity an agent would otherwise hit. The action is plainly distinguishable from siblings like reschedule_booking and list_bookings.

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

Usage Guidelines4/5

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

Gives a real precondition ('Confirm with the user first') and a conditional usage rule ('If Lunacal requires a reason, pass cancellationReason'). It does not name an alternative action such as reschedule_booking when the user may not actually want to cancel, so the when-not guidance is incomplete.

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

create_bookingCreate bookingA
Destructive
Inspect

Book a slot on an event type. Call find_available_slots first and pass one of those start times. If the event type has required bookingFields from get_event_type, put the answers in additionalResponses keyed by each field's name. This does not check availability itself. Lunacal emails the attendee and any guests, and that notice cannot be unsent. Calling this again can create a second booking.

NameRequiredDescriptionDefault
endNo
nameYesAttendee name
emailYesAttendee email
notesNo
startYes
guestsNoAdditional guest emails
languageNoen
locationNoSelected location value, for example "integrations:daily" or an address
metadataNo
timezoneYesIANA timezone, for example "America/New_York"
eventTypeIdYes
additionalResponsesNoAnswers to custom booking questions, keyed by bookingFields.name

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructive=true and idempotent=false, but the description makes the consequence concrete: attendee and guest emails are sent and cannot be unsent, and repeat calls create a second booking. That is exactly the kind of side-effect detail an agent cannot infer from hints alone.

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

Conciseness5/5

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

Four short sentences, front-loaded with the core action, then preconditions, then side effects. No sentence is redundant and each adds a distinct operational fact.

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

Completeness4/5

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

For a 12-parameter mutation with no output schema, the definition covers the critical unknowns: prerequisite lookups, custom-field wiring, and irreversible notifications. It stops short of describing failure behavior when a slot is taken or how location/language affect the booking, which would have closed the remaining gap.

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?

With 50% schema description coverage, the description usefully explains that additionalResponses holds answers keyed by each bookingField's name and that start must come from find_available_slots. It leaves end, notes, guests, location, language, and metadata unaddressed, so half the parameters still rely on bare schema types.

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?

"Book a slot on an event type" gives a specific verb and resource, and the follow-up sentences tie it to find_available_slots and get_event_type, which separates it cleanly from cancel_booking and reschedule_booking.

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?

It prescribes the exact ordering: call find_available_slots first and pass one of those start times, and consult get_event_type for required bookingFields. It also states the limitation (no internal availability check), so the agent knows the precondition is on it.

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

create_event_typeCreate event typeAInspect

Add an event type on the signed-in account. length is the duration in minutes. This does not delete or replace an existing event type and does not email anyone. Use set_event_type_published to show or hide it on the public booking page.

NameRequiredDescriptionDefault
slugYes
titleYes
hiddenNo
lengthYesDuration in minutes
teamIdNo
metadataNo
locationsNo
descriptionNo
bookingFieldsNo
schedulingTypeNo

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations, it discloses that creation will not delete or replace an existing event type, will not email anyone, and does not itself manage public booking-page visibility. These are useful side-effect and workflow details, though team-related behavior and visibility defaults remain unexplained.

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 compact and front-loads the creation action before covering side effects and the publication workflow. The length sentence is redundant with the schema, but the remaining sentences are focused and useful.

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

Completeness2/5

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

The behavioral guidance is helpful, but it is insufficient for a complex 10-parameter tool with nested objects, an enum, and no output schema. An agent can attempt a minimal creation call, yet receives almost no guidance for team event types, scheduling modes, locations, booking fields, or other advanced inputs.

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

Parameters1/5

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

The only parameter explanation, that length is a duration in minutes, merely repeats the schema's existing description. With approximately 10% schema coverage, the description does not compensate for undocumented parameters such as slug, hidden, teamId, schedulingType, or the nested metadata, locations, and bookingFields structures.

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?

"Add an event type on the signed-in account" gives a specific action, resource, and account scope. It also distinguishes creation from replacing an existing event type and from the sibling set_event_type_published.

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?

The description explicitly routes agents to set_event_type_published when the goal is to show or hide the event type on the public booking page. This provides a concrete condition for selecting the sibling tool rather than expecting creation to control publication.

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

find_available_slotsFind available slotsA
Read-onlyIdempotent
Inspect

Find open booking slots for an event type between start and end. Call this before create_booking or reschedule_booking. Identify the event type by eventTypeId, or by eventTypeSlug plus usernameList. Times must include a timezone offset, and timezone is required. This only returns slots. It does not book or notify anyone.

NameRequiredDescriptionDefault
endTimeYesRange end
durationNoFor event types that offer more than one duration
timezoneYesIANA timezone, for example "America/New_York"
startTimeYesRange start
eventTypeIdNo
usernameListNoHost username(s); pairs with eventTypeSlug
eventTypeSlugNoRequires usernameList when used instead of eventTypeId
rescheduleUidNoExclude the booking being rescheduled from conflicts

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds useful non-obvious constraints: times must carry a timezone offset and timezone is required. It does not describe return shape, pagination, or slot ordering, but the annotations lower the bar sufficiently for a solid 3.

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

Conciseness5/5

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

Five short sentences, front-loaded with the purpose, then the workflow position, then the identifier rules, then the timezone constraint, then the negative scope. Every sentence carries distinct information with no repetition of the schema.

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

Completeness4/5

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

For an 8-parameter read tool with annotations and no output schema, the description covers the highest-risk ambiguities: identifier selection and timezone formatting. Minor gaps remain around when duration matters and the effect of rescheduleUid, though the schema documents both.

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

Parameters4/5

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

Schema coverage is 88%, so the baseline would be 3, but the description adds meaning the schema only implies piecemeal: the event type is identified either by eventTypeId alone or by eventTypeSlug plus usernameList. That combinatorial constraint is the main source of invocation errors and the description surfaces it directly.

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?

States a specific verb and resource (find open booking slots for an event type) with explicit scope boundaries (between start and end). It names sibling tools create_booking and reschedule_booking, so an agent can place it in the workflow without opening any schema.

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?

Gives explicit ordering guidance ("Call this before create_booking or reschedule_booking") and a clear negative boundary ("This only returns slots. It does not book or notify anyone"), which tells the agent both when to use it and what it will not accomplish.

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

get_event_typeGet event typeA
Read-onlyIdempotent
Inspect

Get one event type by numeric id, including locations and bookingFields. Required booking questions must be answered in create_booking additionalResponses, keyed by field name. Read-only.

NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description's "Read-only" merely restates them. What it does add is behavioral context about the returned structure (locations, bookingFields) and how booking questions propagate to create_booking, which is useful but not deep.

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?

Two short sentences, front-loaded with the retrieval action, then the downstream booking constraint. Zero filler; the only redundancy is the trailing "Read-only" which duplicates the annotation.

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

Completeness4/5

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

For a one-parameter read tool with no output schema, the description covers what the response includes and the important integration rule with create_booking. The main remaining gap is not explaining how an agent obtains a valid event type id in the first place.

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?

There is a single parameter with 0% schema description coverage, so the schema gives only type/range information. The description calls the id "numeric," matching the schema's integer type, and adds no format, source, or acquisition guidance (e.g., where to obtain the id) that would compensate for the coverage gap.

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

Purpose4/5

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

The description gives a specific verb and resource ("Get one event type") plus the identifier type ("by numeric id") and states what the payload contains (locations, bookingFields). It is clearly distinguishable from list_event_types and create_event_type, though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

It supplies a concrete cross-tool rule: required booking questions surfaced here must be answered in create_booking additionalResponses, keyed by field name. That is real usage context, but there is no explicit statement of when to call this versus list_event_types or update_event_type.

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

get_my_profileGet my profileA
Read-onlyIdempotent
Inspect

Get the signed-in user's Lunacal profile: name, email, username, and timezone. Call this when you need the user's timezone before searching for slots. Reads the signed-in account only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds the meaningful constraint that it reads only the signed-in account, which rules out impersonation or user-ID arguments — context the annotations do not convey. It does not discuss failure behavior when unauthenticated, which is the only notable gap.

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?

Three short sentences, front-loaded with the purpose before the usage trigger. The final sentence ('Reads the signed-in account only') partially restates the opening 'signed-in user's', though it does sharpen the scoping point enough to mostly earn its place.

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?

For a zero-parameter, read-only tool with no output schema, the description supplies everything needed: the returned fields, the intended usage trigger, and the account scoping. Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description reinforces this implicitly by framing the call as taking no target user.

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?

States a specific verb and resource ('Get the signed-in user's Lunacal profile') and enumerates the returned fields (name, email, username, timezone). The scope qualifier 'signed-in user's' cleanly separates it from the sibling tools, which all operate on bookings and event types rather than the account.

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

Usage Guidelines4/5

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

'Call this when you need the user's timezone before searching for slots' gives a concrete triggering condition tied to a real workflow. It stops short of naming the alternative sibling (find_available_slots) explicitly or stating when not to call it, so it is strong context rather than a full routing rule.

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

list_bookingsList bookingsB
Read-onlyIdempotent
Inspect

List the user's bookings. status is required. Pass limit (default 20, max 100) and cursor from a previous nextCursor for the next page. Use a booking uid from this list to reschedule or cancel. Read-only.

NameRequiredDescriptionDefault
limitNo
cursorNoOffset from a previous response's nextCursor
searchNo
statusYes
endDateNo
teamIdsNo
timezoneNoHow to interpret startDate and endDate when they are local times
startDateNo
eventTypeIdsNo
attendeeEmailNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so "Read-only." adds nothing new. What the description does add is pagination flow and the downstream dependency of the returned uid; the default of 20 and max of 100 merely restate the schema. No mention of ordering, total counts, or result size behavior.

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?

Four short sentences, front-loaded with purpose and the required field, then paging, then follow-on use. Tight overall; the trailing "Read-only." is redundant with the annotations and slightly dilutes the payload.

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

Completeness2/5

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

For a 10-parameter list tool with no output schema, the description leaves most filters unexplained and says nothing about the shape of returned bookings beyond nextCursor. An agent can call it, but cannot confidently use the date-range, team, event-type, or attendee filters without guessing.

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

Parameters2/5

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

Schema description coverage is only 20%, and the description only touches status (required), limit, and cursor. The other seven parameters (search, startDate, endDate, timezone, teamIds, eventTypeIds, attendeeEmail) are undocumented in both schema and description, so the agent must infer their filtering behavior.

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

Purpose4/5

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

"List the user's bookings" gives a specific verb and resource, and the closing pointer (use a booking uid from this list to reschedule or cancel) implicitly separates it from cancel_booking and reschedule_booking. It does not explicitly name a sibling list tool to contrast with, so it stops short of a 5.

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

Usage Guidelines4/5

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

It states that status is required, explains how to page (pass cursor from a previous nextCursor) and how the output feeds other tools. It gives no guidance on which status value to pick or when to narrow with the filter parameters, so usage context is clear but not exhaustive.

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

list_event_typesList event typesB
Read-onlyIdempotent
Inspect

List the user's event types (personal and team). Use an id from this list with find_available_slots and create_booking. scheduleId is informational; weekly hours cannot be edited with this server. Read-only.

NameRequiredDescriptionDefault
slugNoKeep only event types with this slug
teamIdsNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so "Read-only" is largely a restatement. The valuable additions are the scope boundary ("weekly hours cannot be edited with this server") and the note that scheduleId is informational, though both concern sibling tools rather than this call's own behavior. Nothing is said about filtering behavior or pagination.

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?

Four short sentences with the purpose front-loaded and no filler. "Read-only" is redundant against annotations and could be cut, but otherwise every clause carries information.

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

Completeness3/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 should signal what a listing entry looks like; it only glancingly mentions scheduleId and weekly hours. An agent can call this correctly, but cannot anticipate the returned fields or how filtering behaves.

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

Parameters2/5

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

Schema coverage is only 50%: slug is documented in the schema, but teamIds carries no description and the tool description does not explain it either, beyond a passing "personal and team" hint. The description adds essentially no parameter meaning beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ("List the user's event types") and narrows scope with "(personal and team)." It does not explicitly distinguish itself from the singular sibling get_event_type, so an agent must infer the list-vs-single split.

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

Usage Guidelines4/5

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

Gives concrete downstream usage: "Use an id from this list with find_available_slots and create_booking," which tells the agent exactly why it would call this first. It gives no exclusion for get_event_type or create_event_type, so the when-not guidance is only implied.

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

reschedule_bookingReschedule bookingA
Destructive
Inspect

Move an existing booking to a new start time. Call find_available_slots with rescheduleUid first. Requires the booking uid from list_bookings, the event type id, and the attendee name and email. This overwrites the current time and Lunacal emails the attendee. Confirm with the user before calling.

NameRequiredDescriptionDefault
endNo
nameYes
emailYes
notesNo
startYes
guestsNo
languageNoen
locationNo
metadataNo
timezoneYesIANA timezone, for example "America/New_York"
eventTypeIdYes
rescheduleUidYesuid of the booking to move
rescheduleReasonNo
additionalResponsesNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description still adds real behavior: the move overwrites the current time, Lunacal emails the attendee as a side effect, and user confirmation is required. It does not explain what happens to optional fields or how failures surface, which keeps it short of a 5.

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

Conciseness5/5

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

Four short sentences, front-loaded with the action, then the prerequisite flow, then the side effect, then the confirmation guardrail. Nothing repeated from the schema or annotations, and no filler.

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

Completeness3/5

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

For a 14-parameter destructive mutation with nested objects and no output schema, the description covers the primary happy path well. It is silent on the optional parameters, on whether guest/location/metadata changes propagate, and on what the tool returns, which leaves meaningful gaps for an agent handling a real reschedule.

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 description coverage is only 14% across 14 parameters, so the description must compensate heavily. It does identify the key inputs, rescheduleUid sourced from list_bookings, eventTypeId, start/time, name, and email, but leaves eight optional parameters (end, notes, guests, language, location, metadata, rescheduleReason, additionalResponses) entirely unexplained, including which affect the attendee notification.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Move an existing booking to a new start time.' That is clearly distinct from sibling mutations like cancel_booking and create_booking. It stops short of naming those siblings explicitly, so sibling differentiation is inferred rather than stated.

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?

It gives an explicit prerequisite chain: call find_available_slots with rescheduleUid first, obtain the booking uid from list_bookings, then call this tool. It also states a hard usage gate, 'Confirm with the user before calling,' which is exactly the when-to-use guidance an agent needs for a destructive mutation.

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

set_event_type_publishedPublish or unpublish event typeA
DestructiveIdempotent
Inspect

Show or hide an event type on the public booking page. Hiding it revokes public booking access. Confirm with the user before hiding. Setting the same value again does not change anything further.

NameRequiredDescriptionDefault
teamIdNo
eventIdYes
isPublishedYes

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the real consequence of the mutation ('Hiding it revokes public booking access') and a required user-confirmation step, which is valuable safety context for a destructive operation. The idempotency statement largely restates idempotentHint=true, and permission or auth requirements remain unstated.

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?

Three short sentences, front-loaded with the core action and followed by the consequence and confirmation rule. The final sentence about setting the same value again is somewhat redundant with the idempotent annotation but still adds practical clarity.

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

Completeness3/5

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

For a destructive, open-world mutation with no output schema, the description covers the key user-facing consequence and confirmation requirement. However, it leaves the identifier parameters and any return/error behavior unexplained, so an agent still lacks scoping guidance before calling it.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate for three undocumented parameters. It conveys the meaning of isPublished indirectly through 'show or hide', but gives no guidance on eventId or teamId, including scoping or whether teamId is required for team-owned event types.

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

Purpose4/5

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

The description states a specific verb pair ('Show or hide') and resource ('an event type on the public booking page'), which makes the publishing-state purpose clear and separates it from siblings like update_event_type. It does not explicitly name an alternative tool, but the scope is unambiguous.

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

Usage Guidelines4/5

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

It gives clear when-to-use context (toggling public visibility) and a concrete procedural rule: confirm with the user before hiding. It stops short of naming alternatives or stating when not to use it, such as preferring update_event_type for other field changes.

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

update_event_typeUpdate event typeA
DestructiveIdempotent
Inspect

Update an event type on the signed-in account. metadata, locations, and bookingFields replace the whole stored value, so read get_event_type first when changing only part of them. That replacement is an overwrite. Confirm with the user before calling. This does not email anyone.

NameRequiredDescriptionDefault
idYes
slugNo
titleNo
lengthNoDuration in minutes
metadataNo
locationsNo
descriptionNo
bookingFieldsNo

TDQS

A4.2/5.0
Behavior4/5

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

While annotations mark it as destructive, the description adds crucial behavioral context regarding field replacement semantics. It clarifies that metadata, locations, and bookingFields are completely overwritten, which is vital operational knowledge beyond simple status flags.

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 functional and dense. While slightly wordy, every sentence provides high-value operational constraints, making it structurally sound for a complex mutation tool.

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

Completeness4/5

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

The description addresses the primary functional complexity of this update tool: the full-replacement behavior of certain complex parameters. Given the low schema coverage, this level of operational detail is necessary and provides strong contextual guidance.

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

Parameters4/5

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

Given the very low schema coverage (13%), the description provides significant functional value by explaining the replacement mechanism of complex parameter types like metadata and locations. This guides the AI on how to structure the payload for a partial update.

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

Purpose4/5

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

The description clearly identifies the function as updating an event type on the signed-in account, effectively distinguishing it from list or get sibling tools. It avoids tautology by specifying the mutation action.

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?

This is exceptionally clear, providing specific instructions on prerequisites (read with get_event_type first), operational requirements (user confirmation), and operational boundaries (no email side effects).

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updates
    • First observedcancel_booking
    • First observedcreate_booking
    • First observedcreate_event_type
    • First observedfind_available_slots
    • First observedget_event_type
    • First observedget_my_profile
    • First observedlist_bookings
    • First observedlist_event_types
    • First observedreschedule_booking
    • First observedset_event_type_published
    • First observedupdate_event_type

Publisher details

Operator
Lunacal
Operator website
https://lunacal.ai
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to schedule meetings via Astrocal's scheduling API, including checking availability, booking, canceling, rescheduling, and managing waitlists through natural conversation.
    78 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Calendar API purpose-built for AI agents. Exposes tools to manage agents, calendars, and events, find meeting times, run scheduling proposals, set availability rules, manage webhooks, and subscribe to iCal feeds.
    54
    254 npm
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to discover bookable time slots, book and cancel meetings, list events, and enable or disable scheduling links. Also supports managing webhooks and exposes write/destructive operations with MCP annotations so clients can confirm before acting.
    12
    479 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources