@ateam-ai/mcp 0.3.28 → 0.3.30

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/tools.js +37 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.3.28",
3
+ "version": "0.3.30",
4
4
  "mcpName": "io.github.ariekogan/ateam-mcp",
5
5
  "description": "A-Team MCP Server — build, validate, and deploy multi-agent solutions from any AI environment",
6
6
  "type": "module",
package/src/tools.js CHANGED
@@ -299,7 +299,8 @@ export const tools = [
299
299
  "5. Array update: { \"tools_update\": [{ name: \"existing_tool\", description: \"updated\" }] }\n" +
300
300
  "6. Replace whole section: { \"role\": { persona: \"...\", goals: [...] } }\n\n" +
301
301
  "EXAMPLES:\n" +
302
- "- Change persona: updates: { \"role.persona\": \"You are a friendly assistant\" }\n" +
302
+ "- Change persona (full replace): updates: { \"role.persona\": \"You are a friendly assistant\" }\n" +
303
+ "- Append to persona (don't replace): updates: { \"persona_append\": \"\\n\\nALWAYS respond in 2 sentences.\" }\n" +
303
304
  "- Add a guardrail: updates: { \"policy.guardrails.never_push\": [\"Never share passwords\"] }\n" +
304
305
  "- Update problem: updates: { \"problem.statement\": \"...\", \"problem.goals\": [\"goal1\"] }\n" +
305
306
  "- Add a tool: updates: { \"tools_push\": [{ name: \"conn.tool\", description: \"...\", inputs: [...], output: {...} }] }\n" +
@@ -390,6 +391,26 @@ export const tools = [
390
391
  required: ["solution_id"],
391
392
  },
392
393
  },
394
+ {
395
+ name: "ateam_delete_skill",
396
+ core: true,
397
+ description:
398
+ "Delete a single skill from a deployed solution. Removes the skill from A-Team Core (kills the running MCP process, unregisters from skill registry, deletes from Mongo), removes the skill from solution.skills[] and solution.linked_skills, and deletes the skill's files from Builder FS. Use this to drop a skill without tearing down the whole solution.",
399
+ inputSchema: {
400
+ type: "object",
401
+ properties: {
402
+ solution_id: {
403
+ type: "string",
404
+ description: "The solution ID (e.g. 'personal-adas')",
405
+ },
406
+ skill_id: {
407
+ type: "string",
408
+ description: "The skill ID to remove (e.g. 'linkedin-agent')",
409
+ },
410
+ },
411
+ required: ["solution_id", "skill_id"],
412
+ },
413
+ },
393
414
  {
394
415
  name: "ateam_delete_connector",
395
416
  core: true,
@@ -1147,6 +1168,7 @@ const TENANT_TOOLS = new Set([
1147
1168
  "ateam_update",
1148
1169
  "ateam_redeploy",
1149
1170
  "ateam_delete_solution",
1171
+ "ateam_delete_skill",
1150
1172
  "ateam_delete_connector",
1151
1173
  "ateam_upload_connector",
1152
1174
  "ateam_solution_chat",
@@ -1813,7 +1835,17 @@ const handlers = {
1813
1835
  let patched = { ...current };
1814
1836
  try {
1815
1837
  for (const [key, value] of Object.entries(updates || {})) {
1816
- if (key.endsWith("_push") && Array.isArray(value)) {
1838
+ if (key === "persona_append" && typeof value === "string") {
1839
+ // persona_append: shorthand for appending text to role.persona without
1840
+ // rewriting the whole string. Historically agents set this expecting
1841
+ // it to work; the planner only reads role.persona, so this shorthand
1842
+ // now merges into the correct field. A trailing separator is inserted
1843
+ // if the existing persona doesn't already end with whitespace.
1844
+ if (!patched.role || typeof patched.role !== "object") patched.role = {};
1845
+ const existing = typeof patched.role.persona === "string" ? patched.role.persona : "";
1846
+ const sep = (!existing || /\s$/.test(existing)) ? "" : "\n\n";
1847
+ patched.role.persona = existing + sep + value;
1848
+ } else if (key.endsWith("_push") && Array.isArray(value)) {
1817
1849
  // Array push: tools_push, intents_push, etc.
1818
1850
  const field = key.replace(/_push$/, "");
1819
1851
  patched[field] = [...(patched[field] || []), ...value];
@@ -2213,6 +2245,9 @@ const handlers = {
2213
2245
  ateam_delete_solution: async ({ solution_id }, sid) =>
2214
2246
  del(`/deploy/solutions/${solution_id}`, sid),
2215
2247
 
2248
+ ateam_delete_skill: async ({ solution_id, skill_id }, sid) =>
2249
+ del(`/deploy/solutions/${solution_id}/skills/${skill_id}`, sid),
2250
+
2216
2251
  ateam_delete_connector: async ({ solution_id, connector_id }, sid) =>
2217
2252
  del(`/deploy/solutions/${solution_id}/connectors/${connector_id}`, sid),
2218
2253