Standups
Daily standup meetings.
19 actions. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.
standups.create
POST · mutating
Start a standup in a conversation. Attendees (humans + agents) each give yesterday / today / blockers in a timed round-robin (5 min each by default), then the floor opens to dive into anything. A live action-item draft doc is created. Defaults attendees to the conversation members; the first agent becomes the AI facilitator that listens + drafts action items. Set autostart:true to go live immediately.
- AI tool:
standups_create - API:
POST /api/invoke/standups.create
Input
| Field | Type | Required | Description |
|---|---|---|---|
conversationId |
string | yes | |
title |
string | — | |
attendeeIds |
string[] | — | |
facilitatorId |
union | — | |
perAttendeeMinutes |
number | — | |
mediaKind |
"none" | "audio" | "video" | — | |
realtimeModelId |
union | — | |
cadence |
"none" | "daily" | "weekly" | — | |
scheduledFor |
union | — | |
autostart |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"conversationId": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"attendeeIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"facilitatorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"perAttendeeMinutes": {
"type": "number",
"minimum": 1,
"maximum": 30
},
"mediaKind": {
"type": "string",
"enum": [
"none",
"audio",
"video"
]
},
"realtimeModelId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"cadence": {
"type": "string",
"enum": [
"none",
"daily",
"weekly"
]
},
"scheduledFor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"autostart": {
"type": "boolean"
}
},
"required": [
"conversationId"
]
}standups.get
GET
Fetch a standup with its attendee updates and draft action items.
- AI tool:
standups_get - API:
GET /api/invoke/standups.get
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}standups.list
GET
List standups, optionally filtered by conversation and/or status (scheduled | live | completed | cancelled).
- AI tool:
standups_list - API:
GET /api/invoke/standups.list
Input
| Field | Type | Required | Description |
|---|---|---|---|
conversationId |
string | — | |
status |
string | — | |
limit |
integer | — | |
offset |
integer | — | |
orderBy |
string | — | |
orderDir |
"asc" | "desc" | — | |
q |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"conversationId": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"orderBy": {
"type": "string"
},
"orderDir": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"q": {
"type": "string"
}
}
}standups.start
POST · mutating
Begin a scheduled standup: go live and start the first attendee’s turn.
- AI tool:
standups_start - API:
POST /api/invoke/standups.start
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}standups.submit_update
POST · mutating
Record an attendee’s yesterday / today / blockers (and optional transcript), post it to the conversation, refresh the draft doc, let the AI facilitator extract action items, and advance to the next attendee (unless advance:false).
- AI tool:
standups_submit_update - API:
POST /api/invoke/standups.submit_update
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
actorId |
string | yes | |
yesterday |
string | — | |
today |
string | — | |
blockers |
string | — | |
notes |
string | — | |
transcript |
string | — | |
advance |
boolean | — | |
assist |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"actorId": {
"type": "string",
"minLength": 1
},
"yesterday": {
"type": "string"
},
"today": {
"type": "string"
},
"blockers": {
"type": "string"
},
"notes": {
"type": "string"
},
"transcript": {
"type": "string"
},
"advance": {
"type": "boolean"
},
"assist": {
"type": "boolean"
}
},
"required": [
"id",
"actorId"
]
}standups.generate_agent_update
POST · mutating
Generate an AI attendee’s own yesterday / today / blockers from its recent tickets and submit it as their standup turn (then advance unless advance:false).
- AI tool:
standups_generate_agent_update - API:
POST /api/invoke/standups.generate_agent_update
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
agentActorId |
string | yes | |
advance |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"agentActorId": {
"type": "string",
"minLength": 1
},
"advance": {
"type": "boolean"
}
},
"required": [
"id",
"agentActorId"
]
}standups.advance_turn
POST · mutating
Move to the next pending attendee, or open the floor when everyone is done.
- AI tool:
standups_advance_turn - API:
POST /api/invoke/standups.advance_turn
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}standups.skip_turn
POST · mutating
Skip the current (or a specific) attendee and advance.
- AI tool:
standups_skip_turn - API:
POST /api/invoke/standups.skip_turn
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
actorId |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"actorId": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}standups.set_phase
POST · mutating
Set the meeting phase: round-robin, open-floor (dive-in), or review (wrap-up).
- AI tool:
standups_set_phase - API:
POST /api/invoke/standups.set_phase
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
phase |
"round-robin" | "open-floor" | "review" | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"phase": {
"type": "string",
"enum": [
"round-robin",
"open-floor",
"review"
]
}
},
"required": [
"id",
"phase"
]
}standups.add_action_item
POST · mutating
Add a draft action item to the standup. operation "create" makes a new task on wrap-up; "update"/"reassign" target an existing ticket via relatedTicketId. AI assistants call this whenever they hear a concrete follow-up or blocker.
- AI tool:
standups_add_action_item - API:
POST /api/invoke/standups.add_action_item
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
title |
string | yes | |
description |
string | — | |
assigneeIds |
string[] | — | |
priority |
"low" | "normal" | "high" | "urgent" | — | |
dueDate |
union | — | |
operation |
"create" | "update" | "reassign" | — | |
relatedTicketId |
union | — | |
sourceActorId |
union | — | |
createdByActorId |
union | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"assigneeIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"priority": {
"type": "string",
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"dueDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"operation": {
"type": "string",
"enum": [
"create",
"update",
"reassign"
]
},
"relatedTicketId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"sourceActorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"createdByActorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"title"
]
}standups.update_action_item
PATCH · mutating
Edit a draft action item — title, description, assignees, priority, due date, operation, target ticket, or status.
- AI tool:
standups_update_action_item - API:
PATCH /api/invoke/standups.update_action_item
Input
| Field | Type | Required | Description |
|---|---|---|---|
itemId |
string | yes | |
patch |
object | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"itemId": {
"type": "string",
"minLength": 1
},
"patch": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"assigneeIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"priority": {
"type": "string",
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"dueDate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"operation": {
"type": "string",
"enum": [
"create",
"update",
"reassign"
]
},
"relatedTicketId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"draft",
"confirmed",
"applied",
"discarded"
]
}
}
}
},
"required": [
"itemId",
"patch"
]
}standups.remove_action_item
DELETE · mutating
Discard a draft action item so it is not turned into a ticket.
- AI tool:
standups_remove_action_item - API:
DELETE /api/invoke/standups.remove_action_item
Input
| Field | Type | Required | Description |
|---|---|---|---|
itemId |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"itemId": {
"type": "string",
"minLength": 1
}
},
"required": [
"itemId"
]
}standups.agent_assist
POST · mutating
Have the AI facilitator read the standup transcript so far and silently draft action items (and search for existing tickets to update/reassign). Returns how many items it added.
- AI tool:
standups_agent_assist - API:
POST /api/invoke/standups.agent_assist
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
actorId |
string | — | |
instruction |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"actorId": {
"type": "string",
"minLength": 1
},
"instruction": {
"type": "string"
}
},
"required": [
"id"
]
}standups.ingest_speech
POST · mutating
Feed a chunk of live speech (browser speech-to-text) from a speaker into the standup: logs it to their turn transcript and extracts any concrete action items from it via the LLM. This is what makes "talk and tasks appear as you speak" work. Returns the bundle + how many items were added.
- AI tool:
standups_ingest_speech - API:
POST /api/invoke/standups.ingest_speech
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
actorId |
string | yes | |
text |
string | yes | |
extract |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"actorId": {
"type": "string",
"minLength": 1
},
"text": {
"type": "string"
},
"extract": {
"type": "boolean"
}
},
"required": [
"id",
"actorId",
"text"
]
}standups.attach_media
POST · mutating
Attach an uploaded recording (audio/video) to the whole session or one attendee’s turn, then best-effort server-transcribe it (Deepgram/Whisper). Upload the blob to /api/files/upload first, then pass its url here.
- AI tool:
standups_attach_media - API:
POST /api/invoke/standups.attach_media
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
actorId |
union | — | |
kind |
"audio" | "video" | yes | |
url |
string | yes | |
mimeType |
string | — | |
transcribe |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"actorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"audio",
"video"
]
},
"url": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"transcribe": {
"type": "boolean"
}
},
"required": [
"id",
"kind",
"url"
]
}standups.realtime_token
POST · mutating
Mint a short-lived realtime-voice token so an AI attendee can join the live standup over WebRTC, listen, and assist. Returns { ok:false, reason } when realtime voice is not configured — the client then uses the text path.
- AI tool:
standups_realtime_token - API:
POST /api/invoke/standups.realtime_token
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
agentActorId |
string | yes | |
voice |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"agentActorId": {
"type": "string",
"minLength": 1
},
"voice": {
"type": "string"
}
},
"required": [
"id",
"agentActorId"
]
}standups.realtime_settle
POST · mutating
Settle remaining Hypery realtime voice cost after a WebRTC session ends (mint floor already charged).
- AI tool:
standups_realtime_settle - API:
POST /api/invoke/standups.realtime_settle
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
sessionId |
string | yes | |
durationMs |
integer | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"sessionId": {
"type": "string",
"minLength": 1
},
"durationMs": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"sessionId",
"durationMs"
]
}standups.complete
POST · mutating
Wrap up the standup: turn the confirmed action items into ticket changes (create new tasks, or update/reassign existing tickets), finalize the recording + draft doc, and post a summary. confirmedItemIds selects which draft items to apply; omit to apply all non-discarded items.
- AI tool:
standups_complete - API:
POST /api/invoke/standups.complete
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
confirmedItemIds |
string[] | — | |
recordingUrl |
string | — | |
transcript |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"confirmedItemIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"recordingUrl": {
"type": "string"
},
"transcript": {
"type": "string"
}
},
"required": [
"id"
]
}standups.cancel
POST · mutating
Cancel a standup without creating any tickets.
- AI tool:
standups_cancel - API:
POST /api/invoke/standups.cancel
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}