@dobbyai/mcp-external 1.0.3 → 1.1.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/dist/__tests__/agent-mail-tools.test.d.ts +8 -0
- package/dist/__tests__/agent-mail-tools.test.d.ts.map +1 -0
- package/dist/__tests__/agent-mail-tools.test.js +262 -0
- package/dist/__tests__/agent-mail-tools.test.js.map +1 -0
- package/dist/__tests__/annotations.test.d.ts +8 -0
- package/dist/__tests__/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/annotations.test.js +108 -0
- package/dist/__tests__/annotations.test.js.map +1 -0
- package/dist/__tests__/auth.test.d.ts +7 -0
- package/dist/__tests__/auth.test.d.ts.map +1 -0
- package/dist/__tests__/auth.test.js +116 -0
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/__tests__/integration/protocol.test.d.ts +8 -0
- package/dist/__tests__/integration/protocol.test.d.ts.map +1 -0
- package/dist/__tests__/integration/protocol.test.js +104 -0
- package/dist/__tests__/integration/protocol.test.js.map +1 -0
- package/dist/__tests__/mcp-integrations.test.d.ts +8 -0
- package/dist/__tests__/mcp-integrations.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-integrations.test.js +375 -0
- package/dist/__tests__/mcp-integrations.test.js.map +1 -0
- package/dist/__tests__/memory-graph-tools.test.d.ts +8 -0
- package/dist/__tests__/memory-graph-tools.test.d.ts.map +1 -0
- package/dist/__tests__/memory-graph-tools.test.js +265 -0
- package/dist/__tests__/memory-graph-tools.test.js.map +1 -0
- package/dist/__tests__/schedule-tools.test.d.ts +8 -0
- package/dist/__tests__/schedule-tools.test.d.ts.map +1 -0
- package/dist/__tests__/schedule-tools.test.js +290 -0
- package/dist/__tests__/schedule-tools.test.js.map +1 -0
- package/dist/__tests__/tiers.test.d.ts +7 -0
- package/dist/__tests__/tiers.test.d.ts.map +1 -0
- package/dist/__tests__/tiers.test.js +103 -0
- package/dist/__tests__/tiers.test.js.map +1 -0
- package/dist/__tests__/tools.test.d.ts +7 -0
- package/dist/__tests__/tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools.test.js +143 -0
- package/dist/__tests__/tools.test.js.map +1 -0
- package/dist/__tests__/transport.test.d.ts +7 -0
- package/dist/__tests__/transport.test.d.ts.map +1 -0
- package/dist/__tests__/transport.test.js +55 -0
- package/dist/__tests__/transport.test.js.map +1 -0
- package/dist/__tests__/web-eval-tools.test.d.ts +8 -0
- package/dist/__tests__/web-eval-tools.test.d.ts.map +1 -0
- package/dist/__tests__/web-eval-tools.test.js +252 -0
- package/dist/__tests__/web-eval-tools.test.js.map +1 -0
- package/dist/__tests__/workflow-tools.test.d.ts +8 -0
- package/dist/__tests__/workflow-tools.test.d.ts.map +1 -0
- package/dist/__tests__/workflow-tools.test.js +268 -0
- package/dist/__tests__/workflow-tools.test.js.map +1 -0
- package/dist/auth/oauth-provider.d.ts +34 -0
- package/dist/auth/oauth-provider.d.ts.map +1 -0
- package/dist/auth/oauth-provider.js +75 -0
- package/dist/auth/oauth-provider.js.map +1 -0
- package/dist/auth/token-verifier.d.ts +40 -0
- package/dist/auth/token-verifier.d.ts.map +1 -0
- package/dist/auth/token-verifier.js +138 -0
- package/dist/auth/token-verifier.js.map +1 -0
- package/dist/http-server.d.ts +35 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +175 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.js +131 -36
- package/dist/index.js.map +1 -1
- package/dist/lib/dobby-client.d.ts +50 -20
- package/dist/lib/dobby-client.d.ts.map +1 -1
- package/dist/lib/dobby-client.js +50 -0
- package/dist/lib/dobby-client.js.map +1 -1
- package/dist/tools/agent-mail.d.ts +153 -0
- package/dist/tools/agent-mail.d.ts.map +1 -0
- package/dist/tools/agent-mail.js +340 -0
- package/dist/tools/agent-mail.js.map +1 -0
- package/dist/tools/approvals.d.ts +24 -0
- package/dist/tools/approvals.d.ts.map +1 -1
- package/dist/tools/approvals.js +24 -0
- package/dist/tools/approvals.js.map +1 -1
- package/dist/tools/crew-builder.d.ts +24 -0
- package/dist/tools/crew-builder.d.ts.map +1 -1
- package/dist/tools/crew-builder.js +24 -0
- package/dist/tools/crew-builder.js.map +1 -1
- package/dist/tools/crewai.d.ts +24 -0
- package/dist/tools/crewai.d.ts.map +1 -1
- package/dist/tools/crewai.js +24 -0
- package/dist/tools/crewai.js.map +1 -1
- package/dist/tools/exa.d.ts +161 -0
- package/dist/tools/exa.d.ts.map +1 -0
- package/dist/tools/exa.js +228 -0
- package/dist/tools/exa.js.map +1 -0
- package/dist/tools/github-mcp.d.ts +303 -0
- package/dist/tools/github-mcp.d.ts.map +1 -0
- package/dist/tools/github-mcp.js +397 -0
- package/dist/tools/github-mcp.js.map +1 -0
- package/dist/tools/governance.d.ts +129 -0
- package/dist/tools/governance.d.ts.map +1 -0
- package/dist/tools/governance.js +171 -0
- package/dist/tools/governance.js.map +1 -0
- package/dist/tools/index.d.ts +3589 -159
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +250 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jira.d.ts +60 -0
- package/dist/tools/jira.d.ts.map +1 -1
- package/dist/tools/jira.js +60 -0
- package/dist/tools/jira.js.map +1 -1
- package/dist/tools/knowledge-base.d.ts +144 -0
- package/dist/tools/knowledge-base.d.ts.map +1 -0
- package/dist/tools/knowledge-base.js +179 -0
- package/dist/tools/knowledge-base.js.map +1 -0
- package/dist/tools/mcp-metrics.d.ts +62 -0
- package/dist/tools/mcp-metrics.d.ts.map +1 -0
- package/dist/tools/mcp-metrics.js +270 -0
- package/dist/tools/mcp-metrics.js.map +1 -0
- package/dist/tools/mcp-tools.d.ts +12 -0
- package/dist/tools/mcp-tools.d.ts.map +1 -1
- package/dist/tools/mcp-tools.js +12 -0
- package/dist/tools/mcp-tools.js.map +1 -1
- package/dist/tools/mem0.d.ts +168 -0
- package/dist/tools/mem0.d.ts.map +1 -0
- package/dist/tools/mem0.js +255 -0
- package/dist/tools/mem0.js.map +1 -0
- package/dist/tools/memory-graph.d.ts +197 -0
- package/dist/tools/memory-graph.d.ts.map +1 -0
- package/dist/tools/memory-graph.js +545 -0
- package/dist/tools/memory-graph.js.map +1 -0
- package/dist/tools/messages.d.ts +12 -0
- package/dist/tools/messages.d.ts.map +1 -1
- package/dist/tools/messages.js +12 -0
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/moltbook.d.ts +564 -0
- package/dist/tools/moltbook.d.ts.map +1 -0
- package/dist/tools/moltbook.js +792 -0
- package/dist/tools/moltbook.js.map +1 -0
- package/dist/tools/ops.d.ts +219 -0
- package/dist/tools/ops.d.ts.map +1 -0
- package/dist/tools/ops.js +360 -0
- package/dist/tools/ops.js.map +1 -0
- package/dist/tools/schedules.d.ts +196 -0
- package/dist/tools/schedules.d.ts.map +1 -0
- package/dist/tools/schedules.js +264 -0
- package/dist/tools/schedules.js.map +1 -0
- package/dist/tools/services.d.ts +6 -0
- package/dist/tools/services.d.ts.map +1 -1
- package/dist/tools/services.js +6 -0
- package/dist/tools/services.js.map +1 -1
- package/dist/tools/tasks.d.ts +45 -0
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +49 -4
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/tiers.d.ts +39 -0
- package/dist/tools/tiers.d.ts.map +1 -0
- package/dist/tools/tiers.js +138 -0
- package/dist/tools/tiers.js.map +1 -0
- package/dist/tools/unified-agents.d.ts +62 -0
- package/dist/tools/unified-agents.d.ts.map +1 -0
- package/dist/tools/unified-agents.js +147 -0
- package/dist/tools/unified-agents.js.map +1 -0
- package/dist/tools/web-eval.d.ts +172 -0
- package/dist/tools/web-eval.d.ts.map +1 -0
- package/dist/tools/web-eval.js +347 -0
- package/dist/tools/web-eval.js.map +1 -0
- package/dist/tools/workflow.d.ts +171 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +518 -0
- package/dist/tools/workflow.js.map +1 -0
- package/package.json +8 -3
package/dist/tools/tasks.js
CHANGED
|
@@ -10,6 +10,12 @@ export const taskTools = {
|
|
|
10
10
|
// Create a new task
|
|
11
11
|
create_task: {
|
|
12
12
|
name: 'create_task',
|
|
13
|
+
annotations: {
|
|
14
|
+
title: 'Create Task',
|
|
15
|
+
readOnlyHint: false,
|
|
16
|
+
destructiveHint: true,
|
|
17
|
+
openWorldHint: false,
|
|
18
|
+
},
|
|
13
19
|
description: 'Create a new task in Dobby for the AI agents to work on',
|
|
14
20
|
inputSchema: {
|
|
15
21
|
type: 'object',
|
|
@@ -38,6 +44,12 @@ export const taskTools = {
|
|
|
38
44
|
// List tasks
|
|
39
45
|
list_tasks: {
|
|
40
46
|
name: 'list_tasks',
|
|
47
|
+
annotations: {
|
|
48
|
+
title: 'List Tasks',
|
|
49
|
+
readOnlyHint: true,
|
|
50
|
+
destructiveHint: false,
|
|
51
|
+
openWorldHint: false,
|
|
52
|
+
},
|
|
41
53
|
description: 'List tasks from Dobby with optional filters',
|
|
42
54
|
inputSchema: {
|
|
43
55
|
type: 'object',
|
|
@@ -52,6 +64,10 @@ export const taskTools = {
|
|
|
52
64
|
enum: ['high', 'medium', 'low'],
|
|
53
65
|
description: 'Filter by priority',
|
|
54
66
|
},
|
|
67
|
+
assigned_to: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'Filter tasks by assigned agent name (e.g., "dobby-backend-agent")',
|
|
70
|
+
},
|
|
55
71
|
limit: {
|
|
56
72
|
type: 'number',
|
|
57
73
|
description: 'Maximum number of tasks to return (default: 20)',
|
|
@@ -62,13 +78,20 @@ export const taskTools = {
|
|
|
62
78
|
// Get single task
|
|
63
79
|
get_task: {
|
|
64
80
|
name: 'get_task',
|
|
81
|
+
annotations: {
|
|
82
|
+
title: 'Get Task',
|
|
83
|
+
readOnlyHint: true,
|
|
84
|
+
destructiveHint: false,
|
|
85
|
+
openWorldHint: false,
|
|
86
|
+
},
|
|
65
87
|
description: 'Get detailed information about a specific task',
|
|
66
88
|
inputSchema: {
|
|
67
89
|
type: 'object',
|
|
68
90
|
properties: {
|
|
69
91
|
task_id: {
|
|
70
92
|
type: 'string',
|
|
71
|
-
description: 'The task ID to retrieve',
|
|
93
|
+
description: 'The task ID to retrieve (format: task_xxxxx)',
|
|
94
|
+
pattern: '^task_[a-zA-Z0-9_-]+$',
|
|
72
95
|
},
|
|
73
96
|
},
|
|
74
97
|
required: ['task_id'],
|
|
@@ -77,13 +100,20 @@ export const taskTools = {
|
|
|
77
100
|
// Update task
|
|
78
101
|
update_task: {
|
|
79
102
|
name: 'update_task',
|
|
103
|
+
annotations: {
|
|
104
|
+
title: 'Update Task',
|
|
105
|
+
readOnlyHint: false,
|
|
106
|
+
destructiveHint: true,
|
|
107
|
+
openWorldHint: false,
|
|
108
|
+
},
|
|
80
109
|
description: 'Update a task status or priority',
|
|
81
110
|
inputSchema: {
|
|
82
111
|
type: 'object',
|
|
83
112
|
properties: {
|
|
84
113
|
task_id: {
|
|
85
114
|
type: 'string',
|
|
86
|
-
description: 'The task ID to update',
|
|
115
|
+
description: 'The task ID to update (format: task_xxxxx)',
|
|
116
|
+
pattern: '^task_[a-zA-Z0-9_-]+$',
|
|
87
117
|
},
|
|
88
118
|
status: {
|
|
89
119
|
type: 'string',
|
|
@@ -102,13 +132,20 @@ export const taskTools = {
|
|
|
102
132
|
// Get task timeline (activity feed)
|
|
103
133
|
get_task_timeline: {
|
|
104
134
|
name: 'get_task_timeline',
|
|
135
|
+
annotations: {
|
|
136
|
+
title: 'Get Task Timeline',
|
|
137
|
+
readOnlyHint: true,
|
|
138
|
+
destructiveHint: false,
|
|
139
|
+
openWorldHint: false,
|
|
140
|
+
},
|
|
105
141
|
description: 'Get the activity timeline for a task (agent events, status changes, approvals)',
|
|
106
142
|
inputSchema: {
|
|
107
143
|
type: 'object',
|
|
108
144
|
properties: {
|
|
109
145
|
task_id: {
|
|
110
146
|
type: 'string',
|
|
111
|
-
description: 'The task ID to get timeline for',
|
|
147
|
+
description: 'The task ID to get timeline for (format: task_xxxxx)',
|
|
148
|
+
pattern: '^task_[a-zA-Z0-9_-]+$',
|
|
112
149
|
},
|
|
113
150
|
},
|
|
114
151
|
required: ['task_id'],
|
|
@@ -117,13 +154,20 @@ export const taskTools = {
|
|
|
117
154
|
// Cancel task execution
|
|
118
155
|
cancel_task: {
|
|
119
156
|
name: 'cancel_task',
|
|
157
|
+
annotations: {
|
|
158
|
+
title: 'Cancel Task',
|
|
159
|
+
readOnlyHint: false,
|
|
160
|
+
destructiveHint: true,
|
|
161
|
+
openWorldHint: false,
|
|
162
|
+
},
|
|
120
163
|
description: 'Cancel a running task execution',
|
|
121
164
|
inputSchema: {
|
|
122
165
|
type: 'object',
|
|
123
166
|
properties: {
|
|
124
167
|
task_id: {
|
|
125
168
|
type: 'string',
|
|
126
|
-
description: 'The task ID to cancel',
|
|
169
|
+
description: 'The task ID to cancel (format: task_xxxxx)',
|
|
170
|
+
pattern: '^task_[a-zA-Z0-9_-]+$',
|
|
127
171
|
},
|
|
128
172
|
},
|
|
129
173
|
required: ['task_id'],
|
|
@@ -153,6 +197,7 @@ export async function handleListTasks(client, args) {
|
|
|
153
197
|
const tasks = await client.listTasks({
|
|
154
198
|
status: args.status === 'all' ? undefined : args.status,
|
|
155
199
|
priority: args.priority,
|
|
200
|
+
assigned_to: args.assigned_to,
|
|
156
201
|
limit: args.limit || 20,
|
|
157
202
|
});
|
|
158
203
|
if (tasks.length === 0) {
|
package/dist/tools/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Tier Filtering System
|
|
3
|
+
*
|
|
4
|
+
* Defines which tools are available at each subscription tier.
|
|
5
|
+
* MVP (22 tools) — works immediately after OAuth, no extra setup.
|
|
6
|
+
* Pro (50 tools) — adds integrations requiring customer API keys.
|
|
7
|
+
* Enterprise (all tools) — everything including advanced AI features.
|
|
8
|
+
*
|
|
9
|
+
* Tier ↔ Plan mapping:
|
|
10
|
+
* Free / Trial → mvp (22 tools, scope: mcp:read or mcp:execute)
|
|
11
|
+
* Pro → pro (50 tools, scope: mcp:pro)
|
|
12
|
+
* Enterprise → enterprise (all tools, scope: mcp:*)
|
|
13
|
+
*/
|
|
14
|
+
/** MVP tier: core platform tools that work without extra integration setup */
|
|
15
|
+
export declare const MVP_TOOLS: readonly string[];
|
|
16
|
+
export declare const PRO_TOOLS: readonly string[];
|
|
17
|
+
export type ToolTier = 'mvp' | 'pro' | 'enterprise';
|
|
18
|
+
export declare const TOOL_TIERS: Record<ToolTier, readonly string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the tool tier from an auth context.
|
|
21
|
+
* Checks scopes in order of precedence (enterprise > pro > mvp).
|
|
22
|
+
* Defaults to 'mvp' if no matching scope found.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveToolTier(authContext?: {
|
|
25
|
+
scope?: string;
|
|
26
|
+
scopes?: string[];
|
|
27
|
+
plan?: string;
|
|
28
|
+
}): ToolTier;
|
|
29
|
+
/**
|
|
30
|
+
* Filter tools by tier. Enterprise tier returns all tools.
|
|
31
|
+
* For mvp/pro, returns only tools in that tier's allowlist.
|
|
32
|
+
*/
|
|
33
|
+
export declare function filterToolsByTier(allToolNames: string[], tier: ToolTier): string[];
|
|
34
|
+
/** Tier counts for verification */
|
|
35
|
+
export declare const TIER_COUNTS: {
|
|
36
|
+
readonly mvp: number;
|
|
37
|
+
readonly pro: number;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=tiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../../src/tools/tiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,8EAA8E;AAC9E,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EA6B7B,CAAC;AAuCX,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAAsC,CAAC;AAM9E,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC;AAEpD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAI1D,CAAC;AAaF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,QAAQ,CAgBX;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,QAAQ,GACb,MAAM,EAAE,CAIV;AAED,mCAAmC;AACnC,eAAO,MAAM,WAAW;;;CAGd,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Tier Filtering System
|
|
3
|
+
*
|
|
4
|
+
* Defines which tools are available at each subscription tier.
|
|
5
|
+
* MVP (22 tools) — works immediately after OAuth, no extra setup.
|
|
6
|
+
* Pro (50 tools) — adds integrations requiring customer API keys.
|
|
7
|
+
* Enterprise (all tools) — everything including advanced AI features.
|
|
8
|
+
*
|
|
9
|
+
* Tier ↔ Plan mapping:
|
|
10
|
+
* Free / Trial → mvp (22 tools, scope: mcp:read or mcp:execute)
|
|
11
|
+
* Pro → pro (50 tools, scope: mcp:pro)
|
|
12
|
+
* Enterprise → enterprise (all tools, scope: mcp:*)
|
|
13
|
+
*/
|
|
14
|
+
// ============================================
|
|
15
|
+
// Tier Definitions
|
|
16
|
+
// ============================================
|
|
17
|
+
/** MVP tier: core platform tools that work without extra integration setup */
|
|
18
|
+
export const MVP_TOOLS = [
|
|
19
|
+
// Tasks (6)
|
|
20
|
+
'create_task',
|
|
21
|
+
'list_tasks',
|
|
22
|
+
'get_task',
|
|
23
|
+
'update_task',
|
|
24
|
+
'get_task_timeline',
|
|
25
|
+
'cancel_task',
|
|
26
|
+
// Messages (2)
|
|
27
|
+
'get_messages',
|
|
28
|
+
'send_message',
|
|
29
|
+
// Approvals — HITL (4)
|
|
30
|
+
'get_pending_approvals',
|
|
31
|
+
'approve_task',
|
|
32
|
+
'reject_task',
|
|
33
|
+
'request_changes',
|
|
34
|
+
// Agent Ops (4)
|
|
35
|
+
'list_all_agents',
|
|
36
|
+
'workflow_classify_task',
|
|
37
|
+
'workflow_auto_assign',
|
|
38
|
+
'workflow_agent_workload',
|
|
39
|
+
// Schedules (4)
|
|
40
|
+
'create_schedule',
|
|
41
|
+
'list_schedules',
|
|
42
|
+
'pause_schedule',
|
|
43
|
+
'delete_schedule',
|
|
44
|
+
// Discovery (2)
|
|
45
|
+
'list_services',
|
|
46
|
+
'mcp_connection_info',
|
|
47
|
+
];
|
|
48
|
+
/** Pro tier adds: Jira (10) + GitHub (7) + CrewAI (8) + Knowledge (3) */
|
|
49
|
+
const PRO_ADDITIONAL = [
|
|
50
|
+
// Jira (10)
|
|
51
|
+
'jira_search_issues',
|
|
52
|
+
'jira_get_issue',
|
|
53
|
+
'jira_create_issue',
|
|
54
|
+
'jira_update_issue',
|
|
55
|
+
'jira_add_comment',
|
|
56
|
+
'jira_get_comments',
|
|
57
|
+
'jira_get_transitions',
|
|
58
|
+
'jira_transition_issue',
|
|
59
|
+
'jira_list_projects',
|
|
60
|
+
'jira_assign_issue',
|
|
61
|
+
// GitHub (7)
|
|
62
|
+
'github_search_code',
|
|
63
|
+
'github_get_file',
|
|
64
|
+
'github_create_pr',
|
|
65
|
+
'github_list_prs',
|
|
66
|
+
'github_list_issues',
|
|
67
|
+
'github_create_issue',
|
|
68
|
+
'github_get_workflow_runs',
|
|
69
|
+
// CrewAI Platform (4)
|
|
70
|
+
'crewai_health',
|
|
71
|
+
'crewai_inputs',
|
|
72
|
+
'crewai_kickoff',
|
|
73
|
+
'crewai_status',
|
|
74
|
+
// CrewAI Builder (4)
|
|
75
|
+
'crew_validate',
|
|
76
|
+
'crew_kickoff',
|
|
77
|
+
'crew_status',
|
|
78
|
+
'crew_list',
|
|
79
|
+
// Knowledge Base (3)
|
|
80
|
+
'mem0_search',
|
|
81
|
+
'mem0_list',
|
|
82
|
+
'exa_web_search',
|
|
83
|
+
];
|
|
84
|
+
export const PRO_TOOLS = [...MVP_TOOLS, ...PRO_ADDITIONAL];
|
|
85
|
+
export const TOOL_TIERS = {
|
|
86
|
+
mvp: MVP_TOOLS,
|
|
87
|
+
pro: PRO_TOOLS,
|
|
88
|
+
enterprise: [], // populated dynamically from allTools keys
|
|
89
|
+
};
|
|
90
|
+
// ============================================
|
|
91
|
+
// Scope → Tier Mapping
|
|
92
|
+
// ============================================
|
|
93
|
+
const SCOPE_TO_TIER = {
|
|
94
|
+
'mcp:read': 'mvp',
|
|
95
|
+
'mcp:execute': 'mvp',
|
|
96
|
+
'mcp:pro': 'pro',
|
|
97
|
+
'mcp:*': 'enterprise',
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Resolve the tool tier from an auth context.
|
|
101
|
+
* Checks scopes in order of precedence (enterprise > pro > mvp).
|
|
102
|
+
* Defaults to 'mvp' if no matching scope found.
|
|
103
|
+
*/
|
|
104
|
+
export function resolveToolTier(authContext) {
|
|
105
|
+
if (!authContext)
|
|
106
|
+
return 'mvp';
|
|
107
|
+
// Check plan directly
|
|
108
|
+
if (authContext.plan === 'enterprise')
|
|
109
|
+
return 'enterprise';
|
|
110
|
+
if (authContext.plan === 'pro')
|
|
111
|
+
return 'pro';
|
|
112
|
+
// Check scopes
|
|
113
|
+
const scopes = authContext.scopes
|
|
114
|
+
|| (authContext.scope ? authContext.scope.split(' ') : []);
|
|
115
|
+
if (scopes.includes('mcp:*'))
|
|
116
|
+
return 'enterprise';
|
|
117
|
+
if (scopes.includes('mcp:pro'))
|
|
118
|
+
return 'pro';
|
|
119
|
+
if (scopes.includes('mcp:execute') || scopes.includes('mcp:read'))
|
|
120
|
+
return 'mvp';
|
|
121
|
+
return 'mvp';
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Filter tools by tier. Enterprise tier returns all tools.
|
|
125
|
+
* For mvp/pro, returns only tools in that tier's allowlist.
|
|
126
|
+
*/
|
|
127
|
+
export function filterToolsByTier(allToolNames, tier) {
|
|
128
|
+
if (tier === 'enterprise')
|
|
129
|
+
return allToolNames;
|
|
130
|
+
const allowed = new Set(TOOL_TIERS[tier]);
|
|
131
|
+
return allToolNames.filter(name => allowed.has(name));
|
|
132
|
+
}
|
|
133
|
+
/** Tier counts for verification */
|
|
134
|
+
export const TIER_COUNTS = {
|
|
135
|
+
mvp: MVP_TOOLS.length, // 22
|
|
136
|
+
pro: PRO_TOOLS.length, // 50
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=tiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiers.js","sourceRoot":"","sources":["../../src/tools/tiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Agent Identity MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* Tool to list all agents across all connected platforms
|
|
5
|
+
* (Dobby internal, external BYOA, Moltbook).
|
|
6
|
+
*/
|
|
7
|
+
import { DobbyClient } from '../lib/dobby-client.js';
|
|
8
|
+
export declare const unifiedAgentTools: {
|
|
9
|
+
list_all_agents: {
|
|
10
|
+
name: string;
|
|
11
|
+
annotations: {
|
|
12
|
+
title: string;
|
|
13
|
+
readOnlyHint: boolean;
|
|
14
|
+
destructiveHint: boolean;
|
|
15
|
+
openWorldHint: boolean;
|
|
16
|
+
};
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object";
|
|
20
|
+
properties: {
|
|
21
|
+
source: {
|
|
22
|
+
type: string;
|
|
23
|
+
enum: string[];
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
status: {
|
|
27
|
+
type: string;
|
|
28
|
+
enum: string[];
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
search: {
|
|
32
|
+
type: string;
|
|
33
|
+
description: string;
|
|
34
|
+
minLength: number;
|
|
35
|
+
};
|
|
36
|
+
include_moltbook: {
|
|
37
|
+
type: string;
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export declare function handleListAllAgents(client: DobbyClient, args: {
|
|
45
|
+
source?: string;
|
|
46
|
+
status?: string;
|
|
47
|
+
search?: string;
|
|
48
|
+
include_moltbook?: boolean;
|
|
49
|
+
}): Promise<{
|
|
50
|
+
content: {
|
|
51
|
+
type: "text";
|
|
52
|
+
text: string;
|
|
53
|
+
}[];
|
|
54
|
+
isError?: undefined;
|
|
55
|
+
} | {
|
|
56
|
+
content: {
|
|
57
|
+
type: "text";
|
|
58
|
+
text: string;
|
|
59
|
+
}[];
|
|
60
|
+
isError: boolean;
|
|
61
|
+
}>;
|
|
62
|
+
//# sourceMappingURL=unified-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-agents.d.ts","sourceRoot":"","sources":["../../src/tools/unified-agents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC7B,CAAC;AAMF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;;;;;;;;;;;;GAuCF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Agent Identity MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* Tool to list all agents across all connected platforms
|
|
5
|
+
* (Dobby internal, external BYOA, Moltbook).
|
|
6
|
+
*/
|
|
7
|
+
// ============================================
|
|
8
|
+
// Tool Definitions
|
|
9
|
+
// ============================================
|
|
10
|
+
export const unifiedAgentTools = {
|
|
11
|
+
list_all_agents: {
|
|
12
|
+
name: 'list_all_agents',
|
|
13
|
+
annotations: {
|
|
14
|
+
title: 'List All Agents',
|
|
15
|
+
readOnlyHint: true,
|
|
16
|
+
destructiveHint: false,
|
|
17
|
+
openWorldHint: false,
|
|
18
|
+
},
|
|
19
|
+
description: 'List all agents across all connected platforms (Dobby internal agents, external BYOA agents, and Moltbook agents). Returns a unified view of every agent in your workspace with source, status, and health information.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
source: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
enum: ['all', 'dobby_tenant', 'dobby_org', 'external', 'moltbook'],
|
|
26
|
+
description: 'Filter by agent source. Defaults to "all".',
|
|
27
|
+
},
|
|
28
|
+
status: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
enum: ['all', 'active', 'paused', 'error', 'inactive'],
|
|
31
|
+
description: 'Filter by agent status. Defaults to "all".',
|
|
32
|
+
},
|
|
33
|
+
search: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Search agents by name, role, or description (min 2 characters).',
|
|
36
|
+
minLength: 2,
|
|
37
|
+
},
|
|
38
|
+
include_moltbook: {
|
|
39
|
+
type: 'boolean',
|
|
40
|
+
description: 'Whether to include Moltbook agents (requires live API call). Defaults to false.',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
// ============================================
|
|
47
|
+
// Tool Handlers
|
|
48
|
+
// ============================================
|
|
49
|
+
export async function handleListAllAgents(client, args) {
|
|
50
|
+
try {
|
|
51
|
+
// Build query params
|
|
52
|
+
const queryParams = new URLSearchParams();
|
|
53
|
+
if (args.source && args.source !== 'all') {
|
|
54
|
+
queryParams.set('source', args.source);
|
|
55
|
+
}
|
|
56
|
+
if (args.status && args.status !== 'all') {
|
|
57
|
+
queryParams.set('status', args.status);
|
|
58
|
+
}
|
|
59
|
+
if (args.search) {
|
|
60
|
+
queryParams.set('search', args.search);
|
|
61
|
+
}
|
|
62
|
+
if (args.include_moltbook) {
|
|
63
|
+
queryParams.set('include_moltbook', 'true');
|
|
64
|
+
}
|
|
65
|
+
// Use client's request method to call the unified-agents API
|
|
66
|
+
const data = await client.request(`/api/v1/tenants/${client.tenantId}/unified-agents?${queryParams.toString()}`);
|
|
67
|
+
const text = formatUnifiedAgents(data);
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text }],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'text',
|
|
77
|
+
text: `Failed to list unified agents: ${error.message}`,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
isError: true,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function formatUnifiedAgents(responseData) {
|
|
85
|
+
const data = responseData?.data || responseData;
|
|
86
|
+
let text = '# All Agents\n\n';
|
|
87
|
+
// Stats summary
|
|
88
|
+
const stats = data.stats;
|
|
89
|
+
text += `**Total: ${stats.total} agents**\n\n`;
|
|
90
|
+
// Source breakdown
|
|
91
|
+
const sourceLabels = {
|
|
92
|
+
dobby_tenant: 'Dobby Tenant',
|
|
93
|
+
dobby_org: 'Dobby Org',
|
|
94
|
+
external: 'External (BYOA)',
|
|
95
|
+
moltbook: 'Moltbook',
|
|
96
|
+
};
|
|
97
|
+
if (stats.by_source) {
|
|
98
|
+
const parts = [];
|
|
99
|
+
for (const [source, count] of Object.entries(stats.by_source)) {
|
|
100
|
+
if (count > 0) {
|
|
101
|
+
parts.push(`${sourceLabels[source] || source}: ${count}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (parts.length > 0) {
|
|
105
|
+
text += `Sources: ${parts.join(' | ')}\n\n`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Failed sources warning
|
|
109
|
+
if (data.sources_failed?.length > 0) {
|
|
110
|
+
text += `⚠️ Could not fetch from: ${data.sources_failed.join(', ')}\n\n`;
|
|
111
|
+
}
|
|
112
|
+
// No agents
|
|
113
|
+
if (!data.agents || data.agents.length === 0) {
|
|
114
|
+
text += '_No agents found._\n';
|
|
115
|
+
return text;
|
|
116
|
+
}
|
|
117
|
+
// Group agents by source
|
|
118
|
+
const grouped = {};
|
|
119
|
+
for (const agent of data.agents) {
|
|
120
|
+
const key = agent.source;
|
|
121
|
+
if (!grouped[key])
|
|
122
|
+
grouped[key] = [];
|
|
123
|
+
grouped[key].push(agent);
|
|
124
|
+
}
|
|
125
|
+
// Render each group
|
|
126
|
+
for (const [source, agents] of Object.entries(grouped)) {
|
|
127
|
+
text += `## ${sourceLabels[source] || source} (${agents.length})\n\n`;
|
|
128
|
+
text += '| Agent | Status | Health | Role |\n';
|
|
129
|
+
text += '|-------|--------|--------|------|\n';
|
|
130
|
+
for (const agent of agents) {
|
|
131
|
+
const statusIcon = agent.status === 'active' ? '✅' :
|
|
132
|
+
agent.status === 'paused' ? '⏸️' :
|
|
133
|
+
agent.status === 'error' ? '❌' : '⚪';
|
|
134
|
+
const healthIcon = agent.health_status === 'healthy' ? '🟢' :
|
|
135
|
+
agent.health_status === 'degraded' ? '🟡' :
|
|
136
|
+
agent.health_status === 'unhealthy' ? '🔴' : '⚪';
|
|
137
|
+
const name = agent.profile_url
|
|
138
|
+
? `[${agent.display_name}](${agent.profile_url})`
|
|
139
|
+
: agent.display_name;
|
|
140
|
+
const role = agent.role || agent.group || '—';
|
|
141
|
+
text += `| ${name} | ${statusIcon} ${agent.status} | ${healthIcon} ${agent.health_status} | ${role} |\n`;
|
|
142
|
+
}
|
|
143
|
+
text += '\n';
|
|
144
|
+
}
|
|
145
|
+
return text;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=unified-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-agents.js","sourceRoot":"","sources":["../../src/tools/unified-agents.ts"],"names":[],"mappings":"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"}
|