@rymi/mcp 2.1.0 → 2.2.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.
Files changed (3) hide show
  1. package/README.md +26 -2
  2. package/dist/index.js +40 -1
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -73,7 +73,7 @@ Run the server on your own machine — it speaks **stdio** by default and talks
73
73
  <tr><th>Group</th><th>Tools</th></tr>
74
74
  <tr>
75
75
  <td><b>Agents</b></td>
76
- <td><code>list_agents</code> · <code>get_agent</code> · <code>create_agent</code> · <code>update_agent</code> · <code>delete_agent</code> · <code>clone_agent</code> · <code>apply_agent_changes</code> · <code>generate_agent_draft</code> · <code>enrich_company</code> · <code>validate_agent_publish</code> · <code>preview_stack</code></td>
76
+ <td><code>list_agents</code> · <code>get_agent</code> · <code>create_agent</code> · <code>update_agent</code> · <code>delete_agent</code> · <code>clone_agent</code> · <code>apply_agent_changes</code> · <code>generate_agent_draft</code> · <code>enrich_company</code> · <code>validate_agent_publish</code> · <code>preview_stack</code> · <code>publish_agent</code></td>
77
77
  </tr>
78
78
  <tr>
79
79
  <td><b>API tools & secrets</b></td>
@@ -93,13 +93,17 @@ Run the server on your own machine — it speaks **stdio** by default and talks
93
93
  </tr>
94
94
  <tr>
95
95
  <td><b>Insight</b></td>
96
- <td><code>get_usage_summary</code> (minutes-based) · <code>list_agent_templates</code> · <code>run_evals</code> · <code>list_eval_runs</code> · <code>get_eval_run</code></td>
96
+ <td><code>get_usage_summary</code> (minutes-based) · <code>list_agent_templates</code> · <code>run_evals</code> · <code>run_eval_suite</code> · <code>list_eval_runs</code> · <code>get_eval_run</code></td>
97
97
  </tr>
98
98
  <tr>
99
99
  <td><b>Calls</b> <sub>(read-only)</sub></td>
100
100
  <td><code>list_calls</code> · <code>list_active_calls</code> · <code>get_call</code> · <code>get_call_summary</code> · <code>get_call_transcript</code> · <code>get_call_recording</code> · <code>get_call_queue_stats</code> · <code>reprocess_call</code> · <code>list_calls_for_agent</code></td>
101
101
  </tr>
102
102
  <tr>
103
+ <td><b>Call control</b></td>
104
+ <td><code>create_call</code> · <code>batch_call</code> · <code>end_call</code> · <code>add_call_participant</code></td>
105
+ </tr>
106
+ <tr>
103
107
  <td><b>Numbers</b></td>
104
108
  <td><code>list_numbers</code> · <code>register_number</code> · <code>attach_number</code> · <code>remove_number</code></td>
105
109
  </tr>
@@ -111,6 +115,26 @@ Run the server on your own machine — it speaks **stdio** by default and talks
111
115
  <td><b>Keys</b> <sub>(read-only)</sub></td>
112
116
  <td><code>list_publishable_keys</code></td>
113
117
  </tr>
118
+ <tr>
119
+ <td><b>Campaigns</b></td>
120
+ <td><code>list_campaigns</code> · <code>get_campaign</code> · <code>get_campaign_report</code> · <code>list_campaign_attempts</code> · <code>list_campaign_suggestions</code> · <code>list_contacts</code> · <code>create_campaign</code> · <code>import_campaign_contacts</code> · <code>launch_campaign</code> · <code>pause_campaign</code> · <code>resume_campaign</code> · <code>accept_campaign_suggestion</code></td>
121
+ </tr>
122
+ <tr>
123
+ <td><b>Lead intake</b></td>
124
+ <td><code>get_campaign_intake</code> · <code>set_campaign_intake</code> · <code>rotate_campaign_intake</code> · <code>disable_campaign_intake</code></td>
125
+ </tr>
126
+ <tr>
127
+ <td><b>Do-Not-Call</b></td>
128
+ <td><code>list_dnc</code> · <code>check_dnc</code> · <code>add_dnc</code> · <code>add_dnc_batch</code> · <code>remove_dnc</code></td>
129
+ </tr>
130
+ <tr>
131
+ <td><b>Webhooks</b></td>
132
+ <td><code>list_webhooks</code> · <code>create_webhook</code> · <code>update_webhook</code> · <code>delete_webhook</code></td>
133
+ </tr>
134
+ <tr>
135
+ <td><b>Billing & cost</b></td>
136
+ <td><code>estimate_call_cost</code> · <code>set_auto_recharge</code> · <code>set_spend_alerts</code></td>
137
+ </tr>
114
138
  </table>
115
139
 
116
140
  ### ⚠️ Gated tools
package/dist/index.js CHANGED
@@ -1227,6 +1227,45 @@ var require_dist = __commonJS({
1227
1227
  suggestion_id: import_zod10.z.string().describe("The suggestion ID to accept")
1228
1228
  },
1229
1229
  run: (client, { campaign_id, suggestion_id }) => client.campaigns.acceptSuggestion(campaign_id, suggestion_id)
1230
+ }),
1231
+ defineTool({
1232
+ name: "get_campaign_intake",
1233
+ description: "Get a campaign's lead-intake URL settings (consent and default-country handling, last used). Returns intake: null if none. The URL itself is only shown when created or rotated.",
1234
+ scope: "agent",
1235
+ risk: "read",
1236
+ input: { campaign_id: import_zod10.z.string().describe("The campaign ID") },
1237
+ run: (client, { campaign_id }) => client.campaigns.intake.get(campaign_id)
1238
+ }),
1239
+ defineTool({
1240
+ name: "set_campaign_intake",
1241
+ description: 'Create a lead-intake URL for a campaign, or update its settings. Lead sources (website forms, Typeform, Google Apps Script, Zapier/Make) POST leads to the URL with no API key; a running campaign dials them within its calling window. The URL is returned ONCE on create (url: null on later updates) and anyone holding it can add numbers to the campaign. assume_voice_consent=true treats every posted lead as consenting to calls; default_country (e.g. "IN") makes local numbers without +<code> dialable.',
1242
+ scope: "agent",
1243
+ risk: "sensitive",
1244
+ input: {
1245
+ campaign_id: import_zod10.z.string().describe("The campaign ID"),
1246
+ assume_voice_consent: import_zod10.z.boolean().optional().describe("Treat every posted lead as having voice consent"),
1247
+ default_country: import_zod10.z.string().regex(/^[A-Z]{2}$/).nullable().optional().describe('ISO-3166 alpha-2 country for numbers posted without +<code>, e.g. "IN"')
1248
+ },
1249
+ run: (client, { campaign_id, ...settings }) => client.campaigns.intake.set(campaign_id, settings)
1250
+ }),
1251
+ defineTool({
1252
+ name: "rotate_campaign_intake",
1253
+ description: "Issue a new lead-intake URL for a campaign. The old URL stops accepting leads immediately, so every lead source must be updated.",
1254
+ scope: "agent",
1255
+ risk: "sensitive",
1256
+ input: { campaign_id: import_zod10.z.string().describe("The campaign ID") },
1257
+ run: (client, { campaign_id }) => client.campaigns.intake.rotate(campaign_id)
1258
+ }),
1259
+ defineTool({
1260
+ name: "disable_campaign_intake",
1261
+ description: "Remove a campaign's lead-intake URL. Leads already accepted stay in the campaign.",
1262
+ scope: "agent",
1263
+ risk: "write",
1264
+ input: { campaign_id: import_zod10.z.string().describe("The campaign ID") },
1265
+ run: async (client, { campaign_id }) => {
1266
+ await client.campaigns.intake.disable(campaign_id);
1267
+ return { status: "disabled", campaign_id };
1268
+ }
1230
1269
  })
1231
1270
  ];
1232
1271
  var import_zod11 = require("zod");
@@ -1547,7 +1586,7 @@ function withToolErrors(handler) {
1547
1586
  // package.json
1548
1587
  var package_default = {
1549
1588
  name: "@rymi/mcp",
1550
- version: "2.1.0",
1589
+ version: "2.2.0",
1551
1590
  description: "Rymi MCP server \u2014 manage AI voice agents via Model Context Protocol",
1552
1591
  license: "MIT",
1553
1592
  author: "Rymi AI <engineering@rymi.live>",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rymi/mcp",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Rymi MCP server — manage AI voice agents via Model Context Protocol",
5
5
  "license": "MIT",
6
6
  "author": "Rymi AI <engineering@rymi.live>",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@modelcontextprotocol/sdk": "^1.11.1",
47
- "@rymi/node": "^2.1.0",
47
+ "@rymi/node": "^2.2.0",
48
48
  "zod": "^3.23.0"
49
49
  },
50
50
  "devDependencies": {