@contentful/mcp-tools 0.8.0 → 0.12.1

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/dist/index.js CHANGED
@@ -681,6 +681,7 @@ function createAiActionTools(config) {
681
681
  inputParams: GetAiActionInvocationToolParams.shape,
682
682
  annotations: {
683
683
  readOnlyHint: true,
684
+ destructiveHint: false,
684
685
  openWorldHint: false
685
686
  },
686
687
  tool: getAiActionInvocation
@@ -703,6 +704,7 @@ function createAiActionTools(config) {
703
704
  inputParams: GetAiActionToolParams.shape,
704
705
  annotations: {
705
706
  readOnlyHint: true,
707
+ destructiveHint: false,
706
708
  openWorldHint: false
707
709
  },
708
710
  tool: getAiAction
@@ -713,6 +715,7 @@ function createAiActionTools(config) {
713
715
  inputParams: ListAiActionToolParams.shape,
714
716
  annotations: {
715
717
  readOnlyHint: true,
718
+ destructiveHint: false,
716
719
  openWorldHint: false
717
720
  },
718
721
  tool: listAiAction
@@ -1535,6 +1538,7 @@ function createAssetTools(config) {
1535
1538
  inputParams: ListAssetsToolParams.shape,
1536
1539
  annotations: {
1537
1540
  readOnlyHint: true,
1541
+ destructiveHint: false,
1538
1542
  openWorldHint: false
1539
1543
  },
1540
1544
  tool: listAssets
@@ -1545,6 +1549,7 @@ function createAssetTools(config) {
1545
1549
  inputParams: GetAssetToolParams.shape,
1546
1550
  annotations: {
1547
1551
  readOnlyHint: true,
1552
+ destructiveHint: false,
1548
1553
  openWorldHint: false
1549
1554
  },
1550
1555
  tool: getAsset
@@ -2161,6 +2166,7 @@ function createContentTypeTools(config) {
2161
2166
  inputParams: GetContentTypeToolParams.shape,
2162
2167
  annotations: {
2163
2168
  readOnlyHint: true,
2169
+ destructiveHint: false,
2164
2170
  openWorldHint: false
2165
2171
  },
2166
2172
  tool: getContentType
@@ -2171,6 +2177,7 @@ function createContentTypeTools(config) {
2171
2177
  inputParams: ListContentTypesToolParams.shape,
2172
2178
  annotations: {
2173
2179
  readOnlyHint: true,
2180
+ destructiveHint: false,
2174
2181
  openWorldHint: false
2175
2182
  },
2176
2183
  tool: listContentTypes
@@ -2346,7 +2353,7 @@ var MCP_INSTRUCTIONS = `You are a helpful assistant integrated with Contentful t
2346
2353
  ## Entry Management:
2347
2354
  - For entry creation, use create_entry with clear instructions
2348
2355
  - Use entry_action for operations like publishing, unpublishing, deleting, or discarding entries
2349
- - Use update_entry for content modifications with AI assistance
2356
+ - Use update_entry for content modifications with AI assistance. Always call get_entry first and pass the returned sys.version to update_entry; this is required and prevents overwriting concurrent changes.
2350
2357
  - Use patch_entry for precise, direct modifications without AI generation (one operation at a time)
2351
2358
  - Use transform_entry when preserving rich text formatting is crucial
2352
2359
  - Use translate_entry specifically for language translation tasks
@@ -2454,6 +2461,7 @@ function createContextTools(config) {
2454
2461
  inputParams: GetInitialContextToolParams.shape,
2455
2462
  annotations: {
2456
2463
  readOnlyHint: true,
2464
+ destructiveHint: false,
2457
2465
  openWorldHint: false
2458
2466
  },
2459
2467
  tool: getInitialContext
@@ -2610,6 +2618,7 @@ function createEditorInterfaceTools(config) {
2610
2618
  inputParams: ListEditorInterfacesToolParams.shape,
2611
2619
  annotations: {
2612
2620
  readOnlyHint: true,
2621
+ destructiveHint: false,
2613
2622
  openWorldHint: false
2614
2623
  },
2615
2624
  tool: listEditorInterfaces
@@ -2620,6 +2629,7 @@ function createEditorInterfaceTools(config) {
2620
2629
  inputParams: GetEditorInterfaceToolParams.shape,
2621
2630
  annotations: {
2622
2631
  readOnlyHint: true,
2632
+ destructiveHint: false,
2623
2633
  openWorldHint: false
2624
2634
  },
2625
2635
  tool: getEditorInterface
@@ -2724,111 +2734,147 @@ function searchEntriesTool(config) {
2724
2734
  return withErrorHandling(tool2, "Error searching entries");
2725
2735
  }
2726
2736
 
2737
+ // src/tools/entries/semanticSearch.ts
2738
+ import { z as z39 } from "zod";
2739
+ var SemanticSearchToolParams = BaseToolSchema.extend({
2740
+ query: z39.string().describe(
2741
+ "Natural-language description of what you are looking for. Phrases that resemble the content of the entries you want match best \u2014 avoid questions or JSON."
2742
+ ),
2743
+ contentTypeIds: z39.array(z39.string()).min(1).optional().describe("Restrict the search to entries of these content type IDs")
2744
+ });
2745
+ function semanticSearchTool(config) {
2746
+ async function tool2(args) {
2747
+ const contentfulClient = createToolClient(config, args);
2748
+ const filter = args.contentTypeIds && args.contentTypeIds.length > 0 ? { entityType: "Entry", contentTypeIds: args.contentTypeIds } : void 0;
2749
+ const results = await contentfulClient.semanticSearch.get(
2750
+ {
2751
+ spaceId: args.spaceId,
2752
+ environmentId: args.environmentId
2753
+ },
2754
+ {
2755
+ query: args.query,
2756
+ ...filter ? { filter } : {}
2757
+ }
2758
+ );
2759
+ const entries = results.items.map((item) => ({
2760
+ id: item.sys.entity.sys.id
2761
+ }));
2762
+ return createSuccessResponse(
2763
+ "Semantic search results retrieved successfully",
2764
+ {
2765
+ entries,
2766
+ ...results.sys.correlationId !== void 0 ? { correlationId: results.sys.correlationId } : {}
2767
+ }
2768
+ );
2769
+ }
2770
+ return withErrorHandling(tool2, "Error performing semantic search");
2771
+ }
2772
+
2727
2773
  // src/tools/entries/createEntry.ts
2728
- import { z as z41 } from "zod";
2774
+ import { z as z42 } from "zod";
2729
2775
 
2730
2776
  // src/types/entryFieldSchema.ts
2731
- import { z as z40 } from "zod";
2777
+ import { z as z41 } from "zod";
2732
2778
 
2733
2779
  // src/types/richTextSchema.ts
2734
2780
  import { BLOCKS as BLOCKS2, INLINES as INLINES2, MARKS } from "@contentful/rich-text-types";
2735
- import { z as z39 } from "zod";
2736
- var emptyNodeDataSchema = z39.object({});
2737
- var entryLinkTargetSchema = z39.object({
2738
- sys: z39.object({
2739
- id: z39.string(),
2740
- type: z39.literal("Link"),
2741
- linkType: z39.literal("Entry")
2781
+ import { z as z40 } from "zod";
2782
+ var emptyNodeDataSchema = z40.object({});
2783
+ var entryLinkTargetSchema = z40.object({
2784
+ sys: z40.object({
2785
+ id: z40.string(),
2786
+ type: z40.literal("Link"),
2787
+ linkType: z40.literal("Entry")
2742
2788
  })
2743
2789
  });
2744
- var assetLinkTargetSchema = z39.object({
2745
- sys: z39.object({
2746
- id: z39.string(),
2747
- type: z39.literal("Link"),
2748
- linkType: z39.literal("Asset")
2790
+ var assetLinkTargetSchema = z40.object({
2791
+ sys: z40.object({
2792
+ id: z40.string(),
2793
+ type: z40.literal("Link"),
2794
+ linkType: z40.literal("Asset")
2749
2795
  })
2750
2796
  });
2751
- var resourceLinkTargetSchema = z39.object({
2752
- sys: z39.object({
2753
- type: z39.literal("ResourceLink"),
2754
- linkType: z39.string(),
2755
- urn: z39.string()
2797
+ var resourceLinkTargetSchema = z40.object({
2798
+ sys: z40.object({
2799
+ type: z40.literal("ResourceLink"),
2800
+ linkType: z40.string(),
2801
+ urn: z40.string()
2756
2802
  })
2757
2803
  });
2758
- var richTextMarkSchema = z39.object({
2759
- type: z39.nativeEnum(MARKS)
2804
+ var richTextMarkSchema = z40.object({
2805
+ type: z40.nativeEnum(MARKS)
2760
2806
  });
2761
- var richTextTextNodeSchema = z39.object({
2762
- nodeType: z39.literal("text"),
2763
- value: z39.string(),
2764
- marks: z39.array(richTextMarkSchema),
2807
+ var richTextTextNodeSchema = z40.object({
2808
+ nodeType: z40.literal("text"),
2809
+ value: z40.string(),
2810
+ marks: z40.array(richTextMarkSchema),
2765
2811
  data: emptyNodeDataSchema
2766
2812
  });
2767
- var embeddedEntryBlockNodeSchema = z39.object({
2768
- nodeType: z39.literal(BLOCKS2.EMBEDDED_ENTRY),
2769
- data: z39.object({
2813
+ var embeddedEntryBlockNodeSchema = z40.object({
2814
+ nodeType: z40.literal(BLOCKS2.EMBEDDED_ENTRY),
2815
+ data: z40.object({
2770
2816
  target: entryLinkTargetSchema
2771
2817
  }),
2772
- content: z39.array(z39.never())
2818
+ content: z40.array(z40.never())
2773
2819
  });
2774
- var embeddedEntryInlineNodeSchema = z39.object({
2775
- nodeType: z39.literal(INLINES2.EMBEDDED_ENTRY),
2776
- data: z39.object({
2820
+ var embeddedEntryInlineNodeSchema = z40.object({
2821
+ nodeType: z40.literal(INLINES2.EMBEDDED_ENTRY),
2822
+ data: z40.object({
2777
2823
  target: entryLinkTargetSchema
2778
2824
  }),
2779
- content: z39.array(z39.never())
2825
+ content: z40.array(z40.never())
2780
2826
  });
2781
- var embeddedAssetBlockNodeSchema = z39.object({
2782
- nodeType: z39.literal(BLOCKS2.EMBEDDED_ASSET),
2783
- data: z39.object({
2827
+ var embeddedAssetBlockNodeSchema = z40.object({
2828
+ nodeType: z40.literal(BLOCKS2.EMBEDDED_ASSET),
2829
+ data: z40.object({
2784
2830
  target: assetLinkTargetSchema
2785
2831
  }),
2786
- content: z39.array(z39.never())
2832
+ content: z40.array(z40.never())
2787
2833
  });
2788
- var hyperlinkInlineNodeSchema = z39.object({
2789
- nodeType: z39.literal(INLINES2.HYPERLINK),
2790
- data: z39.object({
2791
- uri: z39.string().url()
2834
+ var hyperlinkInlineNodeSchema = z40.object({
2835
+ nodeType: z40.literal(INLINES2.HYPERLINK),
2836
+ data: z40.object({
2837
+ uri: z40.string().url()
2792
2838
  }),
2793
- content: z39.array(richTextTextNodeSchema)
2839
+ content: z40.array(richTextTextNodeSchema)
2794
2840
  });
2795
- var entryHyperlinkInlineNodeSchema = z39.object({
2796
- nodeType: z39.literal(INLINES2.ENTRY_HYPERLINK),
2797
- data: z39.object({
2841
+ var entryHyperlinkInlineNodeSchema = z40.object({
2842
+ nodeType: z40.literal(INLINES2.ENTRY_HYPERLINK),
2843
+ data: z40.object({
2798
2844
  target: entryLinkTargetSchema
2799
2845
  }),
2800
- content: z39.array(richTextTextNodeSchema)
2846
+ content: z40.array(richTextTextNodeSchema)
2801
2847
  });
2802
- var assetHyperlinkInlineNodeSchema = z39.object({
2803
- nodeType: z39.literal(INLINES2.ASSET_HYPERLINK),
2804
- data: z39.object({
2848
+ var assetHyperlinkInlineNodeSchema = z40.object({
2849
+ nodeType: z40.literal(INLINES2.ASSET_HYPERLINK),
2850
+ data: z40.object({
2805
2851
  target: assetLinkTargetSchema
2806
2852
  }),
2807
- content: z39.array(richTextTextNodeSchema)
2853
+ content: z40.array(richTextTextNodeSchema)
2808
2854
  });
2809
- var embeddedResourceBlockNodeSchema = z39.object({
2810
- nodeType: z39.literal(BLOCKS2.EMBEDDED_RESOURCE),
2811
- data: z39.object({
2855
+ var embeddedResourceBlockNodeSchema = z40.object({
2856
+ nodeType: z40.literal(BLOCKS2.EMBEDDED_RESOURCE),
2857
+ data: z40.object({
2812
2858
  target: resourceLinkTargetSchema
2813
2859
  }),
2814
- content: z39.array(z39.never())
2860
+ content: z40.array(z40.never())
2815
2861
  });
2816
- var embeddedResourceInlineNodeSchema = z39.object({
2817
- nodeType: z39.literal(INLINES2.EMBEDDED_RESOURCE),
2818
- data: z39.object({
2862
+ var embeddedResourceInlineNodeSchema = z40.object({
2863
+ nodeType: z40.literal(INLINES2.EMBEDDED_RESOURCE),
2864
+ data: z40.object({
2819
2865
  target: resourceLinkTargetSchema
2820
2866
  }),
2821
- content: z39.array(z39.never())
2867
+ content: z40.array(z40.never())
2822
2868
  });
2823
- var resourceHyperlinkInlineNodeSchema = z39.object({
2824
- nodeType: z39.literal(INLINES2.RESOURCE_HYPERLINK),
2825
- data: z39.object({
2869
+ var resourceHyperlinkInlineNodeSchema = z40.object({
2870
+ nodeType: z40.literal(INLINES2.RESOURCE_HYPERLINK),
2871
+ data: z40.object({
2826
2872
  target: resourceLinkTargetSchema
2827
2873
  }),
2828
- content: z39.array(richTextTextNodeSchema)
2874
+ content: z40.array(richTextTextNodeSchema)
2829
2875
  });
2830
- var richTextInlineNodeSchema = z39.lazy(
2831
- () => z39.union([
2876
+ var richTextInlineNodeSchema = z40.lazy(
2877
+ () => z40.union([
2832
2878
  richTextTextNodeSchema,
2833
2879
  embeddedEntryInlineNodeSchema,
2834
2880
  hyperlinkInlineNodeSchema,
@@ -2838,17 +2884,17 @@ var richTextInlineNodeSchema = z39.lazy(
2838
2884
  resourceHyperlinkInlineNodeSchema
2839
2885
  ])
2840
2886
  );
2841
- var paragraphNodeSchema = z39.lazy(
2842
- () => z39.object({
2843
- nodeType: z39.literal(BLOCKS2.PARAGRAPH),
2887
+ var paragraphNodeSchema = z40.lazy(
2888
+ () => z40.object({
2889
+ nodeType: z40.literal(BLOCKS2.PARAGRAPH),
2844
2890
  data: emptyNodeDataSchema,
2845
- content: z39.array(richTextInlineNodeSchema)
2891
+ content: z40.array(richTextInlineNodeSchema)
2846
2892
  })
2847
2893
  );
2848
- var headingNodeSchema = (headingNodeType) => z39.object({
2849
- nodeType: z39.literal(headingNodeType),
2894
+ var headingNodeSchema = (headingNodeType) => z40.object({
2895
+ nodeType: z40.literal(headingNodeType),
2850
2896
  data: emptyNodeDataSchema,
2851
- content: z39.array(richTextInlineNodeSchema)
2897
+ content: z40.array(richTextInlineNodeSchema)
2852
2898
  });
2853
2899
  var heading1NodeSchema = headingNodeSchema(BLOCKS2.HEADING_1);
2854
2900
  var heading2NodeSchema = headingNodeSchema(BLOCKS2.HEADING_2);
@@ -2856,56 +2902,56 @@ var heading3NodeSchema = headingNodeSchema(BLOCKS2.HEADING_3);
2856
2902
  var heading4NodeSchema = headingNodeSchema(BLOCKS2.HEADING_4);
2857
2903
  var heading5NodeSchema = headingNodeSchema(BLOCKS2.HEADING_5);
2858
2904
  var heading6NodeSchema = headingNodeSchema(BLOCKS2.HEADING_6);
2859
- var hrNodeSchema = z39.object({
2860
- nodeType: z39.literal(BLOCKS2.HR),
2905
+ var hrNodeSchema = z40.object({
2906
+ nodeType: z40.literal(BLOCKS2.HR),
2861
2907
  data: emptyNodeDataSchema,
2862
- content: z39.array(z39.never())
2908
+ content: z40.array(z40.never())
2863
2909
  });
2864
- var quoteNodeSchema = z39.object({
2865
- nodeType: z39.literal(BLOCKS2.QUOTE),
2910
+ var quoteNodeSchema = z40.object({
2911
+ nodeType: z40.literal(BLOCKS2.QUOTE),
2866
2912
  data: emptyNodeDataSchema,
2867
- content: z39.array(paragraphNodeSchema)
2913
+ content: z40.array(paragraphNodeSchema)
2868
2914
  });
2869
- var tableHeaderCellNodeSchema = z39.object({
2870
- nodeType: z39.literal(BLOCKS2.TABLE_HEADER_CELL),
2915
+ var tableHeaderCellNodeSchema = z40.object({
2916
+ nodeType: z40.literal(BLOCKS2.TABLE_HEADER_CELL),
2871
2917
  data: emptyNodeDataSchema,
2872
- content: z39.array(paragraphNodeSchema)
2918
+ content: z40.array(paragraphNodeSchema)
2873
2919
  });
2874
- var tableCellNodeSchema = z39.object({
2875
- nodeType: z39.literal(BLOCKS2.TABLE_CELL),
2920
+ var tableCellNodeSchema = z40.object({
2921
+ nodeType: z40.literal(BLOCKS2.TABLE_CELL),
2876
2922
  data: emptyNodeDataSchema,
2877
- content: z39.array(paragraphNodeSchema)
2923
+ content: z40.array(paragraphNodeSchema)
2878
2924
  });
2879
- var tableRowNodeSchema = z39.object({
2880
- nodeType: z39.literal(BLOCKS2.TABLE_ROW),
2925
+ var tableRowNodeSchema = z40.object({
2926
+ nodeType: z40.literal(BLOCKS2.TABLE_ROW),
2881
2927
  data: emptyNodeDataSchema,
2882
- content: z39.array(z39.union([tableHeaderCellNodeSchema, tableCellNodeSchema]))
2928
+ content: z40.array(z40.union([tableHeaderCellNodeSchema, tableCellNodeSchema]))
2883
2929
  });
2884
- var tableNodeSchema = z39.object({
2885
- nodeType: z39.literal(BLOCKS2.TABLE),
2930
+ var tableNodeSchema = z40.object({
2931
+ nodeType: z40.literal(BLOCKS2.TABLE),
2886
2932
  data: emptyNodeDataSchema,
2887
- content: z39.array(tableRowNodeSchema)
2933
+ content: z40.array(tableRowNodeSchema)
2888
2934
  });
2889
- var orderedListNodeSchema = z39.lazy(
2890
- () => z39.object({
2891
- nodeType: z39.literal(BLOCKS2.OL_LIST),
2935
+ var orderedListNodeSchema = z40.lazy(
2936
+ () => z40.object({
2937
+ nodeType: z40.literal(BLOCKS2.OL_LIST),
2892
2938
  data: emptyNodeDataSchema,
2893
- content: z39.array(listItemNodeSchema)
2939
+ content: z40.array(listItemNodeSchema)
2894
2940
  })
2895
2941
  );
2896
- var unorderedListNodeSchema = z39.lazy(
2897
- () => z39.object({
2898
- nodeType: z39.literal(BLOCKS2.UL_LIST),
2942
+ var unorderedListNodeSchema = z40.lazy(
2943
+ () => z40.object({
2944
+ nodeType: z40.literal(BLOCKS2.UL_LIST),
2899
2945
  data: emptyNodeDataSchema,
2900
- content: z39.array(listItemNodeSchema)
2946
+ content: z40.array(listItemNodeSchema)
2901
2947
  })
2902
2948
  );
2903
- var listItemNodeSchema = z39.lazy(
2904
- () => z39.object({
2905
- nodeType: z39.literal(BLOCKS2.LIST_ITEM),
2949
+ var listItemNodeSchema = z40.lazy(
2950
+ () => z40.object({
2951
+ nodeType: z40.literal(BLOCKS2.LIST_ITEM),
2906
2952
  data: emptyNodeDataSchema,
2907
- content: z39.array(
2908
- z39.union([
2953
+ content: z40.array(
2954
+ z40.union([
2909
2955
  paragraphNodeSchema,
2910
2956
  orderedListNodeSchema,
2911
2957
  unorderedListNodeSchema
@@ -2913,8 +2959,8 @@ var listItemNodeSchema = z39.lazy(
2913
2959
  )
2914
2960
  })
2915
2961
  );
2916
- var topLevelBlockNodeSchema = z39.lazy(
2917
- () => z39.union([
2962
+ var topLevelBlockNodeSchema = z40.lazy(
2963
+ () => z40.union([
2918
2964
  paragraphNodeSchema,
2919
2965
  heading1NodeSchema,
2920
2966
  heading2NodeSchema,
@@ -2932,56 +2978,56 @@ var topLevelBlockNodeSchema = z39.lazy(
2932
2978
  tableNodeSchema
2933
2979
  ])
2934
2980
  );
2935
- var richTextDocumentSchema = z39.object({
2936
- nodeType: z39.literal(BLOCKS2.DOCUMENT),
2981
+ var richTextDocumentSchema = z40.object({
2982
+ nodeType: z40.literal(BLOCKS2.DOCUMENT),
2937
2983
  data: emptyNodeDataSchema,
2938
- content: z39.array(topLevelBlockNodeSchema)
2984
+ content: z40.array(topLevelBlockNodeSchema)
2939
2985
  }).describe("Contentful Rich Text document");
2940
2986
 
2941
2987
  // src/types/entryFieldSchema.ts
2942
- var linkSchema = z40.object({
2943
- sys: z40.object({
2944
- type: z40.literal("Link"),
2945
- linkType: z40.enum(["Entry", "Asset"]),
2946
- id: z40.string()
2988
+ var linkSchema = z41.object({
2989
+ sys: z41.object({
2990
+ type: z41.literal("Link"),
2991
+ linkType: z41.enum(["Entry", "Asset"]),
2992
+ id: z41.string()
2947
2993
  })
2948
2994
  });
2949
- var resourceLinkSchema = z40.object({
2950
- sys: z40.object({
2951
- type: z40.literal("ResourceLink"),
2952
- linkType: z40.string(),
2953
- urn: z40.string()
2995
+ var resourceLinkSchema = z41.object({
2996
+ sys: z41.object({
2997
+ type: z41.literal("ResourceLink"),
2998
+ linkType: z41.string(),
2999
+ urn: z41.string()
2954
3000
  })
2955
3001
  });
2956
- var locationSchema = z40.object({
2957
- lat: z40.number(),
2958
- lon: z40.number()
3002
+ var locationSchema = z41.object({
3003
+ lat: z41.number(),
3004
+ lon: z41.number()
2959
3005
  });
2960
- var jsonPrimitive = z40.union([z40.string(), z40.number(), z40.boolean(), z40.null()]);
2961
- var jsonValueSchema = z40.lazy(
2962
- () => z40.union([jsonPrimitive, z40.array(jsonValueSchema), z40.record(jsonValueSchema)]).describe("Freeform JSON value (not for Rich Text)")
3006
+ var jsonPrimitive = z41.union([z41.string(), z41.number(), z41.boolean(), z41.null()]);
3007
+ var jsonValueSchema = z41.lazy(
3008
+ () => z41.union([jsonPrimitive, z41.array(jsonValueSchema), z41.record(jsonValueSchema)]).describe("Freeform JSON value (not for Rich Text)")
2963
3009
  );
2964
- var fieldValueSchema = z40.union([
2965
- z40.string().describe("Symbol, Text, or Date field"),
2966
- z40.number().describe("Integer or Number field"),
2967
- z40.boolean().describe("Boolean field"),
3010
+ var fieldValueSchema = z41.union([
3011
+ z41.string().describe("Symbol, Text, or Date field"),
3012
+ z41.number().describe("Integer or Number field"),
3013
+ z41.boolean().describe("Boolean field"),
2968
3014
  richTextDocumentSchema,
2969
3015
  linkSchema.describe("Link field (Entry or Asset reference)"),
2970
3016
  resourceLinkSchema.describe("ResourceLink field"),
2971
3017
  locationSchema.describe("Location field"),
2972
- z40.array(z40.string()).describe("Array field of Symbols"),
2973
- z40.array(linkSchema).describe("Array field of Links"),
2974
- z40.array(resourceLinkSchema).describe("Array field of ResourceLinks"),
3018
+ z41.array(z41.string()).describe("Array field of Symbols"),
3019
+ z41.array(linkSchema).describe("Array field of Links"),
3020
+ z41.array(resourceLinkSchema).describe("Array field of ResourceLinks"),
2975
3021
  jsonValueSchema
2976
3022
  ]);
2977
- var localizedFieldSchema = z40.record(fieldValueSchema);
2978
- var entryFieldsSchema = z40.record(localizedFieldSchema).describe(
3023
+ var localizedFieldSchema = z41.record(fieldValueSchema);
3024
+ var entryFieldsSchema = z41.record(localizedFieldSchema).describe(
2979
3025
  "Field values to update. Keys are field IDs, values are locale-keyed objects. Will be merged with existing fields."
2980
3026
  );
2981
3027
 
2982
3028
  // src/tools/entries/createEntry.ts
2983
3029
  var CreateEntryToolParams = BaseToolSchema.extend({
2984
- contentTypeId: z41.string().describe("The ID of the content type to create an entry for"),
3030
+ contentTypeId: z42.string().describe("The ID of the content type to create an entry for"),
2985
3031
  fields: entryFieldsSchema.describe(
2986
3032
  "The field values for the new entry. Keys should be field IDs and values should be the field content."
2987
3033
  ),
@@ -3014,13 +3060,13 @@ function createEntryTool(config) {
3014
3060
  }
3015
3061
 
3016
3062
  // src/tools/entries/deleteEntry.ts
3017
- import { z as z42 } from "zod";
3063
+ import { z as z43 } from "zod";
3018
3064
  var DeleteEntryToolParams = BaseToolSchema.extend({
3019
- entryId: z42.string().describe("The ID of the entry to delete"),
3020
- confirm: z42.boolean().optional().describe(
3065
+ entryId: z43.string().describe("The ID of the entry to delete"),
3066
+ confirm: z43.boolean().optional().describe(
3021
3067
  "Set to true on the second call to actually perform the deletion. Required together with confirmToken."
3022
3068
  ),
3023
- confirmToken: z42.string().optional().describe(
3069
+ confirmToken: z43.string().optional().describe(
3024
3070
  "Token returned by the preview call; must be supplied with confirm: true."
3025
3071
  )
3026
3072
  });
@@ -3060,9 +3106,12 @@ function deleteEntryTool(config) {
3060
3106
  }
3061
3107
 
3062
3108
  // src/tools/entries/updateEntry.ts
3063
- import { z as z43 } from "zod";
3109
+ import { z as z44 } from "zod";
3064
3110
  var UpdateEntryToolParams = BaseToolSchema.extend({
3065
- entryId: z43.string().describe("The ID of the entry to update"),
3111
+ entryId: z44.string().describe("The ID of the entry to update"),
3112
+ version: z44.number().describe(
3113
+ "REQUIRED. The entry's sys.version as returned by get_entry. You must call get_entry first to read the current state and version. The update is rejected if this does not match the entry's current version, which means the entry changed since you read it."
3114
+ ),
3066
3115
  fields: entryFieldsSchema.describe(
3067
3116
  "The field values to update. Keys should be field IDs and values should be the field content. Will be merged with existing fields."
3068
3117
  ),
@@ -3081,6 +3130,11 @@ function updateEntryTool(config) {
3081
3130
  };
3082
3131
  const contentfulClient = createToolClient(config, args);
3083
3132
  const existingEntry = await contentfulClient.entry.get(params);
3133
+ if (args.version !== existingEntry.sys.version) {
3134
+ throw new Error(
3135
+ `Version conflict: the entry has changed since you read it (your version: ${args.version}, current version: ${existingEntry.sys.version}). Re-fetch the entry with get_entry and retry the update with the latest version.`
3136
+ );
3137
+ }
3084
3138
  const mergedFields = {
3085
3139
  ...existingEntry.fields,
3086
3140
  ...args.fields
@@ -3109,9 +3163,9 @@ function updateEntryTool(config) {
3109
3163
  }
3110
3164
 
3111
3165
  // src/tools/entries/getEntry.ts
3112
- import { z as z44 } from "zod";
3166
+ import { z as z45 } from "zod";
3113
3167
  var GetEntryToolParams = BaseToolSchema.extend({
3114
- entryId: z44.string().describe("The ID of the entry to retrieve")
3168
+ entryId: z45.string().describe("The ID of the entry to retrieve")
3115
3169
  });
3116
3170
  function getEntryTool(config) {
3117
3171
  async function tool2(args) {
@@ -3127,13 +3181,73 @@ function getEntryTool(config) {
3127
3181
  return withErrorHandling(tool2, "Error retrieving entry");
3128
3182
  }
3129
3183
 
3184
+ // src/tools/entries/resolveEntryReferences.ts
3185
+ import { z as z46 } from "zod";
3186
+ var ResolveEntryReferencesToolParams = BaseToolSchema.extend({
3187
+ entryId: z46.string().describe("The ID of the entry whose references should be resolved"),
3188
+ include: z46.number().int().min(1).max(10).optional().default(2).describe(
3189
+ "How many levels of linked entries to walk (1-10, default: 2). The CMA caps this at 10."
3190
+ )
3191
+ });
3192
+ function resolveEntryReferencesTool(config) {
3193
+ async function tool2(args) {
3194
+ const { include = 2 } = args;
3195
+ const params = {
3196
+ spaceId: args.spaceId,
3197
+ environmentId: args.environmentId,
3198
+ entryId: args.entryId,
3199
+ include
3200
+ };
3201
+ const contentfulClient = createToolClient(config, args);
3202
+ const references = await contentfulClient.entry.references(params);
3203
+ return createSuccessResponse("Entry references retrieved successfully", {
3204
+ references
3205
+ });
3206
+ }
3207
+ return withErrorHandling(tool2, "Error resolving entry references");
3208
+ }
3209
+
3210
+ // src/tools/entries/getEntrySnapshot.ts
3211
+ import { z as z47 } from "zod";
3212
+ var GetEntrySnapshotToolParams = BaseToolSchema.extend({
3213
+ entryId: z47.string().describe("The ID of the entry to retrieve snapshots for"),
3214
+ snapshotId: z47.string().optional().describe(
3215
+ "Optional snapshot ID. When provided, returns the full content of that single snapshot. When omitted, lists all available snapshots for the entry."
3216
+ )
3217
+ });
3218
+ function getEntrySnapshotTool(config) {
3219
+ async function tool2(args) {
3220
+ const contentfulClient = createToolClient(config, args);
3221
+ if (args.snapshotId) {
3222
+ const snapshot = await contentfulClient.snapshot.getForEntry({
3223
+ spaceId: args.spaceId,
3224
+ environmentId: args.environmentId,
3225
+ entryId: args.entryId,
3226
+ snapshotId: args.snapshotId
3227
+ });
3228
+ return createSuccessResponse("Entry snapshot retrieved successfully", {
3229
+ snapshot
3230
+ });
3231
+ }
3232
+ const snapshots = await contentfulClient.snapshot.getManyForEntry({
3233
+ spaceId: args.spaceId,
3234
+ environmentId: args.environmentId,
3235
+ entryId: args.entryId
3236
+ });
3237
+ return createSuccessResponse("Entry snapshots retrieved successfully", {
3238
+ snapshots
3239
+ });
3240
+ }
3241
+ return withErrorHandling(tool2, "Error retrieving entry snapshot");
3242
+ }
3243
+
3130
3244
  // src/tools/entries/publishEntry.ts
3131
- import { z as z45 } from "zod";
3245
+ import { z as z48 } from "zod";
3132
3246
  var PublishEntryToolParams = BaseToolSchema.extend({
3133
- entryId: z45.array(z45.string()).min(1).max(100).describe(
3247
+ entryId: z48.array(z48.string()).min(1).max(100).describe(
3134
3248
  "Array of entry IDs to publish. Single-element array for one entry, or up to MAX_BULK_SIZE per call (default 10, max 100 \u2014 configurable via MAX_BULK_SIZE env var)."
3135
3249
  ),
3136
- dryRun: z45.boolean().optional().describe(
3250
+ dryRun: z48.boolean().optional().describe(
3137
3251
  "When true, returns a preview of the operation without executing it. Still subject to MAX_BULK_SIZE \u2014 use this to confirm intent for within-limit calls."
3138
3252
  )
3139
3253
  });
@@ -3201,12 +3315,12 @@ function publishEntryTool(config) {
3201
3315
  }
3202
3316
 
3203
3317
  // src/tools/entries/unpublishEntry.ts
3204
- import { z as z46 } from "zod";
3318
+ import { z as z49 } from "zod";
3205
3319
  var UnpublishEntryToolParams = BaseToolSchema.extend({
3206
- entryId: z46.array(z46.string()).min(1).max(100).describe(
3320
+ entryId: z49.array(z49.string()).min(1).max(100).describe(
3207
3321
  "Array of entry IDs to unpublish. Single-element array for one entry, or up to MAX_BULK_SIZE per call (default 10, max 100 \u2014 configurable via MAX_BULK_SIZE env var)."
3208
3322
  ),
3209
- dryRun: z46.boolean().optional().describe(
3323
+ dryRun: z49.boolean().optional().describe(
3210
3324
  "When true, returns a preview of the operation without executing it. Still subject to MAX_BULK_SIZE \u2014 use this to confirm intent for within-limit calls."
3211
3325
  )
3212
3326
  });
@@ -3274,12 +3388,12 @@ function unpublishEntryTool(config) {
3274
3388
  }
3275
3389
 
3276
3390
  // src/tools/entries/archiveEntry.ts
3277
- import { z as z47 } from "zod";
3391
+ import { z as z50 } from "zod";
3278
3392
  var ArchiveEntryToolParams = BaseToolSchema.extend({
3279
- entryId: z47.array(z47.string()).min(1).max(100).describe(
3393
+ entryId: z50.array(z50.string()).min(1).max(100).describe(
3280
3394
  "Array of entry IDs to archive. Single-element array for one entry, or up to MAX_BULK_SIZE per call (default 10, max 100 \u2014 configurable via MAX_BULK_SIZE env var)."
3281
3395
  ),
3282
- dryRun: z47.boolean().optional().describe(
3396
+ dryRun: z50.boolean().optional().describe(
3283
3397
  "When true, returns a preview of the operation without executing it. Still subject to MAX_BULK_SIZE \u2014 use this to confirm intent for within-limit calls."
3284
3398
  )
3285
3399
  });
@@ -3340,12 +3454,12 @@ function archiveEntryTool(config) {
3340
3454
  }
3341
3455
 
3342
3456
  // src/tools/entries/unarchiveEntry.ts
3343
- import { z as z48 } from "zod";
3457
+ import { z as z51 } from "zod";
3344
3458
  var UnarchiveEntryToolParams = BaseToolSchema.extend({
3345
- entryId: z48.array(z48.string()).min(1).max(100).describe(
3459
+ entryId: z51.array(z51.string()).min(1).max(100).describe(
3346
3460
  "Array of entry IDs to unarchive. Single-element array for one entry, or up to MAX_BULK_SIZE per call (default 10, max 100 \u2014 configurable via MAX_BULK_SIZE env var)."
3347
3461
  ),
3348
- dryRun: z48.boolean().optional().describe(
3462
+ dryRun: z51.boolean().optional().describe(
3349
3463
  "When true, returns a preview of the operation without executing it. Still subject to MAX_BULK_SIZE \u2014 use this to confirm intent for within-limit calls."
3350
3464
  )
3351
3465
  });
@@ -3408,10 +3522,13 @@ function unarchiveEntryTool(config) {
3408
3522
  // src/tools/entries/register.ts
3409
3523
  function createEntryTools(config) {
3410
3524
  const searchEntries = searchEntriesTool(config);
3525
+ const semanticSearch = semanticSearchTool(config);
3411
3526
  const createEntry = createEntryTool(config);
3412
3527
  const deleteEntry = deleteEntryTool(config);
3413
3528
  const updateEntry = updateEntryTool(config);
3414
3529
  const getEntry = getEntryTool(config);
3530
+ const resolveEntryReferences = resolveEntryReferencesTool(config);
3531
+ const getEntrySnapshot = getEntrySnapshotTool(config);
3415
3532
  const publishEntry = publishEntryTool(config);
3416
3533
  const unpublishEntry = unpublishEntryTool(config);
3417
3534
  const archiveEntry = archiveEntryTool(config);
@@ -3423,10 +3540,22 @@ function createEntryTools(config) {
3423
3540
  inputParams: SearchEntriesToolParams.shape,
3424
3541
  annotations: {
3425
3542
  readOnlyHint: true,
3543
+ destructiveHint: false,
3426
3544
  openWorldHint: false
3427
3545
  },
3428
3546
  tool: searchEntries
3429
3547
  },
3548
+ semanticSearch: {
3549
+ title: "semantic_search",
3550
+ description: "Find entries by meaning using semantic (vector) search. Provide a descriptive natural-language query of what you're looking for \u2014 phrases resembling entry content work best (not questions or JSON). Optionally restrict to specific content types. Returns up to 10 matching entry references (unranked); use get_entry to fetch full content. Requires semantic search to be enabled for the environment.",
3551
+ inputParams: SemanticSearchToolParams.shape,
3552
+ annotations: {
3553
+ readOnlyHint: true,
3554
+ destructiveHint: false,
3555
+ openWorldHint: false
3556
+ },
3557
+ tool: semanticSearch
3558
+ },
3430
3559
  createEntry: {
3431
3560
  title: "create_entry",
3432
3561
  description: "Create a new entry in Contentful. Before executing this function, you need to know the contentTypeId (not the content type NAME) and the fields of that contentType. You can get the fields definition by using the GET_CONTENT_TYPE tool. TAGS: To add tags to an entry, include a metadata object with a tags array. Each tag should be an object with sys.type='Link', sys.linkType='Tag', and sys.id='tagId'. Example: { metadata: { tags: [{ sys: { type: 'Link', linkType: 'Tag', id: 'myTagId' } }] } }.",
@@ -3445,13 +3574,36 @@ function createEntryTools(config) {
3445
3574
  inputParams: GetEntryToolParams.shape,
3446
3575
  annotations: {
3447
3576
  readOnlyHint: true,
3577
+ destructiveHint: false,
3448
3578
  openWorldHint: false
3449
3579
  },
3450
3580
  tool: getEntry
3451
3581
  },
3582
+ resolveEntryReferences: {
3583
+ title: "resolve_entry_references",
3584
+ description: "Recursively resolve an entry's references and return the entry plus its descendant entries and linked assets. Useful for verifying the structure of a page or any entry that links to other entries before or after edits, without issuing one fetch per descendant. Set `include` (1-10, default 2) to control how many levels deep to walk; the CMA caps this at 10.",
3585
+ inputParams: ResolveEntryReferencesToolParams.shape,
3586
+ annotations: {
3587
+ readOnlyHint: true,
3588
+ destructiveHint: false,
3589
+ openWorldHint: false
3590
+ },
3591
+ tool: resolveEntryReferences
3592
+ },
3593
+ getEntrySnapshot: {
3594
+ title: "get_entry_snapshot",
3595
+ description: "Retrieve version history (snapshots) of an entry for safe rollback. Call with only an entryId to list all available snapshots (each has a snapshot ID and metadata). Call with both entryId and snapshotId to retrieve the full field content of that specific snapshot, which can then be used to restore a previous version.",
3596
+ inputParams: GetEntrySnapshotToolParams.shape,
3597
+ annotations: {
3598
+ readOnlyHint: true,
3599
+ destructiveHint: false,
3600
+ openWorldHint: false
3601
+ },
3602
+ tool: getEntrySnapshot
3603
+ },
3452
3604
  updateEntry: {
3453
3605
  title: "update_entry",
3454
- description: "Update an existing entry. The handler will merge your field updates with the existing entry fields, so you only need to provide the fields you want to change. However, for multiple-locale fields, all existing locales must be included in the update.",
3606
+ description: "Update an existing entry. You MUST call get_entry first to read the current state, then pass the sys.version you received as the version parameter. The handler merges your field updates with the existing entry fields, so you only need to provide the fields you want to change. However, for multiple-locale fields, all existing locales must be included in the update. If the version is stale (the entry changed since you read it), the update is rejected and you must re-fetch with get_entry.",
3455
3607
  inputParams: UpdateEntryToolParams.shape,
3456
3608
  annotations: {
3457
3609
  readOnlyHint: false,
@@ -3525,11 +3677,11 @@ function createEntryTools(config) {
3525
3677
  }
3526
3678
 
3527
3679
  // src/tools/environments/createEnvironment.ts
3528
- import { z as z49 } from "zod";
3680
+ import { z as z52 } from "zod";
3529
3681
  var CreateEnvironmentToolParams = BaseToolSchema.extend({
3530
- environmentId: z49.string().describe("The ID of the environment to create"),
3531
- name: z49.string().describe("The name of the environment to create"),
3532
- sourceEnvironmentId: z49.string().describe(
3682
+ environmentId: z52.string().describe("The ID of the environment to create"),
3683
+ name: z52.string().describe("The name of the environment to create"),
3684
+ sourceEnvironmentId: z52.string().describe(
3533
3685
  "The ID of the source environment to clone from (defaults to master)"
3534
3686
  ).optional()
3535
3687
  });
@@ -3560,15 +3712,15 @@ function createEnvironmentTool(config) {
3560
3712
  }
3561
3713
 
3562
3714
  // src/tools/environments/listEnvironments.ts
3563
- import { z as z50 } from "zod";
3715
+ import { z as z53 } from "zod";
3564
3716
  var ListEnvironmentsToolParams = BaseToolSchema.extend({
3565
- environmentId: z50.string().optional().describe(
3717
+ environmentId: z53.string().optional().describe(
3566
3718
  "The ID of the Contentful environment (not required for listing)"
3567
3719
  ),
3568
- limit: z50.number().optional().describe("Maximum number of environments to return (max 10)"),
3569
- skip: z50.number().optional().describe("Skip this many environments for pagination"),
3570
- select: z50.string().optional().describe("Comma-separated list of fields to return"),
3571
- order: z50.string().optional().describe("Order environments by this field")
3720
+ limit: z53.number().optional().describe("Maximum number of environments to return (max 10)"),
3721
+ skip: z53.number().optional().describe("Skip this many environments for pagination"),
3722
+ select: z53.string().optional().describe("Comma-separated list of fields to return"),
3723
+ order: z53.string().optional().describe("Order environments by this field")
3572
3724
  });
3573
3725
  function listEnvironmentsTool(config) {
3574
3726
  async function tool2(args) {
@@ -3614,13 +3766,13 @@ function listEnvironmentsTool(config) {
3614
3766
  }
3615
3767
 
3616
3768
  // src/tools/environments/deleteEnvironment.ts
3617
- import { z as z51 } from "zod";
3769
+ import { z as z54 } from "zod";
3618
3770
  var DeleteEnvironmentToolParams = BaseToolSchema.extend({
3619
- environmentId: z51.string().describe("The ID of the environment to delete"),
3620
- confirm: z51.boolean().optional().describe(
3771
+ environmentId: z54.string().describe("The ID of the environment to delete"),
3772
+ confirm: z54.boolean().optional().describe(
3621
3773
  "Set to true on the second call to actually perform the deletion. Required together with confirmToken."
3622
3774
  ),
3623
- confirmToken: z51.string().optional().describe(
3775
+ confirmToken: z54.string().optional().describe(
3624
3776
  "Token returned by the preview call; must be supplied with confirm: true."
3625
3777
  )
3626
3778
  });
@@ -3684,6 +3836,7 @@ function createEnvironmentTools(config) {
3684
3836
  inputParams: ListEnvironmentsToolParams.shape,
3685
3837
  annotations: {
3686
3838
  readOnlyHint: true,
3839
+ destructiveHint: false,
3687
3840
  openWorldHint: false
3688
3841
  },
3689
3842
  tool: listEnvironments
@@ -3704,9 +3857,9 @@ function createEnvironmentTools(config) {
3704
3857
  }
3705
3858
 
3706
3859
  // src/tools/locales/getLocale.ts
3707
- import { z as z52 } from "zod";
3860
+ import { z as z55 } from "zod";
3708
3861
  var GetLocaleToolParams = BaseToolSchema.extend({
3709
- localeId: z52.string().describe("The ID of the locale to retrieve")
3862
+ localeId: z55.string().describe("The ID of the locale to retrieve")
3710
3863
  });
3711
3864
  function getLocaleTool(config) {
3712
3865
  async function tool2(args) {
@@ -3723,21 +3876,21 @@ function getLocaleTool(config) {
3723
3876
  }
3724
3877
 
3725
3878
  // src/tools/locales/createLocale.ts
3726
- import { z as z53 } from "zod";
3879
+ import { z as z56 } from "zod";
3727
3880
  var CreateLocaleToolParams = BaseToolSchema.extend({
3728
- name: z53.string().describe("The name of the locale"),
3729
- code: z53.string().describe('The locale code (e.g., "en-US")'),
3730
- fallbackCode: z53.string().nullable().describe(
3881
+ name: z56.string().describe("The name of the locale"),
3882
+ code: z56.string().describe('The locale code (e.g., "en-US")'),
3883
+ fallbackCode: z56.string().nullable().describe(
3731
3884
  "The locale code to fallback to when there is no content for the current locale"
3732
3885
  ),
3733
- contentDeliveryApi: z53.boolean().optional().default(true).describe(
3886
+ contentDeliveryApi: z56.boolean().optional().default(true).describe(
3734
3887
  "If the content under this locale should be available on the CDA (for public reading)"
3735
3888
  ),
3736
- contentManagementApi: z53.boolean().optional().default(true).describe(
3889
+ contentManagementApi: z56.boolean().optional().default(true).describe(
3737
3890
  "If the content under this locale should be available on the CMA (for editing)"
3738
3891
  ),
3739
- default: z53.boolean().optional().default(false).describe("If this is the default locale"),
3740
- optional: z53.boolean().optional().default(false).describe("If the locale needs to be filled in on entries or not")
3892
+ default: z56.boolean().optional().default(false).describe("If this is the default locale"),
3893
+ optional: z56.boolean().optional().default(false).describe("If the locale needs to be filled in on entries or not")
3741
3894
  });
3742
3895
  function createLocaleTool(config) {
3743
3896
  async function tool2(args) {
@@ -3764,13 +3917,13 @@ function createLocaleTool(config) {
3764
3917
  }
3765
3918
 
3766
3919
  // src/tools/locales/listLocales.ts
3767
- import { z as z54 } from "zod";
3920
+ import { z as z57 } from "zod";
3768
3921
  var ListLocaleToolParams = BaseToolSchema.extend({
3769
- limit: z54.number().optional().describe("Maximum number of locales to return"),
3770
- skip: z54.number().optional().describe("Skip this many locales for pagination"),
3771
- select: z54.string().optional().describe("Comma-separated list of fields to return"),
3772
- include: z54.number().optional().describe("Include this many levels of linked entries"),
3773
- order: z54.string().optional().describe("Order locales by this field")
3922
+ limit: z57.number().optional().describe("Maximum number of locales to return"),
3923
+ skip: z57.number().optional().describe("Skip this many locales for pagination"),
3924
+ select: z57.string().optional().describe("Comma-separated list of fields to return"),
3925
+ include: z57.number().optional().describe("Include this many levels of linked entries"),
3926
+ order: z57.string().optional().describe("Order locales by this field")
3774
3927
  });
3775
3928
  function listLocaleTool(config) {
3776
3929
  async function tool2(args) {
@@ -3823,23 +3976,23 @@ function listLocaleTool(config) {
3823
3976
  }
3824
3977
 
3825
3978
  // src/tools/locales/updateLocale.ts
3826
- import { z as z55 } from "zod";
3979
+ import { z as z58 } from "zod";
3827
3980
  var UpdateLocaleToolParams = BaseToolSchema.extend({
3828
- localeId: z55.string().describe("The ID of the locale to update"),
3829
- fields: z55.object({
3830
- name: z55.string().optional().describe("The name of the locale"),
3981
+ localeId: z58.string().describe("The ID of the locale to update"),
3982
+ fields: z58.object({
3983
+ name: z58.string().optional().describe("The name of the locale"),
3831
3984
  // NOTE: internal_code changes are not allowed
3832
- code: z55.string().optional().describe("The code of the locale"),
3833
- fallbackCode: z55.string().optional().describe(
3985
+ code: z58.string().optional().describe("The code of the locale"),
3986
+ fallbackCode: z58.string().optional().describe(
3834
3987
  "The locale code to fallback to when there is no content for the current locale"
3835
3988
  ),
3836
- contentDeliveryApi: z55.boolean().optional().describe(
3989
+ contentDeliveryApi: z58.boolean().optional().describe(
3837
3990
  "If the content under this locale should be available on the CDA (for public reading)"
3838
3991
  ),
3839
- contentManagementApi: z55.boolean().optional().describe(
3992
+ contentManagementApi: z58.boolean().optional().describe(
3840
3993
  "If the content under this locale should be available on the CMA (for editing)"
3841
3994
  ),
3842
- optional: z55.boolean().optional().describe("If the locale needs to be filled in on entries or not")
3995
+ optional: z58.boolean().optional().describe("If the locale needs to be filled in on entries or not")
3843
3996
  })
3844
3997
  });
3845
3998
  function updateLocaleTool(config) {
@@ -3869,13 +4022,13 @@ function updateLocaleTool(config) {
3869
4022
  }
3870
4023
 
3871
4024
  // src/tools/locales/deleteLocale.ts
3872
- import { z as z56 } from "zod";
4025
+ import { z as z59 } from "zod";
3873
4026
  var DeleteLocaleToolParams = BaseToolSchema.extend({
3874
- localeId: z56.string().describe("The ID of the locale to delete"),
3875
- confirm: z56.boolean().optional().describe(
4027
+ localeId: z59.string().describe("The ID of the locale to delete"),
4028
+ confirm: z59.boolean().optional().describe(
3876
4029
  "Set to true on the second call to actually perform the deletion. Required together with confirmToken."
3877
4030
  ),
3878
- confirmToken: z56.string().optional().describe(
4031
+ confirmToken: z59.string().optional().describe(
3879
4032
  "Token returned by the preview call; must be supplied with confirm: true."
3880
4033
  )
3881
4034
  });
@@ -3928,6 +4081,7 @@ function createLocaleTools(config) {
3928
4081
  inputParams: GetLocaleToolParams.shape,
3929
4082
  annotations: {
3930
4083
  readOnlyHint: true,
4084
+ destructiveHint: false,
3931
4085
  openWorldHint: false
3932
4086
  },
3933
4087
  tool: getLocale
@@ -3950,6 +4104,7 @@ function createLocaleTools(config) {
3950
4104
  inputParams: ListLocaleToolParams.shape,
3951
4105
  annotations: {
3952
4106
  readOnlyHint: true,
4107
+ destructiveHint: false,
3953
4108
  openWorldHint: false
3954
4109
  },
3955
4110
  tool: listLocales
@@ -3982,13 +4137,13 @@ function createLocaleTools(config) {
3982
4137
  }
3983
4138
 
3984
4139
  // src/tools/orgs/listOrgs.ts
3985
- import { z as z57 } from "zod";
4140
+ import { z as z60 } from "zod";
3986
4141
  import { createClient as createClient2 } from "contentful-management";
3987
- var ListOrgsToolParams = z57.object({
3988
- limit: z57.number().optional().describe("Maximum number of organizations to return (max 10)"),
3989
- skip: z57.number().optional().describe("Skip this many organizations for pagination"),
3990
- select: z57.string().optional().describe("Comma-separated list of fields to return"),
3991
- order: z57.string().optional().describe("Order organizations by this field")
4142
+ var ListOrgsToolParams = z60.object({
4143
+ limit: z60.number().optional().describe("Maximum number of organizations to return (max 10)"),
4144
+ skip: z60.number().optional().describe("Skip this many organizations for pagination"),
4145
+ select: z60.string().optional().describe("Comma-separated list of fields to return"),
4146
+ order: z60.string().optional().describe("Order organizations by this field")
3992
4147
  });
3993
4148
  function listOrgsTool(config) {
3994
4149
  async function tool2(args) {
@@ -4030,10 +4185,10 @@ function listOrgsTool(config) {
4030
4185
  }
4031
4186
 
4032
4187
  // src/tools/orgs/getOrg.ts
4033
- import { z as z58 } from "zod";
4188
+ import { z as z61 } from "zod";
4034
4189
  import { createClient as createClient3 } from "contentful-management";
4035
- var GetOrgToolParams = z58.object({
4036
- organizationId: z58.string().describe("The ID of the organization to retrieve")
4190
+ var GetOrgToolParams = z61.object({
4191
+ organizationId: z61.string().describe("The ID of the organization to retrieve")
4037
4192
  });
4038
4193
  function getOrgTool(config) {
4039
4194
  async function tool2(args) {
@@ -4061,6 +4216,7 @@ function createOrgTools(config) {
4061
4216
  inputParams: ListOrgsToolParams.shape,
4062
4217
  annotations: {
4063
4218
  readOnlyHint: true,
4219
+ destructiveHint: false,
4064
4220
  openWorldHint: false
4065
4221
  },
4066
4222
  tool: listOrgs
@@ -4071,6 +4227,7 @@ function createOrgTools(config) {
4071
4227
  inputParams: GetOrgToolParams.shape,
4072
4228
  annotations: {
4073
4229
  readOnlyHint: true,
4230
+ destructiveHint: false,
4074
4231
  openWorldHint: false
4075
4232
  },
4076
4233
  tool: getOrg
@@ -4079,13 +4236,13 @@ function createOrgTools(config) {
4079
4236
  }
4080
4237
 
4081
4238
  // src/tools/spaces/listSpaces.ts
4082
- import { z as z59 } from "zod";
4239
+ import { z as z62 } from "zod";
4083
4240
  import { createClient as createClient4 } from "contentful-management";
4084
- var ListSpacesToolParams = z59.object({
4085
- limit: z59.number().optional().describe("Maximum number of spaces to return (max 10)"),
4086
- skip: z59.number().optional().describe("Skip this many spaces for pagination"),
4087
- select: z59.string().optional().describe("Comma-separated list of fields to return"),
4088
- order: z59.string().optional().describe("Order spaces by this field")
4241
+ var ListSpacesToolParams = z62.object({
4242
+ limit: z62.number().optional().describe("Maximum number of spaces to return (max 10)"),
4243
+ skip: z62.number().optional().describe("Skip this many spaces for pagination"),
4244
+ select: z62.string().optional().describe("Comma-separated list of fields to return"),
4245
+ order: z62.string().optional().describe("Order spaces by this field")
4089
4246
  });
4090
4247
  function listSpacesTool(config) {
4091
4248
  async function tool2(args) {
@@ -4127,10 +4284,10 @@ function listSpacesTool(config) {
4127
4284
  }
4128
4285
 
4129
4286
  // src/tools/spaces/getSpace.ts
4130
- import { z as z60 } from "zod";
4287
+ import { z as z63 } from "zod";
4131
4288
  import { createClient as createClient5 } from "contentful-management";
4132
- var GetSpaceToolParams = z60.object({
4133
- spaceId: z60.string().describe("The ID of the space to retrieve")
4289
+ var GetSpaceToolParams = z63.object({
4290
+ spaceId: z63.string().describe("The ID of the space to retrieve")
4134
4291
  });
4135
4292
  function getSpaceTool(config) {
4136
4293
  async function tool2(args) {
@@ -4156,6 +4313,7 @@ function createSpaceTools(config) {
4156
4313
  inputParams: ListSpacesToolParams.shape,
4157
4314
  annotations: {
4158
4315
  readOnlyHint: true,
4316
+ destructiveHint: false,
4159
4317
  openWorldHint: false
4160
4318
  },
4161
4319
  tool: listSpaces
@@ -4166,6 +4324,7 @@ function createSpaceTools(config) {
4166
4324
  inputParams: GetSpaceToolParams.shape,
4167
4325
  annotations: {
4168
4326
  readOnlyHint: true,
4327
+ destructiveHint: false,
4169
4328
  openWorldHint: false
4170
4329
  },
4171
4330
  tool: getSpace
@@ -4174,12 +4333,12 @@ function createSpaceTools(config) {
4174
4333
  }
4175
4334
 
4176
4335
  // src/tools/tags/listTags.ts
4177
- import { z as z61 } from "zod";
4336
+ import { z as z64 } from "zod";
4178
4337
  var ListTagsToolParams = BaseToolSchema.extend({
4179
- limit: z61.number().optional().describe("Maximum number of tags to return"),
4180
- skip: z61.number().optional().describe("Skip this many tags for pagination"),
4181
- select: z61.string().optional().describe("Comma-separated list of fields to return"),
4182
- order: z61.string().optional().describe("Order tags by this field")
4338
+ limit: z64.number().optional().describe("Maximum number of tags to return"),
4339
+ skip: z64.number().optional().describe("Skip this many tags for pagination"),
4340
+ select: z64.string().optional().describe("Comma-separated list of fields to return"),
4341
+ order: z64.string().optional().describe("Order tags by this field")
4183
4342
  });
4184
4343
  function listTagsTool(config) {
4185
4344
  async function tool2(args) {
@@ -4225,11 +4384,11 @@ function listTagsTool(config) {
4225
4384
  }
4226
4385
 
4227
4386
  // src/tools/tags/createTag.ts
4228
- import { z as z62 } from "zod";
4387
+ import { z as z65 } from "zod";
4229
4388
  var CreateTagToolParams = BaseToolSchema.extend({
4230
- name: z62.string().describe("The name of the tag"),
4231
- id: z62.string().describe("The ID of the tag"),
4232
- visibility: z62.enum(["public", "private"]).describe("The visibility of the tag. Default to private if not specified")
4389
+ name: z65.string().describe("The name of the tag"),
4390
+ id: z65.string().describe("The ID of the tag"),
4391
+ visibility: z65.enum(["public", "private"]).describe("The visibility of the tag. Default to private if not specified")
4233
4392
  });
4234
4393
  function createTagTool(config) {
4235
4394
  async function tool2(args) {
@@ -4263,6 +4422,7 @@ function createTagTools(config) {
4263
4422
  inputParams: ListTagsToolParams.shape,
4264
4423
  annotations: {
4265
4424
  readOnlyHint: true,
4425
+ destructiveHint: false,
4266
4426
  openWorldHint: false
4267
4427
  },
4268
4428
  tool: listTags
@@ -4283,34 +4443,34 @@ function createTagTools(config) {
4283
4443
  }
4284
4444
 
4285
4445
  // src/tools/taxonomies/concept-schemes/createConceptScheme.ts
4286
- import { z as z64 } from "zod";
4446
+ import { z as z67 } from "zod";
4287
4447
  import { createClient as createClient6 } from "contentful-management";
4288
4448
 
4289
4449
  // src/types/conceptPayloadTypes.ts
4290
- import { z as z63 } from "zod";
4291
- var TaxonomyConceptLinkSchema = z63.object({
4292
- sys: z63.object({
4293
- type: z63.literal("Link"),
4294
- linkType: z63.literal("TaxonomyConcept"),
4295
- id: z63.string()
4450
+ import { z as z66 } from "zod";
4451
+ var TaxonomyConceptLinkSchema = z66.object({
4452
+ sys: z66.object({
4453
+ type: z66.literal("Link"),
4454
+ linkType: z66.literal("TaxonomyConcept"),
4455
+ id: z66.string()
4296
4456
  })
4297
4457
  });
4298
4458
 
4299
4459
  // src/tools/taxonomies/concept-schemes/createConceptScheme.ts
4300
- var CreateConceptSchemeToolParams = z64.object({
4301
- organizationId: z64.string().describe("The ID of the Contentful organization"),
4302
- conceptSchemeId: z64.string().optional().describe(
4460
+ var CreateConceptSchemeToolParams = z67.object({
4461
+ organizationId: z67.string().describe("The ID of the Contentful organization"),
4462
+ conceptSchemeId: z67.string().optional().describe(
4303
4463
  "Optional user-defined ID for the concept scheme. If not provided, Contentful will generate one automatically."
4304
4464
  ),
4305
- prefLabel: z64.record(z64.string()).describe("The preferred label for the concept scheme (localized)"),
4306
- uri: z64.string().nullable().optional().describe("The URI for the concept scheme"),
4307
- definition: z64.record(z64.string().nullable()).optional().describe("Definition of the concept scheme (localized)"),
4308
- editorialNote: z64.record(z64.string().nullable()).optional().describe("Editorial note for the concept scheme (localized)"),
4309
- historyNote: z64.record(z64.string().nullable()).optional().describe("History note for the concept scheme (localized)"),
4310
- example: z64.record(z64.string().nullable()).optional().describe("Example for the concept scheme (localized)"),
4311
- note: z64.record(z64.string().nullable()).optional().describe("General note for the concept scheme (localized)"),
4312
- scopeNote: z64.record(z64.string().nullable()).optional().describe("Scope note for the concept scheme (localized)"),
4313
- topConcepts: z64.array(TaxonomyConceptLinkSchema).optional().describe("Links to top-level concepts in this scheme")
4465
+ prefLabel: z67.record(z67.string()).describe("The preferred label for the concept scheme (localized)"),
4466
+ uri: z67.string().nullable().optional().describe("The URI for the concept scheme"),
4467
+ definition: z67.record(z67.string().nullable()).optional().describe("Definition of the concept scheme (localized)"),
4468
+ editorialNote: z67.record(z67.string().nullable()).optional().describe("Editorial note for the concept scheme (localized)"),
4469
+ historyNote: z67.record(z67.string().nullable()).optional().describe("History note for the concept scheme (localized)"),
4470
+ example: z67.record(z67.string().nullable()).optional().describe("Example for the concept scheme (localized)"),
4471
+ note: z67.record(z67.string().nullable()).optional().describe("General note for the concept scheme (localized)"),
4472
+ scopeNote: z67.record(z67.string().nullable()).optional().describe("Scope note for the concept scheme (localized)"),
4473
+ topConcepts: z67.array(TaxonomyConceptLinkSchema).optional().describe("Links to top-level concepts in this scheme")
4314
4474
  });
4315
4475
  function createConceptSchemeTool(config) {
4316
4476
  async function tool2(args) {
@@ -4350,11 +4510,11 @@ function createConceptSchemeTool(config) {
4350
4510
  }
4351
4511
 
4352
4512
  // src/tools/taxonomies/concept-schemes/getConceptScheme.ts
4353
- import { z as z65 } from "zod";
4513
+ import { z as z68 } from "zod";
4354
4514
  import { createClient as createClient7 } from "contentful-management";
4355
- var GetConceptSchemeToolParams = z65.object({
4356
- organizationId: z65.string().describe("The ID of the Contentful organization"),
4357
- conceptSchemeId: z65.string().describe("The ID of the concept scheme to retrieve")
4515
+ var GetConceptSchemeToolParams = z68.object({
4516
+ organizationId: z68.string().describe("The ID of the Contentful organization"),
4517
+ conceptSchemeId: z68.string().describe("The ID of the concept scheme to retrieve")
4358
4518
  });
4359
4519
  function getConceptSchemeTool(config) {
4360
4520
  async function tool2(args) {
@@ -4374,25 +4534,25 @@ function getConceptSchemeTool(config) {
4374
4534
  }
4375
4535
 
4376
4536
  // src/tools/taxonomies/concept-schemes/listConceptSchemes.ts
4377
- import { z as z66 } from "zod";
4537
+ import { z as z69 } from "zod";
4378
4538
  import { createClient as createClient8 } from "contentful-management";
4379
4539
  import { cloneDeep } from "lodash-es";
4380
- var ListConceptSchemesToolParams = z66.object({
4381
- organizationId: z66.string(),
4382
- query: z66.union([
4383
- z66.object({
4384
- query: z66.string().optional(),
4385
- pageNext: z66.string().optional().describe("Cursor token for the next page of concept schemes"),
4386
- pagePrev: z66.string().optional().describe(
4540
+ var ListConceptSchemesToolParams = z69.object({
4541
+ organizationId: z69.string(),
4542
+ query: z69.union([
4543
+ z69.object({
4544
+ query: z69.string().optional(),
4545
+ pageNext: z69.string().optional().describe("Cursor token for the next page of concept schemes"),
4546
+ pagePrev: z69.string().optional().describe(
4387
4547
  "Cursor token for the previous page of concept schemes"
4388
4548
  ),
4389
- limit: z66.number().optional().describe("Maximum number of concept schemes to return"),
4390
- order: z66.string().optional().describe("Order concept schemes by this field"),
4391
- skip: z66.never().optional()
4549
+ limit: z69.number().optional().describe("Maximum number of concept schemes to return"),
4550
+ order: z69.string().optional().describe("Order concept schemes by this field"),
4551
+ skip: z69.never().optional()
4392
4552
  }).passthrough(),
4393
4553
  // handles [key: string]: any from BasicQueryOptions
4394
- z66.object({
4395
- pageUrl: z66.string().optional()
4554
+ z69.object({
4555
+ pageUrl: z69.string().optional()
4396
4556
  })
4397
4557
  ]).optional().describe(
4398
4558
  'Query parameters for listing concept schemes, supports either pageUrl for cursor-based pagination. Offset "skip" pagination is not supported.'
@@ -4462,22 +4622,22 @@ function listConceptSchemesTool(config) {
4462
4622
  }
4463
4623
 
4464
4624
  // src/tools/taxonomies/concept-schemes/updateConceptScheme.ts
4465
- import { z as z67 } from "zod";
4625
+ import { z as z70 } from "zod";
4466
4626
  import { createClient as createClient9 } from "contentful-management";
4467
- var UpdateConceptSchemeToolParams = z67.object({
4468
- organizationId: z67.string().describe("The ID of the Contentful organization"),
4469
- conceptSchemeId: z67.string().describe("The ID of the concept scheme to update"),
4470
- version: z67.number().describe("The current version of the concept scheme"),
4471
- prefLabel: z67.record(z67.string()).optional().describe("The preferred label for the concept scheme (localized)"),
4472
- uri: z67.string().nullable().optional().describe("The URI for the concept scheme"),
4473
- definition: z67.record(z67.string().nullable()).optional().describe("Definition of the concept scheme (localized)"),
4474
- editorialNote: z67.record(z67.string().nullable()).optional().describe("Editorial note for the concept scheme (localized)"),
4475
- historyNote: z67.record(z67.string().nullable()).optional().describe("History note for the concept scheme (localized)"),
4476
- example: z67.record(z67.string().nullable()).optional().describe("Example for the concept scheme (localized)"),
4477
- note: z67.record(z67.string().nullable()).optional().describe("General note for the concept scheme (localized)"),
4478
- scopeNote: z67.record(z67.string().nullable()).optional().describe("Scope note for the concept scheme (localized)"),
4479
- topConcepts: z67.array(TaxonomyConceptLinkSchema).optional().describe("Links to top-level concepts in this scheme"),
4480
- addConcept: z67.string().optional().describe(
4627
+ var UpdateConceptSchemeToolParams = z70.object({
4628
+ organizationId: z70.string().describe("The ID of the Contentful organization"),
4629
+ conceptSchemeId: z70.string().describe("The ID of the concept scheme to update"),
4630
+ version: z70.number().describe("The current version of the concept scheme"),
4631
+ prefLabel: z70.record(z70.string()).optional().describe("The preferred label for the concept scheme (localized)"),
4632
+ uri: z70.string().nullable().optional().describe("The URI for the concept scheme"),
4633
+ definition: z70.record(z70.string().nullable()).optional().describe("Definition of the concept scheme (localized)"),
4634
+ editorialNote: z70.record(z70.string().nullable()).optional().describe("Editorial note for the concept scheme (localized)"),
4635
+ historyNote: z70.record(z70.string().nullable()).optional().describe("History note for the concept scheme (localized)"),
4636
+ example: z70.record(z70.string().nullable()).optional().describe("Example for the concept scheme (localized)"),
4637
+ note: z70.record(z70.string().nullable()).optional().describe("General note for the concept scheme (localized)"),
4638
+ scopeNote: z70.record(z70.string().nullable()).optional().describe("Scope note for the concept scheme (localized)"),
4639
+ topConcepts: z70.array(TaxonomyConceptLinkSchema).optional().describe("Links to top-level concepts in this scheme"),
4640
+ addConcept: z70.string().optional().describe(
4481
4641
  "ID of a concept to add to this scheme (adds to both concepts and topConcepts)"
4482
4642
  )
4483
4643
  });
@@ -4552,15 +4712,15 @@ function updateConceptSchemeTool(config) {
4552
4712
  }
4553
4713
 
4554
4714
  // src/tools/taxonomies/concept-schemes/deleteConceptScheme.ts
4555
- import { z as z68 } from "zod";
4715
+ import { z as z71 } from "zod";
4556
4716
  import { createClient as createClient10 } from "contentful-management";
4557
- var DeleteConceptSchemeToolParams = z68.object({
4558
- organizationId: z68.string().describe("The ID of the Contentful organization"),
4559
- conceptSchemeId: z68.string().describe("The ID of the concept scheme to delete"),
4560
- confirm: z68.boolean().optional().describe(
4717
+ var DeleteConceptSchemeToolParams = z71.object({
4718
+ organizationId: z71.string().describe("The ID of the Contentful organization"),
4719
+ conceptSchemeId: z71.string().describe("The ID of the concept scheme to delete"),
4720
+ confirm: z71.boolean().optional().describe(
4561
4721
  "Set to true on the second call to actually perform the deletion. Required together with confirmToken."
4562
4722
  ),
4563
- confirmToken: z68.string().optional().describe(
4723
+ confirmToken: z71.string().optional().describe(
4564
4724
  "Token returned by the preview call; must be supplied with confirm: true."
4565
4725
  )
4566
4726
  });
@@ -4627,6 +4787,7 @@ function createConceptSchemeTools(config) {
4627
4787
  inputParams: GetConceptSchemeToolParams.shape,
4628
4788
  annotations: {
4629
4789
  readOnlyHint: true,
4790
+ destructiveHint: false,
4630
4791
  openWorldHint: false
4631
4792
  },
4632
4793
  tool: getConceptScheme
@@ -4637,6 +4798,7 @@ function createConceptSchemeTools(config) {
4637
4798
  inputParams: ListConceptSchemesToolParams.shape,
4638
4799
  annotations: {
4639
4800
  readOnlyHint: true,
4801
+ destructiveHint: false,
4640
4802
  openWorldHint: false
4641
4803
  },
4642
4804
  tool: listConceptSchemes
@@ -4669,26 +4831,26 @@ function createConceptSchemeTools(config) {
4669
4831
  }
4670
4832
 
4671
4833
  // src/tools/taxonomies/concepts/createConcept.ts
4672
- import { z as z69 } from "zod";
4834
+ import { z as z72 } from "zod";
4673
4835
  import { createClient as createClient11 } from "contentful-management";
4674
- var CreateConceptToolParams = z69.object({
4675
- organizationId: z69.string().describe("The ID of the Contentful organization"),
4676
- conceptId: z69.string().optional().describe(
4836
+ var CreateConceptToolParams = z72.object({
4837
+ organizationId: z72.string().describe("The ID of the Contentful organization"),
4838
+ conceptId: z72.string().optional().describe(
4677
4839
  "Optional user-defined ID for the concept. If not provided, Contentful will generate one automatically."
4678
4840
  ),
4679
- prefLabel: z69.record(z69.string()).describe("The preferred label for the concept (localized)"),
4680
- uri: z69.string().nullable().optional().describe("The URI for the concept"),
4681
- altLabels: z69.record(z69.array(z69.string())).optional().describe("Alternative labels for the concept (localized)"),
4682
- hiddenLabels: z69.record(z69.array(z69.string())).optional().describe("Hidden labels for the concept (localized)"),
4683
- definition: z69.record(z69.string().nullable()).optional().describe("Definition of the concept (localized)"),
4684
- editorialNote: z69.record(z69.string().nullable()).optional().describe("Editorial note for the concept (localized)"),
4685
- historyNote: z69.record(z69.string().nullable()).optional().describe("History note for the concept (localized)"),
4686
- example: z69.record(z69.string().nullable()).optional().describe("Example for the concept (localized)"),
4687
- note: z69.record(z69.string().nullable()).optional().describe("General note for the concept (localized)"),
4688
- scopeNote: z69.record(z69.string().nullable()).optional().describe("Scope note for the concept (localized)"),
4689
- notations: z69.array(z69.string()).optional().describe("Notations for the concept"),
4690
- broader: z69.array(TaxonomyConceptLinkSchema).optional().describe("Links to broader concepts"),
4691
- related: z69.array(TaxonomyConceptLinkSchema).optional().describe("Links to related concepts")
4841
+ prefLabel: z72.record(z72.string()).describe("The preferred label for the concept (localized)"),
4842
+ uri: z72.string().nullable().optional().describe("The URI for the concept"),
4843
+ altLabels: z72.record(z72.array(z72.string())).optional().describe("Alternative labels for the concept (localized)"),
4844
+ hiddenLabels: z72.record(z72.array(z72.string())).optional().describe("Hidden labels for the concept (localized)"),
4845
+ definition: z72.record(z72.string().nullable()).optional().describe("Definition of the concept (localized)"),
4846
+ editorialNote: z72.record(z72.string().nullable()).optional().describe("Editorial note for the concept (localized)"),
4847
+ historyNote: z72.record(z72.string().nullable()).optional().describe("History note for the concept (localized)"),
4848
+ example: z72.record(z72.string().nullable()).optional().describe("Example for the concept (localized)"),
4849
+ note: z72.record(z72.string().nullable()).optional().describe("General note for the concept (localized)"),
4850
+ scopeNote: z72.record(z72.string().nullable()).optional().describe("Scope note for the concept (localized)"),
4851
+ notations: z72.array(z72.string()).optional().describe("Notations for the concept"),
4852
+ broader: z72.array(TaxonomyConceptLinkSchema).optional().describe("Links to broader concepts"),
4853
+ related: z72.array(TaxonomyConceptLinkSchema).optional().describe("Links to related concepts")
4692
4854
  });
4693
4855
  function createConceptTool(config) {
4694
4856
  async function tool2(args) {
@@ -4723,15 +4885,15 @@ function createConceptTool(config) {
4723
4885
  }
4724
4886
 
4725
4887
  // src/tools/taxonomies/concepts/deleteConcept.ts
4726
- import { z as z70 } from "zod";
4888
+ import { z as z73 } from "zod";
4727
4889
  import { createClient as createClient12 } from "contentful-management";
4728
- var DeleteConceptToolParams = z70.object({
4729
- organizationId: z70.string().describe("The ID of the Contentful organization"),
4730
- conceptId: z70.string().describe("The ID of the concept to delete"),
4731
- confirm: z70.boolean().optional().describe(
4890
+ var DeleteConceptToolParams = z73.object({
4891
+ organizationId: z73.string().describe("The ID of the Contentful organization"),
4892
+ conceptId: z73.string().describe("The ID of the concept to delete"),
4893
+ confirm: z73.boolean().optional().describe(
4732
4894
  "Set to true on the second call to actually perform the deletion. Required together with confirmToken."
4733
4895
  ),
4734
- confirmToken: z70.string().optional().describe(
4896
+ confirmToken: z73.string().optional().describe(
4735
4897
  "Token returned by the preview call; must be supplied with confirm: true."
4736
4898
  )
4737
4899
  });
@@ -4768,25 +4930,25 @@ function deleteConceptTool(config) {
4768
4930
  }
4769
4931
 
4770
4932
  // src/tools/taxonomies/concepts/updateConcept.ts
4771
- import { z as z71 } from "zod";
4933
+ import { z as z74 } from "zod";
4772
4934
  import { createClient as createClient13 } from "contentful-management";
4773
- var UpdateConceptToolParams = z71.object({
4774
- organizationId: z71.string().describe("The ID of the Contentful organization"),
4775
- conceptId: z71.string().describe("The ID of the concept to update"),
4776
- version: z71.number().describe("The current version of the concept"),
4777
- prefLabel: z71.record(z71.string()).optional().describe("The preferred label for the concept (localized)"),
4778
- uri: z71.string().nullable().optional().describe("The URI for the concept"),
4779
- altLabels: z71.record(z71.array(z71.string())).optional().describe("Alternative labels for the concept (localized)"),
4780
- hiddenLabels: z71.record(z71.array(z71.string())).optional().describe("Hidden labels for the concept (localized)"),
4781
- definition: z71.record(z71.string().nullable()).optional().describe("Definition of the concept (localized)"),
4782
- editorialNote: z71.record(z71.string().nullable()).optional().describe("Editorial note for the concept (localized)"),
4783
- historyNote: z71.record(z71.string().nullable()).optional().describe("History note for the concept (localized)"),
4784
- example: z71.record(z71.string().nullable()).optional().describe("Example for the concept (localized)"),
4785
- note: z71.record(z71.string().nullable()).optional().describe("General note for the concept (localized)"),
4786
- scopeNote: z71.record(z71.string().nullable()).optional().describe("Scope note for the concept (localized)"),
4787
- notations: z71.array(z71.string()).optional().describe("Notations for the concept"),
4788
- broader: z71.array(TaxonomyConceptLinkSchema).optional().describe("Links to broader concepts"),
4789
- related: z71.array(TaxonomyConceptLinkSchema).optional().describe("Links to related concepts")
4935
+ var UpdateConceptToolParams = z74.object({
4936
+ organizationId: z74.string().describe("The ID of the Contentful organization"),
4937
+ conceptId: z74.string().describe("The ID of the concept to update"),
4938
+ version: z74.number().describe("The current version of the concept"),
4939
+ prefLabel: z74.record(z74.string()).optional().describe("The preferred label for the concept (localized)"),
4940
+ uri: z74.string().nullable().optional().describe("The URI for the concept"),
4941
+ altLabels: z74.record(z74.array(z74.string())).optional().describe("Alternative labels for the concept (localized)"),
4942
+ hiddenLabels: z74.record(z74.array(z74.string())).optional().describe("Hidden labels for the concept (localized)"),
4943
+ definition: z74.record(z74.string().nullable()).optional().describe("Definition of the concept (localized)"),
4944
+ editorialNote: z74.record(z74.string().nullable()).optional().describe("Editorial note for the concept (localized)"),
4945
+ historyNote: z74.record(z74.string().nullable()).optional().describe("History note for the concept (localized)"),
4946
+ example: z74.record(z74.string().nullable()).optional().describe("Example for the concept (localized)"),
4947
+ note: z74.record(z74.string().nullable()).optional().describe("General note for the concept (localized)"),
4948
+ scopeNote: z74.record(z74.string().nullable()).optional().describe("Scope note for the concept (localized)"),
4949
+ notations: z74.array(z74.string()).optional().describe("Notations for the concept"),
4950
+ broader: z74.array(TaxonomyConceptLinkSchema).optional().describe("Links to broader concepts"),
4951
+ related: z74.array(TaxonomyConceptLinkSchema).optional().describe("Links to related concepts")
4790
4952
  });
4791
4953
  function updateConceptTool(config) {
4792
4954
  async function tool2(args) {
@@ -4828,11 +4990,11 @@ function updateConceptTool(config) {
4828
4990
  }
4829
4991
 
4830
4992
  // src/tools/taxonomies/concepts/getConcept.ts
4831
- import { z as z72 } from "zod";
4993
+ import { z as z75 } from "zod";
4832
4994
  import { createClient as createClient14 } from "contentful-management";
4833
- var GetConceptToolParams = z72.object({
4834
- organizationId: z72.string().describe("The ID of the Contentful organization"),
4835
- conceptId: z72.string().describe("The ID of the concept to retrieve")
4995
+ var GetConceptToolParams = z75.object({
4996
+ organizationId: z75.string().describe("The ID of the Contentful organization"),
4997
+ conceptId: z75.string().describe("The ID of the concept to retrieve")
4836
4998
  });
4837
4999
  function getConceptTool(config) {
4838
5000
  async function tool2(args) {
@@ -4849,18 +5011,18 @@ function getConceptTool(config) {
4849
5011
  }
4850
5012
 
4851
5013
  // src/tools/taxonomies/concepts/listConcepts.ts
4852
- import { z as z73 } from "zod";
5014
+ import { z as z76 } from "zod";
4853
5015
  import { createClient as createClient15 } from "contentful-management";
4854
- var ListConceptsToolParams = z73.object({
4855
- organizationId: z73.string().describe("The ID of the Contentful organization"),
4856
- conceptId: z73.string().optional().describe("The ID of the concept (required for descendants/ancestors)"),
4857
- limit: z73.number().optional().describe("Maximum number of concepts to return"),
4858
- select: z73.string().optional().describe("Comma-separated list of fields to return"),
4859
- include: z73.number().optional().describe("Include this many levels of linked entries"),
4860
- order: z73.string().optional().describe("Order concepts by this field"),
4861
- getDescendants: z73.boolean().optional().describe("Get descendants of the specified concept (requires conceptId)"),
4862
- getAncestors: z73.boolean().optional().describe("Get ancestors of the specified concept (requires conceptId)"),
4863
- getTotalOnly: z73.boolean().optional().describe("Get only the total number of concepts without full data")
5016
+ var ListConceptsToolParams = z76.object({
5017
+ organizationId: z76.string().describe("The ID of the Contentful organization"),
5018
+ conceptId: z76.string().optional().describe("The ID of the concept (required for descendants/ancestors)"),
5019
+ limit: z76.number().optional().describe("Maximum number of concepts to return"),
5020
+ select: z76.string().optional().describe("Comma-separated list of fields to return"),
5021
+ include: z76.number().optional().describe("Include this many levels of linked entries"),
5022
+ order: z76.string().optional().describe("Order concepts by this field"),
5023
+ getDescendants: z76.boolean().optional().describe("Get descendants of the specified concept (requires conceptId)"),
5024
+ getAncestors: z76.boolean().optional().describe("Get ancestors of the specified concept (requires conceptId)"),
5025
+ getTotalOnly: z76.boolean().optional().describe("Get only the total number of concepts without full data")
4864
5026
  });
4865
5027
  function listConceptsTool(config) {
4866
5028
  async function tool2(args) {
@@ -4984,6 +5146,7 @@ function createConceptTools(config) {
4984
5146
  inputParams: GetConceptToolParams.shape,
4985
5147
  annotations: {
4986
5148
  readOnlyHint: true,
5149
+ destructiveHint: false,
4987
5150
  openWorldHint: false
4988
5151
  },
4989
5152
  tool: getConcept
@@ -4994,6 +5157,7 @@ function createConceptTools(config) {
4994
5157
  inputParams: ListConceptsToolParams.shape,
4995
5158
  annotations: {
4996
5159
  readOnlyHint: true,
5160
+ destructiveHint: false,
4997
5161
  openWorldHint: false
4998
5162
  },
4999
5163
  tool: listConcepts
@@ -5036,54 +5200,54 @@ function createTaxonomyTools(config) {
5036
5200
  }
5037
5201
 
5038
5202
  // src/tools/jobs/space-to-space-migration/exportSpace.ts
5039
- import { z as z75 } from "zod";
5203
+ import { z as z78 } from "zod";
5040
5204
 
5041
5205
  // src/types/querySchema.ts
5042
- import { z as z74 } from "zod";
5043
- var EntryQuerySchema = z74.object({
5044
- content_type: z74.string().optional().describe("Filter by content type"),
5045
- include: z74.number().optional().describe("Include this many levels of linked entries"),
5046
- select: z74.string().optional().describe("Comma-separated list of fields to return"),
5047
- links_to_entry: z74.string().optional().describe("Find entries that link to the specified entry ID"),
5048
- limit: z74.number().optional().describe("Maximum number of entries to return"),
5049
- skip: z74.number().optional().describe("Skip this many entries"),
5050
- order: z74.string().optional().describe("Order entries by this field")
5206
+ import { z as z77 } from "zod";
5207
+ var EntryQuerySchema = z77.object({
5208
+ content_type: z77.string().optional().describe("Filter by content type"),
5209
+ include: z77.number().optional().describe("Include this many levels of linked entries"),
5210
+ select: z77.string().optional().describe("Comma-separated list of fields to return"),
5211
+ links_to_entry: z77.string().optional().describe("Find entries that link to the specified entry ID"),
5212
+ limit: z77.number().optional().describe("Maximum number of entries to return"),
5213
+ skip: z77.number().optional().describe("Skip this many entries"),
5214
+ order: z77.string().optional().describe("Order entries by this field")
5051
5215
  });
5052
- var AssetQuerySchema = z74.object({
5053
- mimetype_group: z74.string().optional().describe("Filter by MIME type group"),
5054
- select: z74.string().optional().describe("Comma-separated list of fields to return"),
5055
- limit: z74.number().optional().describe("Maximum number of assets to return"),
5056
- skip: z74.number().optional().describe("Skip this many assets"),
5057
- order: z74.string().optional().describe("Order assets by this field")
5216
+ var AssetQuerySchema = z77.object({
5217
+ mimetype_group: z77.string().optional().describe("Filter by MIME type group"),
5218
+ select: z77.string().optional().describe("Comma-separated list of fields to return"),
5219
+ limit: z77.number().optional().describe("Maximum number of assets to return"),
5220
+ skip: z77.number().optional().describe("Skip this many assets"),
5221
+ order: z77.string().optional().describe("Order assets by this field")
5058
5222
  });
5059
5223
 
5060
5224
  // src/tools/jobs/space-to-space-migration/exportSpace.ts
5061
5225
  var ExportSpaceToolParams = BaseToolSchema.extend({
5062
- exportDir: z75.string().optional().describe(
5226
+ exportDir: z78.string().optional().describe(
5063
5227
  "Directory to save the exported space data (optional, defaults to current directory)"
5064
5228
  ),
5065
- saveFile: z75.boolean().optional().default(true).describe("Save the exported space data to a file"),
5066
- contentFile: z75.string().optional().describe("Custom filename for the exported space data (optional)"),
5067
- includeDrafts: z75.boolean().optional().default(false).describe("Include draft entries in the export"),
5068
- includeArchived: z75.boolean().optional().default(false).describe("Include archived entries in the export"),
5069
- skipContentModel: z75.boolean().optional().default(false).describe("Skip exporting content types"),
5070
- skipEditorInterfaces: z75.boolean().optional().default(false).describe("Skip exporting editor interfaces"),
5071
- skipContent: z75.boolean().optional().default(false).describe("Skip exporting entries and assets"),
5072
- skipRoles: z75.boolean().optional().default(false).describe("Skip exporting roles and permissions"),
5073
- skipTags: z75.boolean().optional().default(false).describe("Skip exporting tags"),
5074
- skipWebhooks: z75.boolean().optional().default(false).describe("Skip exporting webhooks"),
5075
- stripTags: z75.boolean().optional().default(false).describe("Untag assets and entries"),
5076
- contentOnly: z75.boolean().optional().default(false).describe("Only export assets and entries"),
5229
+ saveFile: z78.boolean().optional().default(true).describe("Save the exported space data to a file"),
5230
+ contentFile: z78.string().optional().describe("Custom filename for the exported space data (optional)"),
5231
+ includeDrafts: z78.boolean().optional().default(false).describe("Include draft entries in the export"),
5232
+ includeArchived: z78.boolean().optional().default(false).describe("Include archived entries in the export"),
5233
+ skipContentModel: z78.boolean().optional().default(false).describe("Skip exporting content types"),
5234
+ skipEditorInterfaces: z78.boolean().optional().default(false).describe("Skip exporting editor interfaces"),
5235
+ skipContent: z78.boolean().optional().default(false).describe("Skip exporting entries and assets"),
5236
+ skipRoles: z78.boolean().optional().default(false).describe("Skip exporting roles and permissions"),
5237
+ skipTags: z78.boolean().optional().default(false).describe("Skip exporting tags"),
5238
+ skipWebhooks: z78.boolean().optional().default(false).describe("Skip exporting webhooks"),
5239
+ stripTags: z78.boolean().optional().default(false).describe("Untag assets and entries"),
5240
+ contentOnly: z78.boolean().optional().default(false).describe("Only export assets and entries"),
5077
5241
  queryEntries: EntryQuerySchema.optional().describe(
5078
5242
  "Export only entries that match query parameters"
5079
5243
  ),
5080
5244
  queryAssets: AssetQuerySchema.optional().describe(
5081
5245
  "Export only assets that match query parameters"
5082
5246
  ),
5083
- downloadAssets: z75.boolean().optional().default(false).describe("Download actual asset files"),
5084
- maxAllowedLimit: z75.number().optional().default(1e3).describe("Maximum number of items per request"),
5085
- errorLogFile: z75.string().optional().describe("Path to error log output file"),
5086
- useVerboseRenderer: z75.boolean().optional().describe("Line-by-line logging, useful for CI")
5247
+ downloadAssets: z78.boolean().optional().default(false).describe("Download actual asset files"),
5248
+ maxAllowedLimit: z78.number().optional().default(1e3).describe("Maximum number of items per request"),
5249
+ errorLogFile: z78.string().optional().describe("Path to error log output file"),
5250
+ useVerboseRenderer: z78.boolean().optional().describe("Line-by-line logging, useful for CI")
5087
5251
  });
5088
5252
  function createExportSpaceTool(config) {
5089
5253
  async function tool2(args) {
@@ -5133,70 +5297,70 @@ function createExportSpaceTool(config) {
5133
5297
  }
5134
5298
 
5135
5299
  // src/tools/jobs/space-to-space-migration/paramCollection.ts
5136
- import { z as z76 } from "zod";
5300
+ import { z as z79 } from "zod";
5137
5301
  var ParamCollectionToolParams = BaseToolSchema.extend({
5138
- confirmation: z76.boolean().optional().describe(
5302
+ confirmation: z79.boolean().optional().describe(
5139
5303
  "User confirmation that they are ready to proceed with the workflow"
5140
5304
  ),
5141
- export: z76.object({
5142
- spaceId: z76.string().optional().describe("ID of the space with source data"),
5143
- environmentId: z76.string().optional().describe("ID of the environment in the source space"),
5144
- deliveryToken: z76.string().optional().describe("CDA token to export only published content (excludes tags)"),
5145
- exportDir: z76.string().optional().describe("Path to export JSON output"),
5146
- saveFile: z76.boolean().optional().describe("Save the export as a JSON file"),
5147
- contentFile: z76.string().optional().describe("Filename for exported data"),
5148
- includeDrafts: z76.boolean().optional().describe("Include drafts in exported entries"),
5149
- includeArchived: z76.boolean().optional().describe("Include archived entries"),
5150
- skipContentModel: z76.boolean().optional().describe("Skip exporting content models"),
5151
- skipEditorInterfaces: z76.boolean().optional().describe("Skip exporting editor interfaces"),
5152
- skipContent: z76.boolean().optional().describe("Skip exporting entries and assets"),
5153
- skipRoles: z76.boolean().optional().describe("Skip exporting roles and permissions"),
5154
- skipTags: z76.boolean().optional().describe("Skip exporting tags"),
5155
- skipWebhooks: z76.boolean().optional().describe("Skip exporting webhooks"),
5156
- stripTags: z76.boolean().optional().describe("Remove tags from entries and assets"),
5157
- contentOnly: z76.boolean().optional().describe("Export only entries and assets"),
5305
+ export: z79.object({
5306
+ spaceId: z79.string().optional().describe("ID of the space with source data"),
5307
+ environmentId: z79.string().optional().describe("ID of the environment in the source space"),
5308
+ deliveryToken: z79.string().optional().describe("CDA token to export only published content (excludes tags)"),
5309
+ exportDir: z79.string().optional().describe("Path to export JSON output"),
5310
+ saveFile: z79.boolean().optional().describe("Save the export as a JSON file"),
5311
+ contentFile: z79.string().optional().describe("Filename for exported data"),
5312
+ includeDrafts: z79.boolean().optional().describe("Include drafts in exported entries"),
5313
+ includeArchived: z79.boolean().optional().describe("Include archived entries"),
5314
+ skipContentModel: z79.boolean().optional().describe("Skip exporting content models"),
5315
+ skipEditorInterfaces: z79.boolean().optional().describe("Skip exporting editor interfaces"),
5316
+ skipContent: z79.boolean().optional().describe("Skip exporting entries and assets"),
5317
+ skipRoles: z79.boolean().optional().describe("Skip exporting roles and permissions"),
5318
+ skipTags: z79.boolean().optional().describe("Skip exporting tags"),
5319
+ skipWebhooks: z79.boolean().optional().describe("Skip exporting webhooks"),
5320
+ stripTags: z79.boolean().optional().describe("Remove tags from entries and assets"),
5321
+ contentOnly: z79.boolean().optional().describe("Export only entries and assets"),
5158
5322
  queryEntries: EntryQuerySchema.optional().describe(
5159
5323
  "Export only entries that match query parameters"
5160
5324
  ),
5161
5325
  queryAssets: AssetQuerySchema.optional().describe(
5162
5326
  "Export only assets that match query parameters"
5163
5327
  ),
5164
- downloadAssets: z76.boolean().optional().describe("Download asset files to disk"),
5165
- host: z76.string().optional().describe("Management API host"),
5166
- hostDelivery: z76.string().optional().describe("Delivery API host"),
5167
- proxy: z76.string().optional().describe("HTTP/HTTPS proxy config"),
5168
- rawProxy: z76.boolean().optional().describe("Pass raw proxy config directly to Axios"),
5169
- maxAllowedLimit: z76.number().optional().describe("Page size for requests"),
5170
- headers: z76.record(z76.any()).optional().describe("Additional headers to include in requests"),
5171
- errorLogFile: z76.string().optional().describe("Path to error log output file"),
5172
- useVerboseRenderer: z76.boolean().optional().describe("Line-by-line logging, useful for CI"),
5173
- config: z76.string().optional().describe("Path to a JSON config file with all options")
5328
+ downloadAssets: z79.boolean().optional().describe("Download asset files to disk"),
5329
+ host: z79.string().optional().describe("Management API host"),
5330
+ hostDelivery: z79.string().optional().describe("Delivery API host"),
5331
+ proxy: z79.string().optional().describe("HTTP/HTTPS proxy config"),
5332
+ rawProxy: z79.boolean().optional().describe("Pass raw proxy config directly to Axios"),
5333
+ maxAllowedLimit: z79.number().optional().describe("Page size for requests"),
5334
+ headers: z79.record(z79.any()).optional().describe("Additional headers to include in requests"),
5335
+ errorLogFile: z79.string().optional().describe("Path to error log output file"),
5336
+ useVerboseRenderer: z79.boolean().optional().describe("Line-by-line logging, useful for CI"),
5337
+ config: z79.string().optional().describe("Path to a JSON config file with all options")
5174
5338
  }).optional(),
5175
- import: z76.object({
5176
- spaceId: z76.string().optional().describe("ID of the space to import into"),
5177
- environmentId: z76.string().optional().describe("Target environment in destination space"),
5178
- contentFile: z76.string().optional().describe("Path to JSON file containing the content to import"),
5179
- content: z76.record(z76.any()).optional().describe(
5339
+ import: z79.object({
5340
+ spaceId: z79.string().optional().describe("ID of the space to import into"),
5341
+ environmentId: z79.string().optional().describe("Target environment in destination space"),
5342
+ contentFile: z79.string().optional().describe("Path to JSON file containing the content to import"),
5343
+ content: z79.record(z79.any()).optional().describe(
5180
5344
  "JS object containing import content (must match expected structure)"
5181
5345
  ),
5182
- contentModelOnly: z76.boolean().optional().describe("Import only content types"),
5183
- skipContentModel: z76.boolean().optional().describe("Skip importing content types and locales"),
5184
- skipLocales: z76.boolean().optional().describe("Skip importing locales"),
5185
- skipContentUpdates: z76.boolean().optional().describe("Do not update existing content"),
5186
- skipContentPublishing: z76.boolean().optional().describe("Create but do not publish content"),
5187
- uploadAssets: z76.boolean().optional().describe("Upload asset files (requires assetsDirectory)"),
5188
- skipAssetUpdates: z76.boolean().optional().describe("Do not update existing assets"),
5189
- assetsDirectory: z76.string().optional().describe("Path to directory containing exported asset files"),
5190
- timeout: z76.number().optional().describe("Time between retries during asset processing (ms)"),
5191
- retryLimit: z76.number().optional().describe("Max retries for asset processing"),
5192
- host: z76.string().optional().describe("Management API host"),
5193
- proxy: z76.string().optional().describe("HTTP/HTTPS proxy string (host:port or user:pass@host:port)"),
5194
- rawProxy: z76.boolean().optional().describe("Pass proxy config directly to Axios"),
5195
- rateLimit: z76.number().optional().describe("Max requests per second to the API"),
5196
- headers: z76.record(z76.any()).optional().describe("Additional headers to attach to requests"),
5197
- errorLogFile: z76.string().optional().describe("Path to error log file"),
5198
- useVerboseRenderer: z76.boolean().optional().describe("Line-by-line progress output (good for CI)"),
5199
- config: z76.string().optional().describe("Path to config JSON file (merged with CLI args)")
5346
+ contentModelOnly: z79.boolean().optional().describe("Import only content types"),
5347
+ skipContentModel: z79.boolean().optional().describe("Skip importing content types and locales"),
5348
+ skipLocales: z79.boolean().optional().describe("Skip importing locales"),
5349
+ skipContentUpdates: z79.boolean().optional().describe("Do not update existing content"),
5350
+ skipContentPublishing: z79.boolean().optional().describe("Create but do not publish content"),
5351
+ uploadAssets: z79.boolean().optional().describe("Upload asset files (requires assetsDirectory)"),
5352
+ skipAssetUpdates: z79.boolean().optional().describe("Do not update existing assets"),
5353
+ assetsDirectory: z79.string().optional().describe("Path to directory containing exported asset files"),
5354
+ timeout: z79.number().optional().describe("Time between retries during asset processing (ms)"),
5355
+ retryLimit: z79.number().optional().describe("Max retries for asset processing"),
5356
+ host: z79.string().optional().describe("Management API host"),
5357
+ proxy: z79.string().optional().describe("HTTP/HTTPS proxy string (host:port or user:pass@host:port)"),
5358
+ rawProxy: z79.boolean().optional().describe("Pass proxy config directly to Axios"),
5359
+ rateLimit: z79.number().optional().describe("Max requests per second to the API"),
5360
+ headers: z79.record(z79.any()).optional().describe("Additional headers to attach to requests"),
5361
+ errorLogFile: z79.string().optional().describe("Path to error log file"),
5362
+ useVerboseRenderer: z79.boolean().optional().describe("Line-by-line progress output (good for CI)"),
5363
+ config: z79.string().optional().describe("Path to config JSON file (merged with CLI args)")
5200
5364
  }).optional()
5201
5365
  });
5202
5366
  var paramCollectionConfig = {
@@ -5312,25 +5476,25 @@ var createParamCollectionTool = withErrorHandling(
5312
5476
  );
5313
5477
 
5314
5478
  // src/tools/jobs/space-to-space-migration/importSpace.ts
5315
- import { z as z77 } from "zod";
5479
+ import { z as z80 } from "zod";
5316
5480
  var ImportSpaceToolParams = BaseToolSchema.extend({
5317
- contentFile: z77.string().optional().describe("Path to JSON file containing the content to import"),
5318
- content: z77.record(z77.any()).optional().describe(
5481
+ contentFile: z80.string().optional().describe("Path to JSON file containing the content to import"),
5482
+ content: z80.record(z80.any()).optional().describe(
5319
5483
  "JS object containing import content (must match expected structure)"
5320
5484
  ),
5321
- contentModelOnly: z77.boolean().optional().default(false).describe("Import only content types"),
5322
- skipContentModel: z77.boolean().optional().default(false).describe("Skip importing content types and locales"),
5323
- skipLocales: z77.boolean().optional().default(false).describe("Skip importing locales"),
5324
- skipContentUpdates: z77.boolean().optional().default(false).describe("Do not update existing content"),
5325
- skipContentPublishing: z77.boolean().optional().default(false).describe("Create but do not publish content"),
5326
- uploadAssets: z77.boolean().optional().default(false).describe("Upload asset files (requires assetsDirectory)"),
5327
- skipAssetUpdates: z77.boolean().optional().default(false).describe("Do not update existing assets"),
5328
- assetsDirectory: z77.string().optional().describe("Path to directory containing exported asset files"),
5329
- timeout: z77.number().optional().default(3e3).describe("Time between retries during asset processing (ms)"),
5330
- retryLimit: z77.number().optional().default(10).describe("Max retries for asset processing"),
5331
- rateLimit: z77.number().optional().default(7).describe("Max requests per second to the API"),
5332
- errorLogFile: z77.string().optional().describe("Path to error log file"),
5333
- useVerboseRenderer: z77.boolean().optional().describe("Line-by-line progress output (good for CI)")
5485
+ contentModelOnly: z80.boolean().optional().default(false).describe("Import only content types"),
5486
+ skipContentModel: z80.boolean().optional().default(false).describe("Skip importing content types and locales"),
5487
+ skipLocales: z80.boolean().optional().default(false).describe("Skip importing locales"),
5488
+ skipContentUpdates: z80.boolean().optional().default(false).describe("Do not update existing content"),
5489
+ skipContentPublishing: z80.boolean().optional().default(false).describe("Create but do not publish content"),
5490
+ uploadAssets: z80.boolean().optional().default(false).describe("Upload asset files (requires assetsDirectory)"),
5491
+ skipAssetUpdates: z80.boolean().optional().default(false).describe("Do not update existing assets"),
5492
+ assetsDirectory: z80.string().optional().describe("Path to directory containing exported asset files"),
5493
+ timeout: z80.number().optional().default(3e3).describe("Time between retries during asset processing (ms)"),
5494
+ retryLimit: z80.number().optional().default(10).describe("Max retries for asset processing"),
5495
+ rateLimit: z80.number().optional().default(7).describe("Max requests per second to the API"),
5496
+ errorLogFile: z80.string().optional().describe("Path to error log file"),
5497
+ useVerboseRenderer: z80.boolean().optional().describe("Line-by-line progress output (good for CI)")
5334
5498
  });
5335
5499
  function createImportSpaceTool(config) {
5336
5500
  async function tool2(args) {
@@ -5375,7 +5539,7 @@ function createImportSpaceTool(config) {
5375
5539
  }
5376
5540
 
5377
5541
  // src/tools/jobs/space-to-space-migration/migrationHandler.ts
5378
- import { z as z78 } from "zod";
5542
+ import { z as z81 } from "zod";
5379
5543
 
5380
5544
  // src/tools/jobs/space-to-space-migration/instructions.ts
5381
5545
  var S2S_MIGRATION_INSTRUCTIONS = `
@@ -5418,7 +5582,7 @@ The space to space migration workflow has been concluded and all related tools h
5418
5582
  The workflow is now complete. You can start a new migration workflow by calling space_to_space_migration_handler with enableWorkflow=true if needed.
5419
5583
  `;
5420
5584
  var SpaceToSpaceMigrationHandlerToolParams = BaseToolSchema.extend({
5421
- enableWorkflow: z78.boolean().describe(
5585
+ enableWorkflow: z81.boolean().describe(
5422
5586
  "Set to true to enable the workflow tools, false to disable them and conclude the workflow"
5423
5587
  )
5424
5588
  });
@@ -5472,6 +5636,7 @@ function createJobTools(config) {
5472
5636
  inputParams: ParamCollectionToolParams.shape,
5473
5637
  annotations: {
5474
5638
  readOnlyHint: true,
5639
+ destructiveHint: false,
5475
5640
  openWorldHint: false
5476
5641
  },
5477
5642
  tool: paramCollection
@@ -5482,6 +5647,7 @@ function createJobTools(config) {
5482
5647
  inputParams: ExportSpaceToolParams.shape,
5483
5648
  annotations: {
5484
5649
  readOnlyHint: true,
5650
+ destructiveHint: false,
5485
5651
  openWorldHint: false
5486
5652
  },
5487
5653
  tool: exportSpace