Skip to content
FullCalendar WebMCP
Esc
↑↓navigate↵open⌘Jpreview
On this page

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.

PropType
idstring

Stable id assigned by your application.

Typestring
titlestring

Event title.

Typestring
startstring

Start as ISO 8601 with an explicit timezone offset.

Typestring
endstring | null

End as ISO 8601 with offset, or null when there is no end.

Typestring | null
allDayboolean

Whether the event is all-day.

Typeboolean
metadata?JsonObject

Optional JSON-safe fields for agents. Omit to expose only core fields.

TypeJsonObject

JsonObject / 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;
}
PropType
titlestring

Human-readable title for the new event.

Typestring
startstring

Start date-time in ISO 8601 format with offset.

Typestring
end?string | null

Optional exclusive end date-time in ISO 8601 format.

Typestring | null
allDay?boolean

Optional flag indicating if the event spans the entire day.

Typeboolean

UpdateCalendarEventInput

Input payload passed to CalendarEventRepository.update.

export interface UpdateCalendarEventInput {
  title?: string;
  start?: string;
  end?: string | null;
  allDay?: boolean;
}
PropType
title?string

Updated title.

Typestring
start?string

Updated start date-time.

Typestring
end?string | null

Updated end date-time.

Typestring | null
allDay?boolean

Updated all-day flag.

Typeboolean

CalendarEventQuery

Filter criteria passed to CalendarEventRepository.list.

export interface CalendarEventQuery {
  start?: string;
  end?: string;
  text?: string;
}
PropType
start?string

Inclusive ISO 8601 lower bound for filtering events.

Typestring
end?string

Exclusive ISO 8601 upper bound for filtering events.

Typestring
text?string

Optional case-insensitive substring to filter by event title.

Typestring

FullCalendarHandle

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.

Was this page helpful?