Build an agent for MeetingBurner meetings from parts: a name, a face, a voice, a brain, skills, a personality and permissions. Every part has a price a minute shown beside it, a part you bring on your own key adds nothing, and a token is a cent. The same build can be made on the Agents page or by the call at the end of this page.
What the room always shows, whatever is built: the agent's name, whose it is, and the AI marker. Nothing an agent is given here lets it hide that it is an AI, talk over a person, or send, change or spend anything its owner did not allow.
This page as markdown: https://meetingburner.com/developers/agent-kit.md
Faces
face takes { "provider": ..., "id": ... }. A face needs a voice: picking one with no voice gives the agent Heart. No face uploads; photoreal is our own Cynthia.
| provider | id | Name | State | Tokens a minute |
|---|---|---|---|---|
none |
— | No face | live | 0 |
cartoon |
cartoon-1 |
Cartoon Cynthia | live | +2 |
cartoon |
cartoon-2 |
Ben | coming | +2 |
cartoon |
cartoon-3 |
Helen | coming | +2 |
cartoon |
cartoon-4 |
Walter | coming | +2 |
cartoon |
cartoon-5 |
Tessa | coming | +2 |
cartoon |
cartoon-6 |
Owen | coming | +2 |
cartoon |
cartoon-7 |
Iris | coming | +2 |
cartoon |
cartoon-8 |
Sam | coming | +2 |
cartoon |
cartoon-9 |
Josie | coming | +2 |
photoreal |
cynthia-scene |
Photoreal Cynthia | held, John first | +6 (proposed) |
anam |
— | Anam face, your key | your key | 0 |
outside |
— | Bring your own complete avatar | live | 0 |
Voices
voice takes { "provider": ..., "id": ... }. none is chat only: a flat 1 a minute and no face. byo_realtime is speech to speech and fills the brain too. Anam's voice goes with an Anam face.
| provider | id | Name | State | Tokens a minute |
|---|---|---|---|---|
kokoro |
af_heart |
Heart | live | +1 |
kokoro |
am_fenrir |
Fenrir | coming | +1 |
kokoro |
bf_emma |
Emma | coming | +1 |
kokoro |
bm_george |
George | coming | +1 |
kokoro |
af_bella |
Bella | coming | +1 |
kokoro |
am_michael |
Michael | coming | +1 |
kokoro |
af_sarah |
Sarah | coming | +1 |
kokoro |
am_puck |
Puck | coming | +1 |
kokoro |
af_aoede |
Aoede | coming | +1 |
assemblyai_tts |
tts-1 |
Premium voice | coming | +2 (proposed) |
openai_tts |
marin |
Marin, your OpenAI key | your key | 0 |
anam |
— | Anam’s voice | your key | 0 |
byo_realtime |
— | Speech to speech, your key | your key | 0 |
none |
— | No voice | live | flat 1 |
Brains
brain takes { "provider", "tier", "key_vendor", "key_id", "bridge_id" }. Never a model name: a tier for ours, a vendor for yours. A key is stored once through POST /api/account/provider-keys and only its id and first characters ever come back; the agent row names the id, never the key.
| provider | config | Name | State | Tokens a minute |
|---|---|---|---|---|
ours |
tier fast |
Cynthia’s mind, fast | live | +1 |
ours |
tier big |
Cynthia’s mind, big | live | +1 |
byo_key |
key_vendor anthropic, key_id |
Anthropic, your key | your key | 0 |
byo_key |
key_vendor openai, key_id |
OpenAI, your key | your key | 0 |
byo_key |
key_vendor google, key_id |
Google, your key | your key | 0 |
byo_key |
key_vendor xai, key_id |
xAI, your key | your key | 0 |
bridge |
bridge_id muse |
Muse | coming | 0 |
bridge |
bridge_id dots |
dots | coming | 0 |
bridge |
bridge_id grokbot |
GrokBot | coming | 0 |
bridge |
bridge_id claude |
Claude, over MCP | coming | 0 |
Skills
skills.built_in is a list of ids. skills.connections names each connected MCP server with allowed_tools (every tool is opted in; an empty list means none) and writes_enabled. A tool that changes, sends or spends stays off until writes are enabled on that connection, and then still waits for the owner's spoken Go unless action_tier is act.
| id | Name | Does | What it is |
|---|---|---|---|
catch_up |
Catch up | Reads | Reads the transcript so far and answers "what did I miss". |
meeting_control |
Meeting control | Changes things | Mute, admit, remove, end: the host’s buttons, every press published to the room. |
people_notes |
People notes | Changes things | Remembers what you tell it about the people you meet. |
meeting_history |
Meeting history | Reads | Answers from your past meetings, with the line it found. |
present_deck |
Present a deck | Changes things | Writes a few slides and shares its screen. Anyone can say Stop. |
magic_trick |
Magic trick | Reads | A party piece when someone asks for one. |
sing |
Sing (Suno) | Spends money | Writes and plays a song on your own Suno credits. |
Personality and permissions
personality: up to 1,500 characters, read by the brain every turn UNDER the house rules. It cannot lift a ban, hide the AI marker or grant a power the permissions below do not.
permissions:
speak_mode, when it speaks up:when_addressed: She answers when someone says her name.direct_questions: Her name, and a question that follows straight on from what she just said.joins_in: Also answers an open question to the room that nobody else was asked. She does not comment on talk that is not a question.interrupts_per_10_min: 0 to 3 unprompted interjections in ten minutes; default 1. Anyone talking over the agent stops it.may_present: may share a screen and walk a deck; anyone can say Stop. Never for an outside agent yet.action_tier:read(default),act_with_go(acts after the owner's spoken Go), oract(owner only, never for a tool its server marks destructive).answer_mode:safe(an answer from a connected tool goes to the owner first) orbold(spoken at once).cost_cap_tokens_per_meeting: default 1,200; at the cap the agent drops to chat and says so.
is_stopped: the kill switch. A stopped agent leaves every meeting and cannot be added until its owner turns it back on.
The account sets the ceiling; an agent may tighten it, never loosen it; the host of a room can always turn an agent down or send it home.
Price
The list price: a speaking agent pays a base fee of 6 tokens a minute (ears, transcription, the seat and video) plus each part we run, from the tables above. A part you bring adds 0. Chat only is a flat 1. A song (Suno) is paid per song on your own credits. "Proposed" marks a price awaiting a ruling.
What the meter bills today: Until the per-part meter ships, every speaking agent is billed 10 tokens a minute, whatever its parts; chat only is 1 token a minute either way. The list price applies once the per-part meter ships; the presets table shows both.
Presets
Start from one and edit. Each is a whole definition; the Agents page fills the form from it in one click. "List" is the per-part price; "Today" is what the meter bills until the per-part meter ships.
| id | Name | What it is | List, tokens a minute | Today | Speaks |
|---|---|---|---|---|---|
cynthia |
Cynthia | Our cartoon, our voice, our brain. 10 a minute. | 10 | 10 | It speaks direct questions and interrupts at most once in ten minutes. Anyone talking over it stops it. |
photoreal-cynthia |
Photoreal Cynthia | The same agent with our photoreal face. | 14 | 10 | It speaks direct questions and interrupts at most once in ten minutes. Anyone talking over it stops it. |
anam-your-key |
Anam face, your tools | An Anam face on your key, your MCP tools, read with a spoken Go. | 7 | 10 | It speaks direct questions and interrupts at most once in ten minutes. Anyone talking over it stops it. |
grok-whole-agent |
Grok voice, whole agent | Your complete agent over LiveKit: its video, voice and brain. 6 a minute. | 6 | 10 | It speaks direct questions and interrupts at most once in ten minutes. Anyone talking over it stops it. |
claude-in-chat |
Claude, in the chat | No face, no voice. Claude reads and types through the hosted MCP door. 1 a minute. | 1 | 1 | It types in the chat and never speaks. |
The call
Opens when the kit’s store lands. The shape is final; the door is not yet open.
Live today: POST /api/v1/bots/join brings a complete outside agent into a meeting (https://meetingburner.com/developers/livekit-agents.md); POST /api/account/provider-keys stores a key, answering with an id and a prefix only; the hosted MCP door (https://meetingburner.com/api-docs.md) for an account with the door open.
The kit's contract: POST /api/agents with your API key, body as below, answers { "id": "..." }. The same build as an MCP tool call is create_agent on the hosted door. The Cynthia preset as the body:
curl -X POST https://meetingburner.com/api/agents \
-H "X-API-Key: $MEETINGBURNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Cynthia",
"description": "The agent built into MeetingBurner. Listens, answers when asked, keeps up with the meeting.",
"personality": "Warm, brief, direct. Answers the question that was asked and then stops.",
"face": {
"provider": "cartoon",
"id": "cartoon-1"
},
"voice": {
"provider": "kokoro",
"id": "af_heart"
},
"brain": {
"provider": "ours",
"tier": "fast",
"key_vendor": null,
"key_id": null,
"bridge_id": null
},
"skills": {
"built_in": [
"meeting_control",
"catch_up",
"people_notes",
"magic_trick",
"meeting_history"
],
"connections": []
},
"permissions": {
"speak_mode": "direct_questions",
"interrupts_per_10_min": 1,
"may_present": true,
"action_tier": "read",
"answer_mode": "safe",
"cost_cap_tokens_per_meeting": 1200
},
"is_stopped": false
}'
As an MCP call:
{
"tool": "create_agent",
"arguments": {
"name": "Cynthia",
"description": "The agent built into MeetingBurner. Listens, answers when asked, keeps up with the meeting.",
"personality": "Warm, brief, direct. Answers the question that was asked and then stops.",
"face": {
"provider": "cartoon",
"id": "cartoon-1"
},
"voice": {
"provider": "kokoro",
"id": "af_heart"
},
"brain": {
"provider": "ours",
"tier": "fast",
"key_vendor": null,
"key_id": null,
"bridge_id": null
},
"skills": {
"built_in": [
"meeting_control",
"catch_up",
"people_notes",
"magic_trick",
"meeting_history"
],
"connections": []
},
"permissions": {
"speak_mode": "direct_questions",
"interrupts_per_10_min": 1,
"may_present": true,
"action_tier": "read",
"answer_mode": "safe",
"cost_cap_tokens_per_meeting": 1200
},
"is_stopped": false
}
}