owner-clone-ai-mcp 2.1.0 → 2.1.3

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.
@@ -34,6 +34,7 @@ const tools = [
34
34
  properties: {
35
35
  query: { type: 'string', description: '検索クエリ' },
36
36
  limit: { type: 'number', description: '取得件数(デフォルト: 10)' },
37
+ scope: { type: 'string', enum: ['account'], description: 'プロジェクト専用キー使用時に "account" を指定するとアカウント全体を検索(既定はプロジェクトの棚に限定)。棚の外の正本ナレッジを探すときに使う' },
37
38
  },
38
39
  required: ['query'],
39
40
  },
@@ -402,7 +403,7 @@ const handlers = {
402
403
  async search_knowledge(args) {
403
404
  const data = await callApi('/knowledge/search', {
404
405
  method: 'POST',
405
- body: JSON.stringify({ query: args.query, limit: args.limit }),
406
+ body: JSON.stringify({ query: args.query, limit: args.limit, scope: args.scope }),
406
407
  });
407
408
  if (!data.results || data.results.length === 0) {
408
409
  return `「${args.query}」に一致するナレッジは見つかりませんでした。`;
@@ -68,11 +68,12 @@ kind: note=メモ / decision=決定 / result=経過・実行結果 / customer=
68
68
  • add_task — { title }
69
69
  • add_goal — { title, purpose, done_criteria }
70
70
  • create_resource — { resource_type: agent_preset|chatbot|funnel|workflow, config: { name, description } }
71
+ • remove_goal — { goal_id }(承認つきゴール削除。子ゴールは部分木ごと消え、タスクは残って紐付けだけ外れる)
71
72
  ⚠️ 過去に却下された提案と同じ内容は再提案しないこと(却下理由は日誌にあります)。`,
72
73
  annotations: { destructiveHint: false, idempotentHint: true },
73
74
  inputSchema: { type: 'object', properties: {
74
75
  project_id: { type: 'string', description: 'プロジェクト紐付きキーなら省略可' },
75
- kind: { type: 'string', enum: ['add_task', 'add_goal', 'create_resource'] },
76
+ kind: { type: 'string', enum: ['add_task', 'add_goal', 'create_resource', 'remove_goal'] },
76
77
  payload: { type: 'object' },
77
78
  reason: { type: 'string', description: '承認する人が一目で判断できる理由' },
78
79
  goal_id: { type: 'string' },
@@ -87,9 +88,14 @@ kind: note=メモ / decision=決定 / result=経過・実行結果 / customer=
87
88
  },
88
89
  {
89
90
  name: 'approve_project_proposal',
90
- description: '提案を承認して実行します【書き込み権限付きキーが必要】。⚠️ ユーザーから明示的に「承認して」と言われたときだけ使ってください(自分の提案を自分で承認しない)。',
91
+ description: `提案を承認して実行します【書き込み権限付きキーが必要】。⚠️ ユーザーから明示的に「承認して」と言われたときだけ使ってください(自分の提案を自分で承認しない)。
92
+ goal_plan はユーザーが「◯◯は省いて承認」と言った場合、exclude_goal_titles / exclude_task_titles(タイトル完全一致)で部分承認できます。`,
91
93
  annotations: { destructiveHint: false, idempotentHint: false },
92
- inputSchema: { type: 'object', properties: { proposal_id: { type: 'string' } }, required: ['proposal_id'] },
94
+ inputSchema: { type: 'object', properties: {
95
+ proposal_id: { type: 'string' },
96
+ exclude_goal_titles: { type: 'array', items: { type: 'string' }, description: '除外するゴールのタイトル(部分木ごと・完全一致)' },
97
+ exclude_task_titles: { type: 'array', items: { type: 'string' }, description: '除外するタスクのタイトル(完全一致)' },
98
+ }, required: ['proposal_id'] },
93
99
  },
94
100
  {
95
101
  name: 'reject_project_proposal',
@@ -120,6 +126,7 @@ role: reference(参照) / tool(道具) / output(成果物)`,
120
126
  resource_type: { type: 'string' },
121
127
  resource_id: { type: 'string' },
122
128
  role: { type: 'string', enum: ['reference', 'tool', 'output'] },
129
+ res_category: { type: 'string', enum: ['persona', 'tone', 'offer', 'evidence', 'material', 'playbook', 'other'], description: '棚カテゴリ(部署の必須要件と突合される。ナレッジは自動推定されるため通常は省略可)' },
123
130
  }, required: ['resource_type', 'resource_id'] },
124
131
  },
125
132
  {
@@ -132,6 +139,16 @@ role: reference(参照) / tool(道具) / output(成果物)`,
132
139
  folder_id: { type: 'string', description: 'ナレッジフォルダID(list_knowledge_folders で確認。省略=解除)' },
133
140
  } },
134
141
  },
142
+ {
143
+ name: 'set_project_brief',
144
+ description: `プロジェクトの事業ブリーフ(ヒアリング回答・前提情報)を更新します【書き込み権限付きキーが必要】。
145
+ キー単位のマージ(渡したキーだけ上書き・値 null でキー削除)。以後の分解(plan_project_goals)と作業指示書(get_goal_briefing)に自動で効きます。`,
146
+ annotations: { destructiveHint: false, idempotentHint: true },
147
+ inputSchema: { type: 'object', properties: {
148
+ project_id: { type: 'string', description: 'プロジェクト紐付きキーなら省略可' },
149
+ brief: { type: 'object', description: '{ ターゲット: "...", 納期: "...", 品質基準: "..." } 形式。1値2000字・全体8KBまで' },
150
+ }, required: ['brief'] },
151
+ },
135
152
  {
136
153
  name: 'distill_project_knowledge',
137
154
  description: '航海日誌から「次も使える学び」をナレッジに整理します(蒸留)【書き込み権限付きキーが必要】。ゴール完了時は自動で走るため、ユーザーに頼まれたときだけ使ってください。',
@@ -232,7 +249,8 @@ const handlers = {
232
249
  `- [${p.id}] ${p.status === 'pending' ? '⏸' : p.status} ${p.kind}: ${p.reason || ''}`).join('\n');
233
250
  },
234
251
  async approve_project_proposal(args) {
235
- const d = await callApi(`/project-os/proposals/${args.proposal_id}/approve`, { method: 'POST' });
252
+ const d = await callApi(`/project-os/proposals/${args.proposal_id}/approve`, { method: 'POST',
253
+ body: JSON.stringify({ exclude_goal_titles: args.exclude_goal_titles || [], exclude_task_titles: args.exclude_task_titles || [] }) });
236
254
  return `✅ 実行しました(${d.executed})\n結果: ${JSON.stringify(d.result)}`;
237
255
  },
238
256
  async reject_project_proposal(args) {
@@ -253,6 +271,10 @@ const handlers = {
253
271
  ? `✅ 成果物の保存先を設定しました。${d.hint || ''}`
254
272
  : '✅ 保存先を解除しました(未分類に保存されます)';
255
273
  },
274
+ async set_project_brief(args = {}) {
275
+ const d = await callApi('/project-os/brief', { method: 'POST', body: JSON.stringify(args) });
276
+ return `✅ ブリーフを更新しました。${d.hint || ''}\n現在: ${JSON.stringify(d.brief).slice(0, 400)}`;
277
+ },
256
278
  async distill_project_knowledge(args = {}) {
257
279
  const d = await callApi('/project-os/distill', { method: 'POST', body: JSON.stringify(args) });
258
280
  if (d.skipped) return `⏭ ${d.skipped}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owner-clone-ai-mcp",
3
- "version": "2.1.0",
3
+ "version": "2.1.3",
4
4
  "description": "MCP server for Owner Clone AI — exposes knowledge and agent presets to Claude Code",
5
5
  "main": "index.js",
6
6
  "bin": {