@convertcom/mcp-server 0.0.1-beta.6 → 0.0.1-beta.7
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/build/api-config.d.ts +1 -1
- package/build/api-config.js +10 -16
- package/build/api-config.js.map +1 -1
- package/build/executor.d.ts +0 -1
- package/build/executor.js +33 -11
- package/build/executor.js.map +1 -1
- package/build/index.d.ts +0 -8
- package/build/index.js +96 -45
- package/build/index.js.map +1 -1
- package/build/kb-hybrid.d.ts +20 -0
- package/build/kb-hybrid.js +69 -0
- package/build/kb-hybrid.js.map +1 -0
- package/build/kb-semantic.d.ts +16 -0
- package/build/kb-semantic.js +97 -0
- package/build/kb-semantic.js.map +1 -0
- package/build/namespaced.d.ts +6 -0
- package/build/namespaced.js +295 -29
- package/build/namespaced.js.map +1 -1
- package/build/tools.js +527 -816
- package/build/tools.js.map +1 -1
- package/package.json +27 -20
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
const MODEL_ID = 'Xenova/all-MiniLM-L6-v2';
|
|
3
|
+
const EMBEDDING_DIM = 384;
|
|
4
|
+
export class SemanticKbSearchService {
|
|
5
|
+
_isReady = false;
|
|
6
|
+
_initPromise;
|
|
7
|
+
_collection = null;
|
|
8
|
+
_extractor = null;
|
|
9
|
+
_chunks = [];
|
|
10
|
+
_hasLoadedNativeRuntime = false;
|
|
11
|
+
constructor(kbJsonPath, vectorsDir) {
|
|
12
|
+
this._initPromise = this._init(kbJsonPath, vectorsDir);
|
|
13
|
+
}
|
|
14
|
+
isReady() {
|
|
15
|
+
return this._isReady;
|
|
16
|
+
}
|
|
17
|
+
waitReady() {
|
|
18
|
+
return this._initPromise;
|
|
19
|
+
}
|
|
20
|
+
hasNativeRuntimeLoaded() {
|
|
21
|
+
return this._hasLoadedNativeRuntime;
|
|
22
|
+
}
|
|
23
|
+
async search(query, limit = 5) {
|
|
24
|
+
if (!this._isReady || !this._collection || !this._extractor) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const output = await this._extractor(query, { pooling: 'mean', normalize: true });
|
|
29
|
+
const queryVec = new Float32Array(output.data);
|
|
30
|
+
if (queryVec.length !== EMBEDDING_DIM) {
|
|
31
|
+
console.error(`[SemanticKbSearch] Unexpected embedding dimension: ${queryVec.length}, expected ${EMBEDDING_DIM}`);
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
const docs = this._collection.querySync({
|
|
35
|
+
fieldName: 'embedding',
|
|
36
|
+
vector: queryVec,
|
|
37
|
+
topk: limit,
|
|
38
|
+
outputFields: ['chunk_id'],
|
|
39
|
+
});
|
|
40
|
+
return docs.map((doc) => {
|
|
41
|
+
const chunkId = Number(doc.fields.chunk_id);
|
|
42
|
+
const chunk = this._chunks[chunkId];
|
|
43
|
+
if (!chunk)
|
|
44
|
+
return null;
|
|
45
|
+
const snippet = chunk.content.length > 360
|
|
46
|
+
? chunk.content.slice(0, 360) + '...'
|
|
47
|
+
: chunk.content;
|
|
48
|
+
return {
|
|
49
|
+
chunk,
|
|
50
|
+
score: doc.score,
|
|
51
|
+
snippet,
|
|
52
|
+
};
|
|
53
|
+
}).filter((r) => r !== null);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error('[SemanticKbSearch] Query error:', err instanceof Error ? err.message : err);
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
close() {
|
|
61
|
+
this._collection = null;
|
|
62
|
+
this._extractor = null;
|
|
63
|
+
this._isReady = false;
|
|
64
|
+
}
|
|
65
|
+
async _init(kbJsonPath, vectorsDir) {
|
|
66
|
+
try {
|
|
67
|
+
if (!existsSync(vectorsDir)) {
|
|
68
|
+
console.error(`[SemanticKbSearch] Vectors directory not found: ${vectorsDir} — falling back to keyword-only search.`);
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
// Load chunks for content lookup by chunk_id
|
|
72
|
+
const raw = readFileSync(kbJsonPath, 'utf8');
|
|
73
|
+
this._chunks = JSON.parse(raw);
|
|
74
|
+
// Dynamic imports — missing packages throw catchable errors.
|
|
75
|
+
// Zvec is CJS, so dynamic import yields { default: { ZVecOpen, ... } }.
|
|
76
|
+
const [hf, zvecMod] = await Promise.all([
|
|
77
|
+
import('@huggingface/transformers'),
|
|
78
|
+
import('@zvec/zvec'),
|
|
79
|
+
]);
|
|
80
|
+
this._hasLoadedNativeRuntime = true;
|
|
81
|
+
const { ZVecOpen } = zvecMod.default ?? zvecMod;
|
|
82
|
+
this._extractor = await hf.pipeline('feature-extraction', MODEL_ID, {
|
|
83
|
+
dtype: 'fp32',
|
|
84
|
+
});
|
|
85
|
+
this._collection = ZVecOpen(vectorsDir, { readOnly: true });
|
|
86
|
+
this._isReady = true;
|
|
87
|
+
console.error(`[SemanticKbSearch] Ready — ${this._chunks.length} chunks, model: ${MODEL_ID}`);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
console.error('[SemanticKbSearch] Init failed (keyword-only fallback):', err instanceof Error ? err.message : err);
|
|
92
|
+
this._isReady = false;
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=kb-semantic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kb-semantic.js","sourceRoot":"","sources":["../src/kb-semantic.ts"],"names":[],"mappings":"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"}
|
package/build/namespaced.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { Tool, CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Per-action agent guidance. Appended to generated descriptions as "Agent Notes:".
|
|
4
|
+
* Keys are "namespace.action" strings matching REGISTRY entries.
|
|
5
|
+
* This map survives `yarn generate` — it's hand-curated like REGISTRY.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ACTION_NOTES: Record<string, string>;
|
|
2
8
|
export declare function getNamespacedTools(toolSet: string): Tool[];
|
|
3
9
|
export declare function executeNamespacedTool(namespace: string, args: any): Promise<CallToolResult>;
|
|
4
10
|
export declare function isNamespace(name: string): boolean;
|
package/build/namespaced.js
CHANGED
|
@@ -121,6 +121,234 @@ const REGISTRY = {
|
|
|
121
121
|
delete: 'deletefeature',
|
|
122
122
|
},
|
|
123
123
|
};
|
|
124
|
+
/** Human-readable titles for each namespace */
|
|
125
|
+
const NAMESPACE_TITLES = {
|
|
126
|
+
accounts: 'Accounts',
|
|
127
|
+
projects: 'Projects',
|
|
128
|
+
domains: 'Domains',
|
|
129
|
+
experiences: 'Experiences',
|
|
130
|
+
sections: 'Sections',
|
|
131
|
+
goals: 'Goals',
|
|
132
|
+
tags: 'Tags',
|
|
133
|
+
hypotheses: 'Hypotheses',
|
|
134
|
+
knowledgebases: 'Knowledge Bases',
|
|
135
|
+
observations: 'Observations',
|
|
136
|
+
locations: 'Locations',
|
|
137
|
+
audiences: 'Audiences',
|
|
138
|
+
features: 'Features',
|
|
139
|
+
};
|
|
140
|
+
/** Namespace-level descriptions for agents — richer than the auto-generated "Namespace 'X'" */
|
|
141
|
+
const NAMESPACE_DESCRIPTIONS = {
|
|
142
|
+
accounts: 'Manage Convert.com accounts via the live API — get account details, live visitor data, history, users, API/SDK keys.',
|
|
143
|
+
projects: 'Manage Convert.com projects via the live API — list, create, update projects, get live visitor data and change history.',
|
|
144
|
+
domains: 'Manage domains in the user\'s Convert.com account — add, verify (check_code), update, delete domains for a project.',
|
|
145
|
+
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).',
|
|
146
|
+
sections: 'Manage multi-page sections within MVT experiences via the Convert.com API. Requires experience_id in path — sections are experience-scoped.',
|
|
147
|
+
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.',
|
|
148
|
+
tags: 'Manage tags in the user\'s Convert.com account for organizing experiences and other resources.',
|
|
149
|
+
hypotheses: 'Manage CRO hypotheses in the user\'s Convert.com account with PIE/ICE prioritization scoring (UPPERCASE).',
|
|
150
|
+
knowledgebases: 'Manage knowledge base entries in the user\'s Convert.com account. Note: path param uses underscores — knowledge_base_id (not knowledgebase_id).',
|
|
151
|
+
observations: 'Manage observations in the user\'s Convert.com account. ⚠️ update action has a known backend bug (500).',
|
|
152
|
+
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.',
|
|
153
|
+
audiences: 'Manage visitor segmentation rules in the user\'s Convert.com account. Rules use nested OR→AND→OR_WHEN structure similar to locations.',
|
|
154
|
+
features: 'Manage feature flags in the user\'s Convert.com account — only works in fullstack project types. Returns 422 for web/standard projects.',
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Per-action agent guidance. Appended to generated descriptions as "Agent Notes:".
|
|
158
|
+
* Keys are "namespace.action" strings matching REGISTRY entries.
|
|
159
|
+
* This map survives `yarn generate` — it's hand-curated like REGISTRY.
|
|
160
|
+
*/
|
|
161
|
+
export const ACTION_NOTES = {
|
|
162
|
+
// ── experiences ──────────────────────────────────────────
|
|
163
|
+
'experiences.create': [
|
|
164
|
+
'Type enum: "a/b", "a/a", "mvt", "split_url", "multipage", "deploy" (standard projects), "a/b_fullstack", "feature_rollout" (fullstack projects only).',
|
|
165
|
+
'Required body fields: name, type, status (use "draft"), url.',
|
|
166
|
+
'a/b_fullstack and feature_rollout return 422 on non-fullstack projects.',
|
|
167
|
+
'Minimal example: { "body": { "name": "My Test", "type": "a/b", "status": "draft", "url": "https://example.com" } }',
|
|
168
|
+
].join('\n'),
|
|
169
|
+
'experiences.get_by_key': 'Path parameter is "experience_key" (not "key"). Pass in path: { "experience_key": "abc123" }.',
|
|
170
|
+
'experiences.daily_traffic_allocation': 'Only works when MAB (Multi-Armed Bandit) is configured on the experience. Returns 422 otherwise.',
|
|
171
|
+
'experiences.update_variation': [
|
|
172
|
+
'Requires "variation_id" in path. Get variation IDs from experiences.get with query: { "include": ["variations"], "expand": ["variations"] }.',
|
|
173
|
+
'To add CSS/JS changes, use the "changes" array in body. Each change needs "type" and "data":',
|
|
174
|
+
' - type "customCode": data = { css: "...", js: "..." } — for custom CSS/JS code',
|
|
175
|
+
' - type "defaultCode": data = { css: "...", js: "...", custom_js: "..." } — for Visual Editor changes',
|
|
176
|
+
' - type "defaultRedirect": data = { original_pattern, variation_pattern, case_sensitive } — for split URL',
|
|
177
|
+
' - type "fullStackFeature": data = { feature_id, variables_data } — for fullstack features',
|
|
178
|
+
'Example adding custom CSS+JS: { "body": { "changes": [{ "type": "customCode", "data": { "css": "body{color:red}", "js": "console.log(1)" } }] } }',
|
|
179
|
+
'To clear all changes: { "body": { "changes": [] } }',
|
|
180
|
+
'To update an existing change, include its integer "id" from the previous response.',
|
|
181
|
+
].join('\n'),
|
|
182
|
+
'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.',
|
|
183
|
+
'experiences.get_change': [
|
|
184
|
+
'Requires account_id, project_id, experience_id, and change_id in path.',
|
|
185
|
+
'⚠️ Known schema issue: path params may not be auto-validated. Pass all four IDs explicitly in path.',
|
|
186
|
+
'Get change IDs from the update_variation response or from experiences.get with include/expand variations.',
|
|
187
|
+
].join('\n'),
|
|
188
|
+
'experiences.update_change': [
|
|
189
|
+
'Requires account_id, project_id, experience_id, and change_id in path.',
|
|
190
|
+
'⚠️ Known schema issue: path params may not be auto-validated. Pass all four IDs explicitly in path.',
|
|
191
|
+
'Body uses same structure as update_variation changes: { type, data }.',
|
|
192
|
+
'For customCode: { "type": "customCode", "data": { "css": "...", "js": "..." } }',
|
|
193
|
+
'For defaultCode: { "type": "defaultCode", "data": { "css": "...", "js": "...", "custom_js": "..." } }',
|
|
194
|
+
].join('\n'),
|
|
195
|
+
'experiences.aggregated_report': 'Works on any experience. Returns empty data arrays for draft/inactive experiences.',
|
|
196
|
+
'experiences.daily_report': 'Works on any experience. Returns empty data arrays for draft/inactive experiences.',
|
|
197
|
+
// ── locations ────────────────────────────────────────────
|
|
198
|
+
'locations.create': [
|
|
199
|
+
'Required body fields: name, rules, trigger.',
|
|
200
|
+
'Rules use nested OR→AND→OR_WHEN structure.',
|
|
201
|
+
'Minimal example: { "body": { "name": "Homepage", "rules": { "OR": [{ "AND": [{ "OR_WHEN": [{ "rule_type": "url", "value": "example.com", "matching": { "match_type": "contains" } }] }] }] }, "trigger": { "type": "upon_run" } } }',
|
|
202
|
+
].join('\n'),
|
|
203
|
+
// ── audiences ────────────────────────────────────────────
|
|
204
|
+
'audiences.create': [
|
|
205
|
+
'Required body fields: name, type, rules.',
|
|
206
|
+
'Type enum: "segmentation", "transient_condition", "permanent".',
|
|
207
|
+
'Rules use nested OR→AND→OR_WHEN structure (same as locations but more rule_type options).',
|
|
208
|
+
'For visitor_type rules, use match_type: "equals" (not "matches").',
|
|
209
|
+
'Minimal example: { "body": { "name": "Returning Visitors", "type": "segmentation", "rules": { "OR": [{ "AND": [{ "OR_WHEN": [{ "rule_type": "visitor_type", "value": "returning", "matching": { "match_type": "equals" } }] }] }] } } }',
|
|
210
|
+
].join('\n'),
|
|
211
|
+
// ── hypotheses ───────────────────────────────────────────
|
|
212
|
+
'hypotheses.create': [
|
|
213
|
+
'Required body fields: name, status (use "draft"), prioritization_score_type, prioritization_score_attributes.',
|
|
214
|
+
'prioritization_score_type: "PIE" or "ICE" (UPPERCASE only).',
|
|
215
|
+
'For PIE: attributes are { potential, importance, ease } (values 1-5).',
|
|
216
|
+
'For ICE: attributes are { impact, confidence, ease } (values 1-5).',
|
|
217
|
+
'Minimal example: { "body": { "name": "Bigger CTA button", "status": "draft", "prioritization_score_type": "PIE", "prioritization_score_attributes": { "potential": 4, "importance": 3, "ease": 5 } } }',
|
|
218
|
+
].join('\n'),
|
|
219
|
+
'hypotheses.convert': 'Converts hypothesis to experience. The hypothesis must have associated goals and locations first. Returns 422 if prerequisites are missing.',
|
|
220
|
+
'hypotheses.update_status': [
|
|
221
|
+
'Body is { "status": "<value>" }. Valid statuses: "draft", "applied", "completed", "archived", "proven", "disproven".',
|
|
222
|
+
'Status transitions follow a strict state machine:',
|
|
223
|
+
' draft ↔ applied → completed → { archived, proven, disproven }',
|
|
224
|
+
'Only allowed transitions: draft→applied, applied→draft, applied→completed, completed→archived, completed→proven, completed→disproven.',
|
|
225
|
+
'Returns 422 "Status cannot be updated to the desired one" for invalid transitions.',
|
|
226
|
+
].join('\n'),
|
|
227
|
+
// ── knowledgebases ───────────────────────────────────────
|
|
228
|
+
'knowledgebases.create': 'Required body fields: name, summary. Optional: description, url, start_date, end_date.',
|
|
229
|
+
'knowledgebases.get': 'Path parameter is "knowledge_base_id" (with underscores, not "knowledgebase_id").',
|
|
230
|
+
'knowledgebases.update': [
|
|
231
|
+
'Path parameter is "knowledge_base_id" (with underscores).',
|
|
232
|
+
'Currently only accepts "status" field in body ("active" or "archived"). Other fields like name or summary will fail Zod validation.',
|
|
233
|
+
].join('\n'),
|
|
234
|
+
'knowledgebases.delete': 'Path parameter is "knowledge_base_id" (with underscores, not "knowledgebase_id").',
|
|
235
|
+
// ── observations ─────────────────────────────────────────
|
|
236
|
+
'observations.update': '⚠️ Known backend bug — API returns 500 on update. Workaround: create a new observation + delete the old one.',
|
|
237
|
+
// ── features ─────────────────────────────────────────────
|
|
238
|
+
'features.create': [
|
|
239
|
+
'Only works in fullstack project types. Returns 422 for web/standard projects.',
|
|
240
|
+
'Required body fields: name, key, variables (array).',
|
|
241
|
+
'Variable type enum: "boolean", "string", "integer", "json". default_value must match the type (e.g., true for boolean, not "true").',
|
|
242
|
+
'Minimal example: { "body": { "name": "Dark Mode", "key": "dark_mode", "variables": [{ "key": "enabled", "type": "boolean", "default_value": false }] } }',
|
|
243
|
+
].join('\n'),
|
|
244
|
+
'features.get_by_key': 'Path parameter is "feature_key" (not "key"). Pass in path: { "feature_key": "abc123" }.',
|
|
245
|
+
// ── sections ─────────────────────────────────────────────
|
|
246
|
+
'sections.list': 'Requires "experience_id" in path — sections are experience-scoped, not project-scoped.',
|
|
247
|
+
'sections.create': [
|
|
248
|
+
'Requires "experience_id" in path — sections are experience-scoped.',
|
|
249
|
+
'Only works for MVT (multivariate) experiences. Returns 403 for A/B and other types.',
|
|
250
|
+
'Required body field: "versions" array with at least one version object.',
|
|
251
|
+
'Minimal example: { "body": { "name": "New Section", "versions": [{ "name": "Original", "url": "https://example.com" }] } }',
|
|
252
|
+
].join('\n'),
|
|
253
|
+
'sections.update': [
|
|
254
|
+
'Requires "experience_id" and "section_id" in path — sections are experience-scoped.',
|
|
255
|
+
'Required body field: "versions" array (same format as sections.create).',
|
|
256
|
+
'Example: { "body": { "name": "Updated Section", "versions": [{ "name": "V1", "url": "https://example.com" }] } }',
|
|
257
|
+
].join('\n'),
|
|
258
|
+
// ── goals ────────────────────────────────────────────────
|
|
259
|
+
'goals.get_by_key': 'Path parameter is "goal_key" (not "key"). Pass in path: { "goal_key": "abc123" }.',
|
|
260
|
+
'goals.create': [
|
|
261
|
+
'Type enum: "visits_page", "clicks_link", "submits_form", "revenue", "engagement", "scrolls_to", "custom_js".',
|
|
262
|
+
'For page-visit goals, include "urls" array with objects: { "match_type": "contains"|"equals"|"regex", "value": "https://..." }.',
|
|
263
|
+
].join('\n'),
|
|
264
|
+
// ── accounts ─────────────────────────────────────────────
|
|
265
|
+
'accounts.list_sdk_keys': 'Requires "project_id" in path even though it\'s under the accounts namespace.',
|
|
266
|
+
'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.',
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Walk a JSON Schema tree and extract all enum fields with their paths
|
|
270
|
+
* and required fields. Handles allOf/oneOf/anyOf composition.
|
|
271
|
+
* Used to surface schema constraints that LLMs can't parse from raw JSON Schema.
|
|
272
|
+
*/
|
|
273
|
+
function extractBodyHints(inputSchema) {
|
|
274
|
+
const rbSchema = inputSchema?.properties?.requestBody;
|
|
275
|
+
if (!rbSchema)
|
|
276
|
+
return null;
|
|
277
|
+
const visited = new WeakSet();
|
|
278
|
+
const enumMap = new Map();
|
|
279
|
+
const requiredAtLevel = new Map();
|
|
280
|
+
function walk(schema, path) {
|
|
281
|
+
if (!schema || typeof schema !== 'object')
|
|
282
|
+
return;
|
|
283
|
+
if (visited.has(schema))
|
|
284
|
+
return;
|
|
285
|
+
visited.add(schema);
|
|
286
|
+
// Collect enum values
|
|
287
|
+
if (Array.isArray(schema.enum)) {
|
|
288
|
+
const vals = schema.enum.filter((v) => typeof v === 'string' || typeof v === 'number');
|
|
289
|
+
if (vals.length > 0 && path) {
|
|
290
|
+
const existing = enumMap.get(path) || new Set();
|
|
291
|
+
vals.forEach((v) => existing.add(String(v)));
|
|
292
|
+
enumMap.set(path, existing);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Collect required fields
|
|
296
|
+
if (Array.isArray(schema.required) && schema.required.length > 0) {
|
|
297
|
+
const level = path || '(root)';
|
|
298
|
+
const existing = requiredAtLevel.get(level) || new Set();
|
|
299
|
+
schema.required.forEach((r) => existing.add(r));
|
|
300
|
+
requiredAtLevel.set(level, existing);
|
|
301
|
+
}
|
|
302
|
+
// Walk properties
|
|
303
|
+
if (schema.properties && typeof schema.properties === 'object') {
|
|
304
|
+
for (const [key, value] of Object.entries(schema.properties)) {
|
|
305
|
+
const prop = value;
|
|
306
|
+
if (prop.readOnly)
|
|
307
|
+
continue; // skip auto-generated IDs
|
|
308
|
+
walk(prop, path ? `${path}.${key}` : key);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Walk array items
|
|
312
|
+
if (schema.items) {
|
|
313
|
+
walk(schema.items, `${path}[]`);
|
|
314
|
+
}
|
|
315
|
+
// Walk composition keywords
|
|
316
|
+
for (const kw of ['allOf', 'oneOf', 'anyOf']) {
|
|
317
|
+
if (Array.isArray(schema[kw])) {
|
|
318
|
+
for (const sub of schema[kw]) {
|
|
319
|
+
walk(sub, path);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
walk(rbSchema, '');
|
|
325
|
+
const lines = [];
|
|
326
|
+
// Show enum fields with valid values (sorted by path depth, shallow first)
|
|
327
|
+
const enumEntries = [...enumMap.entries()]
|
|
328
|
+
.sort((a, b) => a[0].split('.').length - b[0].split('.').length);
|
|
329
|
+
for (const [field, values] of enumEntries) {
|
|
330
|
+
const valArr = [...values];
|
|
331
|
+
if (valArr.length > 12) {
|
|
332
|
+
lines.push(` ${field}: ${valArr.slice(0, 10).map(v => `"${v}"`).join(', ')}, ... (${valArr.length} values)`);
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
lines.push(` ${field}: ${valArr.map(v => `"${v}"`).join(', ')}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Show required fields per level
|
|
339
|
+
for (const [level, fields] of requiredAtLevel) {
|
|
340
|
+
const fieldArr = [...fields].filter(f => f !== 'id'); // skip auto-assigned ids
|
|
341
|
+
if (fieldArr.length === 0)
|
|
342
|
+
continue;
|
|
343
|
+
if (level === '(root)') {
|
|
344
|
+
lines.push(` Required: ${fieldArr.join(', ')}`);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
lines.push(` Required in ${level}: ${fieldArr.join(', ')}`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return lines.length > 0 ? lines.join('\n') : null;
|
|
351
|
+
}
|
|
124
352
|
function actionsForToolset(namespace, toolSet) {
|
|
125
353
|
const all = Object.entries(REGISTRY[namespace] || {});
|
|
126
354
|
if (toolSet === 'all')
|
|
@@ -128,11 +356,35 @@ function actionsForToolset(namespace, toolSet) {
|
|
|
128
356
|
// reporting/readOnly: include only underlying tools that start with 'get'
|
|
129
357
|
return all.filter(([, tool]) => tool.startsWith('get')).map(([a]) => a);
|
|
130
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* Compute MCP tool annotations from the filtered action set.
|
|
361
|
+
* Annotations reflect the worst-case capability of the exposed actions:
|
|
362
|
+
* - readOnlyHint: true only when ALL actions are reads
|
|
363
|
+
* - destructiveHint: true when ANY action is a delete
|
|
364
|
+
* - idempotentHint: true only when ALL actions are reads (GETs are idempotent)
|
|
365
|
+
* - openWorldHint: false — all tools affect bounded Convert API resources
|
|
366
|
+
*/
|
|
367
|
+
function annotationsForNamespace(ns, actions) {
|
|
368
|
+
const hasWriteAction = actions.some((a) => {
|
|
369
|
+
const toolName = REGISTRY[ns]?.[a];
|
|
370
|
+
return toolName && !toolName.startsWith('get');
|
|
371
|
+
});
|
|
372
|
+
const hasDeleteAction = actions.includes('delete');
|
|
373
|
+
return {
|
|
374
|
+
title: NAMESPACE_TITLES[ns] ?? ns,
|
|
375
|
+
readOnlyHint: !hasWriteAction,
|
|
376
|
+
destructiveHint: hasWriteAction && hasDeleteAction,
|
|
377
|
+
idempotentHint: !hasWriteAction,
|
|
378
|
+
openWorldHint: false,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
131
381
|
export function getNamespacedTools(toolSet) {
|
|
132
382
|
return Object.keys(REGISTRY).map((ns) => {
|
|
133
383
|
const actions = actionsForToolset(ns, toolSet);
|
|
134
|
-
|
|
135
|
-
|
|
384
|
+
// Build rich namespace description from curated map or fallback
|
|
385
|
+
const nsDesc = NAMESPACE_DESCRIPTIONS[ns] || `Manage ${ns} in the user's Convert.com account via the live API.`;
|
|
386
|
+
const description = `${nsDesc} Available actions: ${actions.join(', ')}.`;
|
|
387
|
+
// Build structured metadata for each action, merging ACTION_NOTES
|
|
136
388
|
const actionMetadata = actions.map((action) => {
|
|
137
389
|
const toolName = REGISTRY[ns][action];
|
|
138
390
|
const def = toolDefinitionMap.get(toolName);
|
|
@@ -145,22 +397,37 @@ export function getNamespacedTools(toolSet) {
|
|
|
145
397
|
.filter((p) => p.in === 'query')
|
|
146
398
|
.map((p) => p.name);
|
|
147
399
|
const hasBody = !!def.requestBodyContentType;
|
|
400
|
+
const baseDesc = def.description || 'No description';
|
|
401
|
+
const note = ACTION_NOTES[`${ns}.${action}`];
|
|
402
|
+
const bodyHints = hasBody ? extractBodyHints(def.inputSchema) : null;
|
|
403
|
+
const parts = [baseDesc];
|
|
404
|
+
if (note)
|
|
405
|
+
parts.push(`Agent Notes:\n${note}`);
|
|
406
|
+
if (bodyHints)
|
|
407
|
+
parts.push(`Body schema:\n${bodyHints}`);
|
|
408
|
+
const fullDesc = parts.join('\n\n');
|
|
148
409
|
return {
|
|
149
410
|
action,
|
|
150
|
-
description:
|
|
411
|
+
description: fullDesc,
|
|
151
412
|
method: def.method.toUpperCase(),
|
|
152
413
|
path_parameters: pathParams,
|
|
153
414
|
query_parameters: queryParams,
|
|
154
415
|
accepts_body: hasBody,
|
|
155
416
|
};
|
|
156
417
|
});
|
|
418
|
+
// Hint in action description when notes are available
|
|
419
|
+
const actionsWithNotes = actions.filter(a => ACTION_NOTES[`${ns}.${a}`]);
|
|
420
|
+
const actionDesc = actionsWithNotes.length
|
|
421
|
+
? 'Action to perform. See _meta.available_actions for detailed per-action guidance.'
|
|
422
|
+
: 'Action to perform';
|
|
157
423
|
return {
|
|
158
424
|
name: ns,
|
|
425
|
+
title: NAMESPACE_TITLES[ns] ?? ns,
|
|
159
426
|
description,
|
|
160
427
|
inputSchema: {
|
|
161
428
|
type: 'object',
|
|
162
429
|
properties: {
|
|
163
|
-
action: { type: 'string', enum: actions, description:
|
|
430
|
+
action: { type: 'string', enum: actions, description: actionDesc },
|
|
164
431
|
path: { type: 'object', additionalProperties: true, description: 'Path params: e.g., account_id, project_id, experience_id' },
|
|
165
432
|
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
433
|
body: { type: 'object', additionalProperties: true, description: 'Request body (for create/update/clone, etc.)' },
|
|
@@ -171,6 +438,7 @@ export function getNamespacedTools(toolSet) {
|
|
|
171
438
|
available_actions: actionMetadata,
|
|
172
439
|
},
|
|
173
440
|
},
|
|
441
|
+
annotations: annotationsForNamespace(ns, actions),
|
|
174
442
|
};
|
|
175
443
|
});
|
|
176
444
|
}
|
|
@@ -178,20 +446,16 @@ export async function executeNamespacedTool(namespace, args) {
|
|
|
178
446
|
if (!REGISTRY[namespace]) {
|
|
179
447
|
const error = { error: 'UnknownNamespace', namespace, available_namespaces: Object.keys(REGISTRY) };
|
|
180
448
|
return {
|
|
181
|
-
content: [
|
|
182
|
-
|
|
183
|
-
{ type: 'text', text: JSON.stringify(error, null, 2) }
|
|
184
|
-
],
|
|
449
|
+
content: [{ type: 'text', text: `Unknown namespace: ${namespace}` }],
|
|
450
|
+
structuredContent: error,
|
|
185
451
|
isError: true,
|
|
186
452
|
};
|
|
187
453
|
}
|
|
188
454
|
if (!args || typeof args !== 'object') {
|
|
189
455
|
const error = { error: 'InvalidArguments', message: 'Expected object with fields: action, path, query, body' };
|
|
190
456
|
return {
|
|
191
|
-
content: [
|
|
192
|
-
|
|
193
|
-
{ type: 'text', text: JSON.stringify(error, null, 2) }
|
|
194
|
-
],
|
|
457
|
+
content: [{ type: 'text', text: `Invalid arguments. Expected object with fields: action, path, query, body.` }],
|
|
458
|
+
structuredContent: error,
|
|
195
459
|
isError: true,
|
|
196
460
|
};
|
|
197
461
|
}
|
|
@@ -199,10 +463,8 @@ export async function executeNamespacedTool(namespace, args) {
|
|
|
199
463
|
if (!action || typeof action !== 'string') {
|
|
200
464
|
const error = { error: 'MissingAction', message: 'The action field is required and must be a string' };
|
|
201
465
|
return {
|
|
202
|
-
content: [
|
|
203
|
-
|
|
204
|
-
{ type: 'text', text: JSON.stringify(error, null, 2) }
|
|
205
|
-
],
|
|
466
|
+
content: [{ type: 'text', text: `Missing or invalid 'action'.` }],
|
|
467
|
+
structuredContent: error,
|
|
206
468
|
isError: true,
|
|
207
469
|
};
|
|
208
470
|
}
|
|
@@ -211,10 +473,8 @@ export async function executeNamespacedTool(namespace, args) {
|
|
|
211
473
|
const available = Object.keys(REGISTRY[namespace]);
|
|
212
474
|
const error = { error: 'UnknownAction', namespace, action, available_actions: available };
|
|
213
475
|
return {
|
|
214
|
-
content: [
|
|
215
|
-
|
|
216
|
-
{ type: 'text', text: JSON.stringify(error, null, 2) }
|
|
217
|
-
],
|
|
476
|
+
content: [{ type: 'text', text: `Unknown action '${action}' for namespace '${namespace}'. Available: ${available.join(', ')}` }],
|
|
477
|
+
structuredContent: error,
|
|
218
478
|
isError: true,
|
|
219
479
|
};
|
|
220
480
|
}
|
|
@@ -222,10 +482,8 @@ export async function executeNamespacedTool(namespace, args) {
|
|
|
222
482
|
if (!def) {
|
|
223
483
|
const error = { error: 'InternalError', message: 'Delegate tool not found', delegate };
|
|
224
484
|
return {
|
|
225
|
-
content: [
|
|
226
|
-
|
|
227
|
-
{ type: 'text', text: JSON.stringify(error, null, 2) }
|
|
228
|
-
],
|
|
485
|
+
content: [{ type: 'text', text: `Internal error: delegate tool not found: ${delegate}` }],
|
|
486
|
+
structuredContent: error,
|
|
229
487
|
isError: true,
|
|
230
488
|
};
|
|
231
489
|
}
|
|
@@ -233,12 +491,12 @@ export async function executeNamespacedTool(namespace, args) {
|
|
|
233
491
|
const requiredPathParams = (def.executionParameters || []).filter((p) => p.in === 'path').map((p) => p.name);
|
|
234
492
|
const missing = requiredPathParams.filter((k) => !(k in path));
|
|
235
493
|
if (missing.length) {
|
|
494
|
+
const note = ACTION_NOTES[`${namespace}.${action}`];
|
|
495
|
+
const hint = note ? `\n\nHint for ${namespace}.${action}:\n${note}` : '';
|
|
236
496
|
const error = { error: 'MissingPathParameters', namespace, action, missing_parameters: missing };
|
|
237
497
|
return {
|
|
238
|
-
content: [
|
|
239
|
-
|
|
240
|
-
{ type: 'text', text: JSON.stringify(error, null, 2) }
|
|
241
|
-
],
|
|
498
|
+
content: [{ type: 'text', text: `Missing required path parameters: ${missing.map(k => `path.${k}`).join(', ')}${hint}` }],
|
|
499
|
+
structuredContent: error,
|
|
242
500
|
isError: true,
|
|
243
501
|
};
|
|
244
502
|
}
|
|
@@ -249,7 +507,15 @@ export async function executeNamespacedTool(namespace, args) {
|
|
|
249
507
|
else if (def.requestBodyContentType && typeof body === 'undefined') {
|
|
250
508
|
// Do not set requestBody; zod schema will enforce when required
|
|
251
509
|
}
|
|
252
|
-
|
|
510
|
+
const result = await executeToolByName(delegate, flattenedArgs);
|
|
511
|
+
// Append action-specific guidance to error messages so agents can self-correct
|
|
512
|
+
if (result.isError) {
|
|
513
|
+
const note = ACTION_NOTES[`${namespace}.${action}`];
|
|
514
|
+
if (note && result.content?.[0]?.type === 'text') {
|
|
515
|
+
result.content[0].text += `\n\nHint for ${namespace}.${action}:\n${note}`;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return result;
|
|
253
519
|
}
|
|
254
520
|
export function isNamespace(name) {
|
|
255
521
|
return Object.prototype.hasOwnProperty.call(REGISTRY, name);
|
package/build/namespaced.js.map
CHANGED
|
@@ -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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"}
|