@burdenoff/mcp-libs 2026.1007.1 → 2026.1007.3

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.
@@ -716,8 +716,8 @@ var RESUME_RUN = `
716
716
  }
717
717
  `;
718
718
  var RETRY_RUN = `
719
- mutation RetryNode($id: ID!, $nodeId: String!) {
720
- retryNode(id: $id, nodeId: $nodeId) {
719
+ mutation RetryNode($id: ID!) {
720
+ retryNode(id: $id) {
721
721
  id
722
722
  nodeId
723
723
  nodeType
@@ -1014,7 +1014,7 @@ function registerCredentialTools(server, ctx, track) {
1014
1014
  description: "Create a connection against a provider. Secrets go to the vault; pass a reference, never a raw secret in config.",
1015
1015
  inputSchema: {
1016
1016
  name: z.string().describe("Connection name"),
1017
- providerId: z.string().describe("Provider ID"),
1017
+ providerId: z.string().describe('Provider ID or key (e.g. "openai")'),
1018
1018
  description: z.string().optional().describe("Description"),
1019
1019
  config: z.unknown().optional().describe("Non-secret provider config as JSON"),
1020
1020
  context: z.unknown().optional().describe("Context JSON"),
@@ -1123,6 +1123,11 @@ function registerCredentialTools(server, ctx, track) {
1123
1123
  })
1124
1124
  );
1125
1125
  }
1126
+ var ISO_DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
1127
+ function normalizeDate(value, endOfDay) {
1128
+ if (typeof value !== "string" || !ISO_DATE_ONLY.test(value)) return value;
1129
+ return `${value}T${endOfDay ? "23:59:59" : "00:00:00"}Z`;
1130
+ }
1126
1131
  function registerInsightTools(server, ctx, track) {
1127
1132
  server.registerTool(
1128
1133
  track(mcpToolName(ctx.productName, "dashboard_summary")),
@@ -1154,8 +1159,13 @@ function registerInsightTools(server, ctx, track) {
1154
1159
  }
1155
1160
  },
1156
1161
  async (args) => runTool(ctx, "usage_metrics", async () => {
1162
+ const normalised = {
1163
+ ...args,
1164
+ startDate: normalizeDate(args.startDate, false),
1165
+ endDate: normalizeDate(args.endDate, true)
1166
+ };
1157
1167
  const data = await ctx.gql.workspace.request(GET_USAGE_METRICS, {
1158
- input: definedInput({ ...args })
1168
+ input: definedInput(normalised)
1159
1169
  });
1160
1170
  return jsonResult(data.usageMetrics);
1161
1171
  })
@@ -1390,10 +1400,14 @@ function registerRunTools(server, ctx, track) {
1390
1400
  nodeId: z.string().describe("Node ID to retry")
1391
1401
  }
1392
1402
  },
1393
- async ({ id, nodeId }) => runTool(ctx, "runs_retry_node", async () => {
1403
+ async ({ id: runId, nodeId }) => runTool(ctx, "runs_retry_node", async () => {
1404
+ const runData = await ctx.gql.workspace.request(GET_RUN, { id: runId });
1405
+ const state = runData.workflowRun?.nodeStates?.find((s) => s.nodeId === nodeId);
1406
+ if (!state) {
1407
+ return errorResult(`No node state found for run ${runId} node ${nodeId}`);
1408
+ }
1394
1409
  const data = await ctx.gql.workspace.request(RETRY_RUN, {
1395
- id,
1396
- nodeId
1410
+ id: state.id
1397
1411
  });
1398
1412
  return jsonResult(data.retryNode);
1399
1413
  })
@@ -1537,13 +1551,13 @@ function registerWebhookTools(server, ctx, track) {
1537
1551
  track(mcpToolName(ctx.productName, "webhooks_create")),
1538
1552
  {
1539
1553
  title: "Create Webhook",
1540
- description: "Register an event source that triggers a workflow. triggerNodeId names the trigger node the event enters at.",
1554
+ description: 'Register an event source that triggers a workflow. triggerNodeId names the trigger node the event enters at. eventSource and eventType are required by the server schema (CreateEventRegistrationInput!); marking them optional in the tool wrapper produced a "Field eventSource of required type String! was not provided" error on every call (BOFF-8204).',
1541
1555
  inputSchema: {
1542
1556
  name: z.string().describe("Registration name"),
1543
1557
  workflowKey: z.string().describe("Workflow key to trigger"),
1544
1558
  triggerNodeId: z.string().describe("Trigger node ID"),
1545
- eventSource: z.string().optional().describe("Event source identifier"),
1546
- eventType: z.string().optional().describe("Event type"),
1559
+ eventSource: z.string().describe("Event source identifier"),
1560
+ eventType: z.string().describe("Event type"),
1547
1561
  description: z.string().optional().describe("Description"),
1548
1562
  config: z.unknown().optional().describe("Source-specific config as JSON"),
1549
1563
  payloadMapping: z.unknown().optional().describe("Payload mapping as JSON"),