Connector action

update_event

WriteIdempotent50 calls per day

Update event name or date

Changes the event name, the event date, or both. Nothing else about an event is reachable through the connector. Send null as the date to clear it.

What the client is told

The description an MCP client receives from tools/list, word for word:

Changes only the event name or the event date. Changing the date also moves the call-in window the way the dashboard does. Nothing else about the event can be changed here.

Annotations

json
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}

Parameters

ParameterTypeRequiredDescription
event_idstring (uuid)YesThe event id, as returned by search_events or create_event.
event_namestring, up to 120 charactersNoThe event name shown to you and to guests.
event_datedate (YYYY-MM-DD) or nullNoThe new event date. Send null to clear it. Changing it moves the call-in window the way the dashboard does.
Input schema as JSON Schema
inputSchema
{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "event_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "event_date": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "event_id"
  ]
}

Example

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "update_event",
    "arguments": {
      "event_id": "b84d2e07-5c3a-4f19-a6e2-91f0c3d7b2e4",
      "event_date": "2026-12-06"
    }
  }
}

With curl

bash
curl -X POST https://www.happyhearaudio.com/api/mcp \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"update_event","arguments":{"event_id":"b84d2e07-5c3a-4f19-a6e2-91f0c3d7b2e4","event_date":"2026-12-06"}}}'

Response

Fake data in a real shape. content[0].text is the same object as a JSON string for clients that read text only.

json
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"event_id\":\"b84d2e07-5c3a-4f19-a6e2-91f0c3d7b2e4\",\"updated\":true,\"dashboard_url\":\"https://www.happyhearaudio.com/dashboard/events/b84d2e07-5c3a-4f19-a6e2-91f0c3d7b2e4\"}"
      }
    ],
    "structuredContent": {
      "event_id": "b84d2e07-5c3a-4f19-a6e2-91f0c3d7b2e4",
      "updated": true,
      "dashboard_url": "https://www.happyhearaudio.com/dashboard/events/b84d2e07-5c3a-4f19-a6e2-91f0c3d7b2e4"
    }
  }
}

Errors

Each of these comes back as a normal JSON-RPC result with isError: true and the message as its single text item. Arguments the schema rejects are a JSON-RPC -32602 error instead. See Errors for the HTTP-level refusals that happen before any tool runs.

MessageWhen
No event with that id in your account.The id is not an event in the signed-in account, or the event was deleted.
Provide event_name, event_date, or bothNeither field was sent. The schema rejects the call before it reaches the server logic.
<a validation message>The date is outside what the dashboard allows (for example, the account has no date changes remaining on this event).
Daily limit reached: your AI assistant has already made 50 event edits in the last 24 hours, so nothing was changed. You can do this in your Happy Hear dashboard now, or ask again tomorrow. If this looks wrong, email hello@happyhearaudio.com.The account already made 50 calls to this tool in the last 24 hours. The refusal is logged and does not count toward the limit.
Something went wrong on our side. Try again in a minute.An unexpected failure inside the write. Nothing was changed.

Limits

  • 60 requests per minute per operator across all actions, answered with HTTP 429 and a Retry-After header past that.
  • 50 successful calls per operator in any rolling 24 hours, the same on every plan. The refusal does not count toward the cap.

Worth knowing

  • Moving the date moves the call-in window with it, the way the dashboard does.
  • Idempotent: sending the same values again succeeds and changes nothing.
  • Keys that are not present are left alone. Only event_date distinguishes "absent" from null.
Claude and ChatGPT ask the operator to approve a write action before it runs unless the operator turns that off on their side. Design your client the same way: confirm before calling.

See also