@ateam-ai/mcp 0.4.17 → 0.4.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.4.17",
3
+ "version": "0.4.18",
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/api.js CHANGED
@@ -393,7 +393,7 @@ function headers(sessionId) {
393
393
  /**
394
394
  * Format an API error into a user-friendly message with actionable hints.
395
395
  */
396
- function formatError(method, path, status, body) {
396
+ function formatError(method, path, status, body, baseUrl) {
397
397
  const hints = {
398
398
  400: "Bad request — see the error details above for what to fix.",
399
399
  401: "Your API key may be invalid or expired. Get a valid key at https://mcp.ateam-ai.com/get-api-key then call ateam_auth(api_key: \"your_key\").",
@@ -434,7 +434,12 @@ function formatError(method, path, status, body) {
434
434
  const hint = hints[status] || "";
435
435
  const detail = typeof body === "string" && body.length > 0 && body.length < 2000 ? body : "";
436
436
 
437
- let msg = `A-Team API error: ${method} ${path} returned ${status}`;
437
+ // Always show the FULL URL actually hit — ateam-mcp is a PUBLIC MCP with a
438
+ // configurable base (prod default, dev/self-host overrides), so a bare
439
+ // "POST /deploy/..." 404 is ambiguous: is the route missing, or did the
440
+ // request go to the wrong base? The full URL disambiguates instantly.
441
+ const target = baseUrl ? `${baseUrl}${path}` : path;
442
+ let msg = `A-Team API error: ${method} ${target} returned ${status}`;
438
443
  if (detail) msg += ` — ${detail}`;
439
444
  if (hint) msg += `\nHint: ${hint}`;
440
445
 
@@ -486,7 +491,7 @@ async function request(method, path, body, sessionId, opts = {}) {
486
491
 
487
492
  if (!res.ok) {
488
493
  const text = await res.text().catch(() => "");
489
- throw new Error(formatError(method, path, res.status, text));
494
+ throw new Error(formatError(method, path, res.status, text, baseUrl));
490
495
  }
491
496
 
492
497
  return res.json();
package/src/tools.js CHANGED
@@ -2181,10 +2181,10 @@ export default {
2181
2181
  // ui.listPlugins is generated from ui-dist/<plugin>/manifest.json pick it up
2182
2182
  // automatically, and for connectors with a HARDCODED plugin list (e.g.
2183
2183
  // personal-assistant-ui-mcp) copy this render block into their ui.getPlugin.
2184
- const mode = k === "iframe" ? "iframe" : k === "rn" ? "react-native" : "adaptive";
2184
+ const mode = kind === "iframe" ? "iframe" : kind === "rn" ? "react-native" : "adaptive";
2185
2185
  const render = { mode };
2186
- if (k === "iframe" || k === "adaptive") render.iframeUrl = `/ui/${pluginName}/index.html`;
2187
- if (k === "rn" || k === "adaptive") render.reactNative = { component: pluginName };
2186
+ if (kind === "iframe" || kind === "adaptive") render.iframeUrl = `/ui/${pluginName}/index.html`;
2187
+ if (kind === "rn" || kind === "adaptive") render.reactNative = { component: pluginName };
2188
2188
  const prettyName = pluginName.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
2189
2189
  files.push({
2190
2190
  path: `ui-dist/${pluginName}/manifest.json`,