Public Types
Comprehensive TypeScript type and interface definitions exported by `@protocoltooling/fullcalendar` for the FullCalendar WebMCP integration.
Public TypeScript types exported by @protocoltooling/fullcalendar.
import type {
CalendarEvent,
CreateCalendarEventInput,
UpdateCalendarEventInput,
CalendarEventQuery,
CalendarEventRepository,
FullCalendarHandle,
FullCalendarWebMCPOptions,
JsonObject,
JsonPrimitive,
JsonValue,
} from "@protocoltooling/fullcalendar";
CalendarEvent
Core event model returned by your repository and by list/get tools.
export interface CalendarEvent {
id: string;
title: string;
start: string;
end: string | null;
allDay: boolean;
/** Optional host-selected, JSON-safe, agent-visible projection. */
metadata?: JsonObject;
}
Add metadata when agents need context beyond the core fields. You choose exactly what is exposed. Metadata is read-only through WebMCP writes. Protocol Tooling never exposes FullCalendar extendedProps automatically.
idstring
Stable id assigned by your application.
stringtitlestring
Event title.
stringstartstring
Start as ISO 8601 with an explicit timezone offset.
stringendstring | null
End as ISO 8601 with offset, or null when there is no end.
string | nullallDayboolean
Whether the event is all-day.
booleanmetadata?JsonObject
Optional JSON-safe fields for agents. Omit to expose only core fields.
JsonObjectJsonObject / JsonValue / JsonPrimitive
JSON-safe types for agent-visible metadata.
export type JsonPrimitive = string | number | boolean | null;
export type JsonValue =
| JsonPrimitive
| JsonValue[]
| { [key: string]: JsonValue };
export type JsonObject = { [key: string]: JsonValue };
CreateCalendarEventInput
Input payload passed to CalendarEventRepository.create.
export interface CreateCalendarEventInput {
title: string;
start: string;
end?: string | null;
allDay?: boolean;
}
titlestring
Human-readable title for the new event.
stringstartstring
Start date-time in ISO 8601 format with offset.
stringend?string | null
Optional exclusive end date-time in ISO 8601 format.
string | nullallDay?boolean
Optional flag indicating if the event spans the entire day.
booleanUpdateCalendarEventInput
Input payload passed to CalendarEventRepository.update.
export interface UpdateCalendarEventInput {
title?: string;
start?: string;
end?: string | null;
allDay?: boolean;
}
title?string
Updated title.
stringstart?string
Updated start date-time.
stringend?string | null
Updated end date-time.
string | nullallDay?boolean
Updated all-day flag.
booleanCalendarEventQuery
Filter criteria passed to CalendarEventRepository.list.
export interface CalendarEventQuery {
start?: string;
end?: string;
text?: string;
}
start?string
Inclusive ISO 8601 lower bound for filtering events.
stringend?string
Exclusive ISO 8601 upper bound for filtering events.
stringtext?string
Optional case-insensitive substring to filter by event title.
stringFullCalendarHandle
Minimal structural surface required by FullCalendar WebMCP from a FullCalendar React instance. Compatible with FullCalendar React v6 class instances and v7 CalendarRef handles.
export interface FullCalendarHandle {
getApi(): {
getOption(name: string): unknown;
view: {
type: string;
activeStart: Date;
activeEnd: Date;
};
};
}
FullCalendarWebMCPOptions
Configuration options passed to useFullCalendarWebMCP.
import type { RefObject } from "react";
export interface FullCalendarWebMCPOptions {
calendarRef: RefObject<FullCalendarHandle | null>;
events: CalendarEventRepository;
onEventsChanged: () => unknown | Promise<unknown>;
capabilities?: FullCalendarWebMCPCapabilities;
onRegistrationError?: (error: unknown) => void;
}
export interface FullCalendarWebMCPCapabilities {
read?: boolean;
create?: boolean;
update?: boolean;
delete?: boolean;
}
For more details on implementing these interfaces, see CalendarEventRepository, the Repository Contract, and Security.