@convertcom/mcp-server 0.0.1-beta.6 → 0.0.1-beta.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.
@@ -1,5 +1,13 @@
1
1
  import { toolDefinitionMap } from './tools.js';
2
2
  import { executeToolByName } from './executor.js';
3
+ import { JSON_SCHEMA_DRAFT_2020_12, pathParamsFromTemplate } from './shared.js';
4
+ function requiredPathParamsForDef(def) {
5
+ const declared = (def.executionParameters || [])
6
+ .filter((p) => p.in === 'path')
7
+ .map((p) => p.name);
8
+ const inferred = def.pathTemplate ? pathParamsFromTemplate(def.pathTemplate) : [];
9
+ return [...new Set([...declared, ...inferred])];
10
+ }
3
11
  const REGISTRY = {
4
12
  accounts: {
5
13
  list: 'getaccountslist',
@@ -121,6 +129,281 @@ const REGISTRY = {
121
129
  delete: 'deletefeature',
122
130
  },
123
131
  };
132
+ /** Human-readable titles for each namespace */
133
+ const NAMESPACE_TITLES = {
134
+ accounts: 'Accounts',
135
+ projects: 'Projects',
136
+ domains: 'Domains',
137
+ experiences: 'Experiences',
138
+ sections: 'Sections',
139
+ goals: 'Goals',
140
+ tags: 'Tags',
141
+ hypotheses: 'Hypotheses',
142
+ knowledgebases: 'Knowledge Bases',
143
+ observations: 'Observations',
144
+ locations: 'Locations',
145
+ audiences: 'Audiences',
146
+ features: 'Features',
147
+ };
148
+ /** Namespace-level descriptions for agents — richer than the auto-generated "Namespace 'X'" */
149
+ const NAMESPACE_DESCRIPTIONS = {
150
+ accounts: 'Manage Convert.com accounts via the live API — get account details, live visitor data, history, users, API/SDK keys.',
151
+ projects: 'Manage Convert.com projects via the live API — list, create, update projects, get live visitor data and change history.',
152
+ domains: 'Manage domains in the user\'s Convert.com account — add, verify (check_code), update, delete domains for a project.',
153
+ experiences: 'Manage A/B tests, MVTs, split URL tests, deploys, and feature rollouts in the user\'s Convert.com account. Use type "a/b" (with slash, not underscore).',
154
+ sections: 'Manage multi-page sections within MVT experiences via the Convert.com API. Requires experience_id in path — sections are experience-scoped.',
155
+ goals: 'Manage conversion goals in the user\'s Convert.com account — page visits, clicks, form submits, revenue, custom JS. Use goal_key for get_by_key.',
156
+ tags: 'Manage tags in the user\'s Convert.com account for organizing experiences and other resources.',
157
+ hypotheses: 'Manage CRO hypotheses in the user\'s Convert.com account with PIE/ICE prioritization scoring (UPPERCASE).',
158
+ knowledgebases: 'Manage knowledge base entries in the user\'s Convert.com account. Note: path param uses underscores — knowledge_base_id (not knowledgebase_id).',
159
+ observations: 'Manage observations in the user\'s Convert.com account. ⚠️ update action has a known backend bug (500).',
160
+ locations: 'Manage page targeting rules in the user\'s Convert.com account (URL match, JS condition, DOM element trigger). Rules use nested OR→AND→OR_WHEN structure.',
161
+ audiences: 'Manage visitor segmentation rules in the user\'s Convert.com account. Rules use nested OR→AND→OR_WHEN structure similar to locations.',
162
+ features: 'Manage feature flags in the user\'s Convert.com account — only works in fullstack project types. Returns 422 for web/standard projects.',
163
+ };
164
+ /**
165
+ * Per-action agent guidance. Appended to generated descriptions as "Agent Notes:".
166
+ * Keys are "namespace.action" strings matching REGISTRY entries.
167
+ * This map survives `yarn generate` — it's hand-curated like REGISTRY.
168
+ */
169
+ export const ACTION_NOTES = {
170
+ // ── experiences ──────────────────────────────────────────
171
+ 'experiences.create': [
172
+ 'Type enum: "a/b", "a/a", "mvt", "split_url", "multipage", "deploy" (standard projects), "a/b_fullstack", "feature_rollout" (fullstack projects only).',
173
+ 'Required body fields: name, type, url. If status is omitted, MCP defaults it to "draft".',
174
+ 'Setting status to "active" requires explicit user confirmation at tool-call level: confirmation: { "user_confirmed": true, "reason": "..." }.',
175
+ 'a/b_fullstack and feature_rollout return 422 on non-fullstack projects.',
176
+ 'Minimal example: { "body": { "name": "My Test", "type": "a/b", "status": "draft", "url": "https://example.com" } }',
177
+ ].join('\n'),
178
+ 'experiences.update': 'Setting body.status to "active" requires explicit user confirmation at tool-call level: confirmation: { "user_confirmed": true, "reason": "..." }.',
179
+ 'experiences.get_by_key': 'Path parameter is "experience_key" (not "key"). Pass in path: { "experience_key": "abc123" }.',
180
+ 'experiences.daily_traffic_allocation': 'Only works when MAB (Multi-Armed Bandit) is configured on the experience. Returns 422 otherwise.',
181
+ 'experiences.update_variation': [
182
+ 'Body is required and must be a non-empty object. Empty/missing body is rejected at MCP layer to avoid silent no-op updates.',
183
+ 'Requires "variation_id" in path. Get variation IDs from experiences.get with query: { "include": ["variations"], "expand": ["variations"] }.',
184
+ 'To add CSS/JS changes, use the "changes" array in body. Each change needs "type" and "data":',
185
+ ' - type "customCode": data = { css: "...", js: "..." } — for custom CSS/JS code',
186
+ ' - type "defaultCode": data = { css: "...", js: "...", custom_js: "..." } — for Visual Editor changes',
187
+ ' - type "defaultRedirect": data = { original_pattern, variation_pattern, case_sensitive } — for split URL',
188
+ ' - type "fullStackFeature": data = { feature_id, variables_data } — for fullstack features',
189
+ 'Example adding custom CSS+JS: { "body": { "changes": [{ "type": "customCode", "data": { "css": "body{color:red}", "js": "console.log(1)" } }] } }',
190
+ 'To clear all changes: { "body": { "changes": [] } }',
191
+ 'To update an existing change, include its integer "id" from the previous response.',
192
+ ].join('\n'),
193
+ 'experiences.get_variation_screenshot': 'Requires "variation_id" in path. Returns 404 ("No image found") for draft experiences or variations with no visual editor changes yet — this is normal.',
194
+ 'experiences.get_change': [
195
+ 'Requires account_id, project_id, experience_id, and change_id in path.',
196
+ '⚠️ Known schema issue: path params may not be auto-validated. Pass all four IDs explicitly in path.',
197
+ 'Get change IDs from the update_variation response or from experiences.get with include/expand variations.',
198
+ ].join('\n'),
199
+ 'experiences.update_change': [
200
+ 'Requires account_id, project_id, experience_id, and change_id in path.',
201
+ '⚠️ Known schema issue: path params may not be auto-validated. Pass all four IDs explicitly in path.',
202
+ 'Body uses same structure as update_variation changes: { type, data }.',
203
+ 'For customCode: { "type": "customCode", "data": { "css": "...", "js": "..." } }',
204
+ 'For defaultCode: { "type": "defaultCode", "data": { "css": "...", "js": "...", "custom_js": "..." } }',
205
+ ].join('\n'),
206
+ 'experiences.aggregated_report': 'Works on any experience. Returns empty data arrays for draft/inactive experiences.',
207
+ 'experiences.daily_report': 'Works on any experience. Returns empty data arrays for draft/inactive experiences.',
208
+ // ── locations ────────────────────────────────────────────
209
+ 'locations.create': [
210
+ 'Required body fields: name, rules, trigger.',
211
+ 'Rules use nested OR→AND→OR_WHEN structure.',
212
+ 'Minimal example: { "body": { "name": "Homepage", "rules": { "OR": [{ "AND": [{ "OR_WHEN": [{ "rule_type": "url", "value": "example.com", "matching": { "match_type": "contains" } }] }] }] }, "trigger": { "type": "upon_run" } } }',
213
+ ].join('\n'),
214
+ // ── audiences ────────────────────────────────────────────
215
+ 'audiences.create': [
216
+ 'Required body fields: name, type, rules.',
217
+ 'Type enum: "segmentation", "transient_condition", "permanent".',
218
+ 'Rules use nested OR→AND→OR_WHEN structure (same as locations but more rule_type options).',
219
+ 'For visitor_type rules, use match_type: "equals" (not "matches").',
220
+ 'Minimal example: { "body": { "name": "Returning Visitors", "type": "segmentation", "rules": { "OR": [{ "AND": [{ "OR_WHEN": [{ "rule_type": "visitor_type", "value": "returning", "matching": { "match_type": "equals" } }] }] }] } } }',
221
+ ].join('\n'),
222
+ // ── hypotheses ───────────────────────────────────────────
223
+ 'hypotheses.create': [
224
+ 'Required body fields: name, status (use "draft"), prioritization_score_type, prioritization_score_attributes.',
225
+ 'prioritization_score_type: "PIE" or "ICE" (UPPERCASE only).',
226
+ 'For PIE: attributes are { potential, importance, ease } (values 1-5).',
227
+ 'For ICE: attributes are { impact, confidence, ease } (values 1-5).',
228
+ 'Minimal example: { "body": { "name": "Bigger CTA button", "status": "draft", "prioritization_score_type": "PIE", "prioritization_score_attributes": { "potential": 4, "importance": 3, "ease": 5 } } }',
229
+ ].join('\n'),
230
+ 'hypotheses.convert': 'Converts hypothesis to experience. The hypothesis must have associated goals and locations first. Returns 422 if prerequisites are missing.',
231
+ 'hypotheses.update_status': [
232
+ 'Body is { "status": "<value>" }. Valid statuses: "draft", "applied", "completed", "archived", "proven", "disproven".',
233
+ 'Status transitions follow a strict state machine:',
234
+ ' draft ↔ applied → completed → { archived, proven, disproven }',
235
+ 'Only allowed transitions: draft→applied, applied→draft, applied→completed, completed→archived, completed→proven, completed→disproven.',
236
+ 'Returns 422 "Status cannot be updated to the desired one" for invalid transitions.',
237
+ ].join('\n'),
238
+ // ── knowledgebases ───────────────────────────────────────
239
+ 'knowledgebases.create': 'Required body fields: name, summary. Optional: description, url, start_date, end_date.',
240
+ 'knowledgebases.get': 'Path parameter is "knowledge_base_id" (with underscores, not "knowledgebase_id").',
241
+ 'knowledgebases.update': [
242
+ 'Path parameter is "knowledge_base_id" (with underscores).',
243
+ 'Currently only accepts "status" field in body ("active" or "archived"). Other fields like name or summary will fail schema validation.',
244
+ ].join('\n'),
245
+ 'knowledgebases.delete': 'Path parameter is "knowledge_base_id" (with underscores, not "knowledgebase_id").',
246
+ // ── observations ─────────────────────────────────────────
247
+ 'observations.update': '⚠️ Known backend bug — API returns 500 on update. Workaround: create a new observation + delete the old one.',
248
+ // ── features ─────────────────────────────────────────────
249
+ 'features.create': [
250
+ 'Only works in fullstack project types. Returns 422 for web/standard projects.',
251
+ 'Required body fields: name, key, variables (array).',
252
+ 'Variable type enum: "boolean", "string", "integer", "json". default_value must match the type (e.g., true for boolean, not "true").',
253
+ 'Minimal example: { "body": { "name": "Dark Mode", "key": "dark_mode", "variables": [{ "key": "enabled", "type": "boolean", "default_value": false }] } }',
254
+ ].join('\n'),
255
+ 'features.get_by_key': 'Path parameter is "feature_key" (not "key"). Pass in path: { "feature_key": "abc123" }.',
256
+ // ── sections ─────────────────────────────────────────────
257
+ 'sections.list': 'Requires "experience_id" in path — sections are experience-scoped, not project-scoped.',
258
+ 'sections.create': [
259
+ 'Requires "experience_id" in path — sections are experience-scoped.',
260
+ 'Only works for MVT (multivariate) experiences. Returns 403 for A/B and other types.',
261
+ 'Required body field: "versions" array with at least one version object.',
262
+ 'Minimal example: { "body": { "name": "New Section", "versions": [{ "name": "Original", "url": "https://example.com" }] } }',
263
+ ].join('\n'),
264
+ 'sections.update': [
265
+ 'Requires "experience_id" and "section_id" in path — sections are experience-scoped.',
266
+ 'Required body field: "versions" array (same format as sections.create).',
267
+ 'Example: { "body": { "name": "Updated Section", "versions": [{ "name": "V1", "url": "https://example.com" }] } }',
268
+ ].join('\n'),
269
+ // ── goals ────────────────────────────────────────────────
270
+ 'goals.get_by_key': 'Path parameter is "goal_key" (not "key"). Pass in path: { "goal_key": "abc123" }.',
271
+ 'goals.create': [
272
+ 'Type enum: "visits_page", "clicks_link", "submits_form", "revenue", "engagement", "scrolls_to", "custom_js".',
273
+ 'For page-visit goals, include "urls" array with objects: { "match_type": "contains"|"equals"|"regex", "value": "https://..." }.',
274
+ ].join('\n'),
275
+ // ── accounts ─────────────────────────────────────────────
276
+ 'accounts.list_sdk_keys': 'Requires "project_id" in path even though it\'s under the accounts namespace.',
277
+ 'accounts.create_sdk_key': 'Requires "project_id" in path even though it\'s under the accounts namespace. May return 401 if API credentials lack SDK key management permissions.',
278
+ };
279
+ function isNonArrayObject(value) {
280
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
281
+ }
282
+ function hasActivationConfirmation(confirmation) {
283
+ if (!isNonArrayObject(confirmation))
284
+ return false;
285
+ return confirmation.user_confirmed === true;
286
+ }
287
+ function normalizeBodyForAction(namespace, action, body) {
288
+ if (namespace !== 'experiences' || action !== 'create')
289
+ return body;
290
+ if (!isNonArrayObject(body))
291
+ return body;
292
+ const statusRaw = body.status;
293
+ const isMissing = statusRaw === undefined || statusRaw === null;
294
+ const isEmpty = typeof statusRaw === 'string' && statusRaw.trim() === '';
295
+ if (isMissing || isEmpty) {
296
+ return { ...body, status: 'draft' };
297
+ }
298
+ return body;
299
+ }
300
+ function evaluateGuardrails(namespace, action, body, confirmation) {
301
+ if (namespace !== 'experiences')
302
+ return null;
303
+ if (action === 'update_variation') {
304
+ if (!isNonArrayObject(body) || Object.keys(body).length === 0) {
305
+ return {
306
+ code: 'BodyRequired',
307
+ message: 'experiences.update_variation requires a non-empty "body" object (for example {"changes":[...]} or {"status":"running"}).',
308
+ };
309
+ }
310
+ }
311
+ if ((action === 'create' || action === 'update') && isNonArrayObject(body)) {
312
+ const statusRaw = body.status;
313
+ const status = typeof statusRaw === 'string' ? statusRaw.trim().toLowerCase() : null;
314
+ if (status === 'active' && !hasActivationConfirmation(confirmation)) {
315
+ return {
316
+ code: 'ActivationConfirmationRequired',
317
+ message: 'Setting experience status to "active" requires explicit user confirmation. Ask the user to confirm first, then retry with confirmation: { "user_confirmed": true, "reason": "..." }.',
318
+ };
319
+ }
320
+ }
321
+ return null;
322
+ }
323
+ /**
324
+ * Walk a JSON Schema tree and extract all enum fields with their paths
325
+ * and required fields. Handles allOf/oneOf/anyOf composition.
326
+ * Used to surface schema constraints that LLMs can't parse from raw JSON Schema.
327
+ */
328
+ function extractBodyHints(inputSchema) {
329
+ const rbSchema = inputSchema?.properties?.requestBody;
330
+ if (!rbSchema)
331
+ return null;
332
+ const visited = new WeakSet();
333
+ const enumMap = new Map();
334
+ const requiredAtLevel = new Map();
335
+ function walk(schema, path) {
336
+ if (!schema || typeof schema !== 'object')
337
+ return;
338
+ if (visited.has(schema))
339
+ return;
340
+ visited.add(schema);
341
+ // Collect enum values
342
+ if (Array.isArray(schema.enum)) {
343
+ const vals = schema.enum.filter((v) => typeof v === 'string' || typeof v === 'number');
344
+ if (vals.length > 0 && path) {
345
+ const existing = enumMap.get(path) || new Set();
346
+ vals.forEach((v) => existing.add(String(v)));
347
+ enumMap.set(path, existing);
348
+ }
349
+ }
350
+ // Collect required fields
351
+ if (Array.isArray(schema.required) && schema.required.length > 0) {
352
+ const level = path || '(root)';
353
+ const existing = requiredAtLevel.get(level) || new Set();
354
+ schema.required.forEach((r) => existing.add(r));
355
+ requiredAtLevel.set(level, existing);
356
+ }
357
+ // Walk properties
358
+ if (schema.properties && typeof schema.properties === 'object') {
359
+ for (const [key, value] of Object.entries(schema.properties)) {
360
+ const prop = value;
361
+ if (prop.readOnly)
362
+ continue; // skip auto-generated IDs
363
+ walk(prop, path ? `${path}.${key}` : key);
364
+ }
365
+ }
366
+ // Walk array items
367
+ if (schema.items) {
368
+ walk(schema.items, `${path}[]`);
369
+ }
370
+ // Walk composition keywords
371
+ for (const kw of ['allOf', 'oneOf', 'anyOf']) {
372
+ if (Array.isArray(schema[kw])) {
373
+ for (const sub of schema[kw]) {
374
+ walk(sub, path);
375
+ }
376
+ }
377
+ }
378
+ }
379
+ walk(rbSchema, '');
380
+ const lines = [];
381
+ // Show enum fields with valid values (sorted by path depth, shallow first)
382
+ const enumEntries = [...enumMap.entries()]
383
+ .sort((a, b) => a[0].split('.').length - b[0].split('.').length);
384
+ for (const [field, values] of enumEntries) {
385
+ const valArr = [...values];
386
+ if (valArr.length > 12) {
387
+ lines.push(` ${field}: ${valArr.slice(0, 10).map(v => `"${v}"`).join(', ')}, ... (${valArr.length} values)`);
388
+ }
389
+ else {
390
+ lines.push(` ${field}: ${valArr.map(v => `"${v}"`).join(', ')}`);
391
+ }
392
+ }
393
+ // Show required fields per level
394
+ for (const [level, fields] of requiredAtLevel) {
395
+ const fieldArr = [...fields].filter(f => f !== 'id'); // skip auto-assigned ids
396
+ if (fieldArr.length === 0)
397
+ continue;
398
+ if (level === '(root)') {
399
+ lines.push(` Required: ${fieldArr.join(', ')}`);
400
+ }
401
+ else {
402
+ lines.push(` Required in ${level}: ${fieldArr.join(', ')}`);
403
+ }
404
+ }
405
+ return lines.length > 0 ? lines.join('\n') : null;
406
+ }
124
407
  function actionsForToolset(namespace, toolSet) {
125
408
  const all = Object.entries(REGISTRY[namespace] || {});
126
409
  if (toolSet === 'all')
@@ -128,42 +411,81 @@ function actionsForToolset(namespace, toolSet) {
128
411
  // reporting/readOnly: include only underlying tools that start with 'get'
129
412
  return all.filter(([, tool]) => tool.startsWith('get')).map(([a]) => a);
130
413
  }
414
+ /**
415
+ * Compute MCP tool annotations from the filtered action set.
416
+ * Annotations reflect the worst-case capability of the exposed actions:
417
+ * - readOnlyHint: true only when ALL actions are reads
418
+ * - destructiveHint: true when ANY action is a delete
419
+ * - idempotentHint: true only when ALL actions are reads (GETs are idempotent)
420
+ * - openWorldHint: false — all tools affect bounded Convert API resources
421
+ */
422
+ function annotationsForNamespace(ns, actions) {
423
+ const hasWriteAction = actions.some((a) => {
424
+ const toolName = REGISTRY[ns]?.[a];
425
+ return toolName && !toolName.startsWith('get');
426
+ });
427
+ const hasDeleteAction = actions.includes('delete');
428
+ return {
429
+ title: NAMESPACE_TITLES[ns] ?? ns,
430
+ readOnlyHint: !hasWriteAction,
431
+ destructiveHint: hasWriteAction && hasDeleteAction,
432
+ idempotentHint: !hasWriteAction,
433
+ openWorldHint: false,
434
+ };
435
+ }
131
436
  export function getNamespacedTools(toolSet) {
132
437
  return Object.keys(REGISTRY).map((ns) => {
133
438
  const actions = actionsForToolset(ns, toolSet);
134
- const description = `Namespace '${ns}'. Actions: ${actions.join(', ')}.`;
135
- // Build structured metadata for each action
439
+ // Build rich namespace description from curated map or fallback
440
+ const nsDesc = NAMESPACE_DESCRIPTIONS[ns] || `Manage ${ns} in the user's Convert.com account via the live API.`;
441
+ const description = `${nsDesc} Available actions: ${actions.join(', ')}.`;
442
+ // Build structured metadata for each action, merging ACTION_NOTES
136
443
  const actionMetadata = actions.map((action) => {
137
444
  const toolName = REGISTRY[ns][action];
138
445
  const def = toolDefinitionMap.get(toolName);
139
446
  if (!def)
140
447
  return { action, description: 'No metadata available' };
141
- const pathParams = (def.executionParameters || [])
142
- .filter((p) => p.in === 'path')
143
- .map((p) => p.name);
448
+ const pathParams = requiredPathParamsForDef(def);
144
449
  const queryParams = (def.executionParameters || [])
145
450
  .filter((p) => p.in === 'query')
146
451
  .map((p) => p.name);
147
452
  const hasBody = !!def.requestBodyContentType;
453
+ const baseDesc = def.description || 'No description';
454
+ const note = ACTION_NOTES[`${ns}.${action}`];
455
+ const bodyHints = hasBody ? extractBodyHints(def.inputSchema) : null;
456
+ const parts = [baseDesc];
457
+ if (note)
458
+ parts.push(`Agent Notes:\n${note}`);
459
+ if (bodyHints)
460
+ parts.push(`Body schema:\n${bodyHints}`);
461
+ const fullDesc = parts.join('\n\n');
148
462
  return {
149
463
  action,
150
- description: def.description || 'No description',
464
+ description: fullDesc,
151
465
  method: def.method.toUpperCase(),
152
466
  path_parameters: pathParams,
153
467
  query_parameters: queryParams,
154
468
  accepts_body: hasBody,
155
469
  };
156
470
  });
471
+ // Hint in action description when notes are available
472
+ const actionsWithNotes = actions.filter(a => ACTION_NOTES[`${ns}.${a}`]);
473
+ const actionDesc = actionsWithNotes.length
474
+ ? 'Action to perform. See _meta.available_actions for detailed per-action guidance.'
475
+ : 'Action to perform';
157
476
  return {
158
477
  name: ns,
478
+ title: NAMESPACE_TITLES[ns] ?? ns,
159
479
  description,
160
480
  inputSchema: {
481
+ $schema: JSON_SCHEMA_DRAFT_2020_12,
161
482
  type: 'object',
162
483
  properties: {
163
- action: { type: 'string', enum: actions, description: 'Action to perform' },
484
+ action: { type: 'string', enum: actions, description: actionDesc },
164
485
  path: { type: 'object', additionalProperties: true, description: 'Path params: e.g., account_id, project_id, experience_id' },
165
486
  query: { type: 'object', additionalProperties: true, description: 'Query parameters for the API request. Array parameters (like include, expand) must always be passed as arrays, even for single values. IMPORTANT: When using "include" to fetch related resources, you MUST also use "expand" with identical values to get complete object data instead of just numeric IDs. Examples: {"include": ["goals"], "expand": ["goals"]} (correct) vs {"include": ["goals"]} (incorrect - returns useless IDs only).' },
166
487
  body: { type: 'object', additionalProperties: true, description: 'Request body (for create/update/clone, etc.)' },
488
+ confirmation: { type: 'object', additionalProperties: true, description: 'Optional explicit user confirmation metadata for sensitive actions. Example: {"user_confirmed": true, "reason": "User approved activation"}' },
167
489
  },
168
490
  required: ['action'],
169
491
  _meta: {
@@ -171,85 +493,133 @@ export function getNamespacedTools(toolSet) {
171
493
  available_actions: actionMetadata,
172
494
  },
173
495
  },
496
+ outputSchema: {
497
+ $schema: JSON_SCHEMA_DRAFT_2020_12,
498
+ type: 'object',
499
+ description: 'Standardized namespace tool result envelope.',
500
+ properties: {
501
+ ok: { type: 'boolean', description: 'True on success, false on tool-level error.' },
502
+ namespace: { type: 'string', description: 'Namespace that handled the request.' },
503
+ action: { type: 'string', description: 'Namespace action requested by the model.' },
504
+ delegate: { type: 'string', description: 'Underlying generated tool ID executed for this action.' },
505
+ status: { type: 'number', description: 'HTTP status code from the Convert API (when available).' },
506
+ data: { description: 'Raw API response payload for successful requests.' },
507
+ error: { description: 'Error code/object for failed requests.' },
508
+ issues: { type: 'array', items: { type: 'object' }, description: 'Validation issues, if present.' },
509
+ },
510
+ additionalProperties: true,
511
+ },
512
+ annotations: annotationsForNamespace(ns, actions),
174
513
  };
175
514
  });
176
515
  }
516
+ function withNamespaceEnvelope(result, namespace, action, delegate) {
517
+ const base = (result.structuredContent && typeof result.structuredContent === 'object')
518
+ ? result.structuredContent
519
+ : {};
520
+ const envelope = {
521
+ ok: !result.isError,
522
+ namespace,
523
+ ...base,
524
+ };
525
+ if (action)
526
+ envelope.action = action;
527
+ if (delegate)
528
+ envelope.delegate = delegate;
529
+ if (result.isError && typeof envelope.error === 'undefined') {
530
+ const fallbackText = result.content?.[0]?.type === 'text' ? result.content[0].text : 'Unknown error';
531
+ envelope.error = fallbackText;
532
+ }
533
+ return {
534
+ ...result,
535
+ structuredContent: envelope,
536
+ };
537
+ }
177
538
  export async function executeNamespacedTool(namespace, args) {
178
539
  if (!REGISTRY[namespace]) {
179
540
  const error = { error: 'UnknownNamespace', namespace, available_namespaces: Object.keys(REGISTRY) };
180
- return {
181
- content: [
182
- { type: 'text', text: `Unknown namespace: ${namespace}` },
183
- { type: 'text', text: JSON.stringify(error, null, 2) }
184
- ],
541
+ return withNamespaceEnvelope({
542
+ content: [{ type: 'text', text: `Unknown namespace: ${namespace}` }],
543
+ structuredContent: error,
185
544
  isError: true,
186
- };
545
+ }, namespace);
187
546
  }
188
547
  if (!args || typeof args !== 'object') {
189
- const error = { error: 'InvalidArguments', message: 'Expected object with fields: action, path, query, body' };
190
- return {
191
- content: [
192
- { type: 'text', text: `Invalid arguments. Expected object with fields: action, path, query, body.` },
193
- { type: 'text', text: JSON.stringify(error, null, 2) }
194
- ],
548
+ const error = { error: 'InvalidArguments', message: 'Expected object with fields: action, path, query, body, confirmation' };
549
+ return withNamespaceEnvelope({
550
+ content: [{ type: 'text', text: `Invalid arguments. Expected object with fields: action, path, query, body, confirmation.` }],
551
+ structuredContent: error,
195
552
  isError: true,
196
- };
553
+ }, namespace);
197
554
  }
198
- const { action, path = {}, query = {}, body } = args;
555
+ const { action, path = {}, query = {}, body, confirmation } = args;
199
556
  if (!action || typeof action !== 'string') {
200
557
  const error = { error: 'MissingAction', message: 'The action field is required and must be a string' };
201
- return {
202
- content: [
203
- { type: 'text', text: `Missing or invalid 'action'.` },
204
- { type: 'text', text: JSON.stringify(error, null, 2) }
205
- ],
558
+ return withNamespaceEnvelope({
559
+ content: [{ type: 'text', text: `Missing or invalid 'action'.` }],
560
+ structuredContent: error,
206
561
  isError: true,
207
- };
562
+ }, namespace);
208
563
  }
209
564
  const delegate = REGISTRY[namespace][action];
210
565
  if (!delegate) {
211
566
  const available = Object.keys(REGISTRY[namespace]);
212
567
  const error = { error: 'UnknownAction', namespace, action, available_actions: available };
213
- return {
214
- content: [
215
- { type: 'text', text: `Unknown action '${action}' for namespace '${namespace}'. Available: ${available.join(', ')}` },
216
- { type: 'text', text: JSON.stringify(error, null, 2) }
217
- ],
568
+ return withNamespaceEnvelope({
569
+ content: [{ type: 'text', text: `Unknown action '${action}' for namespace '${namespace}'. Available: ${available.join(', ')}` }],
570
+ structuredContent: error,
218
571
  isError: true,
219
- };
572
+ }, namespace, action);
220
573
  }
221
574
  const def = toolDefinitionMap.get(delegate);
222
575
  if (!def) {
223
576
  const error = { error: 'InternalError', message: 'Delegate tool not found', delegate };
224
- return {
225
- content: [
226
- { type: 'text', text: `Internal error: delegate tool not found: ${delegate}` },
227
- { type: 'text', text: JSON.stringify(error, null, 2) }
228
- ],
577
+ return withNamespaceEnvelope({
578
+ content: [{ type: 'text', text: `Internal error: delegate tool not found: ${delegate}` }],
579
+ structuredContent: error,
229
580
  isError: true,
230
- };
581
+ }, namespace, action, delegate);
231
582
  }
232
583
  // Validate required path params early for better error messages
233
- const requiredPathParams = (def.executionParameters || []).filter((p) => p.in === 'path').map((p) => p.name);
584
+ const requiredPathParams = requiredPathParamsForDef(def);
234
585
  const missing = requiredPathParams.filter((k) => !(k in path));
235
586
  if (missing.length) {
587
+ const note = ACTION_NOTES[`${namespace}.${action}`];
588
+ const hint = note ? `\n\nHint for ${namespace}.${action}:\n${note}` : '';
236
589
  const error = { error: 'MissingPathParameters', namespace, action, missing_parameters: missing };
237
- return {
238
- content: [
239
- { type: 'text', text: `Missing required path parameters: ${missing.map(k => `path.${k}`).join(', ')}` },
240
- { type: 'text', text: JSON.stringify(error, null, 2) }
241
- ],
590
+ return withNamespaceEnvelope({
591
+ content: [{ type: 'text', text: `Missing required path parameters: ${missing.map(k => `path.${k}`).join(', ')}${hint}` }],
592
+ structuredContent: error,
242
593
  isError: true,
243
- };
594
+ }, namespace, action, delegate);
595
+ }
596
+ const normalizedBody = normalizeBodyForAction(namespace, action, body);
597
+ const guardrail = evaluateGuardrails(namespace, action, normalizedBody, confirmation);
598
+ if (guardrail) {
599
+ return withNamespaceEnvelope({
600
+ content: [{ type: 'text', text: guardrail.message }],
601
+ structuredContent: {
602
+ error: guardrail.code,
603
+ namespace,
604
+ action,
605
+ message: guardrail.message,
606
+ },
607
+ isError: true,
608
+ }, namespace, action, delegate);
244
609
  }
245
610
  const flattenedArgs = { ...path, ...query };
246
- if (def.requestBodyContentType && typeof body !== 'undefined') {
247
- flattenedArgs.requestBody = body;
611
+ if (def.requestBodyContentType && typeof normalizedBody !== 'undefined') {
612
+ flattenedArgs.requestBody = normalizedBody;
248
613
  }
249
- else if (def.requestBodyContentType && typeof body === 'undefined') {
250
- // Do not set requestBody; zod schema will enforce when required
614
+ const result = await executeToolByName(delegate, flattenedArgs);
615
+ // Append action-specific guidance to error messages so agents can self-correct
616
+ if (result.isError) {
617
+ const note = ACTION_NOTES[`${namespace}.${action}`];
618
+ if (note && result.content?.[0]?.type === 'text') {
619
+ result.content[0].text += `\n\nHint for ${namespace}.${action}:\n${note}`;
620
+ }
251
621
  }
252
- return await executeToolByName(delegate, flattenedArgs);
622
+ return withNamespaceEnvelope(result, namespace, action, delegate);
253
623
  }
254
624
  export function isNamespace(name) {
255
625
  return Object.prototype.hasOwnProperty.call(REGISTRY, name);
@@ -1 +1 @@
1
- {"version":3,"file":"namespaced.js","sourceRoot":"","sources":["../src/namespaced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"namespaced.js","sourceRoot":"","sources":["../src/namespaced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type JsonObject = Record<string, any>;
2
+ export declare const JSON_SCHEMA_DRAFT_2020_12 = "https://json-schema.org/draft/2020-12/schema";
3
+ /**
4
+ * Extract path parameter names from a URL template like "/accounts/{account_id}/projects/{project_id}".
5
+ */
6
+ export declare function pathParamsFromTemplate(pathTemplate: string): string[];