owner-clone-ai-mcp 1.4.0 → 1.7.0
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/index.js +316 -54
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -150,39 +150,81 @@ const TOOLS = [
|
|
|
150
150
|
// AIパートナー書き込み(読み書き可能キーが必要)
|
|
151
151
|
{
|
|
152
152
|
name: 'create_agent_preset',
|
|
153
|
-
description:
|
|
153
|
+
description: `AIパートナー(エージェントプリセット)を新規作成します。【書き込み権限付きキーが必要】
|
|
154
|
+
|
|
155
|
+
■ 各フィールドの役割と動作:
|
|
156
|
+
• base_prompt(メインシステムプロンプト)
|
|
157
|
+
チャット・ワークフロー実行時に毎回AIに注入される人格定義。
|
|
158
|
+
「あなたは○○社の顧客サポート専門AIです。〜のトーンで回答してください」形式で記述。
|
|
159
|
+
ペルソナ・専門領域・回答スタイル・禁止事項・優先事項を含める。詳細なほど一貫した応答になる。
|
|
160
|
+
|
|
161
|
+
• rules_allow(許可ルール)
|
|
162
|
+
AIが明示的に行ってよいことを列挙。改行区切り箇条書き推奨。
|
|
163
|
+
例: "製品の価格・仕様を答える\n無料トライアルを案内する\n他社比較を客観的に説明する"
|
|
164
|
+
|
|
165
|
+
• rules_deny(禁止ルール)
|
|
166
|
+
AIが絶対に行ってはいけないことを列挙。改行区切り箇条書き推奨。
|
|
167
|
+
例: "個人情報・クレジットカード番号を収集しない\n根拠のない保証・約束をしない\n競合他社を誹謗中傷しない"
|
|
168
|
+
|
|
169
|
+
• sales_flow(対話フロー)
|
|
170
|
+
顧客との会話の進め方を段階的に定義。セールス・ヒアリング・サポートの流れをスクリプト形式で記述。
|
|
171
|
+
例: "Step1: まず課題をヒアリング → Step2: 該当製品を提案 → Step3: デモ・資料を案内 → Step4: 問い合わせへ誘導"
|
|
172
|
+
対話型サポートでない場合は省略可。
|
|
173
|
+
|
|
174
|
+
• knowledge(直接埋め込みナレッジ)
|
|
175
|
+
FAQ・製品仕様・会社概要など、毎回参照させたい短い情報を直接テキストで記述(推奨3000文字以内)。
|
|
176
|
+
ナレッジベース(knowledge_item_ids)と併用可。
|
|
177
|
+
|
|
178
|
+
• knowledge_item_ids(ナレッジベース連携)
|
|
179
|
+
list_knowledge_items で取得したIDを指定。ユーザーの質問に応じて動的に検索して参照する。
|
|
180
|
+
大量の情報がある場合はこちらを推奨。
|
|
181
|
+
|
|
182
|
+
■ ナレッジ検索モード(knowledge_item_ids 使用時のみ有効):
|
|
183
|
+
• knowledge_semantic_search=true(デフォルト): 質問に意味的に近いチャンクのみ返す。大量ナレッジ向け。精度高。
|
|
184
|
+
• knowledge_semantic_search=false: 紐づく全ナレッジを全文返す。小規模ナレッジや漏れなく参照したい場合向け。
|
|
185
|
+
• knowledge_smart_full_text=true: 意味スコアで関連ナレッジを選別→選んだものを全文返す。精度と網羅性のバランス型。
|
|
186
|
+
• knowledge_query_rewrite=true: ユーザーの質問をAIが最適化してから検索。曖昧・間接的な質問に強い。`,
|
|
154
187
|
annotations: { destructiveHint: false, idempotentHint: false },
|
|
155
188
|
inputSchema: {
|
|
156
189
|
type: 'object',
|
|
157
190
|
properties: {
|
|
158
|
-
name:
|
|
159
|
-
description:
|
|
160
|
-
base_prompt:
|
|
161
|
-
rules_allow:
|
|
162
|
-
rules_deny:
|
|
163
|
-
sales_flow:
|
|
164
|
-
knowledge:
|
|
165
|
-
knowledge_item_ids:
|
|
191
|
+
name: { type: 'string', description: 'AIパートナー名(例: 「ECサイト顧客サポートAI」)' },
|
|
192
|
+
description: { type: 'string', description: '用途・目的の説明(管理用メモ、省略可)' },
|
|
193
|
+
base_prompt: { type: 'string', description: 'メインシステムプロンプト。AIの人格・役割・回答スタイルを定義。チャット時に毎回注入される。' },
|
|
194
|
+
rules_allow: { type: 'string', description: '許可ルール。改行区切りで箇条書き推奨。AIが明示的に行ってよいこと。' },
|
|
195
|
+
rules_deny: { type: 'string', description: '禁止ルール。改行区切りで箇条書き推奨。AIが絶対に行ってはいけないこと。' },
|
|
196
|
+
sales_flow: { type: 'string', description: '対話フロー定義。Step形式で顧客との会話の進め方を記述。省略可。' },
|
|
197
|
+
knowledge: { type: 'string', description: 'FAQ・仕様・会社情報などを直接テキストで埋め込む(〜3000文字推奨)。省略可。' },
|
|
198
|
+
knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '紐づけるナレッジベースのIDリスト(list_knowledge_itemsで取得)。省略可。' },
|
|
199
|
+
knowledge_semantic_search: { type: 'boolean', description: 'true=意味的に関連するチャンクのみ取得(デフォルト・推奨), false=全ナレッジ全文取得(小規模向け)' },
|
|
200
|
+
knowledge_smart_full_text: { type: 'boolean', description: 'true=意味スコアで選別→全文取得(精度と網羅性のバランス型)。デフォルト: false' },
|
|
201
|
+
knowledge_query_rewrite: { type: 'boolean', description: 'true=ユーザー質問をAIが最適化してから検索(曖昧な質問に強い)。デフォルト: false' },
|
|
166
202
|
},
|
|
167
203
|
required: ['name'],
|
|
168
204
|
},
|
|
169
205
|
},
|
|
170
206
|
{
|
|
171
207
|
name: 'update_agent_preset',
|
|
172
|
-
description:
|
|
208
|
+
description: `既存のAIパートナーを更新します。【書き込み権限付きキーが必要】
|
|
209
|
+
システムプリセット(is_system=true)は編集不可。
|
|
210
|
+
指定したフィールドのみ更新され、省略したフィールドは現在値を維持します。
|
|
211
|
+
各フィールドの意味は create_agent_preset と同じです。`,
|
|
173
212
|
annotations: { destructiveHint: false, idempotentHint: true },
|
|
174
213
|
inputSchema: {
|
|
175
214
|
type: 'object',
|
|
176
215
|
properties: {
|
|
177
|
-
id:
|
|
178
|
-
name:
|
|
179
|
-
description:
|
|
180
|
-
base_prompt:
|
|
181
|
-
rules_allow:
|
|
182
|
-
rules_deny:
|
|
183
|
-
sales_flow:
|
|
184
|
-
knowledge:
|
|
185
|
-
knowledge_item_ids:
|
|
216
|
+
id: { type: 'string', description: '更新するAIパートナーのID(list_agent_presetsで確認)' },
|
|
217
|
+
name: { type: 'string', description: '新しい名前(省略時は変更なし)' },
|
|
218
|
+
description: { type: 'string', description: '新しい説明(省略時は変更なし)' },
|
|
219
|
+
base_prompt: { type: 'string', description: '新しいシステムプロンプト(省略時は変更なし)' },
|
|
220
|
+
rules_allow: { type: 'string', description: '新しい許可ルール・改行区切り(省略時は変更なし)' },
|
|
221
|
+
rules_deny: { type: 'string', description: '新しい禁止ルール・改行区切り(省略時は変更なし)' },
|
|
222
|
+
sales_flow: { type: 'string', description: '新しい対話フロー(省略時は変更なし)' },
|
|
223
|
+
knowledge: { type: 'string', description: '新しい直接記述ナレッジ(省略時は変更なし)' },
|
|
224
|
+
knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '新しいナレッジIDリスト(省略時は変更なし)' },
|
|
225
|
+
knowledge_semantic_search: { type: 'boolean', description: 'ナレッジ検索モード変更(省略時は変更なし)' },
|
|
226
|
+
knowledge_smart_full_text: { type: 'boolean', description: 'スマート全文取得モード変更(省略時は変更なし)' },
|
|
227
|
+
knowledge_query_rewrite: { type: 'boolean', description: 'クエリ最適化モード変更(省略時は変更なし)' },
|
|
186
228
|
},
|
|
187
229
|
required: ['id'],
|
|
188
230
|
},
|
|
@@ -324,16 +366,71 @@ const TOOLS = [
|
|
|
324
366
|
// ワークフロー書き込み(読み書き可能キーが必要)
|
|
325
367
|
{
|
|
326
368
|
name: 'create_workflow',
|
|
327
|
-
description:
|
|
369
|
+
description: `自動化ワークフローを新規作成します。【書き込み権限付きキーが必要】
|
|
370
|
+
ワークフローは「AI推論ステップ」と「アクションステップ」を順番に配列で定義します。
|
|
371
|
+
前ステップの出力が次ステップに自動で引き継がれます。
|
|
372
|
+
|
|
373
|
+
■ ステップの種類と必須フィールド:
|
|
374
|
+
|
|
375
|
+
【agent_task — AI推論ステップ】
|
|
376
|
+
{
|
|
377
|
+
"type": "agent_task",
|
|
378
|
+
"label": "ステップ名(例: 問い合わせ内容を要約)",
|
|
379
|
+
"prompt": "このステップでAIに何をさせるか。前ステップの出力を参照する場合はそのまま書けばOK。",
|
|
380
|
+
"preset_id": "AIパートナーID(省略可)— list_agent_presets で確認",
|
|
381
|
+
"system_prompt": "preset_idなしの場合のインラインプロンプト(省略可)",
|
|
382
|
+
"knowledge_ids": ["ナレッジID", ...](省略可)— list_knowledge_items で確認
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
【action — アクションステップ】
|
|
386
|
+
action_type に応じて必要フィールドが異なる:
|
|
387
|
+
|
|
388
|
+
▸ send_chatwork(ChatWorkにメッセージ送信)
|
|
389
|
+
{ "type": "action", "label": "担当者へ通知", "action_type": "send_chatwork",
|
|
390
|
+
"chatwork_setting_id": "ChatWork設定ID" }
|
|
391
|
+
|
|
392
|
+
▸ approval(承認タスクを作成してワークフローを一時停止)
|
|
393
|
+
{ "type": "action", "label": "上長承認", "action_type": "approval",
|
|
394
|
+
"action_message": "承認依頼メッセージ",
|
|
395
|
+
"notify_chatwork": true, "chatwork_setting_id": "ChatWork設定ID" }
|
|
396
|
+
|
|
397
|
+
▸ send_email(メール送信)
|
|
398
|
+
{ "type": "action", "label": "顧客へ返信", "action_type": "send_email",
|
|
399
|
+
"email_setting_id": "メール設定ID",
|
|
400
|
+
"to_email": "宛先(省略時はcheck_emailステップの送信者へ)",
|
|
401
|
+
"subject": "件名(省略時はRe: 元件名)" }
|
|
402
|
+
|
|
403
|
+
▸ check_email(メール受信確認 → 本文を次ステップへ渡す)
|
|
404
|
+
{ "type": "action", "label": "受信メール取得", "action_type": "check_email",
|
|
405
|
+
"email_setting_id": "メール設定ID" }
|
|
406
|
+
|
|
407
|
+
▸ google_sheets_write(スプレッドシートに書き込み)
|
|
408
|
+
{ "type": "action", "label": "スプレッドシートに保存", "action_type": "google_sheets_write",
|
|
409
|
+
"spreadsheet_id": "スプレッドシートID", "sheet_range": "Sheet1!A:A" }
|
|
410
|
+
|
|
411
|
+
■ 典型的なワークフロー構成例:
|
|
412
|
+
|
|
413
|
+
【問い合わせ自動返信】
|
|
414
|
+
check_email → agent_task(要約・返信文生成) → send_email
|
|
415
|
+
|
|
416
|
+
【レポート作成→承認→ChatWork通知】
|
|
417
|
+
agent_task(レポート生成) → approval(上長確認) → send_chatwork(通知)
|
|
418
|
+
|
|
419
|
+
【定期レポート】
|
|
420
|
+
agent_task(データ分析) → agent_task(レポート文生成) → send_chatwork
|
|
421
|
+
|
|
422
|
+
■ 注意:
|
|
423
|
+
- chatwork_setting_id / email_setting_id は管理画面「設定 → 外部連携」で確認
|
|
424
|
+
- approval ステップはワークフローを一時停止し、タスクリストから承認操作が必要`,
|
|
328
425
|
annotations: { destructiveHint: false, idempotentHint: false },
|
|
329
426
|
inputSchema: {
|
|
330
427
|
type: 'object',
|
|
331
428
|
properties: {
|
|
332
|
-
title: { type: 'string', description: '
|
|
333
|
-
description: { type: 'string', description: '
|
|
429
|
+
title: { type: 'string', description: 'ワークフロー名(例: 「問い合わせ自動返信」)' },
|
|
430
|
+
description: { type: 'string', description: 'ワークフローの説明(省略可)' },
|
|
334
431
|
steps: {
|
|
335
432
|
type: 'array',
|
|
336
|
-
description: '
|
|
433
|
+
description: 'ステップ配列。agent_task と action を交互に組み合わせる。前ステップ出力が自動で次に引き継がれる。',
|
|
337
434
|
items: { type: 'object' },
|
|
338
435
|
},
|
|
339
436
|
},
|
|
@@ -342,16 +439,19 @@ const TOOLS = [
|
|
|
342
439
|
},
|
|
343
440
|
{
|
|
344
441
|
name: 'update_workflow',
|
|
345
|
-
description:
|
|
442
|
+
description: `既存のワークフローを更新します。【書き込み権限付きキーが必要】
|
|
443
|
+
指定したフィールドのみ更新され、省略したフィールドは現在値を維持します。
|
|
444
|
+
steps を渡すと全ステップが置き換わります(差分更新ではなく全置換)。
|
|
445
|
+
各ステップの形式は create_workflow と同じです。`,
|
|
346
446
|
annotations: { destructiveHint: false, idempotentHint: true },
|
|
347
447
|
inputSchema: {
|
|
348
448
|
type: 'object',
|
|
349
449
|
properties: {
|
|
350
|
-
id: { type: 'string', description: 'ワークフローID' },
|
|
450
|
+
id: { type: 'string', description: 'ワークフローID(list_workflowsで確認)' },
|
|
351
451
|
title: { type: 'string', description: '新しいタイトル(省略時は変更なし)' },
|
|
352
452
|
description: { type: 'string', description: '新しい説明(省略時は変更なし)' },
|
|
353
|
-
steps: { type: 'array', description: '
|
|
354
|
-
is_active: { type: 'boolean', description: '
|
|
453
|
+
steps: { type: 'array', description: '新しいステップ配列(省略時は変更なし。渡すと全ステップ置換)', items: { type: 'object' } },
|
|
454
|
+
is_active: { type: 'boolean', description: 'true=有効 / false=無効(省略時は変更なし)' },
|
|
355
455
|
},
|
|
356
456
|
required: ['id'],
|
|
357
457
|
},
|
|
@@ -359,41 +459,171 @@ const TOOLS = [
|
|
|
359
459
|
// チャットボット書き込み(読み書き可能キーが必要)
|
|
360
460
|
{
|
|
361
461
|
name: 'create_chatbot',
|
|
362
|
-
description:
|
|
462
|
+
description: `Webサイト埋め込み型のチャットボットを新規作成します。【書き込み権限付きキーが必要】
|
|
463
|
+
widget_token は自動生成され、埋め込みコードに使用されます。
|
|
464
|
+
|
|
465
|
+
■ 各フィールドの役割と動作:
|
|
466
|
+
• system_prompt(システムプロンプト)
|
|
467
|
+
チャット時にAIへ毎回注入される人格・役割定義。
|
|
468
|
+
「あなたは○○のサポートスタッフです。丁寧な敬語で回答してください」形式で記述。
|
|
469
|
+
AIパートナーの base_prompt に相当するフィールド。
|
|
470
|
+
|
|
471
|
+
• initial_message(最初のメッセージ)
|
|
472
|
+
ユーザーがチャットを開いたときに最初に表示されるAIからの挨拶文。
|
|
473
|
+
例: "こんにちは!○○サポートです。何でもお気軽にご相談ください😊"
|
|
474
|
+
|
|
475
|
+
• rules_allow / rules_deny(許可・禁止ルール)
|
|
476
|
+
system_promptを補強するルール定義。改行区切りの箇条書き推奨。
|
|
477
|
+
rules_allow: AIが積極的に行うこと(例: "製品説明を行う\n無料相談を案内する")
|
|
478
|
+
rules_deny: 絶対に行わないこと(例: "個人情報を収集しない\n他社製品を推薦しない")
|
|
479
|
+
|
|
480
|
+
• sales_flow(対話フロー)
|
|
481
|
+
顧客との会話ステップを定義。ヒアリング→提案→CTA誘導の流れをStep形式で記述。省略可。
|
|
482
|
+
|
|
483
|
+
• quick_replies(クイック返信ボタン)
|
|
484
|
+
チャット画面に表示されるボタンラベル。改行区切りで最大5〜6個推奨。
|
|
485
|
+
例: "料金を知りたい\n導入事例を見たい\n資料請求したい\n担当者に相談したい"
|
|
486
|
+
|
|
487
|
+
• ai_provider(AIエンジン)
|
|
488
|
+
claude(デフォルト・推奨)/ openai / gemini / openrouter / groq
|
|
489
|
+
|
|
490
|
+
• ai_model(AIモデル)
|
|
491
|
+
claudeの場合: claude-haiku-4-5-20251001(高速・低コスト), claude-sonnet-4-6(バランス), claude-opus-4-7(高精度)
|
|
492
|
+
省略時はアカウントのデフォルトモデルを使用。
|
|
493
|
+
|
|
494
|
+
■ ナレッジ連携(推奨手順):
|
|
495
|
+
1. list_knowledge_items または search_knowledge でナレッジIDを確認する
|
|
496
|
+
2. knowledge_item_ids に対象IDの配列を渡す(create時に一括紐付け)
|
|
497
|
+
3. 後から追加する場合は link_chatbot_knowledge ツールを使う
|
|
498
|
+
|
|
499
|
+
■ ナレッジ検索モード(4択から1つだけ選ぶ。下が優先度高):
|
|
500
|
+
【デフォルト推奨】全フラグfalse: semantic モード — 質問に意味的に近いチャンクのみ返す。ナレッジが多い場合に最適。
|
|
501
|
+
【knowledge_smart_full_text=true】: 意味スコアで関連ナレッジを選別→そのナレッジ全文返す。精度と網羅性のバランス型。中規模向け。
|
|
502
|
+
【knowledge_query_rewrite=true (smart_full_text=false)】: ユーザー質問をAI最適化→セマンティック検索。曖昧な質問が多い場合に有効。
|
|
503
|
+
【knowledge_semantic_search=false (設定はupdate_chatbotで変更)】: 全ナレッジを全文返す。ナレッジ件数が少ない(5件以下)場合のみ推奨。
|
|
504
|
+
|
|
505
|
+
■ 診断フロー(diagnostic_mode=true にすると有効):
|
|
506
|
+
チャットボットに「診断・アンケート機能」を追加する。質問を順番に出してユーザーの悩みやタイプを診断し、
|
|
507
|
+
最後に結果ページを表示する機能。製品選定診断・タイプ診断・相性診断・課題ヒアリングなどに使用。
|
|
508
|
+
|
|
509
|
+
diagnostic_mode=true の場合、必ず diagnostic_result_mode も指定する:
|
|
510
|
+
• "ai"(デフォルト): AIが回答内容を総合的に解釈して判定。自由記述・定性的な質問に最適。
|
|
511
|
+
ユーザーが曖昧な回答をしても文脈を理解して適切な結果を返す。
|
|
512
|
+
→ おすすめ: パーソナリティ診断・悩み相談・ヒアリングフロー
|
|
513
|
+
|
|
514
|
+
• "count": 各選択肢に番号を振り、最多選択番号で結果を判定。選択肢が明確なアンケート向き。
|
|
515
|
+
AIを使わずバックエンドで集計するため高速。
|
|
516
|
+
→ おすすめ: 製品選定・タイプ判定・属性診断
|
|
517
|
+
|
|
518
|
+
• "score": 各選択肢にポイント(点数)を設定し、合計スコアで結果を判定。
|
|
519
|
+
「Aを選んだら3点」「Bを選んだら1点」のように重み付け可能。
|
|
520
|
+
→ おすすめ: 成熟度診断・スコア可視化・段階別ランク分け
|
|
521
|
+
|
|
522
|
+
• "branch": Yes/No(または2〜4択)で分岐しながら進む決定木型。
|
|
523
|
+
各質問が前の回答によって変わる。ルート数が多い複雑な診断に向く。
|
|
524
|
+
→ おすすめ: 課題特定フロー・商品レコメンド・お悩み分岐診断
|
|
525
|
+
|
|
526
|
+
diagnostic_strict_result=true: 結果が確定した瞬間に即表示(全問回答を待たない)。
|
|
527
|
+
diagnostic_ai_text_enabled=false: 質問間のAI会話文を省略してフォーム形式に(count/scoreモードで高速化したい場合)。`,
|
|
363
528
|
annotations: { destructiveHint: false, idempotentHint: false },
|
|
364
529
|
inputSchema: {
|
|
365
530
|
type: 'object',
|
|
366
531
|
properties: {
|
|
367
|
-
name:
|
|
368
|
-
system_prompt:
|
|
369
|
-
initial_message:
|
|
370
|
-
rules_allow:
|
|
371
|
-
rules_deny:
|
|
372
|
-
sales_flow:
|
|
373
|
-
quick_replies:
|
|
532
|
+
name: { type: 'string', description: 'チャットボット名(例: 「ECサイト問い合わせBot」)' },
|
|
533
|
+
system_prompt: { type: 'string', description: 'AIの人格・役割・回答スタイルを定義するメインプロンプト。チャット時に毎回注入される。' },
|
|
534
|
+
initial_message: { type: 'string', description: 'チャット開始時にAIが最初に表示するメッセージ。ユーザーへの歓迎・誘導文。' },
|
|
535
|
+
rules_allow: { type: 'string', description: '許可ルール。改行区切り箇条書き。AIが積極的に行うべきこと。' },
|
|
536
|
+
rules_deny: { type: 'string', description: '禁止ルール。改行区切り箇条書き。AIが絶対に行ってはいけないこと。' },
|
|
537
|
+
sales_flow: { type: 'string', description: '対話フロー定義。Step形式で会話の進め方を記述。省略可。' },
|
|
538
|
+
quick_replies: { type: 'string', description: 'クイック返信ボタンラベル。改行区切りで5〜6個まで。例: "料金を知りたい\n資料請求したい"' },
|
|
539
|
+
ai_provider: { type: 'string', description: 'AIエンジン: claude(デフォルト・推奨)/ openai / gemini / openrouter / groq', enum: ['claude', 'openai', 'gemini', 'openrouter', 'groq'] },
|
|
540
|
+
ai_model: { type: 'string', description: 'モデル指定。claudeの場合: claude-haiku-4-5-20251001(高速)/ claude-sonnet-4-6(推奨)/ claude-opus-4-7(高精度)' },
|
|
541
|
+
knowledge_query_rewrite: { type: 'boolean', description: 'true=ユーザー質問をAIが最適化してから検索(曖昧な質問に強い)。デフォルト: false' },
|
|
542
|
+
knowledge_smart_full_text: { type: 'boolean', description: 'true=意味スコアで選別→全文取得(精度と網羅性のバランス型)。デフォルト: false' },
|
|
543
|
+
knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '紐付けるナレッジのID配列。list_knowledge_items / search_knowledge でIDを確認してから渡すこと。省略可(後からlink_chatbot_knowledgeでも追加可)。' },
|
|
544
|
+
diagnostic_mode: { type: 'boolean', description: 'true=診断フロー機能を有効化。質問→判定→結果表示の診断型チャットボットになる。デフォルト: false' },
|
|
545
|
+
diagnostic_result_mode: {
|
|
546
|
+
type: 'string',
|
|
547
|
+
enum: ['ai', 'count', 'score', 'branch'],
|
|
548
|
+
description: '診断判定ロジック。diagnostic_mode=trueの場合必須。ai=AI総合判断(自由記述向き)/ count=最多選択番号で判定(選択式向き)/ score=ポイント合計で判定(重み付け向き)/ branch=Yes/No分岐型(決定木向き)',
|
|
549
|
+
},
|
|
550
|
+
diagnostic_strict_result: { type: 'boolean', description: 'true=結果確定時に即表示(全問回答を待たない)。デフォルト: false' },
|
|
551
|
+
diagnostic_ai_text_enabled: { type: 'boolean', description: 'false=質問間のAI会話文を省略してフォーム形式に高速化(count/scoreモード推奨)。デフォルト: true' },
|
|
374
552
|
},
|
|
375
553
|
required: ['name'],
|
|
376
554
|
},
|
|
377
555
|
},
|
|
378
556
|
{
|
|
379
557
|
name: 'update_chatbot',
|
|
380
|
-
description:
|
|
558
|
+
description: `既存のチャットボットを更新します。【書き込み権限付きキーが必要】
|
|
559
|
+
指定したフィールドのみ更新され、省略したフィールドは現在値を維持します。
|
|
560
|
+
各フィールドの意味は create_chatbot と同じです。`,
|
|
381
561
|
annotations: { destructiveHint: false, idempotentHint: true },
|
|
382
562
|
inputSchema: {
|
|
383
563
|
type: 'object',
|
|
384
564
|
properties: {
|
|
385
|
-
id:
|
|
386
|
-
name:
|
|
387
|
-
system_prompt:
|
|
388
|
-
initial_message:
|
|
389
|
-
rules_allow:
|
|
390
|
-
rules_deny:
|
|
391
|
-
sales_flow:
|
|
392
|
-
quick_replies:
|
|
565
|
+
id: { type: 'string', description: 'チャットボットID(list_chatbotsで確認)' },
|
|
566
|
+
name: { type: 'string', description: '新しい名前(省略時は変更なし)' },
|
|
567
|
+
system_prompt: { type: 'string', description: '新しいシステムプロンプト(省略時は変更なし)' },
|
|
568
|
+
initial_message: { type: 'string', description: '新しい最初のメッセージ(省略時は変更なし)' },
|
|
569
|
+
rules_allow: { type: 'string', description: '新しい許可ルール・改行区切り(省略時は変更なし)' },
|
|
570
|
+
rules_deny: { type: 'string', description: '新しい禁止ルール・改行区切り(省略時は変更なし)' },
|
|
571
|
+
sales_flow: { type: 'string', description: '新しい対話フロー(省略時は変更なし)' },
|
|
572
|
+
quick_replies: { type: 'string', description: '新しいクイック返信・改行区切り(省略時は変更なし)' },
|
|
573
|
+
ai_provider: { type: 'string', description: '新しいAIエンジン(省略時は変更なし)', enum: ['claude', 'openai', 'gemini', 'openrouter', 'groq'] },
|
|
574
|
+
ai_model: { type: 'string', description: '新しいモデル(省略時は変更なし)' },
|
|
575
|
+
knowledge_semantic_search: { type: 'boolean', description: 'ナレッジ検索モード変更(省略時は変更なし)' },
|
|
576
|
+
knowledge_query_rewrite: { type: 'boolean', description: 'クエリ最適化モード変更(省略時は変更なし)' },
|
|
577
|
+
knowledge_smart_full_text: { type: 'boolean', description: 'スマート全文取得モード変更(省略時は変更なし)' },
|
|
578
|
+
diagnostic_mode: { type: 'boolean', description: '診断フロー有効/無効(省略時は変更なし)' },
|
|
579
|
+
diagnostic_result_mode: { type: 'string', description: '診断判定ロジック変更: ai / count / score / branch(省略時は変更なし)', enum: ['ai', 'count', 'score', 'branch'] },
|
|
580
|
+
diagnostic_strict_result: { type: 'boolean', description: '即時結果表示の変更(省略時は変更なし)' },
|
|
581
|
+
diagnostic_ai_text_enabled:{ type: 'boolean', description: '質問間のAI会話文生成の変更(省略時は変更なし)' },
|
|
393
582
|
},
|
|
394
583
|
required: ['id'],
|
|
395
584
|
},
|
|
396
585
|
},
|
|
586
|
+
// チャットボット ↔ ナレッジ 紐付け管理
|
|
587
|
+
{
|
|
588
|
+
name: 'list_chatbot_knowledge',
|
|
589
|
+
description: 'チャットボットに現在紐付けられているナレッジの一覧を取得します。',
|
|
590
|
+
annotations: { readOnlyHint: true },
|
|
591
|
+
inputSchema: {
|
|
592
|
+
type: 'object',
|
|
593
|
+
properties: {
|
|
594
|
+
chatbot_id: { type: 'string', description: 'チャットボットID(list_chatbotsで確認)' },
|
|
595
|
+
},
|
|
596
|
+
required: ['chatbot_id'],
|
|
597
|
+
},
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
name: 'link_chatbot_knowledge',
|
|
601
|
+
description: `チャットボットにナレッジを紐付けます(一括追加)。【書き込み権限付きキーが必要】
|
|
602
|
+
手順: 1) list_knowledge_items または search_knowledge でナレッジIDを確認 → 2) このツールで紐付け。
|
|
603
|
+
既に紐付け済みのIDは無視されます(重複エラーなし)。`,
|
|
604
|
+
annotations: { destructiveHint: false, idempotentHint: true },
|
|
605
|
+
inputSchema: {
|
|
606
|
+
type: 'object',
|
|
607
|
+
properties: {
|
|
608
|
+
chatbot_id: { type: 'string', description: 'チャットボットID' },
|
|
609
|
+
knowledge_item_ids: { type: 'array', items: { type: 'string' }, description: '紐付けるナレッジIDの配列' },
|
|
610
|
+
},
|
|
611
|
+
required: ['chatbot_id', 'knowledge_item_ids'],
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
name: 'unlink_chatbot_knowledge',
|
|
616
|
+
description: 'チャットボットからナレッジの紐付けを解除します。【書き込み権限付きキーが必要】ナレッジ自体は削除されません。',
|
|
617
|
+
annotations: { destructiveHint: false, idempotentHint: true },
|
|
618
|
+
inputSchema: {
|
|
619
|
+
type: 'object',
|
|
620
|
+
properties: {
|
|
621
|
+
chatbot_id: { type: 'string', description: 'チャットボットID' },
|
|
622
|
+
knowledge_item_id: { type: 'string', description: '解除するナレッジID' },
|
|
623
|
+
},
|
|
624
|
+
required: ['chatbot_id', 'knowledge_item_id'],
|
|
625
|
+
},
|
|
626
|
+
},
|
|
397
627
|
// Claude Code月額でワークフロー実行(読み書き可能キーが必要)
|
|
398
628
|
{
|
|
399
629
|
name: 'get_workflow_plan',
|
|
@@ -607,7 +837,9 @@ async function executeTool(name, args) {
|
|
|
607
837
|
|
|
608
838
|
case 'update_agent_preset': {
|
|
609
839
|
const body = {};
|
|
610
|
-
const fields = ['name','description','base_prompt','rules_allow','rules_deny','sales_flow',
|
|
840
|
+
const fields = ['name','description','base_prompt','rules_allow','rules_deny','sales_flow',
|
|
841
|
+
'knowledge','knowledge_item_ids',
|
|
842
|
+
'knowledge_semantic_search','knowledge_smart_full_text','knowledge_query_rewrite'];
|
|
611
843
|
fields.forEach(f => { if (args[f] !== undefined) body[f] = args[f]; });
|
|
612
844
|
const data = await callApi(`/agent-presets/${args.id}`, {
|
|
613
845
|
method: 'PATCH',
|
|
@@ -777,21 +1009,27 @@ async function executeTool(name, args) {
|
|
|
777
1009
|
}
|
|
778
1010
|
|
|
779
1011
|
case 'create_chatbot': {
|
|
1012
|
+
const cbCreate = {};
|
|
1013
|
+
const cbAllFields = ['name','system_prompt','initial_message','rules_allow','rules_deny',
|
|
1014
|
+
'sales_flow','quick_replies','ai_provider','ai_model',
|
|
1015
|
+
'knowledge_query_rewrite','knowledge_smart_full_text',
|
|
1016
|
+
'diagnostic_mode','diagnostic_result_mode','diagnostic_strict_result','diagnostic_ai_text_enabled'];
|
|
1017
|
+
cbAllFields.forEach(f => { if (args[f] !== undefined) cbCreate[f] = args[f]; });
|
|
1018
|
+
if (Array.isArray(args.knowledge_item_ids)) cbCreate.knowledge_item_ids = args.knowledge_item_ids;
|
|
780
1019
|
const data = await callApi('/chatbots', {
|
|
781
1020
|
method: 'POST',
|
|
782
|
-
body: JSON.stringify(
|
|
783
|
-
name: args.name, system_prompt: args.system_prompt,
|
|
784
|
-
initial_message: args.initial_message, rules_allow: args.rules_allow,
|
|
785
|
-
rules_deny: args.rules_deny, sales_flow: args.sales_flow,
|
|
786
|
-
quick_replies: args.quick_replies,
|
|
787
|
-
}),
|
|
1021
|
+
body: JSON.stringify(cbCreate),
|
|
788
1022
|
});
|
|
789
|
-
|
|
1023
|
+
const diagInfo = cbCreate.diagnostic_mode ? `\n診断モード: ON (${cbCreate.diagnostic_result_mode || 'ai'})` : '';
|
|
1024
|
+
return `✅ ${data.message}\nID: ${data.id}\n名前: ${data.name}\nAI: ${data.ai_provider || 'claude'}\nwidget_token: ${data.widget_token}\n紐付けナレッジ: ${data.linked_knowledge_count ?? 0}件${diagInfo}`;
|
|
790
1025
|
}
|
|
791
1026
|
|
|
792
1027
|
case 'update_chatbot': {
|
|
793
1028
|
const body = {};
|
|
794
|
-
const cbFields = ['name','system_prompt','initial_message','rules_allow','rules_deny',
|
|
1029
|
+
const cbFields = ['name','system_prompt','initial_message','rules_allow','rules_deny',
|
|
1030
|
+
'sales_flow','quick_replies','ai_provider','ai_model',
|
|
1031
|
+
'knowledge_semantic_search','knowledge_query_rewrite','knowledge_smart_full_text',
|
|
1032
|
+
'diagnostic_mode','diagnostic_result_mode','diagnostic_strict_result','diagnostic_ai_text_enabled'];
|
|
795
1033
|
cbFields.forEach(f => { if (args[f] !== undefined) body[f] = args[f]; });
|
|
796
1034
|
const data = await callApi(`/chatbots/${args.id}`, {
|
|
797
1035
|
method: 'PATCH',
|
|
@@ -800,6 +1038,30 @@ async function executeTool(name, args) {
|
|
|
800
1038
|
return `✅ ${data.message}\nID: ${data.id}`;
|
|
801
1039
|
}
|
|
802
1040
|
|
|
1041
|
+
case 'list_chatbot_knowledge': {
|
|
1042
|
+
const data = await callApi(`/chatbots/${args.chatbot_id}/knowledge`);
|
|
1043
|
+
if (!data.knowledge_items || data.knowledge_items.length === 0) {
|
|
1044
|
+
return `チャットボット ${args.chatbot_id} にはナレッジが紐付けられていません。`;
|
|
1045
|
+
}
|
|
1046
|
+
const lines = data.knowledge_items.map(k => `- [${k.id}] ${k.title} (${k.category || 'other'})`);
|
|
1047
|
+
return `チャットボット ${args.chatbot_id} の紐付けナレッジ(${data.knowledge_items.length}件):\n\n${lines.join('\n')}`;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
case 'link_chatbot_knowledge': {
|
|
1051
|
+
const data = await callApi(`/chatbots/${args.chatbot_id}/knowledge`, {
|
|
1052
|
+
method: 'POST',
|
|
1053
|
+
body: JSON.stringify({ knowledge_item_ids: args.knowledge_item_ids }),
|
|
1054
|
+
});
|
|
1055
|
+
return `✅ ${data.message}`;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
case 'unlink_chatbot_knowledge': {
|
|
1059
|
+
const data = await callApi(`/chatbots/${args.chatbot_id}/knowledge/${args.knowledge_item_id}`, {
|
|
1060
|
+
method: 'DELETE',
|
|
1061
|
+
});
|
|
1062
|
+
return `✅ ${data.message}`;
|
|
1063
|
+
}
|
|
1064
|
+
|
|
803
1065
|
case 'get_workflow_plan': {
|
|
804
1066
|
const data = await callApi(`/workflows/${args.id}/plan`);
|
|
805
1067
|
const stepLines = data.steps.map(s => {
|
|
@@ -832,7 +1094,7 @@ async function executeTool(name, args) {
|
|
|
832
1094
|
// ── MCPサーバー起動 ────────────────────────────────────────────
|
|
833
1095
|
async function main() {
|
|
834
1096
|
const server = new Server(
|
|
835
|
-
{ name: 'owner-clone-ai', version: '1.
|
|
1097
|
+
{ name: 'owner-clone-ai', version: '1.7.0' },
|
|
836
1098
|
{ capabilities: { tools: {} } }
|
|
837
1099
|
);
|
|
838
1100
|
|