@rymi/mcp 2.8.2 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +47 -18
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -187,6 +187,7 @@ var init_studioCatalog = __esm({
|
|
|
187
187
|
"llama-4-scout",
|
|
188
188
|
"deepseek-v4-flash",
|
|
189
189
|
"deepseek-v4-pro",
|
|
190
|
+
"grok-4.7",
|
|
190
191
|
"grok-4-1-fast",
|
|
191
192
|
"grok-3-mini",
|
|
192
193
|
"grok-3-mini-fast",
|
|
@@ -250,6 +251,7 @@ var init_studioCatalog = __esm({
|
|
|
250
251
|
],
|
|
251
252
|
tts: [
|
|
252
253
|
"aura-2",
|
|
254
|
+
"flux-tts",
|
|
253
255
|
"gemini-2.5-pro-preview-tts",
|
|
254
256
|
"sonic-3.5",
|
|
255
257
|
"sonic-turbo",
|
|
@@ -1837,7 +1839,7 @@ var init_agentConfigSchema = __esm({
|
|
|
1837
1839
|
},
|
|
1838
1840
|
// ── Runtime Timing ──────────────────────────────────────────────────────
|
|
1839
1841
|
{ key: "maxTurnLength", label: "Max Turn Length", description: "Maximum number of conversational turns.", default: 50, type: { kind: "number", min: 1, max: 200 }, apiPath: "advanced.maxTurnLength", section: "advanced", editableIn: "both" },
|
|
1840
|
-
{ key: "postSilenceHangup", label: "Post-Silence Hangup", description: "Hang up after this many seconds of silence.", default:
|
|
1842
|
+
{ key: "postSilenceHangup", label: "Post-Silence Hangup", description: "Hang up after this many seconds of silence.", default: 60, type: { kind: "number", min: 1, max: 6e4, unit: "s" }, apiPath: "advanced.postSilenceHangup", section: "advanced", editableIn: "both" },
|
|
1841
1843
|
{ key: "silencePromptMaxCount", label: "Silence Check-ins", description: "How many times the agent checks on a silent caller before the silence goodbye.", default: 2, type: { kind: "number", min: 1, max: 3 }, apiPath: "advanced.silencePromptMaxCount", section: "advanced", editableIn: "both" },
|
|
1842
1844
|
{ key: "silenceHangupMessage", label: "Silence Goodbye", description: "Exact line spoken before a silence hangup. Leave empty to let the agent say a short goodbye in the caller's language.", default: "", type: { kind: "string", maxLength: 200 }, apiPath: "advanced.silenceHangupMessage", section: "advanced", editableIn: "both" },
|
|
1843
1845
|
{ key: "maxCallDuration", label: "Max Call Duration", description: "Hard limit on call length.", default: 600, type: { kind: "number", min: 30, max: 7200, unit: "s" }, apiPath: "advanced.maxCallDuration", section: "advanced", editableIn: "both" },
|
|
@@ -2502,6 +2504,7 @@ var init_pricing = __esm({
|
|
|
2502
2504
|
"llama-4-scout": 56e-5,
|
|
2503
2505
|
"deepseek-v4-flash": 34e-5,
|
|
2504
2506
|
"deepseek-v4-pro": 418e-5,
|
|
2507
|
+
"grok-4.7": 64e-4,
|
|
2505
2508
|
"grok-4-1-fast": 56e-5,
|
|
2506
2509
|
"grok-3-mini": 64e-5,
|
|
2507
2510
|
"grok-3-mini-fast": 48e-5,
|
|
@@ -2531,10 +2534,12 @@ var init_pricing = __esm({
|
|
|
2531
2534
|
"Qwen/Qwen2.5-72B-Instruct": 22e-4,
|
|
2532
2535
|
"deepseek-ai/DeepSeek-V3": 14e-4,
|
|
2533
2536
|
"sarvam-30b": 10526e-8,
|
|
2534
|
-
"sarvam-105b":
|
|
2535
|
-
|
|
2537
|
+
"sarvam-105b": 0.01024,
|
|
2538
|
+
// measured 2026-10-25, see rates.py
|
|
2539
|
+
"sarvam-105b-conversations": 0.01024,
|
|
2536
2540
|
// TTS
|
|
2537
2541
|
"aura-2": 0.027,
|
|
2542
|
+
"flux-tts": 0.0405,
|
|
2538
2543
|
"gemini-2.5-flash-preview-tts": 0.015,
|
|
2539
2544
|
"gemini-3.1-flash-tts-preview": 0.015,
|
|
2540
2545
|
"gpt-4o-mini-tts": 0.015,
|
|
@@ -7092,6 +7097,7 @@ __export(dist_exports, {
|
|
|
7092
7097
|
populatedFocusedStudioSections: () => populatedFocusedStudioSections,
|
|
7093
7098
|
pronunciationSupport: () => pronunciationSupport,
|
|
7094
7099
|
providerIdsForTool: () => providerIdsForTool,
|
|
7100
|
+
providerRequiresExplicitVoice: () => providerRequiresExplicitVoice,
|
|
7095
7101
|
publishRequiredKeys: () => publishRequiredKeys,
|
|
7096
7102
|
readFocusedSectionField: () => readFocusedSectionField,
|
|
7097
7103
|
readFromPayload: () => readFromPayload,
|
|
@@ -7202,6 +7208,7 @@ var require_dist = __commonJS({
|
|
|
7202
7208
|
keyAllowsTool: () => keyAllowsTool2,
|
|
7203
7209
|
opsToolCatalog: () => opsToolCatalog2,
|
|
7204
7210
|
resolveToolDisposition: () => resolveToolDisposition,
|
|
7211
|
+
toolAnnotations: () => toolAnnotations2,
|
|
7205
7212
|
withWorkspaceParam: () => withWorkspaceParam2
|
|
7206
7213
|
});
|
|
7207
7214
|
module2.exports = __toCommonJS2(index_exports);
|
|
@@ -7239,20 +7246,20 @@ var require_dist = __commonJS({
|
|
|
7239
7246
|
var agentConfigFields = {
|
|
7240
7247
|
system_prompt: import_zod.z.string().optional().describe("Full system prompt for the agent. If given without persona/playbook, the server auto-structures it."),
|
|
7241
7248
|
voice: import_zod.z.string().optional().describe('Voice ID (e.g. "Aoede", "Charon"). Call list_llm_options for valid values. Leave empty for realtime LLMs and Deepgram TTS, which carry their own voice.'),
|
|
7242
|
-
language: import_zod.z.string().optional().describe('Primary BCP-47 language tag (e.g. "hi-IN", "en-US").'),
|
|
7243
|
-
supported_languages: import_zod.z.array(import_zod.z.string()).optional().describe('All BCP-47 languages the agent should handle, e.g. ["hi-IN","en-US"] for a bilingual agent.
|
|
7244
|
-
llm_provider: import_zod.z.enum(import_shared_types.AGENT_LLM_PROVIDERS).optional(),
|
|
7245
|
-
llm_model: import_zod.z.string().optional().describe('LLM model id from list_llm_options (e.g. "gemini-2.5-flash", "sarvam-105b").'),
|
|
7246
|
-
llm_fallback_provider: import_zod.z.string().nullable().optional().describe("Fallback LLM provider; null clears it."),
|
|
7247
|
-
llm_fallback_model: import_zod.z.string().nullable().optional().describe("Fallback LLM model; null clears it."),
|
|
7248
|
-
stt_provider: import_zod.z.string().optional().describe('Speech-to-text provider (e.g. "deepgram", "sarvam").'),
|
|
7249
|
-
stt_model: import_zod.z.string().optional(),
|
|
7250
|
-
stt_fallback_provider: import_zod.z.string().nullable().optional(),
|
|
7251
|
-
stt_fallback_model: import_zod.z.string().nullable().optional(),
|
|
7252
|
-
tts_provider: import_zod.z.string().optional().describe('Text-to-speech provider (e.g. "elevenlabs", "sarvam", "cartesia").'),
|
|
7253
|
-
tts_model: import_zod.z.string().optional(),
|
|
7254
|
-
tts_fallback_provider: import_zod.z.string().nullable().optional(),
|
|
7255
|
-
tts_fallback_model: import_zod.z.string().nullable().optional(),
|
|
7249
|
+
language: import_zod.z.string().optional().describe('Primary BCP-47 language tag (e.g. "hi-IN", "en-US"). For managed agents, must belong to the SKU\u2019s supported_languages.'),
|
|
7250
|
+
supported_languages: import_zod.z.array(import_zod.z.string()).optional().describe('All BCP-47 languages the agent should handle, e.g. ["hi-IN","en-US"] for a bilingual custom agent. Fixed to [language] by the plan for managed agents.'),
|
|
7251
|
+
llm_provider: import_zod.z.enum(import_shared_types.AGENT_LLM_PROVIDERS).optional().describe("LLM provider (custom agents only; fixed by the plan for managed agents)."),
|
|
7252
|
+
llm_model: import_zod.z.string().optional().describe('LLM model id from list_llm_options (e.g. "gemini-2.5-flash", "sarvam-105b"). Fixed by the plan for managed agents.'),
|
|
7253
|
+
llm_fallback_provider: import_zod.z.string().nullable().optional().describe("Fallback LLM provider; null clears it. Fixed by the plan for managed agents."),
|
|
7254
|
+
llm_fallback_model: import_zod.z.string().nullable().optional().describe("Fallback LLM model; null clears it. Fixed by the plan for managed agents."),
|
|
7255
|
+
stt_provider: import_zod.z.string().optional().describe('Speech-to-text provider (e.g. "deepgram", "sarvam"). Fixed by the plan for managed agents.'),
|
|
7256
|
+
stt_model: import_zod.z.string().optional().describe("Speech-to-text model id. Fixed by the plan for managed agents."),
|
|
7257
|
+
stt_fallback_provider: import_zod.z.string().nullable().optional().describe("Fallback STT provider. Fixed by the plan for managed agents."),
|
|
7258
|
+
stt_fallback_model: import_zod.z.string().nullable().optional().describe("Fallback STT model. Fixed by the plan for managed agents."),
|
|
7259
|
+
tts_provider: import_zod.z.string().optional().describe('Text-to-speech provider (e.g. "elevenlabs", "sarvam", "cartesia"). Fixed by the plan for managed agents.'),
|
|
7260
|
+
tts_model: import_zod.z.string().optional().describe("Text-to-speech model id. Fixed by the plan for managed agents."),
|
|
7261
|
+
tts_fallback_provider: import_zod.z.string().nullable().optional().describe("Fallback TTS provider. Fixed by the plan for managed agents."),
|
|
7262
|
+
tts_fallback_model: import_zod.z.string().nullable().optional().describe("Fallback TTS model. Fixed by the plan for managed agents."),
|
|
7256
7263
|
custom_llm_url: import_zod.z.string().nullable().optional().describe("Self-hosted LLM endpoint (https:// or wss://). Enterprise only; null clears."),
|
|
7257
7264
|
custom_voice_url: import_zod.z.string().nullable().optional().describe("Self-hosted TTS endpoint (https:// or wss://). Enterprise only; null clears."),
|
|
7258
7265
|
custom_voice_mode: import_zod.z.enum(["rymi", "openai-compat"]).optional().describe("Wire format for custom_voice_url."),
|
|
@@ -8982,6 +8989,26 @@ var require_dist = __commonJS({
|
|
|
8982
8989
|
}
|
|
8983
8990
|
};
|
|
8984
8991
|
}
|
|
8992
|
+
var DESTRUCTIVE_NAMES = /* @__PURE__ */ new Set([
|
|
8993
|
+
"end_call",
|
|
8994
|
+
"undo_agent_change",
|
|
8995
|
+
"regenerate_share_link",
|
|
8996
|
+
"rotate_campaign_intake"
|
|
8997
|
+
]);
|
|
8998
|
+
var ACRONYMS = { dnc: "DNC", llm: "LLM" };
|
|
8999
|
+
function titleOf(name) {
|
|
9000
|
+
const words = name.split("_").map((w) => ACRONYMS[w] ?? w);
|
|
9001
|
+
return words.join(" ").replace(/^./, (c) => c.toUpperCase());
|
|
9002
|
+
}
|
|
9003
|
+
function toolAnnotations2(tool) {
|
|
9004
|
+
const readOnly = tool.risk === "read";
|
|
9005
|
+
return {
|
|
9006
|
+
title: titleOf(tool.name),
|
|
9007
|
+
readOnlyHint: readOnly,
|
|
9008
|
+
destructiveHint: !readOnly && (DESTRUCTIVE_NAMES.has(tool.name) || tool.routes.some((r) => r.startsWith("DELETE "))),
|
|
9009
|
+
openWorldHint: !readOnly
|
|
9010
|
+
};
|
|
9011
|
+
}
|
|
8985
9012
|
}
|
|
8986
9013
|
});
|
|
8987
9014
|
|
|
@@ -9011,7 +9038,8 @@ function withToolErrors(handler) {
|
|
|
9011
9038
|
// package.json
|
|
9012
9039
|
var package_default = {
|
|
9013
9040
|
name: "@rymi/mcp",
|
|
9014
|
-
|
|
9041
|
+
mcpName: "io.github.rymi-live/rymi-mcp",
|
|
9042
|
+
version: "2.9.0",
|
|
9015
9043
|
description: "Rymi MCP server \u2014 manage AI voice agents via Model Context Protocol",
|
|
9016
9044
|
license: "MIT",
|
|
9017
9045
|
author: "Rymi AI <engineering@rymi.live>",
|
|
@@ -9107,6 +9135,7 @@ async function createServer(apiKey2, options = {}) {
|
|
|
9107
9135
|
tool.name,
|
|
9108
9136
|
tool.description,
|
|
9109
9137
|
tool.input,
|
|
9138
|
+
(0, import_ops_tools.toolAnnotations)(tool),
|
|
9110
9139
|
withToolErrors(async (params) => {
|
|
9111
9140
|
const result2 = await tool.run(rymi, params);
|
|
9112
9141
|
return { content: [{ type: "text", text: JSON.stringify(result2, null, 2) }] };
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rymi/mcp",
|
|
3
|
-
"
|
|
3
|
+
"mcpName": "io.github.rymi-live/rymi-mcp",
|
|
4
|
+
"version": "2.9.0",
|
|
4
5
|
"description": "Rymi MCP server — manage AI voice agents via Model Context Protocol",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"author": "Rymi AI <engineering@rymi.live>",
|