@ateam-ai/mcp 0.2.6 → 0.2.8

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 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.2.6",
3
+ "version": "0.2.8",
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
@@ -237,7 +237,22 @@ export const tools = [
237
237
  name: "ateam_patch",
238
238
  core: true,
239
239
  description:
240
- "Update a deployed skill or solution, redeploy, and optionally re-test — all in one step. Use this instead of calling update + redeploy separately. Requires authentication.",
240
+ "Surgically update ANY field in a skill or solution definition, redeploy, and optionally re-test — all in one step.\n\n" +
241
+ "SUPPORTED OPERATIONS:\n" +
242
+ "1. Scalar (dot notation): { \"problem.statement\": \"new value\", \"role.persona\": \"You are...\" }\n" +
243
+ "2. Deep nested: { \"intents.thresholds.accept\": 0.9, \"policy.escalation.enabled\": true }\n" +
244
+ "3. Array push: { \"tools_push\": [{ name: \"new_tool\", description: \"...\" }] }\n" +
245
+ "4. Array delete: { \"tools_delete\": [\"tool_name\"] }\n" +
246
+ "5. Array update: { \"tools_update\": [{ name: \"existing_tool\", description: \"updated\" }] }\n" +
247
+ "6. Replace whole section: { \"role\": { persona: \"...\", goals: [...] } }\n\n" +
248
+ "EXAMPLES:\n" +
249
+ "- Change persona: updates: { \"role.persona\": \"You are a friendly assistant\" }\n" +
250
+ "- Add a guardrail: updates: { \"policy.guardrails.never_push\": [\"Never share passwords\"] }\n" +
251
+ "- Update problem: updates: { \"problem.statement\": \"...\", \"problem.goals\": [\"goal1\"] }\n" +
252
+ "- Add a tool: updates: { \"tools_push\": [{ name: \"conn.tool\", description: \"...\", inputs: [...], output: {...} }] }\n" +
253
+ "- Change intent: updates: { \"intents.supported_update\": [{ id: \"i1\", description: \"new desc\" }] }\n" +
254
+ "- Force redeploy: updates: { \"_force_redeploy\": true }\n\n" +
255
+ "Use target='skill' + skill_id for skill fields. Use target='solution' for solution-level fields (linked_skills, platform_connectors, ui_plugins).",
241
256
  inputSchema: {
242
257
  type: "object",
243
258
  properties: {
@@ -248,16 +263,18 @@ export const tools = [
248
263
  target: {
249
264
  type: "string",
250
265
  enum: ["solution", "skill"],
251
- description: "What to update: 'solution' or 'skill'",
266
+ description: "What to update: 'solution' for solution definition, 'skill' for skill definition fields (problem, role, intents, tools, policy, engine, scenarios, etc.)",
252
267
  },
253
268
  skill_id: {
254
269
  type: "string",
255
- description: "Required when target is 'skill'",
270
+ description: "Required when target is 'skill'. The skill ID to patch.",
256
271
  },
257
272
  updates: {
258
273
  type: "object",
259
274
  description:
260
- "The update payload use dot notation for scalars (e.g. 'problem.statement'), and tools_push/tools_delete/tools_update for array operations",
275
+ "The update payload. Use dot notation for nested scalars (e.g. 'problem.statement': 'new value'). " +
276
+ "For arrays, use _push/_delete/_update suffixes (e.g. 'tools_push', 'tools_delete'). " +
277
+ "You can update ANY field in the skill definition: problem, role, intents, tools, policy, engine, scenarios, glossary, etc.",
261
278
  },
262
279
  test_message: {
263
280
  type: "string",
@@ -747,7 +764,10 @@ export const tools = [
747
764
  name: "ateam_github_patch",
748
765
  core: true,
749
766
  description:
750
- "Edit a specific file in the solution's GitHub repo and commit. Creates the file if it doesn't exist. Use this to make surgical fixes to connector source code, update skill definitions, or add new files directly in the repo.",
767
+ "Edit a file in the solution's GitHub repo and commit. Two modes:\n" +
768
+ "1. FULL FILE: provide `content` — replaces entire file (good for new files or small files)\n" +
769
+ "2. SEARCH/REPLACE: provide `search` + `replace` — surgical edit without sending full file (preferred for large files like server.js)\n" +
770
+ "Always use search/replace for large files (>5KB). Always read the file first with ateam_github_read to get the exact text to search for.",
751
771
  inputSchema: {
752
772
  type: "object",
753
773
  properties: {
@@ -761,14 +781,22 @@ export const tools = [
761
781
  },
762
782
  content: {
763
783
  type: "string",
764
- description: "The full file content to write",
784
+ description: "The full file content to write (mode 1 — full file replacement)",
785
+ },
786
+ search: {
787
+ type: "string",
788
+ description: "Exact text to find in the file (mode 2 — search/replace). Must match exactly including whitespace.",
789
+ },
790
+ replace: {
791
+ type: "string",
792
+ description: "Text to replace the search string with (mode 2 — required with search)",
765
793
  },
766
794
  message: {
767
795
  type: "string",
768
796
  description: "Optional commit message (default: 'Update <path>')",
769
797
  },
770
798
  },
771
- required: ["solution_id", "path", "content"],
799
+ required: ["solution_id", "path"],
772
800
  },
773
801
  },
774
802
  {
@@ -1458,8 +1486,8 @@ const handlers = {
1458
1486
  ateam_github_read: async ({ solution_id, path: filePath }, sid) =>
1459
1487
  get(`/deploy/solutions/${solution_id}/github/read?path=${encodeURIComponent(filePath)}`, sid),
1460
1488
 
1461
- ateam_github_patch: async ({ solution_id, path: filePath, content, message }, sid) =>
1462
- post(`/deploy/solutions/${solution_id}/github/patch`, { path: filePath, content, message }, sid),
1489
+ ateam_github_patch: async ({ solution_id, path: filePath, content, search, replace, message }, sid) =>
1490
+ post(`/deploy/solutions/${solution_id}/github/patch`, { path: filePath, content, search, replace, message }, sid),
1463
1491
 
1464
1492
  ateam_github_log: async ({ solution_id, limit }, sid) => {
1465
1493
  const qs = limit ? `?limit=${limit}` : "";