owner-clone-ai-mcp 1.29.0 → 1.29.2
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/domains/knowledge.js +31 -9
- package/domains/skills.js +10 -5
- package/package.json +1 -1
package/domains/knowledge.js
CHANGED
|
@@ -17,7 +17,7 @@ const tools = [
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
name: 'list_knowledge_items',
|
|
20
|
-
description: 'Owner Clone AI
|
|
20
|
+
description: 'Owner Clone AIに登録されたナレッジの一覧を取得します。フォルダ・カテゴリ・日付範囲で絞り込み可能。「〇月〇日〜〇月〇日のメモ」のように日付で探す場合は created_after/created_before(作成日)または updated_after/updated_before(更新日)に YYYY-MM-DD を指定してください。',
|
|
21
21
|
annotations: { readOnlyHint: true },
|
|
22
22
|
inputSchema: {
|
|
23
23
|
type: 'object',
|
|
@@ -26,6 +26,10 @@ const tools = [
|
|
|
26
26
|
category: { type: 'string', description: 'カテゴリで絞り込み(省略可)' },
|
|
27
27
|
limit: { type: 'number', description: '取得件数(デフォルト: 50)' },
|
|
28
28
|
offset: { type: 'number', description: 'オフセット(デフォルト: 0)' },
|
|
29
|
+
created_after: { type: 'string', description: '作成日がこの日付以降(YYYY-MM-DD)。例: "2026-06-01"' },
|
|
30
|
+
created_before: { type: 'string', description: '作成日がこの日付以前(YYYY-MM-DD)。指定日の終日まで含む' },
|
|
31
|
+
updated_after: { type: 'string', description: '更新日がこの日付以降(YYYY-MM-DD)' },
|
|
32
|
+
updated_before: { type: 'string', description: '更新日がこの日付以前(YYYY-MM-DD)。指定日の終日まで含む' },
|
|
29
33
|
},
|
|
30
34
|
},
|
|
31
35
|
},
|
|
@@ -94,20 +98,22 @@ const tools = [
|
|
|
94
98
|
},
|
|
95
99
|
{
|
|
96
100
|
name: 'create_knowledge_folder',
|
|
97
|
-
description: '
|
|
101
|
+
description: 'ナレッジフォルダを新規作成します。parent_folder_id を指定すると既存フォルダの中にサブフォルダ(入れ子)を作成できます。「Aフォルダの中にBフォルダを作る」場合は AのフォルダID を parent_folder_id に渡してください。【書き込み権限付きキーが必要】',
|
|
98
102
|
annotations: { destructiveHint: false, idempotentHint: false },
|
|
99
103
|
inputSchema: {
|
|
100
104
|
type: 'object',
|
|
101
105
|
properties: {
|
|
102
106
|
name: { type: 'string', description: 'フォルダ名' },
|
|
103
107
|
color: { type: 'string', description: 'フォルダカラー(例: #6366f1)省略可' },
|
|
108
|
+
parent_folder_id: { type: 'string', description: '親フォルダのID(UUID)。指定するとその中にサブフォルダとして作成。list_knowledge_foldersでID確認。省略時はトップレベル' },
|
|
109
|
+
description: { type: 'string', description: 'フォルダの説明(任意)' },
|
|
104
110
|
},
|
|
105
111
|
required: ['name'],
|
|
106
112
|
},
|
|
107
113
|
},
|
|
108
114
|
{
|
|
109
115
|
name: 'update_knowledge_folder',
|
|
110
|
-
description: '
|
|
116
|
+
description: 'ナレッジフォルダの名前・カラー・説明・親フォルダを変更します。parent_folder_id を変えると別フォルダの中へ移動(サブフォルダ化)でき、null/空文字でトップレベルへ戻せます。【書き込み権限付きキーが必要】',
|
|
111
117
|
annotations: { destructiveHint: false, idempotentHint: true },
|
|
112
118
|
inputSchema: {
|
|
113
119
|
type: 'object',
|
|
@@ -116,6 +122,7 @@ const tools = [
|
|
|
116
122
|
name: { type: 'string', description: '新しいフォルダ名(省略時は変更なし)' },
|
|
117
123
|
color: { type: 'string', description: '新しいカラー(省略時は変更なし)' },
|
|
118
124
|
description: { type: 'string', description: 'フォルダの説明(省略時は変更なし)' },
|
|
125
|
+
parent_folder_id: { type: 'string', description: '移動先の親フォルダID(UUID)。サブフォルダ化する。トップレベルへ戻すには空文字または "null" を指定(省略時は変更なし)' },
|
|
119
126
|
},
|
|
120
127
|
required: ['id'],
|
|
121
128
|
},
|
|
@@ -268,23 +275,33 @@ const handlers = {
|
|
|
268
275
|
if (args.category) params.set('category', args.category);
|
|
269
276
|
if (args.limit) params.set('limit', String(args.limit));
|
|
270
277
|
if (args.offset) params.set('offset', String(args.offset));
|
|
278
|
+
if (args.created_after) params.set('created_after', args.created_after);
|
|
279
|
+
if (args.created_before) params.set('created_before', args.created_before);
|
|
280
|
+
if (args.updated_after) params.set('updated_after', args.updated_after);
|
|
281
|
+
if (args.updated_before) params.set('updated_before', args.updated_before);
|
|
271
282
|
const data = await callApi(`/knowledge?${params}`);
|
|
272
283
|
if (!data.items || data.items.length === 0) return 'ナレッジが登録されていません。';
|
|
273
284
|
const lines = data.items.map(item =>
|
|
274
|
-
`- [${item.id}] ${item.title} (${item.category || 'その他'}) 更新: ${item.updated_at?.slice(0, 10)}\n ${item.preview || ''}`
|
|
285
|
+
`- [${item.id}] ${item.title} (${item.category || 'その他'}) 作成: ${item.created_at?.slice(0, 10)} / 更新: ${item.updated_at?.slice(0, 10)}\n ${item.preview || ''}`
|
|
275
286
|
);
|
|
276
287
|
return `ナレッジ一覧(${data.items.length}件):\n\n${lines.join('\n')}`;
|
|
277
288
|
},
|
|
278
289
|
|
|
279
290
|
async get_knowledge_item(args) {
|
|
280
291
|
const data = await callApi(`/knowledge/${args.id}`);
|
|
281
|
-
|
|
292
|
+
const tagLine = data.tags?.length ? `\nタグ: ${data.tags.join(', ')}` : '\nタグ: なし';
|
|
293
|
+
const folderLine = data.folder_id ? `\nフォルダID: ${data.folder_id}` : '\nフォルダ: 未分類';
|
|
294
|
+
return `タイトル: ${data.title}\nカテゴリ: ${data.category || 'その他'}${tagLine}${folderLine}\n作成日: ${data.created_at?.slice(0, 10)} / 更新日: ${data.updated_at?.slice(0, 10)}\n\n--- 内容 ---\n${data.text_content}`;
|
|
282
295
|
},
|
|
283
296
|
|
|
284
297
|
async list_knowledge_folders(args) {
|
|
285
298
|
const data = await callApi('/knowledge-folders');
|
|
286
299
|
if (!data.folders || data.folders.length === 0) return 'フォルダが作成されていません。';
|
|
287
|
-
const
|
|
300
|
+
const nameById = Object.fromEntries(data.folders.map(f => [f.id, f.name]));
|
|
301
|
+
const lines = data.folders.map(f => {
|
|
302
|
+
const parent = f.parent_folder_id ? `\n 親フォルダ: ${nameById[f.parent_folder_id] || '?'}(ID: ${f.parent_folder_id})` : '';
|
|
303
|
+
return `- [${f.id}] ${f.name}${parent}${f.description ? `\n 説明: ${f.description}` : ''}`;
|
|
304
|
+
});
|
|
288
305
|
return `フォルダ一覧(${data.folders.length}件):\n\n${lines.join('\n')}`;
|
|
289
306
|
},
|
|
290
307
|
|
|
@@ -321,9 +338,13 @@ const handlers = {
|
|
|
321
338
|
async create_knowledge_folder(args) {
|
|
322
339
|
const data = await callApi('/knowledge-folders', {
|
|
323
340
|
method: 'POST',
|
|
324
|
-
body: JSON.stringify({
|
|
341
|
+
body: JSON.stringify({
|
|
342
|
+
name: args.name, color: args.color,
|
|
343
|
+
...(args.parent_folder_id !== undefined ? { parent_folder_id: args.parent_folder_id } : {}),
|
|
344
|
+
...(args.description !== undefined ? { description: args.description } : {}),
|
|
345
|
+
}),
|
|
325
346
|
});
|
|
326
|
-
return `✅ ${data.message}\nID: ${data.id}\nフォルダ名: ${data.name}`;
|
|
347
|
+
return `✅ ${data.message}\nID: ${data.id}\nフォルダ名: ${data.name}${data.parent_folder_id ? `\n親フォルダID: ${data.parent_folder_id}` : ''}`;
|
|
327
348
|
},
|
|
328
349
|
|
|
329
350
|
async update_knowledge_folder(args) {
|
|
@@ -332,9 +353,10 @@ const handlers = {
|
|
|
332
353
|
body: JSON.stringify({
|
|
333
354
|
name: args.name, color: args.color,
|
|
334
355
|
...(args.description !== undefined ? { description: args.description } : {}),
|
|
356
|
+
...(args.parent_folder_id !== undefined ? { parent_folder_id: args.parent_folder_id } : {}),
|
|
335
357
|
}),
|
|
336
358
|
});
|
|
337
|
-
return `✅ ${data.message}\nID: ${data.id}\nフォルダ名: ${data.name}${data.description ? `\n説明: ${data.description}` : ''}`;
|
|
359
|
+
return `✅ ${data.message}\nID: ${data.id}\nフォルダ名: ${data.name}${data.description ? `\n説明: ${data.description}` : ''}${data.parent_folder_id ? `\n親フォルダID: ${data.parent_folder_id}` : ''}`;
|
|
338
360
|
},
|
|
339
361
|
|
|
340
362
|
async reorder_knowledge_folders(args) {
|
package/domains/skills.js
CHANGED
|
@@ -44,7 +44,8 @@ const tools = [
|
|
|
44
44
|
- agent_preset_ids(空=全AIパートナーが候補): 使ってよいAIパートナーIDの候補プール。
|
|
45
45
|
実行AIが各ステップで最適なものを load_agent で自動選択し人格を切替えて使う(該当なしのステップは使わない)。
|
|
46
46
|
- knowledge_folder_ids / knowledge_item_ids(空=全ナレッジ対象): 参照範囲のヒント。
|
|
47
|
-
- ref_skill_ids(空=全スキルが候補): 実行AIが活用してよいスキルの候補(UUID
|
|
47
|
+
- ref_skill_ids(空=全スキルが候補): 実行AIが活用してよいスキルの候補(UUID・個別指定)。
|
|
48
|
+
- ref_skill_folder_ids: スキルカテゴリ(skill_folders)単位での候補指定。配下の全スキルを候補に含める(ref_skill_idsと合算)。
|
|
48
49
|
- 出力: agent_goal は【必ずナレッジ保存】(成果物を create_knowledge)。output_knowledge_folder_id で保存先指定可。
|
|
49
50
|
- スコープはソフト制限(プロンプトで伝える指示・完全なブロックではない)。
|
|
50
51
|
- agent_goal は prepare_skill 専用(invoke_skill=サーバー実行は不可)。
|
|
@@ -148,7 +149,8 @@ allowed_plan_ids でプランを絞り込めます([] または省略 = 全プ
|
|
|
148
149
|
skill_type: { type: 'string', enum: ['standard', 'agent_goal'], description: 'スキル種別。standard=手順型(デフォルト)。agent_goal=ゴール型(自律エージェント)。agent_goalにすると goal が必須・prepare_skill専用(invoke_skill不可)になる' },
|
|
149
150
|
goal: { type: 'string', description: '【agent_goal時必須】達成すべきゴール本文。実行AIが分解・計画し、ナレッジ・AIパートナー・スキルを自分で使って達成する。例「{{product}}を売るセールスレターを作成しナレッジ保存」。{{param}}も使用可' },
|
|
150
151
|
agent_preset_ids: { type: 'array', items: { type: 'integer' }, description: '【agent_goal向け】使ってよいAIパートナーID(整数)の候補プール。空=全パートナーが候補。実行AIが各ステップで最適なものを load_agent で自動選択・切替して使う。list_agent_presetsで確認' },
|
|
151
|
-
ref_skill_ids: { type: 'array', items: { type: 'string' }, description: '【agent_goal向け】実行AIが活用してよいスキルの候補ID(UUID
|
|
152
|
+
ref_skill_ids: { type: 'array', items: { type: 'string' }, description: '【agent_goal向け】実行AIが活用してよいスキルの候補ID(UUID・個別指定)。空=全スキルが候補。list_skillsで確認。ref_skill_folder_idsと併用可(合算)' },
|
|
153
|
+
ref_skill_folder_ids: { type: 'array', items: { type: 'string' }, description: '【agent_goal向け】スキルカテゴリ(skill_folders)ID(UUID)。配下の全スキルを候補に含める。list_skill_foldersで確認。ref_skill_idsとの合算で候補が決まる。空=カテゴリ指定なし' },
|
|
152
154
|
knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '参照するナレッジのID一覧(UUID文字列。list_knowledge_itemsで確認)。standard=実行時に動的取得。agent_goal=参照範囲ヒント(空=全ナレッジ対象)' },
|
|
153
155
|
knowledge_folder_ids: { type: 'array', items: { type: 'string' }, description: '参照するナレッジフォルダID一覧(UUID文字列。list_knowledge_foldersで確認)。standard=フォルダ内ナレッジを実行時に動的取得。agent_goal=参照範囲ヒント(空=全ナレッジ対象)' },
|
|
154
156
|
preset_id: { type: 'integer', description: 'AIパートナーのID(整数。list_agent_presetsで返されるidをそのまま渡す)。指定するとそのAIパートナーのシステムプロンプト・ナレッジ検索モードが使われる。省略時はユーザーのClaude APIキーで実行(未設定の場合エラー)。※agent_goalでは agent_preset_ids(複数)を使う' },
|
|
@@ -201,7 +203,8 @@ is_admin_published / allowed_plan_ids はAdmin権限がある場合のみ反映
|
|
|
201
203
|
skill_type: { type: 'string', enum: ['standard', 'agent_goal'], description: 'スキル種別。standard=手順型、agent_goal=ゴール型(自律エージェント)。agent_goalにする場合は goal を必ず設定。詳細はcreate_skill参照' },
|
|
202
204
|
goal: { type: 'string', description: '【agent_goal時必須】達成すべきゴール本文。実行AIが計画してナレッジ・AIパートナー・スキルを自分で使い達成する' },
|
|
203
205
|
agent_preset_ids: { type: 'array', items: { type: 'integer' }, description: '【agent_goal向け】使ってよいAIパートナーID(整数)の候補プール。空=全候補。各ステップで実行AIが load_agent で自動選択。配列全体を置き換える' },
|
|
204
|
-
ref_skill_ids: { type: 'array', items: { type: 'string' }, description: '【agent_goal向け】活用してよいスキルの候補ID(UUID
|
|
206
|
+
ref_skill_ids: { type: 'array', items: { type: 'string' }, description: '【agent_goal向け】活用してよいスキルの候補ID(UUID・個別指定)。空=全候補。配列全体を置き換える。ref_skill_folder_idsと併用可' },
|
|
207
|
+
ref_skill_folder_ids: { type: 'array', items: { type: 'string' }, description: '【agent_goal向け】スキルカテゴリ(skill_folders)ID(UUID)。配下の全スキルを候補に含める。list_skill_foldersで確認。配列全体を置き換える' },
|
|
205
208
|
},
|
|
206
209
|
required: ['id'],
|
|
207
210
|
},
|
|
@@ -407,7 +410,8 @@ const handlers = {
|
|
|
407
410
|
...(isGoal ? [
|
|
408
411
|
`ゴール: ${s.goal || '(未設定)'}`,
|
|
409
412
|
`AIパートナー候補(agent_preset_ids): ${(s.agent_preset_ids || []).length ? (s.agent_preset_ids || []).join(', ') : '空(全パートナーが候補・各ステップで自動選択)'}`,
|
|
410
|
-
`スキル候補(ref_skill_ids): ${(s.ref_skill_ids || []).length ? (s.ref_skill_ids || []).join(', ') : '
|
|
413
|
+
`スキル候補(個別 ref_skill_ids): ${(s.ref_skill_ids || []).length ? (s.ref_skill_ids || []).join(', ') : '空'}`,
|
|
414
|
+
`スキル候補(カテゴリ ref_skill_folder_ids): ${(s.ref_skill_folder_ids || []).length ? (s.ref_skill_folder_ids || []).join(', ') : '空'}${!(s.ref_skill_ids || []).length && !(s.ref_skill_folder_ids || []).length ? '(個別・カテゴリ共に空=全スキルが候補)' : ''}`,
|
|
411
415
|
] : [
|
|
412
416
|
`プロンプトテンプレート:\n${s.prompt_template || 'なし'}`,
|
|
413
417
|
]),
|
|
@@ -432,7 +436,7 @@ const handlers = {
|
|
|
432
436
|
knowledge_item_ids, knowledge_folder_ids, preset_id, workflow_id,
|
|
433
437
|
output_target, output_knowledge_folder_id, output_knowledge_category,
|
|
434
438
|
is_shared, category_id, is_admin_published, allowed_plan_ids,
|
|
435
|
-
skill_type, goal, agent_preset_ids, ref_skill_ids,
|
|
439
|
+
skill_type, goal, agent_preset_ids, ref_skill_ids, ref_skill_folder_ids,
|
|
436
440
|
} = args;
|
|
437
441
|
const isGoal = skill_type === 'agent_goal';
|
|
438
442
|
const data = await callApi('/skills', {
|
|
@@ -455,6 +459,7 @@ const handlers = {
|
|
|
455
459
|
goal: isGoal ? (goal || null) : null,
|
|
456
460
|
agent_preset_ids: agent_preset_ids || [],
|
|
457
461
|
ref_skill_ids: ref_skill_ids || [],
|
|
462
|
+
ref_skill_folder_ids: ref_skill_folder_ids || [],
|
|
458
463
|
}),
|
|
459
464
|
});
|
|
460
465
|
return [
|