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

VoicePackagePermissionsToolsDescription
Filesystem@tuttiai/filesystemfilesystem7Read, write, search, and manage local files
GitHub@tuttiai/githubnetwork10Issues, PRs, repos, code search
Playwright@tuttiai/playwrightnetwork, browser12Browser automation, screenshots, page interaction
Web@tuttiai/webnetwork3Search the web, fetch URLs, parse sitemaps
Sandbox@tuttiai/sandboxshell4Execute TypeScript, Python, Bash + sandboxed file I/O
RAG@tuttiai/ragfilesystem, networkingest, chunk, embed, searchRetrieval-augmented generation over your own documents
Slack@tuttiai/slacknetwork11 (5 destructive)Channels, threads, DMs, reactions
Discord@tuttiai/discordnetwork11 (5 destructive)Messages, channels, members, reactions, DMs
Twitter@tuttiai/twitternetwork9 (3 destructive)Tweets, threads, mentions, timeline
Postgres@tuttiai/postgresnetwork8 (1 destructive)Read-only query + schema introspection + write escape hatch
Stripe@tuttiai/stripenetwork27 (9 destructive)Customers, payments, subs, invoices, balance
Realtime@tuttiai/realtimenetwork1 + audio bridgeOpenAI Realtime API — voice in / voice out with HITL gating
MCP Bridge@tuttiai/mcpnetworkdynamicWrap 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.

Edit this page on GitHub →