@promptlayer/mcp-server 1.8.0 → 1.9.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/gcp/package.json CHANGED
@@ -22,5 +22,18 @@
22
22
  },
23
23
  "engines": {
24
24
  "node": ">=20.0.0"
25
+ },
26
+ "overrides": {
27
+ "hono": "^4.12.14",
28
+ "@hono/node-server": "^1.19.13",
29
+ "express-rate-limit": "^8.2.2",
30
+ "express": {
31
+ "path-to-regexp": "^0.1.13"
32
+ },
33
+ "router": {
34
+ "path-to-regexp": "^8.4.0"
35
+ },
36
+ "qs": "^6.14.2",
37
+ "ajv": "^8.18.0"
25
38
  }
26
39
  }
package/gcp/src/index.ts CHANGED
@@ -90,6 +90,14 @@ const TOOL_HANDLERS: Record<string, ToolHandler> = {
90
90
  "get-workflow-labels": (c, { workflow_id_or_name }) =>
91
91
  c.getWorkflowLabels(workflow_id_or_name as string),
92
92
 
93
+ // Tool Registry
94
+ "list-tool-registries": (c) => c.listToolRegistries(),
95
+ "get-tool-registry": (c, { api_key: _, identifier, ...p }) =>
96
+ c.getToolRegistry(identifier as string, p),
97
+ "create-tool-registry": (c, a) => c.createToolRegistry(body(a)),
98
+ "create-tool-version": (c, { api_key: _, identifier, ...b }) =>
99
+ c.createToolVersion(identifier as string, b),
100
+
93
101
  // Folders
94
102
  "create-folder": (c, a) => c.createFolder(body(a)),
95
103
  "edit-folder": (c, { api_key: _, folder_id, ...b }) =>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptlayer/mcp-server",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Model Context Protocol server for PromptLayer",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -32,5 +32,13 @@
32
32
  },
33
33
  "engines": {
34
34
  "node": ">=18.0.0"
35
+ },
36
+ "overrides": {
37
+ "hono": "^4.12.14",
38
+ "@hono/node-server": "^1.19.13",
39
+ "express-rate-limit": "^8.2.2",
40
+ "path-to-regexp": "^8.4.0",
41
+ "qs": "^6.14.2",
42
+ "ajv": "^8.18.0"
35
43
  }
36
44
  }
package/src/client.ts CHANGED
@@ -99,6 +99,12 @@ export class PromptLayerClient {
99
99
  runWorkflow(name: string, body: Body) { return this.post(`/workflows/${this.enc(name)}/run`, body); }
100
100
  getWorkflowVersionExecutionResults(params: Body) { return this.get("/workflow-version-execution-results", params); }
101
101
 
102
+ // Tool Registry
103
+ listToolRegistries() { return this.get("/api/public/v2/tool-registry"); }
104
+ getToolRegistry(identifier: string, params?: Body) { return this.get(`/api/public/v2/tool-registry/${this.enc(identifier)}`, params); }
105
+ createToolRegistry(body: Body) { return this.post("/api/public/v2/tool-registry", body); }
106
+ createToolVersion(identifier: string, body: Body) { return this.post(`/api/public/v2/tool-registry/${this.enc(identifier)}/versions`, body); }
107
+
102
108
  // Folders
103
109
  createFolder(body: Body) { return this.post("/api/public/v2/folders", body); }
104
110
  editFolder(folderId: number, body: Body) { return this.patch(`/api/public/v2/folders/${folderId}`, body); }
package/src/handlers.ts CHANGED
@@ -139,6 +139,18 @@ export function registerAllTools(server: any) {
139
139
  (c, a) => c.getWorkflowLabels((a as { workflow_id_or_name: string }).workflow_id_or_name),
140
140
  (r) => { const labels = (r as { release_labels?: unknown[] }).release_labels; return `${labels?.length ?? 0} label(s) found`; });
141
141
 
142
+ // Tool Registry
143
+ reg(t["list-tool-registries"], (c) => c.listToolRegistries(),
144
+ (r) => { const tools = (r as { tool_registries?: unknown[] }).tool_registries; return `${tools?.length ?? 0} tool(s)`; });
145
+ reg(t["get-tool-registry"],
146
+ (c, a) => { const { api_key: _, identifier, ...p } = a as { identifier: string; api_key?: string } & Args; return c.getToolRegistry(identifier, p); },
147
+ (r) => { const t_ = (r as { tool_registry?: { name?: string } }).tool_registry; return `Tool "${t_?.name ?? ""}" retrieved`; });
148
+ reg(t["create-tool-registry"], (c, a) => c.createToolRegistry(body(a)),
149
+ (r) => { const t_ = (r as { tool_registry?: { name?: string; id?: number } }).tool_registry; return t_ ? `Tool "${t_.name}" created (ID: ${t_.id})` : "Tool created"; });
150
+ reg(t["create-tool-version"],
151
+ (c, a) => { const { api_key: _, identifier, ...b } = a as { identifier: string; api_key?: string } & Args; return c.createToolVersion(identifier, b); },
152
+ (r) => { const v = (r as { version?: { number?: number } }).version; return v ? `Version ${v.number} created` : "Version created"; });
153
+
142
154
  // Folders
143
155
  reg(t["create-folder"], (c, a) => c.createFolder(body(a)), () => "Folder created");
144
156
  reg(t["edit-folder"],
package/src/types.ts CHANGED
@@ -496,6 +496,34 @@ export const GetWorkflowLabelsArgsSchema = z.object({
496
496
  });
497
497
 
498
498
 
499
+ // ── Tool Registry ────────────────────────────────────────────────────
500
+
501
+ export const ListToolRegistriesArgsSchema = z.object({
502
+ api_key: z.string().optional().describe("PromptLayer API key (optional, defaults to PROMPTLAYER_API_KEY env var)"),
503
+ });
504
+
505
+ export const GetToolRegistryArgsSchema = z.object({
506
+ identifier: z.string().describe("Tool ID (numeric) or name"),
507
+ label: z.string().optional().describe("Resolve version by label name (e.g. 'production')"),
508
+ version: z.number().int().optional().describe("Resolve by specific version number"),
509
+ api_key: z.string().optional().describe("PromptLayer API key (optional, defaults to PROMPTLAYER_API_KEY env var)"),
510
+ });
511
+
512
+ export const CreateToolRegistryArgsSchema = z.object({
513
+ name: z.string().describe("Tool name (unique per workspace)"),
514
+ tool_definition: z.record(z.unknown()).describe("Tool definition in OpenAI function-calling format: {type: 'function', function: {name, description, parameters}}"),
515
+ folder_id: z.number().int().optional().describe("Folder ID to place tool in"),
516
+ commit_message: z.string().optional().describe("Commit message for the initial version"),
517
+ api_key: z.string().optional().describe("PromptLayer API key (optional, defaults to PROMPTLAYER_API_KEY env var)"),
518
+ });
519
+
520
+ export const CreateToolVersionArgsSchema = z.object({
521
+ identifier: z.string().describe("Tool ID (numeric) or name"),
522
+ tool_definition: z.record(z.unknown()).describe("Updated tool definition in OpenAI function-calling format"),
523
+ commit_message: z.string().optional().describe("Commit message describing what changed"),
524
+ api_key: z.string().optional().describe("PromptLayer API key (optional, defaults to PROMPTLAYER_API_KEY env var)"),
525
+ });
526
+
499
527
  export const CreateFolderArgsSchema = z.object({
500
528
  name: z.string().describe("Folder name (unique within parent)"),
501
529
  parent_id: z.number().int().optional().describe("Parent folder ID (root if omitted)"),
@@ -974,6 +1002,32 @@ export const TOOL_DEFINITIONS = {
974
1002
  annotations: { readOnlyHint: true },
975
1003
  },
976
1004
 
1005
+ // ── Tool Registry ───────────────────────────────────────────────────
1006
+ "list-tool-registries": {
1007
+ name: "list-tool-registries",
1008
+ description: "List all tools in the Tool Registry for the workspace. Returns tool names, IDs, and metadata.",
1009
+ inputSchema: ListToolRegistriesArgsSchema,
1010
+ annotations: { readOnlyHint: true },
1011
+ },
1012
+ "get-tool-registry": {
1013
+ name: "get-tool-registry",
1014
+ description: "Get a tool from the Tool Registry by ID or name. Optionally resolve a specific version by label or version number. Returns the tool definition and metadata.",
1015
+ inputSchema: GetToolRegistryArgsSchema,
1016
+ annotations: { readOnlyHint: true },
1017
+ },
1018
+ "create-tool-registry": {
1019
+ name: "create-tool-registry",
1020
+ description: "Create a new tool in the Tool Registry with an initial version. The tool definition should be in OpenAI function-calling format.",
1021
+ inputSchema: CreateToolRegistryArgsSchema,
1022
+ annotations: { readOnlyHint: false },
1023
+ },
1024
+ "create-tool-version": {
1025
+ name: "create-tool-version",
1026
+ description: "Create a new version of an existing tool in the Tool Registry. Each version is immutable — this adds a new version with the updated definition.",
1027
+ inputSchema: CreateToolVersionArgsSchema,
1028
+ annotations: { readOnlyHint: false },
1029
+ },
1030
+
977
1031
  // ── Folders ─────────────────────────────────────────────────────────
978
1032
  "create-folder": {
979
1033
  name: "create-folder",