About Realtime Avatar
Realtime Avatar is an MCP server for coding agents that need to inspect avatars, credits, sessions, and clips. Read tools are available by default; write operations require an explicit setting, and starting a call can consume credits.
Key features
- 01List and inspect avatars
- 02Check credit balance and reservations
- 03Review session billing
- 04Inspect avatar clip libraries
- 05Gate write tools with an environment setting
Use cases
- 01Find usable avatar IDs before an integration
- 02Check credits reserved by active calls
- 03Review session durations and charges
- 04Verify avatar clips and their status
MCP support
Exposes read tools and opt-in write tools for Realtime Avatar to MCP clients. Its instructions communicate integration details and per-second call billing.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y realtime-avatar-mcpREALTIME_AVATAR_API_KEYSecretRealtime Avatar API key (tic_test_ or tic_live_). A free sandbox key: https://realtimeavatar.ai/signupREALTIME_AVATAR_ALLOW_WRITESSet to 1 to enable write tools (avatar creation, clip library, start_call). start_call bills per second and refuses tic_live_ keys.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
5Saved tool list · updated today
This tool takes no parameters.
Details
From the project READMErealtime-avatar-mcp
Published on npm as realtime-avatar-mcp — run it with npx, never installed into an app.
An MCP server for Realtime Avatar. AGENTS.md tells a coding agent what
the API is; this lets it look — at your avatars, your balance, your bill — instead of
guessing ids and inventing shapes.
{
"mcpServers": {
"realtime-avatar": {
"command": "npx",
"args": ["-y", "realtime-avatar-mcp"],
"env": { "REALTIME_AVATAR_API_KEY": "tic_test_…" }
}
}
}
Full page, including the write tools and what they cost: https://realtimeavatar.ai/docs/mcp. You need an API key first — a sandbox key is free and needs no card.
Working on it in this repo? npm run build, then point command at node with
args: ["/abs/path/to/realtime-avatar-sdk/libs/mcp/dist/bin.js"].
Tools
| Tool | |
|---|---|
list_avatars | Every avatar with the id you pass to startCall, and which are usable live |
get_avatar | Full detail for one |
credit_balance | Balance, and what in-flight calls have reserved |
list_sessions | The itemised bill — when each session ran, how long, what it cost |
list_clips | An avatar's clip library: every clip, its status, the revision and rest pose |
With REALTIME_AVATAR_ALLOW_WRITES=1:
| Tool | Bills? | |
|---|---|---|
set_loop | Re-direct her resting loop from a new description | no |
set_clip_library | Declare an avatar's full clip set as JSON — the platform renders it | no |
upload_asset | Upload a file from this machine's disk, get a public URL | no |
create_remote_asset | Register a file already on the internet — no local copy | no |
create_avatar_from_image | Build an avatar from ONE still — the loop is generated | no |
create_avatar_from_video | Deprecated. Closed to new callers (422). Use the image tool | no |
start_call | Mint a live session to verify an integration | yes, per second |
Spending money is opt-in, and twice gated
The five tools above are read-only, and each carries readOnlyHint so a host can gate on
the annotation rather than on a name it has to recognise. Pointed at a production key, this
server is no more dangerous than a dashboard you left open.
REALTIME_AVATAR_ALLOW_WRITES=1 enables the write tools. Only start_call costs credits,
and it refuses a tic_live_ key outright — an operator who armed writes against a test
key and later swapped in a production one should not discover it by being billed. Two
independent gates, because one is a single mistake away from being none.
Two things to understand before arming writes:
upload_assetreads local disk. It opens whatever absolute path the agent names, on the machine running the server. Relative paths are refused rather than resolved against whatever directory the host spawned it in.- The clip declaration retires by omission.
set_clip_librarytakes the COMPLETE set; anything missing from it stops being served. Its plan reports kept/queued/retired clips. Declaresource.motionPromptorsource.assetId; the platform hosts and prepares media. The avatar's stored source is the implicit rest state — never declared, so the idprimaryis reserved.
Why an MCP server at all
An agent that reads docs still guesses. ava_… ids cannot be inferred, and the failures that
cost the most time here are invisible in a type signature: a reshaped connection payload is
rejected by the browser client; a 429 on a call is the queue, not an error; the resting loop
is the avatar's source rather than a library clip, so no declaration changes it.
list_avatars marks which avatars are actually usable. The server's instructions carry the
relay rule and the per-second billing model. That is context an agent cannot derive, delivered
where it is about to act.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.