scorecard-ai-mcp 2.1.1 → 2.2.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/README.md +5 -0
- package/docs-search-tool.d.mts +44 -0
- package/docs-search-tool.d.mts.map +1 -0
- package/docs-search-tool.d.ts +44 -0
- package/docs-search-tool.d.ts.map +1 -0
- package/docs-search-tool.js +43 -0
- package/docs-search-tool.js.map +1 -0
- package/docs-search-tool.mjs +39 -0
- package/docs-search-tool.mjs.map +1 -0
- package/options.d.mts +1 -0
- package/options.d.mts.map +1 -1
- package/options.d.ts +1 -0
- package/options.d.ts.map +1 -1
- package/options.js +13 -6
- package/options.js.map +1 -1
- package/options.mjs +13 -6
- package/options.mjs.map +1 -1
- package/package.json +12 -2
- package/server.d.mts.map +1 -1
- package/server.d.ts.map +1 -1
- package/server.js +8 -4
- package/server.js.map +1 -1
- package/server.mjs +8 -4
- package/server.mjs.map +1 -1
- package/src/docs-search-tool.ts +48 -0
- package/src/options.ts +17 -7
- package/src/server.ts +8 -5
- package/src/tools/index.ts +10 -0
- package/src/tools/metrics/create-metrics.ts +120 -2
- package/src/tools/metrics/get-metrics.ts +39 -0
- package/src/tools/metrics/list-metrics.ts +51 -0
- package/src/tools/metrics/update-metrics.ts +120 -2
- package/src/tools/records/list-records.ts +58 -0
- package/src/tools/runs/create-runs.ts +1 -1
- package/src/tools/runs/get-runs.ts +47 -0
- package/src/tools/runs/list-runs.ts +58 -0
- package/src/tools/systems/delete-systems.ts +1 -1
- package/src/tools/testcases/create-testcases.ts +1 -1
- package/src/tools/testcases/delete-testcases.ts +1 -1
- package/src/tools/testsets/delete-testsets.ts +1 -1
- package/tools/index.d.mts.map +1 -1
- package/tools/index.d.ts.map +1 -1
- package/tools/index.js +10 -0
- package/tools/index.js.map +1 -1
- package/tools/index.mjs +10 -0
- package/tools/index.mjs.map +1 -1
- package/tools/metrics/create-metrics.d.mts.map +1 -1
- package/tools/metrics/create-metrics.d.ts.map +1 -1
- package/tools/metrics/create-metrics.js +119 -2
- package/tools/metrics/create-metrics.js.map +1 -1
- package/tools/metrics/create-metrics.mjs +119 -2
- package/tools/metrics/create-metrics.mjs.map +1 -1
- package/tools/metrics/get-metrics.d.mts +45 -0
- package/tools/metrics/get-metrics.d.mts.map +1 -0
- package/tools/metrics/get-metrics.d.ts +45 -0
- package/tools/metrics/get-metrics.d.ts.map +1 -0
- package/tools/metrics/get-metrics.js +36 -0
- package/tools/metrics/get-metrics.js.map +1 -0
- package/tools/metrics/get-metrics.mjs +32 -0
- package/tools/metrics/get-metrics.mjs.map +1 -0
- package/tools/metrics/list-metrics.d.mts +45 -0
- package/tools/metrics/list-metrics.d.mts.map +1 -0
- package/tools/metrics/list-metrics.d.ts +45 -0
- package/tools/metrics/list-metrics.d.ts.map +1 -0
- package/tools/metrics/list-metrics.js +45 -0
- package/tools/metrics/list-metrics.js.map +1 -0
- package/tools/metrics/list-metrics.mjs +41 -0
- package/tools/metrics/list-metrics.mjs.map +1 -0
- package/tools/metrics/update-metrics.d.mts.map +1 -1
- package/tools/metrics/update-metrics.d.ts.map +1 -1
- package/tools/metrics/update-metrics.js +119 -2
- package/tools/metrics/update-metrics.js.map +1 -1
- package/tools/metrics/update-metrics.mjs +119 -2
- package/tools/metrics/update-metrics.mjs.map +1 -1
- package/tools/records/list-records.d.mts +45 -0
- package/tools/records/list-records.d.mts.map +1 -0
- package/tools/records/list-records.d.ts +45 -0
- package/tools/records/list-records.d.ts.map +1 -0
- package/tools/records/list-records.js +51 -0
- package/tools/records/list-records.js.map +1 -0
- package/tools/records/list-records.mjs +47 -0
- package/tools/records/list-records.mjs.map +1 -0
- package/tools/runs/create-runs.js +1 -1
- package/tools/runs/create-runs.js.map +1 -1
- package/tools/runs/create-runs.mjs +1 -1
- package/tools/runs/create-runs.mjs.map +1 -1
- package/tools/runs/get-runs.d.mts +45 -0
- package/tools/runs/get-runs.d.mts.map +1 -0
- package/tools/runs/get-runs.d.ts +45 -0
- package/tools/runs/get-runs.d.ts.map +1 -0
- package/tools/runs/get-runs.js +42 -0
- package/tools/runs/get-runs.js.map +1 -0
- package/tools/runs/get-runs.mjs +38 -0
- package/tools/runs/get-runs.mjs.map +1 -0
- package/tools/runs/list-runs.d.mts +45 -0
- package/tools/runs/list-runs.d.mts.map +1 -0
- package/tools/runs/list-runs.d.ts +45 -0
- package/tools/runs/list-runs.d.ts.map +1 -0
- package/tools/runs/list-runs.js +51 -0
- package/tools/runs/list-runs.js.map +1 -0
- package/tools/runs/list-runs.mjs +47 -0
- package/tools/runs/list-runs.mjs.map +1 -0
- package/tools/systems/delete-systems.js +1 -1
- package/tools/systems/delete-systems.js.map +1 -1
- package/tools/systems/delete-systems.mjs +1 -1
- package/tools/systems/delete-systems.mjs.map +1 -1
- package/tools/testcases/create-testcases.js +1 -1
- package/tools/testcases/create-testcases.js.map +1 -1
- package/tools/testcases/create-testcases.mjs +1 -1
- package/tools/testcases/create-testcases.mjs.map +1 -1
- package/tools/testcases/delete-testcases.js +1 -1
- package/tools/testcases/delete-testcases.js.map +1 -1
- package/tools/testcases/delete-testcases.mjs +1 -1
- package/tools/testcases/delete-testcases.mjs.map +1 -1
- package/tools/testsets/delete-testsets.js +1 -1
- package/tools/testsets/delete-testsets.js.map +1 -1
- package/tools/testsets/delete-testsets.mjs +1 -1
- package/tools/testsets/delete-testsets.mjs.map +1 -1
package/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
|
package/server.mjs
CHANGED
|
@@ -6,11 +6,12 @@ import Scorecard from 'scorecard-ai';
|
|
|
6
6
|
import { applyCompatibilityTransformations, defaultClientCapabilities, knownClients, parseEmbeddedJSON, } from "./compat.mjs";
|
|
7
7
|
import { dynamicTools } from "./dynamic-tools.mjs";
|
|
8
8
|
import { codeTool } from "./code-tool.mjs";
|
|
9
|
+
import docsSearchTool from "./docs-search-tool.mjs";
|
|
9
10
|
export { ClientType } from "./compat.mjs";
|
|
10
11
|
export { endpoints } from "./tools.mjs";
|
|
11
12
|
export const newMcpServer = () => new McpServer({
|
|
12
13
|
name: 'scorecard_ai_api',
|
|
13
|
-
version: '2.
|
|
14
|
+
version: '2.2.0',
|
|
14
15
|
}, { capabilities: { tools: {}, logging: {} } });
|
|
15
16
|
// Create server instance
|
|
16
17
|
export const server = newMcpServer();
|
|
@@ -105,7 +106,7 @@ export function initMcpServer(params) {
|
|
|
105
106
|
*/
|
|
106
107
|
export async function selectTools(endpoints, options) {
|
|
107
108
|
const filteredEndpoints = query(options?.filters ?? [], endpoints);
|
|
108
|
-
let includedTools = filteredEndpoints;
|
|
109
|
+
let includedTools = filteredEndpoints.slice();
|
|
109
110
|
if (includedTools.length > 0) {
|
|
110
111
|
if (options?.includeDynamicTools) {
|
|
111
112
|
includedTools = dynamicTools(includedTools);
|
|
@@ -113,7 +114,7 @@ export async function selectTools(endpoints, options) {
|
|
|
113
114
|
}
|
|
114
115
|
else {
|
|
115
116
|
if (options?.includeAllTools) {
|
|
116
|
-
includedTools = endpoints;
|
|
117
|
+
includedTools = endpoints.slice();
|
|
117
118
|
}
|
|
118
119
|
else if (options?.includeDynamicTools) {
|
|
119
120
|
includedTools = dynamicTools(endpoints);
|
|
@@ -122,9 +123,12 @@ export async function selectTools(endpoints, options) {
|
|
|
122
123
|
includedTools = [await codeTool()];
|
|
123
124
|
}
|
|
124
125
|
else {
|
|
125
|
-
includedTools = endpoints;
|
|
126
|
+
includedTools = endpoints.slice();
|
|
126
127
|
}
|
|
127
128
|
}
|
|
129
|
+
if (options?.includeDocsTools ?? true) {
|
|
130
|
+
includedTools.push(docsSearchTool);
|
|
131
|
+
}
|
|
128
132
|
const capabilities = { ...defaultClientCapabilities, ...options?.capabilities };
|
|
129
133
|
return applyCompatibilityTransformations(includedTools, capabilities);
|
|
130
134
|
}
|
package/server.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAG/E,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAC5D,EAAY,SAAS,EAAmB,KAAK,EAAE;OAC/C,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GAGtB,MAAM,oCAAoC;OAEpC,SAAS,MAAM,cAAc;OAC7B,EACL,iCAAiC,EAEjC,yBAAyB,EACzB,YAAY,EACZ,iBAAiB,GAClB;OACM,EAAE,YAAY,EAAE;OAChB,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
import { Metadata, asTextContentResult } from './tools/types';
|
|
4
|
+
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
|
|
7
|
+
export const metadata: Metadata = {
|
|
8
|
+
resource: 'all',
|
|
9
|
+
operation: 'read',
|
|
10
|
+
tags: [],
|
|
11
|
+
httpMethod: 'get',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const tool: Tool = {
|
|
15
|
+
name: 'search_docs',
|
|
16
|
+
description:
|
|
17
|
+
'Search for documentation for how to use the client to interact with the API.\nThe tool will return an array of Markdown-formatted documentation pages.',
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
query: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'The query to search for.',
|
|
24
|
+
},
|
|
25
|
+
language: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'The language for the SDK to search for.',
|
|
28
|
+
enum: ['http', 'python', 'go', 'typescript', 'terraform', 'ruby', 'java', 'kotlin'],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: ['query', 'language'],
|
|
32
|
+
},
|
|
33
|
+
annotations: {
|
|
34
|
+
readOnlyHint: true,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const docsSearchURL =
|
|
39
|
+
process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/scorecard/docs/search';
|
|
40
|
+
|
|
41
|
+
export const handler = async (_: unknown, args: Record<string, unknown> | undefined) => {
|
|
42
|
+
const body = args as any;
|
|
43
|
+
const query = new URLSearchParams(body).toString();
|
|
44
|
+
const result = await fetch(`${docsSearchURL}?${query}`);
|
|
45
|
+
return asTextContentResult(await result.json());
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default { metadata, tool, handler };
|
package/src/options.ts
CHANGED
|
@@ -17,6 +17,7 @@ export type McpOptions = {
|
|
|
17
17
|
includeDynamicTools?: boolean | undefined;
|
|
18
18
|
includeAllTools?: boolean | undefined;
|
|
19
19
|
includeCodeTools?: boolean | undefined;
|
|
20
|
+
includeDocsTools?: boolean | undefined;
|
|
20
21
|
filters?: Filter[] | undefined;
|
|
21
22
|
capabilities?: Partial<ClientCapabilities> | undefined;
|
|
22
23
|
};
|
|
@@ -55,13 +56,13 @@ export function parseCLIOptions(): CLIOptions {
|
|
|
55
56
|
.option('tools', {
|
|
56
57
|
type: 'string',
|
|
57
58
|
array: true,
|
|
58
|
-
choices: ['dynamic', 'all', 'code'],
|
|
59
|
+
choices: ['dynamic', 'all', 'code', 'docs'],
|
|
59
60
|
description: 'Use dynamic tools or all tools',
|
|
60
61
|
})
|
|
61
62
|
.option('no-tools', {
|
|
62
63
|
type: 'string',
|
|
63
64
|
array: true,
|
|
64
|
-
choices: ['dynamic', 'all', 'code'],
|
|
65
|
+
choices: ['dynamic', 'all', 'code', 'docs'],
|
|
65
66
|
description: 'Do not use any dynamic or all tools',
|
|
66
67
|
})
|
|
67
68
|
.option('tool', {
|
|
@@ -245,13 +246,15 @@ export function parseCLIOptions(): CLIOptions {
|
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
248
|
|
|
248
|
-
const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code') =>
|
|
249
|
-
|
|
249
|
+
const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code' | 'docs') =>
|
|
250
|
+
argv.noTools?.includes(toolType) ? false
|
|
251
|
+
: argv.tools?.includes(toolType) ? true
|
|
252
|
+
: undefined;
|
|
250
253
|
|
|
251
|
-
const explicitTools = Boolean(argv.tools || argv.noTools);
|
|
252
254
|
const includeDynamicTools = shouldIncludeToolType('dynamic');
|
|
253
255
|
const includeAllTools = shouldIncludeToolType('all');
|
|
254
256
|
const includeCodeTools = shouldIncludeToolType('code');
|
|
257
|
+
const includeDocsTools = shouldIncludeToolType('docs');
|
|
255
258
|
|
|
256
259
|
const transport = argv.transport as 'stdio' | 'http';
|
|
257
260
|
|
|
@@ -261,6 +264,7 @@ export function parseCLIOptions(): CLIOptions {
|
|
|
261
264
|
includeDynamicTools,
|
|
262
265
|
includeAllTools,
|
|
263
266
|
includeCodeTools,
|
|
267
|
+
includeDocsTools,
|
|
264
268
|
filters,
|
|
265
269
|
capabilities: clientCapabilities,
|
|
266
270
|
list: argv.list || false,
|
|
@@ -280,8 +284,8 @@ const coerceArray = <T extends z.ZodTypeAny>(zodType: T) =>
|
|
|
280
284
|
);
|
|
281
285
|
|
|
282
286
|
const QueryOptions = z.object({
|
|
283
|
-
tools: coerceArray(z.enum(['dynamic', 'all'])).describe('Use dynamic tools or all tools'),
|
|
284
|
-
no_tools: coerceArray(z.enum(['dynamic', 'all'])).describe('Do not use dynamic tools or all tools'),
|
|
287
|
+
tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Use dynamic tools or all tools'),
|
|
288
|
+
no_tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Do not use dynamic tools or all tools'),
|
|
285
289
|
tool: coerceArray(z.string()).describe('Include tools matching the specified names'),
|
|
286
290
|
resource: coerceArray(z.string()).describe('Include tools matching the specified resources'),
|
|
287
291
|
operation: coerceArray(z.enum(['read', 'write'])).describe(
|
|
@@ -376,11 +380,17 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M
|
|
|
376
380
|
: queryOptions.tools?.includes('all') ? true
|
|
377
381
|
: defaultOptions.includeAllTools;
|
|
378
382
|
|
|
383
|
+
let docsTools: boolean | undefined =
|
|
384
|
+
queryOptions.no_tools && queryOptions.no_tools?.includes('docs') ? false
|
|
385
|
+
: queryOptions.tools?.includes('docs') ? true
|
|
386
|
+
: defaultOptions.includeDocsTools;
|
|
387
|
+
|
|
379
388
|
return {
|
|
380
389
|
client: queryOptions.client ?? defaultOptions.client,
|
|
381
390
|
includeDynamicTools: dynamicTools,
|
|
382
391
|
includeAllTools: allTools,
|
|
383
392
|
includeCodeTools: undefined,
|
|
393
|
+
includeDocsTools: docsTools,
|
|
384
394
|
filters,
|
|
385
395
|
capabilities: clientCapabilities,
|
|
386
396
|
};
|
package/src/server.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from './compat';
|
|
22
22
|
import { dynamicTools } from './dynamic-tools';
|
|
23
23
|
import { codeTool } from './code-tool';
|
|
24
|
+
import docsSearchTool from './docs-search-tool';
|
|
24
25
|
import { McpOptions } from './options';
|
|
25
26
|
|
|
26
27
|
export { McpOptions } from './options';
|
|
@@ -33,7 +34,7 @@ export const newMcpServer = () =>
|
|
|
33
34
|
new McpServer(
|
|
34
35
|
{
|
|
35
36
|
name: 'scorecard_ai_api',
|
|
36
|
-
version: '2.
|
|
37
|
+
version: '2.2.0',
|
|
37
38
|
},
|
|
38
39
|
{ capabilities: { tools: {}, logging: {} } },
|
|
39
40
|
);
|
|
@@ -148,7 +149,7 @@ export function initMcpServer(params: {
|
|
|
148
149
|
export async function selectTools(endpoints: Endpoint[], options?: McpOptions): Promise<Endpoint[]> {
|
|
149
150
|
const filteredEndpoints = query(options?.filters ?? [], endpoints);
|
|
150
151
|
|
|
151
|
-
let includedTools = filteredEndpoints;
|
|
152
|
+
let includedTools = filteredEndpoints.slice();
|
|
152
153
|
|
|
153
154
|
if (includedTools.length > 0) {
|
|
154
155
|
if (options?.includeDynamicTools) {
|
|
@@ -156,16 +157,18 @@ export async function selectTools(endpoints: Endpoint[], options?: McpOptions):
|
|
|
156
157
|
}
|
|
157
158
|
} else {
|
|
158
159
|
if (options?.includeAllTools) {
|
|
159
|
-
includedTools = endpoints;
|
|
160
|
+
includedTools = endpoints.slice();
|
|
160
161
|
} else if (options?.includeDynamicTools) {
|
|
161
162
|
includedTools = dynamicTools(endpoints);
|
|
162
163
|
} else if (options?.includeCodeTools) {
|
|
163
164
|
includedTools = [await codeTool()];
|
|
164
165
|
} else {
|
|
165
|
-
includedTools = endpoints;
|
|
166
|
+
includedTools = endpoints.slice();
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
|
-
|
|
169
|
+
if (options?.includeDocsTools ?? true) {
|
|
170
|
+
includedTools.push(docsSearchTool);
|
|
171
|
+
}
|
|
169
172
|
const capabilities = { ...defaultClientCapabilities, ...options?.capabilities };
|
|
170
173
|
return applyCompatibilityTransformations(includedTools, capabilities);
|
|
171
174
|
}
|
package/src/tools/index.ts
CHANGED
|
@@ -17,9 +17,14 @@ import list_testcases from './testcases/list-testcases';
|
|
|
17
17
|
import delete_testcases from './testcases/delete-testcases';
|
|
18
18
|
import get_testcases from './testcases/get-testcases';
|
|
19
19
|
import create_runs from './runs/create-runs';
|
|
20
|
+
import list_runs from './runs/list-runs';
|
|
21
|
+
import get_runs from './runs/get-runs';
|
|
20
22
|
import create_metrics from './metrics/create-metrics';
|
|
21
23
|
import update_metrics from './metrics/update-metrics';
|
|
24
|
+
import list_metrics from './metrics/list-metrics';
|
|
25
|
+
import get_metrics from './metrics/get-metrics';
|
|
22
26
|
import create_records from './records/create-records';
|
|
27
|
+
import list_records from './records/list-records';
|
|
23
28
|
import upsert_scores from './scores/upsert-scores';
|
|
24
29
|
import update_systems from './systems/update-systems';
|
|
25
30
|
import list_systems from './systems/list-systems';
|
|
@@ -48,9 +53,14 @@ addEndpoint(list_testcases);
|
|
|
48
53
|
addEndpoint(delete_testcases);
|
|
49
54
|
addEndpoint(get_testcases);
|
|
50
55
|
addEndpoint(create_runs);
|
|
56
|
+
addEndpoint(list_runs);
|
|
57
|
+
addEndpoint(get_runs);
|
|
51
58
|
addEndpoint(create_metrics);
|
|
52
59
|
addEndpoint(update_metrics);
|
|
60
|
+
addEndpoint(list_metrics);
|
|
61
|
+
addEndpoint(get_metrics);
|
|
53
62
|
addEndpoint(create_records);
|
|
63
|
+
addEndpoint(list_records);
|
|
54
64
|
addEndpoint(upsert_scores);
|
|
55
65
|
addEndpoint(update_systems);
|
|
56
66
|
addEndpoint(list_systems);
|
|
@@ -130,7 +130,7 @@ export const tool: Tool = {
|
|
|
130
130
|
},
|
|
131
131
|
guidelines: {
|
|
132
132
|
type: 'string',
|
|
133
|
-
description: '
|
|
133
|
+
description: 'Guidelines for heuristic evaluation logic.',
|
|
134
134
|
},
|
|
135
135
|
passingThreshold: {
|
|
136
136
|
type: 'integer',
|
|
@@ -139,6 +139,124 @@ export const tool: Tool = {
|
|
|
139
139
|
},
|
|
140
140
|
required: ['projectId', 'evalType', 'name', 'outputType'],
|
|
141
141
|
},
|
|
142
|
+
{
|
|
143
|
+
type: 'object',
|
|
144
|
+
properties: {
|
|
145
|
+
projectId: {
|
|
146
|
+
type: 'string',
|
|
147
|
+
},
|
|
148
|
+
evalType: {
|
|
149
|
+
type: 'string',
|
|
150
|
+
description: 'AI-based evaluation type.',
|
|
151
|
+
enum: ['ai'],
|
|
152
|
+
},
|
|
153
|
+
name: {
|
|
154
|
+
type: 'string',
|
|
155
|
+
description: 'The name of the Metric.',
|
|
156
|
+
},
|
|
157
|
+
outputType: {
|
|
158
|
+
type: 'string',
|
|
159
|
+
description: 'Float output type (0-1).',
|
|
160
|
+
enum: ['float'],
|
|
161
|
+
},
|
|
162
|
+
promptTemplate: {
|
|
163
|
+
type: 'string',
|
|
164
|
+
description:
|
|
165
|
+
'The complete prompt template for AI evaluation. Should include placeholders for dynamic content.',
|
|
166
|
+
},
|
|
167
|
+
description: {
|
|
168
|
+
type: 'string',
|
|
169
|
+
description: 'The description of the Metric.',
|
|
170
|
+
},
|
|
171
|
+
evalModelName: {
|
|
172
|
+
type: 'string',
|
|
173
|
+
description: 'The AI model to use for evaluation.',
|
|
174
|
+
},
|
|
175
|
+
guidelines: {
|
|
176
|
+
type: 'string',
|
|
177
|
+
description: 'Guidelines for AI evaluation on how to score the metric.',
|
|
178
|
+
},
|
|
179
|
+
passingThreshold: {
|
|
180
|
+
type: 'number',
|
|
181
|
+
description: 'Threshold for determining pass/fail from float scores (0.0-1.0).',
|
|
182
|
+
},
|
|
183
|
+
temperature: {
|
|
184
|
+
type: 'number',
|
|
185
|
+
description: 'The temperature for AI evaluation (0-2).',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
required: ['projectId', 'evalType', 'name', 'outputType', 'promptTemplate'],
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: 'object',
|
|
192
|
+
properties: {
|
|
193
|
+
projectId: {
|
|
194
|
+
type: 'string',
|
|
195
|
+
},
|
|
196
|
+
evalType: {
|
|
197
|
+
type: 'string',
|
|
198
|
+
description: 'Human-based evaluation type.',
|
|
199
|
+
enum: ['human'],
|
|
200
|
+
},
|
|
201
|
+
name: {
|
|
202
|
+
type: 'string',
|
|
203
|
+
description: 'The name of the Metric.',
|
|
204
|
+
},
|
|
205
|
+
outputType: {
|
|
206
|
+
type: 'string',
|
|
207
|
+
description: 'Float output type (0-1).',
|
|
208
|
+
enum: ['float'],
|
|
209
|
+
},
|
|
210
|
+
description: {
|
|
211
|
+
type: 'string',
|
|
212
|
+
description: 'The description of the Metric.',
|
|
213
|
+
},
|
|
214
|
+
guidelines: {
|
|
215
|
+
type: 'string',
|
|
216
|
+
description: 'Guidelines for human evaluators.',
|
|
217
|
+
},
|
|
218
|
+
passingThreshold: {
|
|
219
|
+
type: 'number',
|
|
220
|
+
description: 'Threshold for determining pass/fail from float scores (0.0-1.0).',
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
required: ['projectId', 'evalType', 'name', 'outputType'],
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
type: 'object',
|
|
227
|
+
properties: {
|
|
228
|
+
projectId: {
|
|
229
|
+
type: 'string',
|
|
230
|
+
},
|
|
231
|
+
evalType: {
|
|
232
|
+
type: 'string',
|
|
233
|
+
description: 'Heuristic-based evaluation type.',
|
|
234
|
+
enum: ['heuristic'],
|
|
235
|
+
},
|
|
236
|
+
name: {
|
|
237
|
+
type: 'string',
|
|
238
|
+
description: 'The name of the Metric.',
|
|
239
|
+
},
|
|
240
|
+
outputType: {
|
|
241
|
+
type: 'string',
|
|
242
|
+
description: 'Float output type (0-1).',
|
|
243
|
+
enum: ['float'],
|
|
244
|
+
},
|
|
245
|
+
description: {
|
|
246
|
+
type: 'string',
|
|
247
|
+
description: 'The description of the Metric.',
|
|
248
|
+
},
|
|
249
|
+
guidelines: {
|
|
250
|
+
type: 'string',
|
|
251
|
+
description: 'Guidelines for heuristic evaluation logic.',
|
|
252
|
+
},
|
|
253
|
+
passingThreshold: {
|
|
254
|
+
type: 'number',
|
|
255
|
+
description: 'Threshold for determining pass/fail from float scores (0.0-1.0).',
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
required: ['projectId', 'evalType', 'name', 'outputType'],
|
|
259
|
+
},
|
|
142
260
|
{
|
|
143
261
|
type: 'object',
|
|
144
262
|
properties: {
|
|
@@ -240,7 +358,7 @@ export const tool: Tool = {
|
|
|
240
358
|
},
|
|
241
359
|
guidelines: {
|
|
242
360
|
type: 'string',
|
|
243
|
-
description: '
|
|
361
|
+
description: 'Guidelines for heuristic evaluation logic.',
|
|
244
362
|
},
|
|
245
363
|
},
|
|
246
364
|
required: ['projectId', 'evalType', 'name', 'outputType'],
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
import { Metadata, asTextContentResult } from 'scorecard-ai-mcp/tools/types';
|
|
4
|
+
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import Scorecard from 'scorecard-ai';
|
|
7
|
+
|
|
8
|
+
export const metadata: Metadata = {
|
|
9
|
+
resource: 'metrics',
|
|
10
|
+
operation: 'read',
|
|
11
|
+
tags: [],
|
|
12
|
+
httpMethod: 'get',
|
|
13
|
+
httpPath: '/metrics/{metricId}',
|
|
14
|
+
operationId: 'getMetric',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const tool: Tool = {
|
|
18
|
+
name: 'get_metrics',
|
|
19
|
+
description: 'Retrieve a specific Metric by ID.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
metricId: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
required: ['metricId'],
|
|
28
|
+
},
|
|
29
|
+
annotations: {
|
|
30
|
+
readOnlyHint: true,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const handler = async (client: Scorecard, args: Record<string, unknown> | undefined) => {
|
|
35
|
+
const { metricId, ...body } = args as any;
|
|
36
|
+
return asTextContentResult(await client.metrics.get(metricId));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default { metadata, tool, handler };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
import { Metadata, asTextContentResult } from 'scorecard-ai-mcp/tools/types';
|
|
4
|
+
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import Scorecard from 'scorecard-ai';
|
|
7
|
+
|
|
8
|
+
export const metadata: Metadata = {
|
|
9
|
+
resource: 'metrics',
|
|
10
|
+
operation: 'read',
|
|
11
|
+
tags: [],
|
|
12
|
+
httpMethod: 'get',
|
|
13
|
+
httpPath: '/projects/{projectId}/metrics',
|
|
14
|
+
operationId: 'listMetrics',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const tool: Tool = {
|
|
18
|
+
name: 'list_metrics',
|
|
19
|
+
description:
|
|
20
|
+
'List Metrics configured for the specified Project. Metrics are returned in reverse chronological order.',
|
|
21
|
+
inputSchema: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
projectId: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
},
|
|
27
|
+
cursor: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description:
|
|
30
|
+
'Cursor for pagination. Pass the `nextCursor` from the previous response to get the next page of results.',
|
|
31
|
+
},
|
|
32
|
+
limit: {
|
|
33
|
+
type: 'integer',
|
|
34
|
+
description:
|
|
35
|
+
'Maximum number of items to return (1-100). Use with `cursor` for pagination through large sets.',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ['projectId'],
|
|
39
|
+
},
|
|
40
|
+
annotations: {
|
|
41
|
+
readOnlyHint: true,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const handler = async (client: Scorecard, args: Record<string, unknown> | undefined) => {
|
|
46
|
+
const { projectId, ...body } = args as any;
|
|
47
|
+
const response = await client.metrics.list(projectId, body).asResponse();
|
|
48
|
+
return asTextContentResult(await response.json());
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export default { metadata, tool, handler };
|