Skip to main content
Glama
the-events-calendar

The Events Calendar MCP Server

Official

tec-calendar-create-update-entities

Create or update events, venues, organizers, and tickets in The Events Calendar. Manage calendar posts with flexible date formats and ticketing options.

Instructions

Create or update a calendar post (Event, Venue, Organizer, or Ticket).

For creating: provide postType and data. For updating: provide postType, id, and data.

FREE TICKETS: To create free tickets, omit the price field entirely. WordPress will automatically default to price 0. Do NOT set price to 0 explicitly as this triggers validation errors. Both Tickets Commerce and RSVP providers support free tickets when the price field is omitted.

TICKET AVAILABILITY DATES: Use start_date and end_date fields to control when tickets are available for purchase. start_date is when tickets become available, end_date is when sales stop (typically the event start time). All ticket date fields must be in Y-m-d H:i:s format (e.g., "2024-12-25 15:30:00"). If not provided, defaults to 1 week before event (start) and event start time (end). By default, end_date will be capped to the event start unless you pass allow_end_after_event: true.

SALE PRICING: To offer tickets at a reduced price during specific periods:

  • price: Regular ticket price

  • sale_price: Discounted price (must be less than regular price)

  • sale_price_start_date: When the sale price becomes active

  • sale_price_end_date: When the sale price expires (reverts to regular price)

Example: Regular $50 ticket on sale for $35 from Dec 1-15:

{
  "price": 50,
  "sale_price": 35,
  "sale_price_start_date": "2024-12-01",
  "sale_price_end_date": "2024-12-15"
}

NOTE: Ticket availability dates (start_date, end_date) must be provided in Y-m-d H:i:s format. Sale price dates (sale_price_start_date, sale_price_end_date) must be provided in YYYY-MM-DD format. UNLIMITED TICKETS: To create unlimited tickets, set stock_mode to "unlimited".

IMPORTANT: Ensure your event dates and times use the expected formats and timezone context.

Date Formats Supported

  • ISO 8601: "2024-12-25T15:00:00"

  • Date and time: "2024-12-25 15:00:00"

  • Natural language: "tomorrow 2pm", "next monday", "first thursday of next month"

  • Relative: "+3 days", "+2 hours", "3 days 1 hour"

  • Specific dates: "December 15, 2024 7:00 PM"

Workflow for Events with Dates

  1. Calculate appropriate dates for your event

  2. Create/update event with calculated dates

Create Examples

Event Creation

The Events Calendar event post type with date, location, and ticketing information

Example 1: Standard event with ISO dates

{
  "postType": "event",
  "data": {
    "title": "Conference Next Week",
    "start_date": "next monday 9am",
    "end_date": "next friday 5pm",
    "all_day": false,
    "timezone": "America/New_York",
    "venues": [
      456
    ],
    "organizers": [
      789
    ]
  }
}

Example 2: Event with natural language dates

{
  "postType": "event",
  "data": {
    "title": "Holiday Party",
    "start_date": "December 15, 2024 7:00 PM",
    "end_date": "December 15, 2024 11:30 PM",
    "all_day": false,
    "timezone": "America/Denver",
    "venues": [
      789
    ],
    "cost": "$25 per person"
  }
}

Example 3: All-day event

{
  "postType": "event",
  "data": {
    "title": "All Day Workshop",
    "start_date": "tomorrow",
    "end_date": "tomorrow",
    "all_day": true,
    "timezone": "Europe/London",
    "cost": "Free"
  }
}

Example 4: Event with venue and organizers

{
  "postType": "event",
  "data": {
    "title": "Summer Music Festival",
    "start_date": "2024-07-15 18:00:00",
    "end_date": "2024-07-15 23:00:00",
    "all_day": false,
    "timezone": "America/Los_Angeles"
  }
}

Venue Creation

Location where events take place, including address and contact information

Example 1: Complete venue with address

{
  "postType": "venue",
  "data": {
    "title": "The Grand Ballroom",
    "venue": "Grand Ballroom at the Historic Hotel",
    "address": "456 Park Avenue",
    "city": "New York",
    "state": "NY",
    "zip": "10022",
    "country": "USA",
    "phone": "+1 (212) 555-0123",
    "website": "https://grandballroom.example.com"
  }
}

Example 2: Virtual/online venue

{
  "postType": "venue",
  "data": {
    "title": "Beachside Resort",
    "venue": "Sunset Beach Resort & Spa",
    "address": "1000 Coastal Highway",
    "city": "Miami Beach",
    "state": "FL",
    "zip": "33139",
    "country": "US",
    "phone": "305-555-BEACH",
    "website": "https://sunsetbeachresort.example.com",
    "geo_lat": 25.7906,
    "geo_lng": -80.13
  }
}

Organizer Creation

Person or organization responsible for hosting events

Example 1: Organization with full contact

{
  "postType": "organizer",
  "data": {
    "title": "Local Arts Council",
    "email": "info@localartscouncil.org",
    "website": "https://localartscouncil.org",
    "phone": "(555) 123-4567"
  }
}

Example 2: Individual organizer

{
  "postType": "organizer",
  "data": {
    "title": "DJ Mike Stevens",
    "organizer": "Mike Stevens - Professional DJ",
    "email": "bookings@djmikestevens.com",
    "phone": "+1-555-DJ-MIKE",
    "website": "https://djmikestevens.example.com"
  }
}

Ticket Creation

Event ticket as returned by the API, including read-only fields like sold count and calculated values.

Example 1: Paid general admission

{
  "postType": "ticket",
  "data": {
    "title": "General Admission",
    "event": 123,
    "price": 25,
    "stock": 100,
    "capacity": 100,
    "sku": "GA-2024-001"
  }
}

Example 2: VIP ticket with limited availability

{
  "postType": "ticket",
  "data": {
    "title": "VIP Pass",
    "event": 123,
    "price": 150,
    "stock": 20,
    "capacity": 30,
    "sku": "VIP-2024-001"
  }
}

Update Examples

Updating Events

The Events Calendar event post type with date, location, and ticketing information

Partial update example 1

{
  "postType": "event",
  "id": 124,
  "data": {
    "title": "Conference Next Week",
    "start_date": "next monday 9am",
    "end_date": "next friday 5pm"
  }
}

Partial update example 2

{
  "postType": "event",
  "id": 127,
  "data": {
    "title": "Holiday Party",
    "start_date": "December 15, 2024 7:00 PM",
    "end_date": "December 15, 2024 11:30 PM"
  }
}

Updating Venues

Location where events take place, including address and contact information

Partial update example 1

{
  "postType": "venue",
  "id": 457,
  "data": {
    "address": "456 Park Avenue",
    "city": "New York",
    "phone": "+1 (212) 555-0123"
  }
}

Partial update example 2

{
  "postType": "venue",
  "id": 461,
  "data": {
    "address": "1000 Coastal Highway",
    "city": "Miami Beach",
    "phone": "305-555-BEACH"
  }
}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
postTypeYesThe type of post to create or update
idNoPost ID (required for updates, omit for creation)
dataYesThe post data. Required fields depend on postType: Event (title, start_date, end_date), Venue (title or venue, address, city, country), Organizer (title or organizer), Ticket (title, event_id or event). Note: For Venue and Organizer, you can use "title" which will be converted to the appropriate field. For Tickets, all date fields must be in Y-m-d H:i:s format (e.g., "2024-12-25 15:30:00"). Sales dates default to 1 week before event (start) and event start date (end) if not specified. By default, ticket end_date will be capped to the event start date unless allow_end_after_event: true is provided.
Behavior4/5

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

With no annotations, the description fully discloses behavior: creates/updates events, venues, organizers, tickets; special rules for free tickets (omit price), ticket availability dates, sale pricing, and stock mode. However, it does not mention what the tool returns or any error conditions, which would improve transparency.

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?

Description is long but well-structured with sections, bullet points, and examples. Front-loaded with core purpose. Some repetition across examples, but overall efficient for the complexity. Could be slightly trimmed without loss.

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 tool with 3 parameters (required 2), nested data object, and no output schema, the description is extremely comprehensive: covers creation/update logic, field requirements per type, date formatting, special cases, and provides workflow and multiple examples. Sufficient for correct agent invocation.

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

Parameters5/5

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

Schema coverage is 100% but description adds significant meaning: explains required fields per postType, date formats, special cases like free tickets and sale pricing, and provides multiple examples. This goes well beyond the schema's field descriptions.

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 description clearly states 'Create or update a calendar post (Event, Venue, Organizer, or Ticket).' This specifies the verb (create/update) and resource (calendar post types), clearly distinguishing from sibling tools (delete, read).

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?

Explicitly states when to use create vs update based on presence of 'id', provides detailed field requirements per postType, and includes notes on free tickets, availability dates, sale pricing, and unlimited tickets. This provides clear when-to-use guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/the-events-calendar/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server