npm.io
0.7.3 • Published 12h agoCLI

@trillet-ai/mcp

Licence
MIT
Version
0.7.3
Deps
3
Size
189 kB
Vulns
0
Weekly
0

Trillet MCP Server

The official Model Context Protocol server for Trillet AI. Build and operate production voice agents from Claude: create agents, write call flows, wire in-call API tools, attach knowledge bases, configure post-call analysis, automate follow-ups with workflows, and debug real calls from their transcripts.

Built with the official TypeScript MCP SDK, stdio transport. 71 tools, all annotated with read-only/destructive hints.

Setup

cd Trillet-MCP
npm install
npm run build

You need two values from the Trillet dashboard:

Variable Where to find it
TRILLET_API_KEY Settings > API Keys
TRILLET_WORKSPACE_ID Workspace settings (24-char hex id)

Optional: TRILLET_API_URL (defaults to https://api.trillet.ai).

npx (after npm publish)

The package is not on npm until someone with the trillet-ai org runs the steps in PUBLISH.md. After that:

TRILLET_API_KEY=<your key> TRILLET_WORKSPACE_ID=<your workspace id> npx -y @trillet-ai/mcp

Cursor and Grok Bot install it from the public plugin repo TrilletAI/Trillet-grok (npx -y @trillet-ai/mcp@latest, credentials from Plugins → Configure, not from the repo). The same tree is in cursor-plugin/ here.

Claude Code
claude mcp add trillet \
  -e TRILLET_API_KEY=<your key> \
  -e TRILLET_WORKSPACE_ID=<your workspace id> \
  -- node /absolute/path/to/Trillet-MCP/dist/index.js
Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "trillet": {
      "command": "node",
      "args": ["/absolute/path/to/Trillet-MCP/dist/index.js"],
      "env": {
        "TRILLET_API_KEY": "<your key>",
        "TRILLET_WORKSPACE_ID": "<your workspace id>"
      }
    }
  }
}

Agency accounts: every tool accepts an optional workspace_id argument that overrides the default workspace for that call, so one server instance can manage client workspaces (the key's user must be a member of each).

Tools

Agents & voices — trillet_list_agents, trillet_get_agent, trillet_create_agent, trillet_update_agent, trillet_delete_agent (requires confirm: true), trillet_search_voices (full multi-provider catalog)

Call flows — trillet_list_call_flows, trillet_get_call_flow, trillet_create_call_flow, trillet_update_call_flow, trillet_update_prompt, trillet_set_incall_api_tools, trillet_set_post_call_analysis, trillet_list_drafts, trillet_deactivate_drafts, trillet_publish_draft, trillet_duplicate_call_flow, trillet_archive_call_flow, trillet_delete_call_flow (requires confirm: true)

Flow settings — trillet_set_transfers (warm/cold/whisper/agent, condition gates, business-hours routing), trillet_set_office_hours, trillet_set_call_settings (voicemail detection, IVR navigation, silence, duration, recording), trillet_set_speech_settings, trillet_set_welcome_message, trillet_set_code_actions (feature-gated Python actions; detects silent strips)

Node flows — trillet_node_flow_reference (the full node-type/edge/validation reference the model reads before building), trillet_list_node_flows, trillet_get_node_flow, trillet_create_node_flow, trillet_list_node_flow_templates, trillet_update_node_graph, trillet_validate_node_graph, trillet_publish_node_graph, trillet_simulate_node_graph, trillet_list_node_flow_runs

Phone numbers — trillet_list_phone_numbers, trillet_search_available_numbers, trillet_purchase_phone_number (requires confirm: true; bills the workspace), trillet_bind_phone_number (office hours, metadata tags, secret bindings), trillet_release_phone_number (unbind from agent), trillet_get_phone_number_config, trillet_update_phone_number_config, trillet_register_external_number (BYO Twilio / SIP trunks, requires confirm: true)

Knowledge bases — trillet_list_knowledge_bases, trillet_get_knowledge_base (with flow usage), trillet_create_knowledge_base, trillet_add_kb_text, trillet_upload_kb_file, trillet_attach_knowledge_bases, trillet_delete_knowledge_base (whole KB or one file; requires confirm: true)

Workflows — trillet_workflow_reference (the full trigger/step/template reference the model reads before building: 7 triggers, 15 step types), trillet_list_workflows, trillet_get_workflow, trillet_create_workflow, trillet_update_workflow, trillet_activate_workflow, trillet_pause_workflow, trillet_delete_workflow (requires confirm: true), trillet_test_workflow (simulated side effects, works on drafts), trillet_run_workflow (real run, requires confirm: true), trillet_list_workflow_runs, trillet_get_workflow_run (per-step logs)

Secrets — trillet_list_secrets (always masked), trillet_set_secret, trillet_delete_secret

Calls — trillet_list_calls (filters + per-call cost/warm-transfer billing fields), trillet_get_call_metrics (aggregates), trillet_get_call (transcript, analysis, billing breakdown, optional functionCalls), trillet_start_outbound_call (requires explicit confirm: true; places a real phone call)

Account — trillet_get_usage (wallet balance, optional 3-month minutes breakdown), trillet_list_transactions (charge ledger, month x type summaries)

Design notes

The tool descriptions encode hard-won platform behavior so the model does the right thing first time:

  • Editor drafts override production for dashboard test calls; trillet_get_call_flow reports has_active_draft and trillet_deactivate_drafts returns a flow to production. This is the most common cause of "my changes aren't taking effect".
  • Update merge semantics: objects deep-merge, arrays replace wholesale, nulls are ignored. The dedicated setters (trillet_set_incall_api_tools, trillet_set_post_call_analysis, trillet_attach_knowledge_bases) always send complete arrays.
  • In-call API tools: the runtime appends call metadata to requests unless callSetting.disableMetadata is set; strict APIs (e.g. Airtable) reject unknown keys, so the setter defaults it on. Prompts should reference tools as {{realtime_api "name" "vars"}}.
  • Workflows: maxRunsPerContact defaults to 1/24h platform-side (silently skips repeat callers); the create tool defaults it to 500. Web test calls fire the outbound call-completed trigger.
  • Prompts: never script a greeting line in the prompt; the platform welcome message already plays it, and a scripted opening makes the agent greet twice.

Roadmap to the Anthropic directory

  • Official SDK, stdio transport, tool annotations (readOnlyHint/destructiveHint), narrow tool descriptions, no dynamic code execution, secrets via env only
  • Public privacy policy page (required for directory review)
  • Remote server (Streamable HTTP + OAuth) for the Claude.ai connector directory (submission requires a Team/Enterprise org)
  • .mcpb Desktop Extension bundle for one-click local install (trillet.mcpb in the plugin repo)
  • npm publish as @trillet-ai/mcp for npx usage (commands in PUBLISH.md; not published yet)

Security

  • The API key and workspace id are read from environment variables and never logged.
  • All output goes to stdout as MCP protocol messages; diagnostics go to stderr.
  • Tools with real-world side effects or destructive outcomes (trillet_start_outbound_call, trillet_run_workflow, trillet_purchase_phone_number, trillet_register_external_number, and every delete tool) are annotated destructive and refuse to run without confirm: true.

Keywords