Skip to main content
Writes to your heyBTW workspace: it changes only the settings you send on one of your own collabs (and its target spec, if you pass one). It sends nothing and never writes to the event on the event platform.
The same edit the dashboard’s Edit details does. Reach for it when an event’s details change: the time moves, the venue is added, the event is renamed, or create_collab assumed an end. Follows the heyBTW MCP rules.

When to use it

  • “The dinner moved to 7pm, same night.”
  • “Add the venue: Foreign Cinema, Mission St.”
  • “Our RSVP target for the summit is 150.”
  • “The end time was a guess. It actually ends at 10.”

Parameters

Send only the fields that change.

Workflow

There is no preview step. One call applies the edit.
1

Confirm the change with the user

Send only the fields that change. Re-sending a value create_collab assumed (an end it defaulted) confirms it: the field comes back applied and its origin becomes user_stated. So send only what you mean to state.
2

Generate a fresh client_request_id

On a transport error, retry with the SAME id: a committed edit is replayed (idempotent_replay: true), never repeated. Reusing the id for a different edit is refused. An edit that wrote nothing does not consume the key.
3

Read fields back to the user

Every field you sent comes back in data[0].fields with a status. Report each refused field and its reason.

Platform-owned fields are refused

A collab tied to a Luma, Splash or Zuddl event, or imported from a provider’s public page, has its name, dates, time zone, location and landing page owned by that platform, which rewrites them on its next import or sync. A different value for one of those is:
  • returned in fields as {"field": ..., "status": "refused", "reason": "provider_owned", "provider": "luma" | "splash" | "zuddl"},
  • reported as a partial_coverage gap (“Collab fields owned by the event platform were not changed”), so status is partial,
  • NOT saved. The fields the platform does not own (region, rsvp_target) are still saved.
Tell the user to make that change on the event platform itself.

Response

The shape below is from the contract and the code (tools/update_collab.py, collab-write-contract.json). A success was not captured live, because this tool edits a real collab. A time edit moves the start and end everywhere at once, so list_events, get_event_details and the dashboard agree.

Rules the agent must follow

  • Change only these eight settings (plus the target spec). Briefs, drafts and event framing go to save_event_context; a new event goes to create_collab.
  • Never guess a time zone from an offset or a place.
  • To move an event later than its stored end, send event_start and event_end together. A lone event_start after the stored end is refused, naming that end.
  • Report every refused field to the user, with the platform named. Never say a refused change was saved.
  • This tool never edits the description, authored context, cost, rep, data-collection window, sign-ups, roster, partners or Playbook, and never touches the event on the event platform.

Errors and gaps

Trimmed from a real call with no arguments today: