Voices Overview
What voices are and the official voice repertoire
A voice is a pluggable package that gives agents tools and capabilities. Each voice is an npm package that exports a class implementing the Voice interface.
Official voices
| Voice | Package | Permissions | Tools | Description |
|---|---|---|---|---|
| Filesystem | @tuttiai/filesystem | filesystem | 7 | Read, write, search, and manage local files |
| GitHub | @tuttiai/github | network | 10 | Issues, PRs, repos, code search |
| Playwright | @tuttiai/playwright | network, browser | 12 | Browser automation, screenshots, page interaction |
| Web | @tuttiai/web | network | 3 | Search the web, fetch URLs, parse sitemaps |
| Sandbox | @tuttiai/sandbox | shell | 4 | Execute TypeScript, Python, Bash + sandboxed file I/O |
| RAG | @tuttiai/rag | filesystem, network | ingest, chunk, embed, search | Retrieval-augmented generation over your own documents |
| Slack | @tuttiai/slack | network | 11 (5 destructive) | Channels, threads, DMs, reactions |
| Discord | @tuttiai/discord | network | 11 (5 destructive) | Messages, channels, members, reactions, DMs |
@tuttiai/twitter | network | 9 (3 destructive) | Tweets, threads, mentions, timeline | |
| Postgres | @tuttiai/postgres | network | 8 (1 destructive) | Read-only query + schema introspection + write escape hatch |
| Stripe | @tuttiai/stripe | network | 27 (9 destructive) | Customers, payments, subs, invoices, balance |
| Realtime | @tuttiai/realtime | network | 1 + audio bridge | OpenAI Realtime API — voice in / voice out with HITL gating |
| MCP Bridge | @tuttiai/mcp | network | dynamic | Wrap any MCP server as a Tutti voice |
Destructive tools (posting, deleting, sending, paying) gate behind operator approval automatically — see HITL by default.
Installing a voice
npx tutti-ai add filesystem
npx tutti-ai add github
npx tutti-ai add playwright
npx tutti-ai add web
npx tutti-ai add sandbox
npx tutti-ai add rag
npx tutti-ai add slack
npx tutti-ai add discord
npx tutti-ai add twitter
npx tutti-ai add postgres
npx tutti-ai add stripe
npx tutti-ai add realtime
npx tutti-ai add mcp
Discovering voices
npx tutti-ai voices # list all official voices + install status
npx tutti-ai search browser # search by name, description, or tags
Using a voice
import { FilesystemVoice } from "@tuttiai/filesystem";
export default defineScore({
provider: new AnthropicProvider(),
agents: {
coder: {
name: "Coder",
system_prompt: "You can read and write files.",
voices: [new FilesystemVoice()],
permissions: ["filesystem"],
},
},
});
The Voice interface
Every voice implements:
interface Voice {
name: string;
description?: string;
tools: Tool[];
required_permissions: Permission[];
setup?(context: VoiceContext): Promise<void>;
teardown?(): Promise<void>;
}
MCP Bridge
The @tuttiai/mcp voice wraps any MCP server as a Tutti voice. Tools are discovered dynamically at runtime — no manual tool definitions needed:
import { McpVoice } from "@tuttiai/mcp";
const mcp = new McpVoice({ server: "npx @playwright/mcp" });
// Agent gets ALL tools from the MCP server automatically
See the API reference for full McpVoice options.
Community voices
Anyone can build and publish a voice. See Building a Voice for a step-by-step guide.
Publish your voice with tutti-ai publish — it handles npm publishing and opens a PR to the voice registry automatically.