@uluops/registry-mcp 0.10.1 → 0.10.2

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/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.10.2] - 2026-09-29
6
+
7
+ ### Fixed
8
+
9
+ - File rendering retains inline metadata, including selected model, and warnings alongside path/byte receipts, with the full-profile default preserved.
10
+ - File output verifies physical containment against the configured root and uses an exclusive create when overwrite is omitted.
11
+
12
+ ### Changed
13
+
14
+ - Document server-host output paths, `OUTPUT_BASE_DIR`/cwd resolution, symlink refusal and explicit overwrite in the tool schema and examples.
15
+
5
16
  ## [0.10.1] - 2026-09-28
6
17
 
7
18
  ### Changed
package/README.md CHANGED
@@ -112,6 +112,27 @@ compare_effectiveness({ type: "agent", name: "code-validator", versions: ["1.0.0
112
112
  omitted, including UluOps-specific content. Pass `render_profile: "core"` explicitly
113
113
  to render without that content; both inline and file-write results report the effective profile.
114
114
 
115
+ `output_path` writes on the **MCP server host**, within `OUTPUT_BASE_DIR` (default:
116
+ server process cwd). Relative paths resolve from that cwd, even when a different
117
+ root is configured. The root must exist; missing directories below it are created.
118
+ Paths outside the root and traversal escaping it are refused. Existing symlinks in
119
+ the file or directories below the root are checked and refused before rendering. Existing files require `overwrite: true`. Remote clients
120
+ should omit `output_path` and consume `markdown` inline.
121
+
122
+ File responses retain the inline rendering metadata (`target`, `renderProfile`,
123
+ `selectedModel`, `promptHash`, `warnings`, and any SDK metadata when supplied) alongside `success`,
124
+ `output_path`, and UTF-8 `bytes`; `markdown` is written to disk. Warnings and optional
125
+ metadata have the same presence and values as inline output.
126
+
127
+ ```jsonc
128
+ // Inline output for remote clients
129
+ render_definition({ type: "agent", name: "code-validator", target: "codex" })
130
+ // Write beneath the server cwd (or use an absolute path inside OUTPUT_BASE_DIR)
131
+ render_definition({ type: "agent", name: "code-validator", target: "codex", output_path: "output/code-validator.toml" })
132
+ // Explicit replacement retains rendering diagnostics
133
+ render_definition({ type: "agent", name: "code-validator", target: "codex", output_path: "output/code-validator.toml", overwrite: true })
134
+ ```
135
+
115
136
  ### Definition management (P1)
116
137
  | Tool | Description |
117
138
  |------|-------------|
@@ -1 +1 @@
1
- {"version":3,"file":"render-definition.d.ts","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BtC,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CA+GN"}
1
+ {"version":3,"file":"render-definition.d.ts","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BtC,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CA4HN"}
@@ -5,7 +5,7 @@
5
5
  * Optionally write the markdown directly to a file via output_path.
6
6
  */
7
7
  import { getDefaultType } from '../utils/session-state.js';
8
- import { writeFile, mkdir, lstat, access } from 'node:fs/promises';
8
+ import { writeFile, mkdir, lstat, access, realpath } from 'node:fs/promises';
9
9
  import { dirname, resolve, relative } from 'node:path';
10
10
  import { z } from 'zod';
11
11
  import { DefinitionTypeWithDefaultSchema, createSuccessResponse, createErrorResponse, } from '../types/index.js';
@@ -41,7 +41,7 @@ export const RenderDefinitionInputSchema = z.object({
41
41
  output_path: z
42
42
  .string()
43
43
  .min(1)
44
- .describe('Write rendered output to this file path instead of returning it in the response. Written on the MCP server host\'s filesystem, not the caller\'s — remote callers should omit this and take the rendered output from the response.')
44
+ .describe('Write rendered output to this file path instead of returning it in the response. Written on the MCP server host\'s filesystem, not the caller\'s. Must stay within OUTPUT_BASE_DIR (defaults to the server process cwd); relative paths resolve from that cwd. Symlink paths are refused. Remote callers should omit this and take the rendered output from the response.')
45
45
  .optional(),
46
46
  overwrite: z
47
47
  .boolean()
@@ -61,7 +61,7 @@ export function registerRenderDefinitionTool(server, registryClient) {
61
61
  renderProfile: result.renderProfile ?? effectiveRenderProfile,
62
62
  };
63
63
  }, { toolName: 'render_definition' });
64
- server.tool('render_definition', 'Get the rendered runtime output for a definition version. Use target to render for a specific harness (opencode, codex, gemini). Use output_path to write directly to a file.', RenderDefinitionInputSchema.shape, async (args) => {
64
+ server.tool('render_definition', 'Get the rendered runtime output for a definition version. Use target to render for a specific harness (opencode, codex, gemini). Use output_path to write on the MCP server host within OUTPUT_BASE_DIR (default: server cwd); omit it for inline output. File results retain rendering metadata and warnings.', RenderDefinitionInputSchema.shape, async (args) => {
65
65
  const parsed = RenderDefinitionInputSchema.safeParse(args);
66
66
  // RG4: this tool parses its own input, so resolve the session default
67
67
  // here (the shared handler guard does it for createToolHandler tools).
@@ -72,53 +72,62 @@ export function registerRenderDefinitionTool(server, registryClient) {
72
72
  if (!parsed.success || parsed.data.output_path === undefined) {
73
73
  return baseHandler(args);
74
74
  }
75
- // Validate output_path stays within OUTPUT_BASE_DIR
76
- const outputBaseDir = getOutputBaseDir();
77
- const absPath = resolve(parsed.data.output_path);
78
- if (!absPath.startsWith(outputBaseDir + '/') && absPath !== outputBaseDir) {
79
- return createErrorResponse(`output_path must resolve within ${outputBaseDir} — got ${absPath}`);
80
- }
81
- // Reject symlinks in output path to prevent symlink-following writes (CWE-59)
82
- const pathStat = await lstat(absPath).catch(() => null);
83
- if (pathStat?.isSymbolicLink() === true) {
84
- return createErrorResponse('output_path must not be a symbolic link');
85
- }
86
- // Refuse to silently overwrite an existing regular file unless the
87
- // caller has opted in with overwrite: true. Default-deny matches
88
- // `cp --no-clobber` semantics and prevents agent-driven hallucinated
89
- // paths from destroying user work without a clear signal.
90
- if (!parsed.data.overwrite) {
91
- const exists = await access(absPath).then(() => true).catch(() => false);
92
- if (exists) {
93
- return createErrorResponse(`output_path '${absPath}' already exists. Pass overwrite: true to replace it.`);
75
+ try {
76
+ // Validate output_path stays within OUTPUT_BASE_DIR
77
+ const outputBaseDir = getOutputBaseDir();
78
+ const absPath = resolve(parsed.data.output_path);
79
+ if (!absPath.startsWith(outputBaseDir + '/') && absPath !== outputBaseDir) {
80
+ return createErrorResponse(`output_path must resolve within ${outputBaseDir} — got ${absPath}`);
94
81
  }
95
- }
96
- // Verify no symlink in ancestor directories resolves outside the base dir
97
- const rel = relative(outputBaseDir, absPath);
98
- const segments = rel.split('/');
99
- let walkPath = outputBaseDir;
100
- for (const seg of segments.slice(0, -1)) {
101
- walkPath = resolve(walkPath, seg);
102
- const segStat = await lstat(walkPath).catch(() => null);
103
- if (segStat?.isSymbolicLink() === true) {
104
- return createErrorResponse('output_path contains a symbolic link in its directory path');
82
+ // The configured root may itself use a host alias (e.g., /tmp on macOS).
83
+ // Compare physical paths against that root after creating the parent.
84
+ const realBaseDir = await realpath(outputBaseDir);
85
+ // Reject symlinks in output path to prevent symlink-following writes (CWE-59)
86
+ const pathStat = await lstat(absPath).catch(() => null);
87
+ if (pathStat?.isSymbolicLink() === true) {
88
+ return createErrorResponse('output_path must not be a symbolic link');
89
+ }
90
+ // Refuse to silently overwrite an existing regular file unless the
91
+ // caller has opted in with overwrite: true. Default-deny matches
92
+ // `cp --no-clobber` semantics and prevents agent-driven hallucinated
93
+ // paths from destroying user work without a clear signal.
94
+ if (!parsed.data.overwrite) {
95
+ const exists = await access(absPath).then(() => true).catch(() => false);
96
+ if (exists) {
97
+ return createErrorResponse(`output_path '${absPath}' already exists. Pass overwrite: true to replace it.`);
98
+ }
99
+ }
100
+ // Verify no symlink in ancestor directories resolves outside the base dir
101
+ const rel = relative(outputBaseDir, absPath);
102
+ const segments = rel.split('/');
103
+ let walkPath = outputBaseDir;
104
+ for (const seg of segments.slice(0, -1)) {
105
+ walkPath = resolve(walkPath, seg);
106
+ const segStat = await lstat(walkPath).catch(() => null);
107
+ if (segStat?.isSymbolicLink() === true) {
108
+ return createErrorResponse('output_path contains a symbolic link in its directory path');
109
+ }
110
+ }
111
+ // Narrow for the compiler: undefined resolvedType was either rejected
112
+ // above (no session default) or delegated to baseHandler (parse failure).
113
+ if (resolvedType === undefined) {
114
+ return await baseHandler(args);
105
115
  }
106
- }
107
- // Narrow for the compiler: undefined resolvedType was either rejected
108
- // above (no session default) or delegated to baseHandler (parse failure).
109
- if (resolvedType === undefined) {
110
- return baseHandler(args);
111
- }
112
- try {
113
116
  const result = await registryClient.render.get(resolvedType, parsed.data.name, parsed.data.version, { target: parsed.data.target, model: parsed.data.model, renderProfile: parsed.data.render_profile ?? 'uluops-full' });
114
117
  // SDK RenderResult guarantees markdown: string
115
- const { markdown } = result;
118
+ const { markdown, ...metadata } = result;
116
119
  if (typeof markdown !== 'string') {
117
120
  return createErrorResponse('Render result missing markdown field — cannot write to file.');
118
121
  }
119
122
  await mkdir(dirname(absPath), { recursive: true });
120
- await writeFile(absPath, markdown, 'utf-8');
123
+ const realParent = await realpath(dirname(absPath));
124
+ const realOutput = resolve(realParent, relative(dirname(absPath), absPath));
125
+ if (!realOutput.startsWith(realBaseDir + '/') && realOutput !== realBaseDir) {
126
+ return createErrorResponse('output_path resolves outside the allowed root via symlink');
127
+ }
128
+ await writeFile(absPath, markdown, { encoding: 'utf-8', flag: parsed.data.overwrite ? 'w' : 'wx' });
121
129
  return createSuccessResponse({
130
+ ...metadata,
122
131
  success: true,
123
132
  output_path: absPath,
124
133
  bytes: Buffer.byteLength(markdown, 'utf-8'),
@@ -126,6 +135,9 @@ export function registerRenderDefinitionTool(server, registryClient) {
126
135
  });
127
136
  }
128
137
  catch (error) {
138
+ if (error instanceof Error && 'code' in error && error.code === 'EEXIST') {
139
+ return createErrorResponse('output_path already exists. Pass overwrite: true to replace it.');
140
+ }
129
141
  if (error instanceof z.ZodError) {
130
142
  return mapZodErrorToMcp(error);
131
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render-definition.js","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,+BAA+B,EAE/B,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;GAKG;AACH,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5C,cAAc,EAAE,CAAC;SACd,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;SAC7B,QAAQ,CAAC,+HAA+H,CAAC;SACzI,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+FAA+F,CAAC;SACzG,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,uEAAuE,CAAC;SACjF,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,oOAAoO,CAAC;SAC9O,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,CAAC,iLAAiL,CAAC;SAC3L,OAAO,CAAC,KAAK,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAC1C,MAAiC,EACjC,cAA8B;IAE9B,MAAM,WAAW,GAAG,iBAAiB,CAAC,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7E,MAAM,sBAAsB,GAAG,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;YACxE,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,aAAa,EAAE,sBAAsB;SACtC,CAAC,CAAC;QACH,OAAO;YACL,GAAG,MAAM;YACT,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,sBAAsB;SAC9D,CAAC;IACJ,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAEtC,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,+KAA+K,EAC/K,2BAA2B,CAAC,KAAK,EACjC,KAAK,EAAE,IAAa,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,MAAM,CAAC,OAAO,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,mBAAmB,CACxB,+HAA+H,CAChI,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,oDAAoD;QACpD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC1E,OAAO,mBAAmB,CACxB,mCAAmC,aAAa,UAAU,OAAO,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,QAAQ,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,mBAAmB,CAAC,yCAAyC,CAAC,CAAC;QACxE,CAAC;QAED,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,0DAA0D;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,mBAAmB,CACxB,gBAAgB,OAAO,uDAAuD,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,GAAG,aAAa,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvC,OAAO,mBAAmB,CAAC,4DAA4D,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,0EAA0E;QAC1E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,GAAG,CAC5C,YAAY,EACZ,MAAM,CAAC,IAAI,CAAC,IAAI,EAChB,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,EAAE,CACrH,CAAC;YAEF,+CAA+C;YAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,mBAAmB,CACxB,8DAA8D,CAC/D,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE5C,OAAO,qBAAqB,CAAC;gBAC3B,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAC3C,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa;aACnF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"render-definition.js","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uluops/registry-mcp",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "description": "MCP server for the UluOps Registry API — definition management, versioning, and analytics",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -62,7 +62,7 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@modelcontextprotocol/sdk": "^1.30.0",
65
- "@uluops/registry-sdk": "^0.56.0",
65
+ "@uluops/registry-sdk": "^0.56.1",
66
66
  "@uluops/sdk-core": "0.18.0",
67
67
  "mcp-secure-server": "0.0.25-security",
68
68
  "zod": "3.25.76"