Atlas / MCP servers / robdmac / Talkito

TalkitoBLOCK

mcp/robdmac/talkito

TalkiTo lets developers interact with AI systems through speech across multiple channels (terminal, API, phone). It can be used as both a command-line tool and a Python library.

Verdict
BLOCK
Grade
F
Trust score
54 /100
Exposed tools
36 21r · 15w · 0d
Transport
sse · stdio · streamable-http
License
AGPL-3.0
Stars
54
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/robdmac/talkito/stargazers) [](https://github.com/robdmac/talkito/network/members) [](https://github.com/robdmac/talkito/blob/main/LICENSE) [](https://discord.gg/WbP58Tym)

TalkiTo lets developers talk, slack and whatsapp with Claude Code and OpenAI Codex. It can be used as a command-line tool, a web extension, and as a Python library.

🚀 Quick Install

Option 1: One-liner Install Script (Recommended)

curl -sSL https://raw.githubusercontent.com/robdmac/talkito/main/install.sh | bash

Option 2: PyPI

pip install talkito

Then just run:

talkito claude

Install for End Users

From Source (Stable)

# Clone the repository
git clone https://github.com/robdmac/talkito.git
cd talkito

# Create and activate virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate

# Install system dependencies (macOS)
brew install portaudio

# Install package (normal install - gets updates via git pull)
pip install .

# Run this in a directory you want to use claude with
talkito claude

Install for Developers

Editable Install (Development)

# Clone the repository
git clone https://github.com/robdmac/talkito.git
cd talkito

# Create and activate virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate

# Install system dependencies (macOS)
brew install portaudio

# Install in development mode (editable install)
pip install -e .

# Run this in a directory you want to use claude with
talkito claude

or for the web extension run as

talkito --m
Read from source at commit 304e05cedea5OBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add vite-react-typescript-starter --env ASSEMBLYAI_API_KEY=${ASSEMBLYAI_API_KEY} --env AZURE_SPEECH_KEY=${AZURE_SPEECH_KEY} --env BING_KEY=${BING_KEY} --env DEEPGRAM_API_KEY=${DEEPGRAM_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "vite-react-typescript-starter": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ASSEMBLYAI_API_KEY": "${ASSEMBLYAI_API_KEY}",
        "AZURE_SPEECH_KEY": "${AZURE_SPEECH_KEY}",
        "BING_KEY": "${BING_KEY}",
        "DEEPGRAM_API_KEY": "${DEEPGRAM_API_KEY}"
      }
    }
  }
}
03

Exposed tools (36)

21 read · 15 write · 0 destructive.

ToolRiskDescription
change_asrread
change_ttsread
configure_asrread
configure_communicationread
configure_ttsread
cycle_tts_voiceread
disable_asrwrite
disable_ttswrite
enable_asrwrite
enable_ttswrite
get_communication_statusread
get_dictated_textread
get_messagesread
get_slack_mode_statusread
get_speech_statusread
get_talkito_statusread
get_talkito_versionreadGet the current version of talkito
get_whatsapp_mode_statusread
list_tts_voicesread
randomize_tts_voiceread
send_slackwrite
send_whatsappwrite
set_asr_modewrite
set_tts_modewriteSet TTS mode
skip_current_speechread
speak_textread
start_notification_streamwrite
start_slack_modewrite
start_whatsapp_modewrite
stop_all_speechwrite
stop_slack_modewrite
stop_voice_inputwrite
stop_whatsapp_modewrite
turn_offread
turn_onread
wait_for_speech_completionread
04

Trust audit

BLOCKgrade F · trust 54/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (4 observation(s))
Network
declared (9 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (18)

CRITICALHard-coded secrets · secret.slack · CWE-798, CWE-321
.env.example:43
# SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
CRITICALHard-coded secrets · secret.slack · CWE-798, CWE-321
talkito/templates.py:81
# SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
talkito/asr.py:1982
aws_note = "Requires AWS credentials (env vars, ~/.aws/credentials, or IAM role)"
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
talkito/tts.py:1643
polly_note = "Requires AWS credentials (env vars, ~/.aws/credentials, or IAM role)"
Why it matters. touches a credential store
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
talkito/asr.py:383
importlib.import_module(module_name.split('.')[0])
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
talkito/clients.py:156
curl_cmd = f'curl -s -X POST http://127.0.0.1:{webhook_port}/hook -H \'Content-Type: application/json\' -d \'{{\"hook_type\": \"{hook_type}\", \"timestamp\": \"\'$(date -u +%Y-%m-%dT%H:%M:%SZ)\'\"}}\'
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
talkito/clients.py:230
def init_claude(address="http://127.0.0.1", port=8001):
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
talkito/clients.py:260
print("Install Claude CLI and run: claude mcp add --transport http talkito http://127.0.0.1:8000/mcp")
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
talkito/clients.py:269
def init_codex(transport="streamable-http", address="http://127.0.0.1", port=8001):
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
talkito/clients.py:380
f'http://127.0.0.1:{check_port}/mcp',
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
talkito/comms.py:514
return hashlib.md5(f"{time.time()}".encode()).hexdigest()[:8]
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
talkito/core.py:807
return hashlib.md5(content.encode()).hexdigest()
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
docs/package.json
serve
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
extensions/chrome/package.json
lucide-react, react, react-dom, @eslint/js, @types/react, @types/react-dom, @vitejs/plugin-react, autoprefixer
Why it matters. 17 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:326
- Set webhook URL in Twilio Console to: `https://YOUR-TOKEN.share.zrok.io/whatsapp`
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:349
- `ZROK_RESERVED_TOKEN`: Your zrok reserved share token for webhook tunneling
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:18
curl -sSL https://raw.githubusercontent.com/robdmac/talkito/main/install.sh | bash

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 304e05cedea5full audit observations/trust-audit/mcp-server/robdmac__talkito.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08304e05cedea5BLOCKF54first audit
06

Questions

What is the Talkito MCP server?

TalkiTo lets developers interact with AI systems through speech across multiple channels (terminal, API, phone). It can be used as both a command-line tool and a Python library.

What tools does Talkito expose?

36 in total: 21 read-only, 15 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Talkito safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (54/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Talkito need?

It reads ASSEMBLYAI_API_KEY, AZURE_SPEECH_KEY, BING_KEY, DEEPGRAM_API_KEY, ELEVENLABS_API_KEY, GOOGLE_APPLICATION_CREDENTIALS, HOUNDIFY_CLIENT_KEY, OPENAI_API_KEY, SLACK_APP_TOKEN, SLACK_BOT_TOKEN, TWILIO_AUTH_TOKEN and ZROK_RESERVED_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Talkito run?

It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as vite-react-typescript-starter at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (304e05cedea5), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement