Developer docs: all pages

Developers · MCP server

event_update

Changes an existing calendar event.

Update calendar event. Changes an existing calendar event.

Who can use it: Owners and managers with a role in the community. Not yet a management company’s owners and managers.

Scope Effect Hints
community:write send (write when visibility is staff_only) changes data, destructive, idempotent

Description shown to assistants

Use this when an owner or manager asks to update an existing PorchQ calendar event.

Arguments

Argument Type Required About
property_id string No The community’s public id (prop_web…). Pass it on every call.
event_id string Yes The event’s public id (evnt_web…), from events_list.
title string No The event’s new name.
description string No What the event is about.
location string No Where it happens.
starts_at string No ISO8601 event start time. Include a timezone offset when possible.
starts_at_text string No Original natural-language start time when the user used relative wording.
ends_at string No ISO8601 event end time. Include a timezone offset when possible.
ends_at_text string No Original natural-language end time when the user used relative wording.
all_day boolean No The event lasts all day.
event_type string No One of meeting, community_event, maintenance, voting_deadline, other.
visibility string No One of public, members_only, staff_only.
reminder_offsets_minutes array of integer No Minutes before the start at which members who can see the event get a reminder. Each from 1 to 43200.
idempotency_key string No Optional. A unique value for this change; sending the same value again does nothing twice. At most 200 characters.

What it returns

Every result has content (one short sentence for the person) and structuredContent (the data below). A tool that could not run answers with isError: true and a sentence saying why; see Errors and limits.

  • property: the community.
  • status: done when the change was made at once (a staff-only event), or awaiting_confirmation.
  • event: the event after the change, when status is done, with the same fields as in events_list.
  • confirmation: when status is awaiting_confirmation, the url of the PorchQ page where the person confirms and when it expires_at.

structuredContent follows this JSON Schema, also in tools/list as outputSchema:

{
  "type": "object",
  "properties": {
    "property": {
      "type": "object",
      "properties": {
        "id": { "type": "string" },
        "name": { "type": "string" },
        "addressLine1": { "type": ["string", "null"] },
        "addressLine2": { "type": ["string", "null"] },
        "city": { "type": ["string", "null"] },
        "state": { "type": ["string", "null"] },
        "postalCode": { "type": ["string", "null"] },
        "timezone": { "type": ["string", "null"] },
        "billingFrequency": { "type": ["string", "null"] },
        "demoClone": { "type": "boolean" },
        "demoPersona": { "type": ["string", "null"] },
        "demoExpiresAt": { "type": ["string", "null"] }
      },
      "required": ["id", "name"]
    },
    "status": { "enum": ["done", "awaiting_confirmation"] },
    "event": {
      "type": "object",
      "properties": {
        "id": { "type": "string" },
        "title": { "type": "string" },
        "description": { "type": ["string", "null"] },
        "location": { "type": ["string", "null"] },
        "starts_at": { "type": ["string", "null"] },
        "ends_at": { "type": ["string", "null"] },
        "all_day": { "type": ["boolean", "null"] },
        "event_type": { "type": ["string", "null"] },
        "visibility": { "type": ["string", "null"] },
        "reminder_offsets_minutes": { "type": ["array", "null"], "items": { "type": "integer" } },
        "created_via": { "type": ["string", "null"] }
      },
      "required": ["id", "title"],
      "description": "The event, when it was created or changed at once."
    },
    "confirmation": {
      "type": "object",
      "description": "When the change waits for the person to confirm it in PorchQ.",
      "properties": { "url": { "type": "string" }, "expires_at": { "type": "string" } },
      "required": ["url", "expires_at"]
    }
  },
  "required": ["property", "status"]
}

Notes

  • Only the fields you pass change. The values you pass replace the old ones, so the tool is marked destructive; sending the same change twice leaves the same result.
  • A change to an event residents can see, before or after the change, waits for the person to confirm it in PorchQ, as with event_create. The page shows the old values struck through. If the event changes in PorchQ before they confirm, nothing is changed and they ask again.
  • A change to a staff-only event that stays staff-only happens at once.

Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "event_update",
    "arguments": {
      "property_id": "prop_web4k2m9q7x1v8c3n5b6z0a2s4d",
      "event_id": "evnt_web8n3b5v7c9x1z2a4s6d8f0g2h",
      "location": "Pool deck",
      "idempotency_key": "5d7f9b1c-3e5a-4c7e-9b1d-3f5a7c9e1b3d"
    }
  }
}

This page as Markdown: /developers/mcp/tools/event_update.md

Loading PorchQ…