Skip to content
← Developers

The agent construction kit

One agent, built from parts, every part priced. For people on the Agents page, and for agents by one call. Read this as markdown at /developers/agent-kit.md.

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), or act (owner only, never for a tool its server marks destructive).
  • answer_mode: safe (an answer from a connected tool goes to the owner first) or bold (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
  }
}