@inspectr/mcplab 1.28.3 → 1.28.4

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.
Files changed (29) hide show
  1. package/dist/app/assets/index-DZoA-93O.js +258 -0
  2. package/dist/app/assets/index-aPA0WpCV.css +1 -0
  3. package/dist/app/index.html +2 -2
  4. package/dist/app-server/assistant-events.d.ts +28 -8
  5. package/dist/app-server/runs-store.d.ts +1 -0
  6. package/dist/app-server/runs-store.d.ts.map +1 -1
  7. package/dist/app-server/runs-store.js +1 -0
  8. package/dist/app-server/runs-store.js.map +1 -1
  9. package/dist/app-server/scenario-assistant-domain.d.ts +156 -130
  10. package/dist/app-server/tool-analysis-domain.d.ts +167 -179
  11. package/dist/app-server/tool-analysis-domain.d.ts.map +1 -1
  12. package/dist/app-server/tool-analysis-domain.js +14 -4
  13. package/dist/app-server/tool-analysis-domain.js.map +1 -1
  14. package/dist/app-server/tool-analysis-storage.d.ts +1 -0
  15. package/dist/app-server/tool-analysis-storage.d.ts.map +1 -1
  16. package/dist/app-server/tool-analysis-storage.js +20 -1
  17. package/dist/app-server/tool-analysis-storage.js.map +1 -1
  18. package/dist/app-server/tool-definition-improvement.d.ts +41 -0
  19. package/dist/app-server/tool-definition-improvement.d.ts.map +1 -0
  20. package/dist/app-server/tool-definition-improvement.js +78 -0
  21. package/dist/app-server/tool-definition-improvement.js.map +1 -0
  22. package/dist/app-server/tool-definition-quality.d.ts +96 -0
  23. package/dist/app-server/tool-definition-quality.d.ts.map +1 -0
  24. package/dist/app-server/tool-definition-quality.js +237 -0
  25. package/dist/app-server/tool-definition-quality.js.map +1 -0
  26. package/dist/app-server/types.d.ts +25 -25
  27. package/package.json +1 -1
  28. package/dist/app/assets/index-Bug5M-yX.js +0 -258
  29. package/dist/app/assets/index-CVe_v-Bh.css +0 -1
@@ -1,5 +1,21 @@
1
1
  import { mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
+ import { estimateToolDefinitionTokens } from '@inspectr/mcplab-core';
4
+ function addToolDefinitionTokenEstimates(report) {
5
+ if (!Array.isArray(report.servers))
6
+ return;
7
+ for (const server of report.servers) {
8
+ if (server.tokenEstimate)
9
+ continue;
10
+ server.tokenEstimate = estimateToolDefinitionTokens(server.tools.map((tool) => ({
11
+ name: tool.toolName,
12
+ title: tool.title,
13
+ description: tool.description,
14
+ inputSchema: tool.inputSchema,
15
+ outputSchema: tool.outputSchema
16
+ })), report.assistantAgentModel ?? 'unknown-model');
17
+ }
18
+ }
3
19
  function reportDir(baseDir, reportId) {
4
20
  return join(baseDir, reportId);
5
21
  }
@@ -34,7 +50,9 @@ export function writeToolAnalysisReportRecord(baseDir, record) {
34
50
  }
35
51
  export function readToolAnalysisReportRecord(baseDir, reportId) {
36
52
  try {
37
- return parseRecord(readFileSync(reportFile(baseDir, reportId), 'utf8'));
53
+ const record = parseRecord(readFileSync(reportFile(baseDir, reportId), 'utf8'));
54
+ addToolDefinitionTokenEstimates(record.report);
55
+ return record;
38
56
  }
39
57
  catch {
40
58
  return null;
@@ -59,6 +77,7 @@ export function listToolAnalysisReports(baseDir) {
59
77
  assistantAgentName: record.report.assistantAgentName,
60
78
  assistantAgentModel: record.report.assistantAgentModel,
61
79
  serverNames: record.serverNames,
80
+ mcpServerVersions: record.report.mcpServerVersions,
62
81
  modes: record.report.modes,
63
82
  summary: record.report.summary
64
83
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tool-analysis-storage.js","sourceRoot":"","sources":["../../src/app-server/tool-analysis-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-analysis-storage.js","sourceRoot":"","sources":["../../src/app-server/tool-analysis-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { AgentConfig, ToolDef } from '@inspectr/mcplab-core';
2
+ import { type DefinitionQualityResult } from './tool-definition-quality.js';
3
+ export interface ToolDefinitionProposal {
4
+ name: string;
5
+ title?: string;
6
+ description?: string;
7
+ inputSchema?: unknown;
8
+ outputSchema?: unknown;
9
+ annotations?: ToolDef['annotations'];
10
+ }
11
+ export interface ToolDefinitionImprovementResponse {
12
+ original: ToolDefinitionProposal;
13
+ proposal: ToolDefinitionProposal;
14
+ originalQuality: DefinitionQualityResult;
15
+ proposedQuality: DefinitionQualityResult;
16
+ changedFields: string[];
17
+ }
18
+ export declare function stripDocumentationFields(value: unknown): unknown;
19
+ export declare function validateProposalPreservesContract(
20
+ original: ToolDefinitionProposal,
21
+ proposal: ToolDefinitionProposal
22
+ ):
23
+ | {
24
+ ok: true;
25
+ }
26
+ | {
27
+ ok: false;
28
+ reason: string;
29
+ };
30
+ export declare function changedDefinitionFields(
31
+ original: ToolDefinitionProposal,
32
+ proposal: ToolDefinitionProposal
33
+ ): string[];
34
+ export declare function generateAndScoreDefinitionImprovement(params: {
35
+ agent: AgentConfig;
36
+ original: ToolDefinitionProposal;
37
+ originalQuality: DefinitionQualityResult;
38
+ siblingToolNames: string[];
39
+ weaknesses: string[];
40
+ }): Promise<ToolDefinitionImprovementResponse>;
41
+ //# sourceMappingURL=tool-definition-improvement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definition-improvement.d.ts","sourceRoot":"","sources":["../../src/app-server/tool-definition-improvement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,eAAe,EAAE,uBAAuB,CAAC;IACzC,eAAe,EAAE,uBAAuB,CAAC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAMD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQhE;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,sBAAsB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkB9C;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,EAAE,CAWV;AAoBD,wBAAsB,qCAAqC,CAAC,MAAM,EAAE;IAClE,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,eAAe,EAAE,uBAAuB,CAAC;IACzC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CA0B7C"}
@@ -0,0 +1,78 @@
1
+ import { finalizeDefinitionQuality } from './tool-definition-quality.js';
2
+ import { chatJsonWithAgent } from './tool-analysis-domain.js';
3
+ function isObject(value) {
4
+ return !!value && typeof value === 'object' && !Array.isArray(value);
5
+ }
6
+ export function stripDocumentationFields(value) {
7
+ if (Array.isArray(value))
8
+ return value.map(stripDocumentationFields);
9
+ if (!isObject(value))
10
+ return value;
11
+ return Object.fromEntries(Object.entries(value)
12
+ .filter(([key]) => !['description', 'title', '$comment', 'examples'].includes(key))
13
+ .map(([key, child]) => [key, stripDocumentationFields(child)]));
14
+ }
15
+ export function validateProposalPreservesContract(original, proposal) {
16
+ if (original.name !== proposal.name)
17
+ return { ok: false, reason: 'Tool name cannot change.' };
18
+ if (JSON.stringify(original.annotations ?? null) !== JSON.stringify(proposal.annotations ?? null)) {
19
+ return { ok: false, reason: 'MCP annotations cannot change.' };
20
+ }
21
+ if (JSON.stringify(stripDocumentationFields(original.inputSchema ?? null)) !==
22
+ JSON.stringify(stripDocumentationFields(proposal.inputSchema ?? null))) {
23
+ return { ok: false, reason: 'Input schema contract cannot change.' };
24
+ }
25
+ if (JSON.stringify(stripDocumentationFields(original.outputSchema ?? null)) !==
26
+ JSON.stringify(stripDocumentationFields(proposal.outputSchema ?? null))) {
27
+ return { ok: false, reason: 'Output schema contract cannot change.' };
28
+ }
29
+ return { ok: true };
30
+ }
31
+ export function changedDefinitionFields(original, proposal) {
32
+ const fields = [];
33
+ if (original.title !== proposal.title)
34
+ fields.push('title');
35
+ if (original.description !== proposal.description)
36
+ fields.push('description');
37
+ if (JSON.stringify(original.inputSchema) !== JSON.stringify(proposal.inputSchema)) {
38
+ fields.push('inputSchema documentation');
39
+ }
40
+ if (JSON.stringify(original.outputSchema) !== JSON.stringify(proposal.outputSchema)) {
41
+ fields.push('outputSchema documentation');
42
+ }
43
+ return fields;
44
+ }
45
+ function proposalPrompt(original, siblingToolNames, weaknesses) {
46
+ return JSON.stringify({
47
+ task: 'Improve this MCP tool definition for AI agent selection and invocation.',
48
+ rules: [
49
+ 'Keep name, annotations, parameter names, types, required fields, enums, defaults, constraints, and output structure unchanged.',
50
+ 'Only improve descriptions, titles, and documentation fields inside existing schemas.',
51
+ 'Return the complete definition as JSON, not prose.'
52
+ ],
53
+ original,
54
+ siblingToolNames,
55
+ weaknesses
56
+ });
57
+ }
58
+ export async function generateAndScoreDefinitionImprovement(params) {
59
+ const generated = await chatJsonWithAgent(params.agent, 'You generate safe, documentation-only improvements for MCP tool definitions. Return JSON with a proposal object.', proposalPrompt(params.original, params.siblingToolNames, params.weaknesses));
60
+ const proposal = (isObject(generated) && isObject(generated.proposal) ? generated.proposal : generated);
61
+ const contract = validateProposalPreservesContract(params.original, proposal);
62
+ if (!contract.ok)
63
+ throw new Error(contract.reason);
64
+ const scored = await chatJsonWithAgent(params.agent, 'Score this MCP tool definition for AI agent selection and invocation. Return JSON with definitionQuality scores for six dimensions, evidence-based justifications, annotationContradiction, and summary.', JSON.stringify({
65
+ tool: proposal,
66
+ siblingToolNames: params.siblingToolNames,
67
+ weaknesses: params.weaknesses
68
+ }));
69
+ const proposedQuality = finalizeDefinitionQuality({ tool: proposal, evaluation: scored });
70
+ return {
71
+ original: params.original,
72
+ proposal,
73
+ originalQuality: params.originalQuality,
74
+ proposedQuality,
75
+ changedFields: changedDefinitionFields(params.original, proposal)
76
+ };
77
+ }
78
+ //# sourceMappingURL=tool-definition-improvement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definition-improvement.js","sourceRoot":"","sources":["../../src/app-server/tool-definition-improvement.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EAE1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAmB9D,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAClF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,QAAgC,EAChC,QAAgC;IAEhC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IAC9F,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC;QAClG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACjE,CAAC;IACD,IACE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,EACtE,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;IACvE,CAAC;IACD,IACE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,EACvE,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAgC,EAChC,QAAgC;IAEhC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpF,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,QAAgC,EAChC,gBAA0B,EAC1B,UAAoB;IAEpB,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,IAAI,EAAE,yEAAyE;QAC/E,KAAK,EAAE;YACL,gIAAgI;YAChI,sFAAsF;YACtF,oDAAoD;SACrD;QACD,QAAQ;QACR,gBAAgB;QAChB,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,MAM3D;IACC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,MAAM,CAAC,KAAK,EACZ,kHAAkH,EAClH,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAC5E,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAA2B,CAAC;IAClI,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,MAAM,CAAC,KAAK,EACZ,0MAA0M,EAC1M,IAAI,CAAC,SAAS,CAAC;QACb,IAAI,EAAE,QAAQ;QACd,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CACH,CAAC;IACF,MAAM,eAAe,GAAG,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ;QACR,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,eAAe;QACf,aAAa,EAAE,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAClE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,96 @@
1
+ import type { ToolDef } from '@inspectr/mcplab-core';
2
+ export declare const DEFINITION_QUALITY_DIMENSIONS: {
3
+ readonly purpose_clarity: 25;
4
+ readonly usage_guidelines: 20;
5
+ readonly behavioral_transparency: 20;
6
+ readonly parameter_semantics: 15;
7
+ readonly conciseness_structure: 10;
8
+ readonly contextual_completeness: 10;
9
+ };
10
+ export type DefinitionQualityDimensionKey = keyof typeof DEFINITION_QUALITY_DIMENSIONS;
11
+ export type DefinitionQualityTier = 'A' | 'B' | 'C' | 'D' | 'F';
12
+ export interface DefinitionQualityContext {
13
+ paramCount: number;
14
+ requiredParamCount: number;
15
+ paramsWithDescriptions: number;
16
+ paramsWithEnums: number;
17
+ schemaDescriptionCoverage: number;
18
+ hasNestedObjects: boolean;
19
+ hasOutputSchema: boolean;
20
+ hasAnnotations: boolean;
21
+ titleIsMeaningful: boolean;
22
+ definitionBytes: number;
23
+ definitionHash: string;
24
+ }
25
+ export interface DefinitionQualityEvaluation {
26
+ scores: Record<
27
+ DefinitionQualityDimensionKey,
28
+ {
29
+ score: number;
30
+ justification: string;
31
+ }
32
+ >;
33
+ annotationContradiction: boolean;
34
+ summary: string;
35
+ }
36
+ export interface DefinitionQualityResult {
37
+ methodology: 'mcplab-definition-quality';
38
+ methodologyVersion: '1.0';
39
+ methodologySource: 'https://github.com/glama-ai/tool-definition-quality-score';
40
+ scoredAt: string;
41
+ definitionHash: string;
42
+ overallScore: number;
43
+ tier: DefinitionQualityTier;
44
+ passing: boolean;
45
+ summary: string;
46
+ dimensions: Record<
47
+ DefinitionQualityDimensionKey,
48
+ {
49
+ score: 1 | 2 | 3 | 4 | 5;
50
+ weight: number;
51
+ justification: string;
52
+ }
53
+ >;
54
+ smells: DefinitionQualityDimensionKey[];
55
+ flags: Array<'no_description' | 'tautological_description' | 'annotation_contradiction'>;
56
+ contextSignals: DefinitionQualityContext;
57
+ }
58
+ export interface DefinitionQualityAggregate {
59
+ label: 'server' | 'selection';
60
+ score: number;
61
+ tier: DefinitionQualityTier;
62
+ toolsScored: number;
63
+ toolsDiscovered: number;
64
+ toolsPassing: number;
65
+ meanScore: number;
66
+ minimumScore: number;
67
+ weakestTool?: string;
68
+ weakestDimension?: DefinitionQualityDimensionKey;
69
+ bestNextAction?: string;
70
+ }
71
+ export declare function buildDefinitionQualityContext(
72
+ tool: Pick<
73
+ ToolDef,
74
+ 'name' | 'title' | 'description' | 'inputSchema' | 'outputSchema' | 'annotations'
75
+ >
76
+ ): DefinitionQualityContext;
77
+ export declare function parseDefinitionQualityEvaluation(
78
+ value: unknown
79
+ ): DefinitionQualityEvaluation;
80
+ export declare function computeDefinitionQualityTier(score: number): DefinitionQualityTier;
81
+ export declare function finalizeDefinitionQuality(params: {
82
+ tool: Pick<
83
+ ToolDef,
84
+ 'name' | 'title' | 'description' | 'inputSchema' | 'outputSchema' | 'annotations'
85
+ >;
86
+ evaluation: unknown;
87
+ now?: string;
88
+ }): DefinitionQualityResult;
89
+ export declare function computeDefinitionQualityAggregate(
90
+ items: Array<{
91
+ toolName: string;
92
+ quality: DefinitionQualityResult;
93
+ }>,
94
+ toolsDiscovered: number
95
+ ): DefinitionQualityAggregate;
96
+ //# sourceMappingURL=tool-definition-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definition-quality.d.ts","sourceRoot":"","sources":["../../src/app-server/tool-definition-quality.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ import { createHash } from 'node:crypto';
2
+ export const DEFINITION_QUALITY_DIMENSIONS = {
3
+ purpose_clarity: 25,
4
+ usage_guidelines: 20,
5
+ behavioral_transparency: 20,
6
+ parameter_semantics: 15,
7
+ conciseness_structure: 10,
8
+ contextual_completeness: 10
9
+ };
10
+ function canonicalize(value, stack = new WeakSet()) {
11
+ if (value === null || typeof value !== 'object')
12
+ return value;
13
+ if (stack.has(value))
14
+ return '[Circular]';
15
+ stack.add(value);
16
+ if (Array.isArray(value))
17
+ return value.map((item) => canonicalize(item, stack));
18
+ const object = value;
19
+ return Object.fromEntries(Object.keys(object)
20
+ .sort()
21
+ .map((key) => [key, canonicalize(object[key], stack)]));
22
+ }
23
+ function schemaProperties(schema) {
24
+ if (!schema || typeof schema !== 'object' || Array.isArray(schema))
25
+ return {};
26
+ const properties = schema.properties;
27
+ return properties && typeof properties === 'object' && !Array.isArray(properties)
28
+ ? properties
29
+ : {};
30
+ }
31
+ function hasNestedObjectSchema(value, seen = new WeakSet(), depth = 0) {
32
+ if (!value || typeof value !== 'object')
33
+ return false;
34
+ if (seen.has(value))
35
+ return false;
36
+ seen.add(value);
37
+ if (Array.isArray(value))
38
+ return value.some((item) => hasNestedObjectSchema(item, seen, depth));
39
+ const object = value;
40
+ if (depth > 0 && object.type === 'object')
41
+ return true;
42
+ return Object.values(object).some((child) => hasNestedObjectSchema(child, seen, depth + 1));
43
+ }
44
+ export function buildDefinitionQualityContext(tool) {
45
+ const properties = schemaProperties(tool.inputSchema);
46
+ const propertyValues = Object.values(properties);
47
+ const paramCount = propertyValues.length;
48
+ const described = propertyValues.filter((value) => value &&
49
+ typeof value === 'object' &&
50
+ typeof value.description === 'string' &&
51
+ String(value.description).trim().length > 0).length;
52
+ const enums = propertyValues.filter((value) => value &&
53
+ typeof value === 'object' &&
54
+ Array.isArray(value.enum)).length;
55
+ const input = (tool.inputSchema ?? {});
56
+ const required = Array.isArray(input.required) ? input.required.length : 0;
57
+ const canonical = JSON.stringify(canonicalize({
58
+ name: tool.name,
59
+ title: tool.title ?? null,
60
+ description: tool.description ?? null,
61
+ inputSchema: tool.inputSchema ?? null,
62
+ outputSchema: tool.outputSchema ?? null,
63
+ annotations: tool.annotations ?? null
64
+ }));
65
+ return {
66
+ paramCount,
67
+ requiredParamCount: required,
68
+ paramsWithDescriptions: described,
69
+ paramsWithEnums: enums,
70
+ schemaDescriptionCoverage: paramCount === 0 ? 100 : Math.round((described / paramCount) * 100),
71
+ hasNestedObjects: hasNestedObjectSchema(tool.inputSchema),
72
+ hasOutputSchema: !!tool.outputSchema &&
73
+ typeof tool.outputSchema === 'object' &&
74
+ Object.keys(tool.outputSchema).length > 0,
75
+ hasAnnotations: !!tool.annotations &&
76
+ typeof tool.annotations === 'object' &&
77
+ Object.keys(tool.annotations).length > 0,
78
+ titleIsMeaningful: typeof tool.title === 'string' &&
79
+ tool.title.trim().length > tool.name.trim().length &&
80
+ tool.title.trim().toLowerCase() !== tool.name.trim().toLowerCase(),
81
+ definitionBytes: Buffer.byteLength(canonical, 'utf8'),
82
+ definitionHash: createHash('sha256').update(canonical).digest('hex').slice(0, 16)
83
+ };
84
+ }
85
+ function isRecord(value) {
86
+ return !!value && typeof value === 'object' && !Array.isArray(value);
87
+ }
88
+ export function parseDefinitionQualityEvaluation(value) {
89
+ const root = isRecord(value) && isRecord(value.definitionQuality) ? value.definitionQuality : value;
90
+ if (!isRecord(root)) {
91
+ throw new Error('Invalid definitionQuality evaluation');
92
+ }
93
+ const raw = root;
94
+ const scoreRoot = isRecord(raw.scores)
95
+ ? raw.scores
96
+ : isRecord(raw.dimensionScores)
97
+ ? raw.dimensionScores
98
+ : undefined;
99
+ const summary = typeof raw.summary === 'string'
100
+ ? raw.summary
101
+ : typeof raw.overallSummary === 'string'
102
+ ? raw.overallSummary
103
+ : '';
104
+ if (!scoreRoot || !summary.trim()) {
105
+ throw new Error('Invalid definitionQuality evaluation');
106
+ }
107
+ const scores = {};
108
+ for (const dimension of Object.keys(DEFINITION_QUALITY_DIMENSIONS)) {
109
+ const item = scoreRoot[dimension];
110
+ const rawScore = isRecord(item) ? item.score : undefined;
111
+ const score = typeof rawScore === 'string' && /^\d+$/.test(rawScore) ? Number(rawScore) : rawScore;
112
+ const justification = isRecord(item)
113
+ ? typeof item.justification === 'string'
114
+ ? item.justification
115
+ : item.evidence
116
+ : undefined;
117
+ if (!Number.isInteger(score) || score < 1 || score > 5) {
118
+ throw new Error('Definition quality score for ' + dimension + ' must be an integer between 1 and 5');
119
+ }
120
+ if (typeof justification !== 'string' || !justification.trim()) {
121
+ throw new Error('Definition quality justification for ' + dimension + ' is required');
122
+ }
123
+ scores[dimension] = {
124
+ score: score,
125
+ justification: justification.trim()
126
+ };
127
+ }
128
+ return {
129
+ scores,
130
+ annotationContradiction: raw.annotationContradiction === true,
131
+ summary: summary.trim()
132
+ };
133
+ }
134
+ export function computeDefinitionQualityTier(score) {
135
+ if (score >= 3.5)
136
+ return 'A';
137
+ if (score >= 3)
138
+ return 'B';
139
+ if (score >= 2)
140
+ return 'C';
141
+ if (score >= 1)
142
+ return 'D';
143
+ return 'F';
144
+ }
145
+ function roundScoreFromHundredths(numerator, denominator) {
146
+ return Math.floor((20 * numerator + denominator) / (2 * denominator)) / 10;
147
+ }
148
+ function roundScoreFromTenths(numerator, denominator) {
149
+ return Math.floor((2 * numerator + denominator) / (2 * denominator)) / 10;
150
+ }
151
+ export function finalizeDefinitionQuality(params) {
152
+ const context = buildDefinitionQualityContext(params.tool);
153
+ const parsed = parseDefinitionQualityEvaluation(isRecord(params.evaluation) && 'definitionQuality' in params.evaluation
154
+ ? params.evaluation
155
+ : { definitionQuality: params.evaluation });
156
+ const missing = !params.tool.description?.trim();
157
+ const tautological = !missing &&
158
+ [params.tool.name, params.tool.title].some((value) => value?.trim().toLowerCase() === params.tool.description?.trim().toLowerCase());
159
+ const flags = [];
160
+ if (missing)
161
+ flags.push('no_description');
162
+ if (tautological)
163
+ flags.push('tautological_description');
164
+ if (parsed.annotationContradiction)
165
+ flags.push('annotation_contradiction');
166
+ const dimensions = {};
167
+ let weighted = 0;
168
+ for (const dimension of Object.keys(DEFINITION_QUALITY_DIMENSIONS)) {
169
+ const score = missing
170
+ ? 1
171
+ : dimension === 'purpose_clarity' && tautological
172
+ ? Math.min(parsed.scores[dimension].score, 2)
173
+ : parsed.scores[dimension].score;
174
+ weighted += score * DEFINITION_QUALITY_DIMENSIONS[dimension];
175
+ dimensions[dimension] = {
176
+ score: score,
177
+ weight: DEFINITION_QUALITY_DIMENSIONS[dimension],
178
+ justification: missing
179
+ ? 'The tool has no usable description to evaluate.'
180
+ : parsed.scores[dimension].justification
181
+ };
182
+ }
183
+ const overallScore = missing ? 1 : roundScoreFromHundredths(weighted, 100);
184
+ const smells = Object.keys(dimensions).filter((dimension) => dimensions[dimension].score < 3);
185
+ return {
186
+ methodology: 'mcplab-definition-quality',
187
+ methodologyVersion: '1.0',
188
+ methodologySource: 'https://github.com/glama-ai/tool-definition-quality-score',
189
+ scoredAt: params.now ?? new Date().toISOString(),
190
+ definitionHash: context.definitionHash,
191
+ overallScore,
192
+ tier: computeDefinitionQualityTier(overallScore),
193
+ passing: overallScore >= 3,
194
+ summary: missing
195
+ ? 'This tool has no description, so an agent cannot reliably understand when to use it.'
196
+ : parsed.summary,
197
+ dimensions,
198
+ smells,
199
+ flags,
200
+ contextSignals: context
201
+ };
202
+ }
203
+ export function computeDefinitionQualityAggregate(items, toolsDiscovered) {
204
+ if (items.length === 0) {
205
+ return {
206
+ label: toolsDiscovered === 0 ? 'server' : 'selection',
207
+ score: 0,
208
+ tier: 'F',
209
+ toolsScored: 0,
210
+ toolsDiscovered,
211
+ toolsPassing: 0,
212
+ meanScore: 0,
213
+ minimumScore: 0
214
+ };
215
+ }
216
+ const scoresTenths = items.map((item) => Math.round(item.quality.overallScore * 10));
217
+ const sumTenths = scoresTenths.reduce((sum, score) => sum + score, 0);
218
+ const minimumTenths = Math.min(...scoresTenths);
219
+ const score = roundScoreFromTenths(6 * sumTenths + 4 * items.length * minimumTenths, 10 * items.length);
220
+ const weakest = items[scoresTenths.indexOf(minimumTenths)];
221
+ const weakestDimension = Object.keys(DEFINITION_QUALITY_DIMENSIONS).sort((a, b) => (5 - weakest.quality.dimensions[b].score) * DEFINITION_QUALITY_DIMENSIONS[b] -
222
+ (5 - weakest.quality.dimensions[a].score) * DEFINITION_QUALITY_DIMENSIONS[a])[0];
223
+ return {
224
+ label: items.length === toolsDiscovered ? 'server' : 'selection',
225
+ score,
226
+ tier: computeDefinitionQualityTier(score),
227
+ toolsScored: items.length,
228
+ toolsDiscovered,
229
+ toolsPassing: items.filter((item) => item.quality.passing).length,
230
+ meanScore: roundScoreFromTenths(sumTenths, 10 * items.length),
231
+ minimumScore: minimumTenths / 10,
232
+ weakestTool: weakest.toolName,
233
+ weakestDimension,
234
+ bestNextAction: weakest.quality.dimensions[weakestDimension].justification
235
+ };
236
+ }
237
+ //# sourceMappingURL=tool-definition-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definition-quality.js","sourceRoot":"","sources":["../../src/app-server/tool-definition-quality.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,35 @@
1
1
  import type { HealthMcpConnectionInfo } from '@inspectr/mcplab-core';
2
2
  export type { HealthMcpConnectionInfo };
3
3
  export interface AppServerOptions {
4
- host: string;
5
- port: number;
6
- evalsDir: string;
7
- runsDir: string;
8
- toolAnalysisResultsDir: string;
9
- librariesDir: string;
10
- dev: boolean;
11
- open: boolean;
4
+ host: string;
5
+ port: number;
6
+ evalsDir: string;
7
+ runsDir: string;
8
+ toolAnalysisResultsDir: string;
9
+ librariesDir: string;
10
+ dev: boolean;
11
+ open: boolean;
12
12
  }
13
13
  export interface AppSettings {
14
- workspaceRoot: string;
15
- evalsDir: string;
16
- runsDir: string;
17
- toolAnalysisResultsDir: string;
18
- librariesDir: string;
19
- defaultQueueWorkers: number;
20
- scenarioAssistantAgentName?: string;
21
- evaluationJudgeAgentName?: string;
14
+ workspaceRoot: string;
15
+ evalsDir: string;
16
+ runsDir: string;
17
+ toolAnalysisResultsDir: string;
18
+ librariesDir: string;
19
+ defaultQueueWorkers: number;
20
+ scenarioAssistantAgentName?: string;
21
+ evaluationJudgeAgentName?: string;
22
22
  }
23
23
  export interface HealthResponse {
24
- ok: boolean;
25
- version: string;
26
- mcp: HealthMcpConnectionInfo;
24
+ ok: boolean;
25
+ version: string;
26
+ mcp: HealthMcpConnectionInfo;
27
27
  }
28
28
  export interface DevMcpServerRuntime {
29
- host: string;
30
- port: number;
31
- path: string;
32
- targetBaseUrl: string;
33
- stop: () => void;
29
+ host: string;
30
+ port: number;
31
+ path: string;
32
+ targetBaseUrl: string;
33
+ stop: () => void;
34
34
  }
35
- //# sourceMappingURL=types.d.ts.map
35
+ //# sourceMappingURL=types.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inspectr/mcplab",
3
- "version": "1.28.3",
3
+ "version": "1.28.4",
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",