Skip to main content
Glama

Delete events

delete_events
Destructive

Delete events or clear whole days — one or many in a single call. Pass ops, an array where each item has an op (delete | clear): delete removes one event by id. A bare series id addresses the whole series; seriesId@YYYY-MM-DD addresses one occurrence by its ORIGINAL date, also after a move (the read's id and originalDate give it); add scope:"future" to an occurrence id for that occurrence and every later one. clear removes everything from from to to (inclusive, equal for one day). By default the whole batch is atomic: if ANY op fails, nothing is removed; pass partial: true for best-effort. A recorded undo receipt includes undoToken (call undo_changes before expiresAt, a UTC instant). Deleting a calendar-linked event also removes it from that calendar; an event marked readOnly can't be deleted this way. A delete result lists deletedIds; a scope:"future" delete also returns the truncated series as updated. Results read stored state after the whole batch commits. To create or edit events use write_events.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opsYes
renderNoWhen the user is looking at their reassign dial, set true to repaint it with the updated day in this same call. Otherwise the change reaches an open dial only if the host forwards this result.
partialNoBest-effort mode: apply the ops that succeed and report the rest as errors, instead of the default all-or-nothing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / llm_model
      Removed value: -{
      -  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "ops",
      -  "llm_model"
      -]New value: +[
      +  "ops"
      +]
  2. Changed2 schema fields changed
    • removedInput schema / properties / conversation_id
      Removed value: -{
      -  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
      -  "type": "string"
      -}
    • changedInput schema / properties / ops / items / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "id": {
      -        "description": "The event id from a read. A bare series id addresses the whole series; `seriesId@YYYY-MM-DD` addresses one occurrence.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "op": {
      -        "const": "delete",
      -        "type": "string"
      -      },
      -      "scope": {
      -        "const": "future",
      -        "description": "Only with a `seriesId@YYYY-MM-DD` id: \"future\" edits that occurrence and every later one. Omit it to edit only that occurrence; a bare series id edits the whole series.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "from": {
      -        "description": "First day to clear, ISO \"YYYY-MM-DD\".",
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      },
      -      "op": {
      -        "const": "clear",
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "Last day to clear (inclusive), ISO \"YYYY-MM-DD\". Equal to `from` for one day.",
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "from",
      -      "to"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "description": "The event id from a read. A bare series id addresses the whole series; `seriesId@YYYY-MM-DD` addresses one occurrence by its ORIGINAL date (the read's `originalDate`), also after the occurrence moved.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "delete",
      +        "type": "string"
      +      },
      +      "scope": {
      +        "const": "future",
      +        "description": "Only with a `seriesId@YYYY-MM-DD` id: \"future\" edits that occurrence and every later one. Omit it to edit only that occurrence; a bare series id edits the whole series.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "from": {
      +        "description": "First day to clear, ISO \"YYYY-MM-DD\".",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "clear",
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "Last day to clear (inclusive), ISO \"YYYY-MM-DD\". Equal to `from` for one day.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "from",
      +      "to"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed4 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / conversation_id
      Added value: +{
      +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
      +  "type": "string"
      +}
    • addedInput schema / properties / llm_model
      Added value: +{
      +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "ops"
      -]New value: +[
      +  "ops",
      +  "llm_model"
      +]
  4. Changed4 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / concise
      Removed value: -{
      -  "description": "Drop the human-readable `suggestedFollowup` prose from the response (the structured `undoToken` is still returned). Saves tokens.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / ops / items / default
      Removed value: -{
      -  "op": "__invalid__"
      -}
    • changedInput schema / properties / ops / items / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "id": {
      -        "type": "string"
      -      },
      -      "occurrenceDate": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      },
      -      "op": {
      -        "const": "delete",
      -        "type": "string"
      -      },
      -      "scope": {
      -        "enum": [
      -          "all",
      -          "future",
      -          "this"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "date": {
      -        "description": "Day to clear, ISO \"YYYY-MM-DD\".",
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      },
      -      "op": {
      -        "const": "clear",
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "Optional inclusive range end.",
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "op",
      -      "date"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "description": "The event id from a read. A bare series id addresses the whole series; `seriesId@YYYY-MM-DD` addresses one occurrence.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "delete",
      +        "type": "string"
      +      },
      +      "scope": {
      +        "const": "future",
      +        "description": "Only with a `seriesId@YYYY-MM-DD` id: \"future\" edits that occurrence and every later one. Omit it to edit only that occurrence; a bare series id edits the whole series.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "from": {
      +        "description": "First day to clear, ISO \"YYYY-MM-DD\".",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      },
      +      "op": {
      +        "const": "clear",
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "Last day to clear (inclusive), ISO \"YYYY-MM-DD\". Equal to `from` for one day.",
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "op",
      +      "from",
      +      "to"
      +    ],
      +    "type": "object"
      +  }
      +]
  5. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  6. Changed1 schema field changed
    • addedInput schema / properties / ops / items / default
      Added value: +{
      +  "op": "__invalid__"
      +}
  7. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare destructiveHint=true; the description goes far beyond by disclosing the default all-or-nothing atomicity, the opt-in best-effort mode, an undo receipt with undoToken/expiresAt, the readOnly guard, that calendar-linked events are also removed from that calendar, and what the result object contains. This is rich behavioral context an agent needs before calling a destructive tool.

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?

Front-loaded with purpose and the ops contract, and every sentence carries information that is not in the schema. It is a dense block of text with many parentheticals, so readability suffers slightly, but there is almost no filler.

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 destructive, no-output-schema tool, the description covers invocation (ops shape), failure semantics (atomic vs partial), recovery (undoToken/expiresAt), edge cases (readOnly, series truncation returning updated), and return fields (deletedIds). Nothing material to correct invocation is missing.

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?

With 67% schema coverage, the description adds real meaning: the id format semantics (bare series id vs seriesId@YYYY-MM-DD by ORIGINAL date, surviving moves), the inclusive from/to range, and the batch semantics of ops. It explains parameter behavior beyond the schema's field-level text.

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?

Opens with a specific verb-and-resource ('Delete events or clear whole days'), and the closing sentence explicitly routes creation/editing to write_events, distinguishing this from the primary sibling. An agent can tell this apart from write_events and undo_changes without opening a 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?

States exactly when to use each op path (delete vs clear), when to add scope:"future", when to choose partial:true over the atomic default, and names undo_changes as the recovery path before expiresAt. It also names write_events as the tool for the opposite operation. Exclusions and alternatives are explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.