Connector action
get_event
ReadIdempotent
Get one event
One event in full: the same row search_events returns, plus one entry per message with its number, source, state, length and whether the operator hid it. Use it when counts are not enough.
What the client is told
The description an MCP client receives from tools/list, word for word:
Full status of one event: message counts by state (ready / cleaning / waiting / needs attention), call-in window, gallery link, whether the gallery was sent and opened. Message states only; never audio or text.
Annotations
{
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| event_id | string (uuid) | Yes | The event id, as returned by search_events or create_event. |
Input schema as JSON Schema
{
"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)$"
}
},
"required": [
"event_id"
]
}Example
Request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_event",
"arguments": {
"event_id": "7c1f3a2e-9b4d-4e61-8f0a-2d5c6b7e8a91"
}
}
}With curl
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":"get_event","arguments":{"event_id":"7c1f3a2e-9b4d-4e61-8f0a-2d5c6b7e8a91"}}}'Response
Fake data in a real shape. content[0].text is the same object as a JSON string for clients that read text only.
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "{\"event\":{\"id\":\"7c1f3a2e-9b4d-4e61-8f0a-2d5c6b7e8a91\",\"event_name\":\"Rivera 50th Anniversary\",\"event_date\":\"2026-11-14\",\"status\":\"active\",\"unlocked\":true,\"payment_type\":\"per_event\",\"created_at\":\"2026-10-02T18:21:07.412Z\",\"updated_at\":\"2026-10-29T03:14:55.009Z\",\"gallery_slug\":\"rivera-50th-anniversary\",\"gallery_url\":\"https://www.happyhearaudio.com/g/rivera-50th-anniversary\",\"has_share_code\":false,\"gallery_sent\":true,\"gallery_first_opened_at\":\"2026-11-16T15:02:41.000Z\",\"download_enabled\":true,\"callin_enabled\":true,\"callin_start_date\":\"2026-11-07\",\"callin_end_date\":\"2026-11-21\",\"clean_level\":\"standard\",\"date_changes_remaining\":2,\"messages_total\":42,\"messages_ready\":39,\"messages_cleaning\":2,\"messages_waiting\":0,\"messages_needs_attention\":1,\"messages_hidden_by_operator\":1,\"unique_visitors\":63,\"total_plays\":217,\"total_downloads\":11},\"messages\":[{\"message_number\":1,\"source\":\"callin\",\"state\":\"ready\",\"duration_seconds\":24,\"hidden_from_gallery\":false},{\"message_number\":2,\"source\":\"upload\",\"state\":\"ready\",\"duration_seconds\":41,\"hidden_from_gallery\":false},{\"message_number\":3,\"source\":\"web\",\"state\":\"cleaning\",\"duration_seconds\":18,\"hidden_from_gallery\":false},{\"message_number\":4,\"source\":\"callin\",\"state\":\"needs_attention\",\"duration_seconds\":0,\"hidden_from_gallery\":true}],\"dashboard_url\":\"https://www.happyhearaudio.com/dashboard/events/7c1f3a2e-9b4d-4e61-8f0a-2d5c6b7e8a91\"}"
}
],
"structuredContent": {
"event": {
"id": "7c1f3a2e-9b4d-4e61-8f0a-2d5c6b7e8a91",
"event_name": "Rivera 50th Anniversary",
"event_date": "2026-11-14",
"status": "active",
"unlocked": true,
"payment_type": "per_event",
"created_at": "2026-10-02T18:21:07.412Z",
"updated_at": "2026-10-29T03:14:55.009Z",
"gallery_slug": "rivera-50th-anniversary",
"gallery_url": "https://www.happyhearaudio.com/g/rivera-50th-anniversary",
"has_share_code": false,
"gallery_sent": true,
"gallery_first_opened_at": "2026-11-16T15:02:41.000Z",
"download_enabled": true,
"callin_enabled": true,
"callin_start_date": "2026-11-07",
"callin_end_date": "2026-11-21",
"clean_level": "standard",
"date_changes_remaining": 2,
"messages_total": 42,
"messages_ready": 39,
"messages_cleaning": 2,
"messages_waiting": 0,
"messages_needs_attention": 1,
"messages_hidden_by_operator": 1,
"unique_visitors": 63,
"total_plays": 217,
"total_downloads": 11
},
"messages": [
{
"message_number": 1,
"source": "callin",
"state": "ready",
"duration_seconds": 24,
"hidden_from_gallery": false
},
{
"message_number": 2,
"source": "upload",
"state": "ready",
"duration_seconds": 41,
"hidden_from_gallery": false
},
{
"message_number": 3,
"source": "web",
"state": "cleaning",
"duration_seconds": 18,
"hidden_from_gallery": false
},
{
"message_number": 4,
"source": "callin",
"state": "needs_attention",
"duration_seconds": 0,
"hidden_from_gallery": true
}
],
"dashboard_url": "https://www.happyhearaudio.com/dashboard/events/7c1f3a2e-9b4d-4e61-8f0a-2d5c6b7e8a91"
}
}
}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.
| Message | When |
|---|---|
| Could not read that event right now. | A database read failed. Retry after a short wait. |
| No event with that id in your account. | The id is not an event in the signed-in account, or the event was deleted. |
Limits
- 60 requests per minute per operator across all actions, answered with HTTP 429 and a Retry-After header past that.
- No daily cap. Read actions are not logged and not counted.
Worth knowing
- Message states: ready, cleaning, waiting, needs_attention, video.
- Sources are how the message arrived: callin, sms, web or upload.
- At most 500 messages are listed per event.
- No audio, no transcript text, no caller details. The view the tool reads has no such columns.
See also
- The operator-facing description of this action: Get one event.
- Machine-readable schema: tools.json.