@inspectr/mcplab 1.14.0 → 1.14.1

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.
@@ -4,201 +4,216 @@ import { McpClientManager } from '@inspectr/mcplab-core';
4
4
  import type { AppSettings } from './types.js';
5
5
  import { type OAuthSessionManager } from './oauth-session-manager.js';
6
6
  type JobEvent = {
7
- type: 'started' | 'log' | 'completed' | 'error';
8
- ts: string;
9
- payload: Record<string, unknown>;
7
+ type: 'started' | 'log' | 'completed' | 'error';
8
+ ts: string;
9
+ payload: Record<string, unknown>;
10
10
  };
11
11
  export interface ToolAnalysisFinding {
12
- id: string;
13
- scope: 'tool_name' | 'description' | 'schema' | 'ergonomics' | 'safety' | 'eval_readiness' | 'execution';
14
- severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
15
- title: string;
16
- detail: string;
17
- suggestion?: string;
12
+ id: string;
13
+ scope:
14
+ | 'tool_name'
15
+ | 'description'
16
+ | 'schema'
17
+ | 'ergonomics'
18
+ | 'safety'
19
+ | 'eval_readiness'
20
+ | 'execution';
21
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
22
+ title: string;
23
+ detail: string;
24
+ suggestion?: string;
18
25
  }
19
26
  interface ToolAnalysisSuggestedSchemaChange {
20
- type: 'description' | 'parameter' | 'required' | 'enum' | 'constraints' | 'examples' | 'naming';
21
- summary: string;
22
- before?: string;
23
- after?: string;
27
+ type: 'description' | 'parameter' | 'required' | 'enum' | 'constraints' | 'examples' | 'naming';
28
+ summary: string;
29
+ before?: string;
30
+ after?: string;
24
31
  }
25
32
  interface ToolAnalysisToolReport {
26
- serverName: string;
27
- toolName: string;
28
- publicToolName: string;
29
- title?: string;
30
- description?: string;
31
- inputSchema?: unknown;
32
- outputSchema?: unknown;
33
- safetyClassification: 'read_only' | 'unsafe_or_unknown';
34
- classificationReason: string;
35
- metadataReview?: {
36
- strengths: string[];
37
- issues: ToolAnalysisFinding[];
38
- suggestedDescription?: string;
39
- suggestedSchemaChanges: ToolAnalysisSuggestedSchemaChange[];
40
- evalReadinessNotes: string[];
41
- };
42
- deeperAnalysis?: {
43
- attempted: boolean;
44
- skippedReason?: string;
45
- sampleCalls: Array<{
46
- callIndex: number;
47
- arguments: unknown;
48
- ok: boolean;
49
- durationMs?: number;
50
- resultPreview?: string;
51
- error?: string;
52
- observations: string[];
53
- issues: ToolAnalysisFinding[];
54
- }>;
55
- overallObservations: string[];
56
- };
57
- overallRecommendations: string[];
33
+ serverName: string;
34
+ toolName: string;
35
+ publicToolName: string;
36
+ title?: string;
37
+ description?: string;
38
+ inputSchema?: unknown;
39
+ outputSchema?: unknown;
40
+ safetyClassification: 'read_only' | 'unsafe_or_unknown';
41
+ classificationReason: string;
42
+ metadataReview?: {
43
+ strengths: string[];
44
+ issues: ToolAnalysisFinding[];
45
+ suggestedDescription?: string;
46
+ suggestedSchemaChanges: ToolAnalysisSuggestedSchemaChange[];
47
+ evalReadinessNotes: string[];
48
+ };
49
+ deeperAnalysis?: {
50
+ attempted: boolean;
51
+ skippedReason?: string;
52
+ sampleCalls: Array<{
53
+ callIndex: number;
54
+ arguments: unknown;
55
+ ok: boolean;
56
+ durationMs?: number;
57
+ resultPreview?: string;
58
+ error?: string;
59
+ observations: string[];
60
+ issues: ToolAnalysisFinding[];
61
+ }>;
62
+ overallObservations: string[];
63
+ };
64
+ overallRecommendations: string[];
58
65
  }
59
66
  interface ToolAnalysisServerReport {
60
- serverName: string;
61
- toolCountDiscovered: number;
62
- toolCountAnalyzed: number;
63
- toolCountSkipped: number;
64
- warnings: string[];
65
- tools: ToolAnalysisToolReport[];
67
+ serverName: string;
68
+ toolCountDiscovered: number;
69
+ toolCountAnalyzed: number;
70
+ toolCountSkipped: number;
71
+ warnings: string[];
72
+ tools: ToolAnalysisToolReport[];
66
73
  }
67
74
  export interface ToolAnalysisReport {
68
- schemaVersion: 1;
69
- createdAt: string;
70
- assistantAgentName: string;
71
- assistantAgentModel: string;
72
- modes: {
73
- metadataReview: boolean;
74
- deeperAnalysis: boolean;
75
- };
76
- settings: {
77
- autoRunPolicy?: 'read_only_allowlist';
78
- sampleCallsPerTool?: number;
79
- toolCallTimeoutMs?: number;
80
- maxParallelTools?: number;
81
- };
82
- summary: {
83
- serversAnalyzed: number;
84
- toolsAnalyzed: number;
85
- toolsSkipped: number;
86
- issueCounts: {
87
- critical: number;
88
- high: number;
89
- medium: number;
90
- low: number;
91
- info: number;
92
- };
75
+ schemaVersion: 1;
76
+ createdAt: string;
77
+ assistantAgentName: string;
78
+ assistantAgentModel: string;
79
+ modes: {
80
+ metadataReview: boolean;
81
+ deeperAnalysis: boolean;
82
+ };
83
+ settings: {
84
+ autoRunPolicy?: 'read_only_allowlist';
85
+ sampleCallsPerTool?: number;
86
+ toolCallTimeoutMs?: number;
87
+ maxParallelTools?: number;
88
+ };
89
+ summary: {
90
+ serversAnalyzed: number;
91
+ toolsAnalyzed: number;
92
+ toolsSkipped: number;
93
+ issueCounts: {
94
+ critical: number;
95
+ high: number;
96
+ medium: number;
97
+ low: number;
98
+ info: number;
93
99
  };
94
- servers: ToolAnalysisServerReport[];
95
- findings: ToolAnalysisFinding[];
96
- mcpServerVersions?: Record<string, string | null>;
100
+ };
101
+ servers: ToolAnalysisServerReport[];
102
+ findings: ToolAnalysisFinding[];
103
+ mcpServerVersions?: Record<string, string | null>;
97
104
  }
98
105
  export interface ToolAnalysisJob {
99
- id: string;
100
- status: 'running' | 'completed' | 'error' | 'stopped';
101
- events: JobEvent[];
102
- clients: Set<ServerResponse>;
103
- abortController: AbortController;
104
- result?: ToolAnalysisReport;
105
- savedReportId?: string;
106
- savedReportPath?: string;
106
+ id: string;
107
+ status: 'running' | 'completed' | 'error' | 'stopped';
108
+ events: JobEvent[];
109
+ clients: Set<ServerResponse>;
110
+ abortController: AbortController;
111
+ result?: ToolAnalysisReport;
112
+ savedReportId?: string;
113
+ savedReportPath?: string;
107
114
  }
108
115
  interface ToolAnalysisToolContext {
109
- serverName: string;
110
- tool: ToolDef;
111
- safetyClassification: 'read_only' | 'unsafe_or_unknown';
112
- classificationReason: string;
116
+ serverName: string;
117
+ tool: ToolDef;
118
+ safetyClassification: 'read_only' | 'unsafe_or_unknown';
119
+ classificationReason: string;
113
120
  }
114
121
  interface ToolAnalysisMetadataPayload {
115
- serverName: string;
116
- toolName: string;
117
- title: string;
118
- description: string;
119
- inputSchema: unknown;
120
- outputSchema: unknown;
121
- projectGoal: string;
122
+ serverName: string;
123
+ toolName: string;
124
+ title: string;
125
+ description: string;
126
+ inputSchema: unknown;
127
+ outputSchema: unknown;
128
+ projectGoal: string;
122
129
  }
123
130
  interface ToolAnalysisSamplePlanPayload {
124
- serverName: string;
125
- toolName: string;
126
- title: string;
127
- description: string;
128
- inputSchema: unknown;
129
- outputSchema: unknown;
130
- maxCalls: number;
131
+ serverName: string;
132
+ toolName: string;
133
+ title: string;
134
+ description: string;
135
+ inputSchema: unknown;
136
+ outputSchema: unknown;
137
+ maxCalls: number;
131
138
  }
132
139
  interface ToolAnalysisExecutionReviewPayload {
133
- serverName: string;
134
- toolName: string;
135
- title: string;
136
- arguments: unknown;
137
- resultPreview: string;
138
- description: string;
139
- inputSchema: unknown;
140
- outputSchema: unknown;
140
+ serverName: string;
141
+ toolName: string;
142
+ title: string;
143
+ arguments: unknown;
144
+ resultPreview: string;
145
+ description: string;
146
+ inputSchema: unknown;
147
+ outputSchema: unknown;
141
148
  }
142
- export declare function classifyToolSafety(toolName: string, inputSchema?: unknown, annotations?: ToolDef['annotations']): {
143
- safetyClassification: 'read_only' | 'unsafe_or_unknown';
144
- classificationReason: string;
149
+ export declare function classifyToolSafety(
150
+ toolName: string,
151
+ inputSchema?: unknown,
152
+ annotations?: ToolDef['annotations']
153
+ ): {
154
+ safetyClassification: 'read_only' | 'unsafe_or_unknown';
155
+ classificationReason: string;
145
156
  };
146
157
  export declare function parseJsonFromAssistantText<T = unknown>(text: string): T;
147
158
  export declare function buildToolAnalysisMetadataPayload(params: {
148
- serverName: string;
149
- toolName: string;
150
- title?: string;
151
- description?: string;
152
- inputSchema?: unknown;
153
- outputSchema?: unknown;
159
+ serverName: string;
160
+ toolName: string;
161
+ title?: string;
162
+ description?: string;
163
+ inputSchema?: unknown;
164
+ outputSchema?: unknown;
154
165
  }): ToolAnalysisMetadataPayload;
155
166
  export declare function buildToolAnalysisSamplePlanPayload(params: {
156
- serverName: string;
157
- toolName: string;
158
- title?: string;
159
- description?: string;
160
- inputSchema?: unknown;
161
- outputSchema?: unknown;
162
- maxCalls: number;
167
+ serverName: string;
168
+ toolName: string;
169
+ title?: string;
170
+ description?: string;
171
+ inputSchema?: unknown;
172
+ outputSchema?: unknown;
173
+ maxCalls: number;
163
174
  }): ToolAnalysisSamplePlanPayload;
164
175
  export declare function buildToolAnalysisExecutionReviewPayload(params: {
165
- serverName: string;
166
- toolName: string;
167
- title?: string;
168
- arguments: unknown;
169
- resultPreview: string;
170
- description?: string;
171
- inputSchema?: unknown;
172
- outputSchema?: unknown;
176
+ serverName: string;
177
+ toolName: string;
178
+ title?: string;
179
+ arguments: unknown;
180
+ resultPreview: string;
181
+ description?: string;
182
+ inputSchema?: unknown;
183
+ outputSchema?: unknown;
173
184
  }): ToolAnalysisExecutionReviewPayload;
174
- export declare function discoverMcpToolsForServers(serversByName: EvalConfig['servers'], serverNames: string[], options?: {
185
+ export declare function discoverMcpToolsForServers(
186
+ serversByName: EvalConfig['servers'],
187
+ serverNames: string[],
188
+ options?: {
175
189
  serverAuthHeaders?: Record<string, Record<string, string>>;
176
- }): Promise<{
177
- mcp: McpClientManager;
178
- servers: Array<{
179
- serverName: string;
180
- warnings: string[];
181
- tools: ToolAnalysisToolContext[];
182
- }>;
190
+ }
191
+ ): Promise<{
192
+ mcp: McpClientManager;
193
+ servers: Array<{
194
+ serverName: string;
195
+ warnings: string[];
196
+ tools: ToolAnalysisToolContext[];
197
+ }>;
183
198
  }>;
184
199
  export declare function runToolAnalysisJob(params: {
185
- job: ToolAnalysisJob;
186
- settings: AppSettings;
187
- requestedAssistantAgentName?: string;
188
- serverNames: string[];
189
- oauthSessionManager: OAuthSessionManager;
190
- hostHeader?: string;
191
- selectedToolsByServer?: Record<string, string[]>;
192
- modes: {
193
- metadataReview: boolean;
194
- deeperAnalysis: boolean;
195
- };
196
- deeper: {
197
- autoRunPolicy: 'read_only_allowlist';
198
- sampleCallsPerTool: number;
199
- toolCallTimeoutMs: number;
200
- };
201
- maxParallelTools: number;
200
+ job: ToolAnalysisJob;
201
+ settings: AppSettings;
202
+ requestedAssistantAgentName?: string;
203
+ serverNames: string[];
204
+ oauthSessionManager: OAuthSessionManager;
205
+ hostHeader?: string;
206
+ selectedToolsByServer?: Record<string, string[]>;
207
+ modes: {
208
+ metadataReview: boolean;
209
+ deeperAnalysis: boolean;
210
+ };
211
+ deeper: {
212
+ autoRunPolicy: 'read_only_allowlist';
213
+ sampleCallsPerTool: number;
214
+ toolCallTimeoutMs: number;
215
+ };
216
+ maxParallelTools: number;
202
217
  }): Promise<void>;
203
218
  export {};
204
- //# sourceMappingURL=tool-analysis-domain.d.ts.map
219
+ //# sourceMappingURL=tool-analysis-domain.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inspectr/mcplab",
3
- "version": "1.14.0",
3
+ "version": "1.14.1",
4
4
  "description": "MCPLab - Test and evaluate MCP servers with LLMs — run evals, compare agents and launch the MCPLab web app",
5
5
  "license": "MIT",
6
6
  "homepage": "https://mcplab.inspectr.dev",