Skip to main content
Glama
CTM VoiceAI MCP

CTM VoiceAI MCP

by CTMJSON

CTM VoiceAI MCP

Custom development, not an official CallTrackingMetrics product. Built and maintained by Jason Smith. For support, questions, or feedback, email jason.smith@ctm.com.

An MCP server (and Claude/Codex/pi skill) that reviews a CallTrackingMetrics (CTM) account's real call transcripts against its live VoiceAI agent instructions and produces prioritized, paste-ready prompt updates plus a fully rewritten prompt, rendered as a self-contained HTML report.

Highlights:

  • No API keys at all. Login is CTM OAuth2 (device flow), and the analysis is performed by your MCP assistant itself - there is no external LLM call and no model API key.

  • Data + renderer only. The server authenticates with CTM, fetches the agents and the call transcripts, and renders the final report. Your assistant does the thinking.

  • Read-only. It never changes a live agent. Recommendations are proposals for a human to review and apply.

  • PII-scrubbed output. Before anything is written or rendered, the server redacts emails, phone numbers, and detected caller/person names (2-3 word proper names) in the analysis prose, while preserving Markdown structure and the customer's own agent prompt.

  • Works with any MCP-capable client: Claude Desktop, Claude Code, Codex, pi, or a local LLM agent.

The flow

  1. Authenticate with CTM via OAuth device flow (ctm_voiceai_auth_login).

  2. Get the VoiceAI agents and their instructions (ctm_voiceai_get_voice_bots).

  3. Get the call activities and transcriptions (ctm_voiceai_get_calls). The response includes a plan sized to a default target of 500 calls (set target_calls to override, 0 for all), and the assistant dispatches one parallel subagent per batch so large call volumes are analyzed concurrently instead of serially.

  4. The subagents compare the transcripts against the instructions, call by call, and return compact per-call JSON.

  5. Your assistant merges the batches and writes the recommendations, including a full rewrite.

  6. Write the report (ctm_voiceai_write_report), which saves the files, renders the HTML report, and opens it in your browser.

Related MCP server: llm-assure-mcp

What the HTML report contains

  1. Topic analysis - canonical caller topics ranked by volume, with a High/Medium/Low voice-AI suitability rating and example calls.

  2. Call analysis - the per-call extraction behind those topics.

  3. Current agent prompt - the live instructions being reviewed.

  4. Recommended prompt updates - a Coverage Map plus prioritized, copy-paste-ready prompt snippets.

  5. Suggested rewritten prompt - a complete, self-contained rewrite with a Copy button.

Requirements

  • Node.js 20+

  • Python 3.9+ (standard library only; used for HTML rendering)

  • Any MCP-capable client

Quick start

1. Get the code

git clone https://github.com/CTMJSON/ctm-voiceai-mcp.git
cd ctm-voiceai-mcp
npm install

2. Register it with your MCP client

Claude Code (one command):

claude mcp add ctmVoiceAI --scope user -- node "$(pwd)/src/index.js"

Claude Desktop - add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "ctmVoiceAI": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/ctm-voiceai-mcp/src/index.js"]
    }
  }
}

Codex - add this to ~/.codex/config.toml:

[mcp_servers.ctmVoiceAI]
command = "node"
args = ["/ABSOLUTE/PATH/TO/ctm-voiceai-mcp/src/index.js"]

Other MCP clients - use the same stdio command: node /ABSOLUTE/PATH/TO/ctm-voiceai-mcp/src/index.js.

3. Run it

Ask your assistant:

Review the VoiceAI agent for account <account id>: analyze the calls, compare them to the current agent prompt, recommend updates, and open the report.

The assistant walks the six steps above. It logs in to CTM if needed (you enter a short code in the browser), pulls the agents and transcripts, does the analysis, and finally writes and opens the HTML report.

Tools

Tool

Step

Purpose

ctm_voiceai_configured

-

Config + login status (never reveals secrets)

ctm_voiceai_auth_login

1

Start or resume the device-flow login

ctm_voiceai_auth_status

1

Token state and expiry

ctm_voiceai_auth_logout

1

Delete stored tokens

ctm_voiceai_auth_url

1

Build a web-flow authorize URL

ctm_voiceai_auth_exchange

1

Exchange a web-flow code for tokens

ctm_voiceai_get_voice_bots

2

Get agents and their full current instructions

ctm_voiceai_get_calls

3

One page of answered calls with transcriptions

ctm_voiceai_write_report

6

Write files, render the HTML report, open it

ctm_voiceai_run_status

-

Read a prior report's metadata

ctm_voiceai_list_runs

-

List recent reports

Authentication is per-user: the server ships with a shared, public CTM OAuth client id (not a secret), but each user signs in with their own CTM login and only sees accounts that login can access.

Configuration (optional)

The defaults work out of the box. To change them, create ~/.config/ctm-voiceai/config.env:

# Optional tuning
CTM_VOICEAI_OPEN_REPORT=1        # 0 disables auto-opening the HTML report
CTM_VOICEAI_OUT_DIR=/custom/runs/dir
PYTHON_BIN=python3

Precedence: process environment, then ~/.config/ctm-voiceai/config.env, then any file named by CTM_VOICEAI_ENV_FILE. Never commit config.env or the stored tokens.

Output

Report runs are written to ~/.local/share/ctm-voiceai/runs/<account>-<timestamp>/:

voiceai_topic_analysis.html     the full report (opens automatically)
recommended_prompt_updates.md   the recommendations as Markdown
suggested_prompt_rewrite.md     the full rewritten agent prompt
analysis_artifacts.json         the raw analysis passed to the renderer
voiceai_topic_analysis.csv      ranked topics
run.json / run.log              run metadata and renderer log

Troubleshooting

  • "NO_AUTH" - run ctm_voiceai_auth_login to sign in.

  • Login code expired - device codes expire after about 25 minutes; just run ctm_voiceai_auth_login again for a new one.

  • Report did not open - set CTM_VOICEAI_OPEN_REPORT=1 (default) or open the voiceai_topic_analysis.html path returned by ctm_voiceai_write_report.

  • Thin analysis - accounts with few transcribed calls produce thin results. Check the reported call count before drawing conclusions.

Scope

Read-only against CTM (calls and voice-bot configuration). It never changes a live agent. No data leaves your machine except the analysis you explicitly write into the report - there is no external LLM call.

Support and feedback

This is a custom development, not an official CallTrackingMetrics product. Questions, bugs, feature requests, and feedback are welcome: jason.smith@ctm.com.

Available Tools

11 tools
ctm_voiceai_auth_exchangeCTM OAuth Exchange CodeB

Exchanges a web-flow authorization code for CTM OAuth tokens and stores them.

Inputs: code (required), redirect_uri (required).

ctm_voiceai_auth_loginCTM OAuth Login (Device Flow)A

Logs in to CTM with OAuth2 device flow. First call returns a user_code and verification_uri; the user visits the URL and enters the code. Call again (or pass wait_seconds) to finish and store tokens. No API key needed.

Inputs: wait_seconds.

ctm_voiceai_auth_logoutCTM OAuth LogoutA
Destructive

Deletes stored CTM OAuth tokens and any pending device-flow session.

Inputs: no named parameters.

ctm_voiceai_auth_statusCTM OAuth StatusA
Read-only

Reports whether CTM OAuth tokens are stored, their expiry, scope, and account id.

Inputs: no named parameters.

ctm_voiceai_auth_urlCTM OAuth Web Flow URLA
Read-only

Builds the OAuth2 authorization URL for the web flow. Open it in a browser; CTM redirects to your redirect_uri with a ?code=. Then call ctm_voiceai_auth_exchange with that code.

Inputs: redirect_uri (required), scope, state.

ctm_voiceai_configuredVoiceAI MCP ConfigurationA
Read-only

Shows configured CTM VoiceAI settings: OAuth client id, login state, the report renderer path, and where analysis runs are written. Never reveals secrets.

Inputs: no named parameters.

ctm_voiceai_get_callsGet Call Activities And TranscriptionsA
Read-only

Step 3 of the review flow: one GET against the CTM calls endpoint returning a page of answered calls with transcriptions. The response includes a plan describing the full parallel coverage: total_pages and an array of batches covering target_calls (default 500). Dispatch one subagent per batch; each subagent calls this tool with that batch's page and per_page. Returns id, date, summary and transcript (truncated to max_transcript_chars) for each call.

Inputs: account_id (required), page, since, until, +5 more.

ctm_voiceai_get_voice_botsGet VoiceAI Agents And InstructionsA
Read-only

Step 2 of the review flow: returns the account's VoiceAI agents and their full current instructions. Optionally filter to one agent by id or name substring. The assistant compares these instructions against the transcripts from ctm_voiceai_get_calls.

Inputs: account_id (required), voice_bot.

ctm_voiceai_list_runsList VoiceAI RunsC
Read-only

Lists recent VoiceAI analysis runs, newest first.

Inputs: limit, out_dir.

ctm_voiceai_run_statusVoiceAI Run StatusB
Read-only

Returns the status of an analysis run (running/complete/error), its output file paths, and the tail of the log when still running or failed. When complete, read recommended_prompt_updates to see the recommendations.

Inputs: run_id (required), out_dir.

ctm_voiceai_write_reportWrite Report And Open HTMLA

Step 6 of the review flow: takes the analysis the assistant produced, writes it to files, renders the self-contained HTML report, and opens it in the browser. Pass the canonical topics, an optional per-call table, the reviewed agents with their current instructions, the recommendations Markdown, and the suggested fully rewritten prompt.

Inputs: topics (required), account_id (required), bots, open, +5 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 11 tools

    Disambiguation4/5

    The read/fetch tools (get_calls, get_voice_bots, list_runs, run_status, write_report) each map to a distinct step of the review flow, and step numbering in descriptions helps. The weak spot is the six auth tools: ctm_voiceai_configured vs ctm_voiceai_auth_status both report storage/state, and auth_login (device flow) vs auth_url+auth_exchange (web flow) are two paths to the same goal, which invites misselection.

    Naming Consistency3/5

    All names share the ctm_voiceai_ prefix and snake_case, but the internal ordering mixes conventions: verb-first (list_runs, get_calls, write_report) alongside resource-first (auth_status, auth_exchange, auth_url, run_status). ctm_voiceai_configured breaks the pattern further by using a past-tense adjective with no verb.

    Tool Count4/5

    11 tools is a sensible size for an OAuth plus review-and-report workflow, and each tool does earn a slot. It is slightly top-heavy, though, with 6 of 11 tools devoted to authentication while the actual analysis flow gets 5.

    Completeness4/5

    The surface covers the full auth lifecycle (url/exchange/login/logout/status/configured) plus run listing, run status, agent and call retrieval, and report writing, so an agent can complete the review loop end to end. Minor gaps: no explicit run-start trigger or date-range filtering on get_calls, but these are workable around via the batch plan.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Lets an MCP client check whether an ecommerce store can be read by AI assistants, auditing robots.txt to see which AI search versus training crawlers are blocked and sampling product pages to confirm structured data and facts survive in raw HTML without JavaScript. It can also generate a training-only opt-out robots.txt that leaves answer-engine crawlers allowed, all inside the conversation the user is already in.
      2
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Lets any MCP client, such as Claude, browse attack suites and probes, run a full assurance assessment with all reports written out, send custom prompts or multi-turn histories and get leak, PII and refusal checks back for adaptive attacks, and read findings from an earlier assessment. This enables agent-driven red-teaming of a chatbot, RAG app or AI agent without leaving the chat client.
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables ChatGPT-compatible MCP clients and OpenAI agents to run static HTML audits, analyze Search Console exports, and perform opt-in bounded same-origin crawling with explicit review queues and portable reports.
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI assistants to perform authorized web security assessments through MCP tools and a guided review prompt, including passive and full scans, WAF detection, remediation fixes, report export, triage, scan comparison, and proof-of-control verification.
      12
      66 PyPI
      5
      MIT