@umbraco-cms/mcp-dev 16.0.0-beta.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-present Umbraco
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,603 @@
1
+ # Umbraco MCP ![GitHub License](https://img.shields.io/github/license/umbraco/Umbraco-CMS-MCP-Dev?style=plastic&link=https%3A%2F%2Fgithub.com%2Fumbraco%2FUmbraco-CMS-MCP-Dev%2Fblob%2Fmain%2FLICENSE)
2
+
3
+ An MCP (Model Context Protocol) server for [Umbraco CMS](https://umbraco.com/)
4
+ it provides access to key parts of the Management API enabling you to do back office tasks with your agent.
5
+
6
+ ## Intro
7
+
8
+ The MCP server uses an Umbraco API user to access your Umbraco Management API, mean the tools available to the AI can be controlled using normal Umbraco user permissions.
9
+
10
+ ## Getting Started
11
+
12
+ ### Umbraco
13
+
14
+ In order for the MCP to talk to the Management API you will need to create a API user
15
+ if you are unsure how to do this follow [Umbraco's documentation](https://docs.umbraco.com/umbraco-cms/fundamentals/data/users/api-users).
16
+
17
+ The level of access you provider this user will determine what your agent is able to do.
18
+
19
+ ### Installation
20
+
21
+ First, create an Umbraco API user with appropriate permissions. You can find instructions in [Umbraco's documentation](https://docs.umbraco.com/umbraco-cms/fundamentals/data/users/api-users).
22
+
23
+ <details>
24
+ <summary>Claude Desktop</summary>
25
+
26
+ To get started with using the Umbraco MCP with Claude, first download and install the [Claude.ai desktop app](https://claude.ai/download).
27
+
28
+ Start up your Umbraco instance (currently working with version **15.latest**) and create new API user credentials. You can see instructions on how to do that on the [Umbraco docs](https://docs.umbraco.com/umbraco-cms/fundamentals/data/users/api-users).
29
+
30
+ Once you have this information head back into Claude desktop app and head to Settings > Developer > Edit Config. Open the json file in a text editor of your choice and add the below, replacing the `UMBRACO_CLIENT_ID`, `UMBRACO_CLIENT_SECRET` and `UMBRACO_BASE_URL` with your local connection information. The addition of the `NODE_TLS_REJECT_UNAUTHORIZED` env flag is to allow Claude to connect to the MCP using a self-signed cert.
31
+
32
+ ```
33
+ {
34
+ "mcpServers": {
35
+ "umbraco-mcp": {
36
+ "command": "npx",
37
+ "args": ["@umbraco-cms/mcp-dev@beta"],
38
+ "env": {
39
+ "NODE_TLS_REJECT_UNAUTHORIZED": "0",
40
+ "UMBRACO_CLIENT_ID": "umbraco-back-office-mcp",
41
+ "UMBRACO_CLIENT_SECRET": "1234567890",
42
+ "UMBRACO_BASE_URL": "https://localhost:44391",
43
+ "UMBRACO_INCLUDE_TOOL_COLLECTIONS": "culture,document,media",
44
+ "UMBRACO_EXCLUDE_TOOLS": "delete-document,empty-recycle-bin"
45
+ }
46
+ }
47
+ }
48
+ }
49
+ ```
50
+
51
+ Restart Claude and try it out with a simple prompt such as `Tell me the GUID of the home page document type`. You'll need to allow each one of the tools as the Umbraco MCP starts to work its way through. If you receive a connection error with the Umbraco MCP click the button to open the logs and review the file `mcp-server-umbraco-mcp.log` for extra information on how to fix the issue.
52
+
53
+ > [!NOTE]
54
+ > You may need to update to a paid version of Claude.ai in order to have a large enough context window to run your prompts.
55
+
56
+ </details>
57
+
58
+
59
+ <details>
60
+ <summary>Claude Code</summary>
61
+
62
+ Use the Claude Code CLI to add the Umbraco MCP server:
63
+
64
+ ```bash
65
+ claude mcp add umbraco-mcp npx @umbraco-cms/mcp-dev@beta
66
+ ```
67
+
68
+ Or configure environment variables and scope:
69
+ ```bash
70
+ # Install Claude Code globally (if not already installed)
71
+ npm install -g @anthropic-ai/claude-code
72
+
73
+ # Add with environment variables
74
+ claude mcp add umbraco-mcp --env UMBRACO_CLIENT_ID="your-id" --env UMBRACO_CLIENT_SECRET="your-secret" --env UMBRACO_BASE_URL="https://your-domain.com" --env NODE_TLS_REJECT_UNAUTHORIZED="0" --env UMBRACO_INCLUDE_TOOL_COLLECTIONS="culture,document,media" -- npx @umbraco-cms/mcp-dev@beta
75
+
76
+ # Verify installation
77
+ claude mcp list
78
+ ```
79
+
80
+ This will add umbraco-mcp to the existing project in the claude.json config file.
81
+
82
+
83
+ </details>
84
+
85
+ <details>
86
+ <summary>VS Code</summary>
87
+
88
+ #### Click the button to install:
89
+ [<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522umbraco-mcp%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540umbraco-mcp%252Fumbraco-mcp-cms%2540alpha%2522%255D%252C%2522env%2522%253A%257B%2522UMBRACO_CLIENT_ID%2522%253A%2522%253CAPI%2520user%2520name%253E%2522%252C%2522UMBRACO_CLIENT_SECRET%2522%253A%2522%253CAPI%2520client%2520secert%253E%2522%252C%2522UMBRACO_BASE_URL%2522%253A%2522https%253A%252F%252F%253Cdomain%253E%2522%252C%2522UMBRACO_EXCLUDE_TOOLS%2522%253A%2522%253Ctoolname%253E%252C%253Ctoolname%253E%2522%257D%257D)
90
+
91
+ **Requirements:** VS Code 1.101+ with GitHub Copilot Chat extension installed.
92
+
93
+ Or install manually:
94
+ Follow the MCP [install guide](https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_add-an-mcp-server), use this config.
95
+
96
+ ```json
97
+ {
98
+ "servers": {
99
+ "umbraco-mcp": {
100
+ "type": "stdio",
101
+ "command": "npx",
102
+ "args": ["@umbraco-cms/mcp-dev@beta"],
103
+ "env": {
104
+ "UMBRACO_CLIENT_ID": "<API user name>",
105
+ "UMBRACO_CLIENT_SECRET": "<API client secret>",
106
+ "UMBRACO_BASE_URL": "https://<domain>",
107
+ "UMBRACO_INCLUDE_TOOL_COLLECTIONS": "<collection>,<collection>",
108
+ "UMBRACO_EXCLUDE_TOOLS": "<toolname>,<toolname>"
109
+ }
110
+ }
111
+ }
112
+ }
113
+ ```
114
+
115
+ </details>
116
+
117
+ <details>
118
+ <summary>Cursor</summary>
119
+
120
+ #### Or install manually:
121
+ Go to `Cursor Settings` -> `Tools & Integrations` -> `Add new MCP Server`.
122
+
123
+ Add the following to the config file and update the env variables.
124
+
125
+ ```json
126
+ {
127
+ "mcpServers": {
128
+ "umbraco-mcp": {
129
+ "command": "npx",
130
+ "args": ["@umbraco-cms/mcp-dev@beta"],
131
+ "env": {
132
+ "UMBRACO_CLIENT_ID": "<API user name>",
133
+ "UMBRACO_CLIENT_SECRET": "<API client secret>",
134
+ "UMBRACO_BASE_URL": "https://<domain>",
135
+ "UMBRACO_INCLUDE_TOOL_COLLECTIONS": "<collection>,<collection>",
136
+ "UMBRACO_EXCLUDE_TOOLS": "<toolname>,<toolname>"
137
+ }
138
+ }
139
+ }
140
+ }
141
+ ```
142
+ </details>
143
+
144
+
145
+ ### Configuration Environment Variables
146
+
147
+ `UMBRACO_CLIENT_ID`
148
+
149
+ Umbraco API User name
150
+
151
+ `UMBRACO_CLIENT_SECRET`
152
+
153
+ Umbraco API User client secert
154
+
155
+ `UMBRACO_BASE_URL`
156
+
157
+ Url of the site you want to connect to, it only needs to be the scheme and domain e.g https://<nolink/>example.com
158
+
159
+ `UMBRACO_EXCLUDE_TOOLS`
160
+
161
+ The allows you to specify tools by name if you wish to exclude them for the usable tools list. This is helpful as some Agents, cant handle so many tools. This is a commma seperated list of tools which can be found below.
162
+
163
+ `UMBRACO_INCLUDE_TOOLS`
164
+
165
+ The allows you to specify tools by name if you wish to include only specific tools in the usable tools list. When specified, only these tools will be available. This is a commma seperated list of tools which can be found below.
166
+
167
+ `UMBRACO_INCLUDE_TOOL_COLLECTIONS`
168
+
169
+ The allows you to specify collections by name if you wish to include only specific collections. When specified, only tools from these collections will be available. This is a commma seperated list of collection names (see tool list below for collection names).
170
+
171
+ `UMBRACO_EXCLUDE_TOOL_COLLECTIONS`
172
+
173
+ The allows you to specify collections by name if you wish to exclude them from the usable tools list. This is a commma seperated list of collection names (see tool list below for collection names).
174
+
175
+
176
+ ## Umbraco Management API Tools
177
+
178
+ **Note:** Collection names are shown in brackets for use with `UMBRACO_INCLUDE_TOOL_COLLECTIONS` and `UMBRACO_EXCLUDE_TOOL_COLLECTIONS`.
179
+
180
+ <details>
181
+ <summary> View Tool list</summary>
182
+ <br>
183
+
184
+ <details>
185
+ <summary>Culture (culture)</summary>
186
+ <br>
187
+
188
+ `get-culture` - gets all cultures avaliable to Umbraco
189
+ </details>
190
+
191
+ <details>
192
+ <summary>Data Type (data-type)</summary>
193
+ <br>
194
+
195
+ `get-data-type-search` - Search for data types
196
+ `get-data-type` - Get a specific data type by ID
197
+ `get-data-type-references` - Get references to a data type
198
+ `is-used-data-type` - Check if a data type is in use
199
+ `get-data-type-root` - Get root level data types
200
+ `get-data-type-children` - Get child data types
201
+ `get-data-type-ancestors` - Get ancestor data types
202
+ `get-all-data-types` - Get all data types
203
+ `delete-data-type` - Delete a data type
204
+ `create-data-type` - Create a new data type
205
+ `update-data-type` - Update an existing data type
206
+ `copy-data-type` - Copy a data type
207
+ `move-data-type` - Move a data type to a different location
208
+ `create-data-type-folder` - Create a folder for organizing data types
209
+ `delete-data-type-folder` - Delete a data type folder
210
+ `get-data-type-folder` - Get information about a data type folder
211
+ `update-data-type-folder` - Update a data type folder details
212
+ </details>
213
+
214
+ <details>
215
+ <summary>Dictionary (dictionary)</summary>
216
+ <br>
217
+
218
+ `get-dictionary-search` - Search for dictionary items
219
+ `get-dictionary-by-key` - Get a dictionary item by key
220
+ `create-dictionary` - Create a new dictionary item
221
+ `update-dictionary` - Update a dictionary item
222
+ `delete-dictionary` - Delete a dictionary item
223
+ </details>
224
+
225
+ <details>
226
+ <summary>Document (document)</summary>
227
+ <br>
228
+
229
+ `get-document-by-id` - Get a document by ID
230
+ `get-document-publish` - Get document publish status
231
+ `get-document-configuration` - Get document configuration
232
+ `copy-document` - Copy a document
233
+ `create-document` - Create a new document
234
+ `post-document-public-access` - Set document public access
235
+ `delete-document` - Delete a document
236
+ `delete-document-public-access` - Remove public access from a document
237
+ `get-document-urls` - Get document URLs
238
+ `get-document-domains` - Get document domains
239
+ `get-document-audit-log` - Get document audit log
240
+ `get-document-public-access` - Get document public access settings
241
+ `move-document` - Move a document
242
+ `move-to-recycle-bin` - Move document to recycle bin
243
+ `get-document-notifications` - Get document notifications
244
+ `publish-document` - Publish a document
245
+ `publish-document-with-descendants` - Publish a document and its descendants
246
+ `sort-document` - Sort document order
247
+ `unpublish-document` - Unpublish a document
248
+ `update-document` - Update a document
249
+ `put-document-domains` - Update document domains
250
+ `put-document-notifications` - Update document notifications
251
+ `put-document-public-access` - Update document public access
252
+ `delete-from-recycle-bin` - Delete document from recycle bin
253
+ `empty-recycle-bin` - Empty the recycle bin
254
+ `get-recycle-bin-root` - Get root items in recycle bin
255
+ `get-recycle-bin-children` - Get child items in recycle bin
256
+ `search-document` - Search for documents
257
+ `validate-document` - Validate a document
258
+ `get-document-root` - Get root documents
259
+ `get-document-children` - Get child documents
260
+ `get-document-ancestors` - Get document ancestors
261
+ </details>
262
+
263
+ <details>
264
+ <summary>Document Blueprint (document-blueprint)</summary>
265
+ <br>
266
+
267
+ `get-blueprint` - Get a document blueprint
268
+ `delete-blueprint` - Delete a document blueprint
269
+ `update-blueprint` - Update a document blueprint
270
+ `create-blueprint` - Create a new document blueprint
271
+ `get-blueprint-ancestors` - Get blueprint ancestors
272
+ `get-blueprint-children` - Get blueprint children
273
+ `get-blueprint-root` - Get root blueprints
274
+ </details>
275
+
276
+ <details>
277
+ <summary>Document Version (document-version)</summary>
278
+ <br>
279
+
280
+ `get-document-version` - Get document versions with pagination
281
+ `get-document-version-by-id` - Get a specific document version by ID
282
+ `update-document-version-prevent-cleanup` - Prevent or allow cleanup of a document version
283
+ `create-document-version-rollback` - Rollback a document to a specific version
284
+ </details>
285
+
286
+ <details>
287
+ <summary>Document Type (document-type)</summary>
288
+ <br>
289
+
290
+ `get-document-type` - Get a document type
291
+ `get-document-type-configuration` - Get document type configuration
292
+ `get-document-type-blueprint` - Get document type blueprint
293
+ `get-document-type-by-id-array` - Get document types by IDs
294
+ `get-document-type-available-compositions` - Get available compositions
295
+ `get-document-type-composition-references` - Get composition references
296
+ `update-document-type` - Update a document type
297
+ `copy-document-type` - Copy a document type
298
+ `move-document-type` - Move a document type
299
+ `create-document-type` - Create a new document type
300
+ `delete-document-type` - Delete a document type
301
+ `create-element-type` - Create an element type
302
+ `get-icons` - Get available icons
303
+ `get-document-type-allowed-children` - Get allowed child types
304
+ `get-all-document-types` - Get all document types
305
+ `create-document-type-folder` - Create a folder
306
+ `delete-document-type-folder` - Delete a folder
307
+ `get-document-type-folder` - Get folder info
308
+ `update-document-type-folder` - Update folder details
309
+ `get-document-type-root` - Get root document types
310
+ `get-document-type-ancestors` - Get document type ancestors
311
+ `get-document-type-children` - Get document type children
312
+ </details>
313
+
314
+ <details>
315
+ <summary>Language (language)</summary>
316
+ <br>
317
+
318
+ `get-language-items` - Get all languages
319
+ `get-default-language` - Get default language
320
+ `create-language` - Create a new language
321
+ `update-language` - Update a language
322
+ `delete-language` - Delete a language
323
+ `get-language-by-iso-code` - Get language by ISO code
324
+ </details>
325
+
326
+ <details>
327
+ <summary>Log Viewer (log-viewer)</summary>
328
+ <br>
329
+
330
+ `get-log-viewer-saved-search-by-name` - Get saved search by name
331
+ `get-log-viewer-level-count` - Get log level counts
332
+ `post-log-viewer-saved-search` - Save a log search
333
+ `delete-log-viewer-saved-search-by-name` - Delete saved search
334
+ `get-log-viewer` - Get logs
335
+ `get-log-viewer-level` - Get log levels
336
+ `get-log-viewer-search` - Search logs
337
+ `get-log-viewer-validate-logs` - Validate logs
338
+ `get-log-viewer-message-template` - Get message template
339
+ </details>
340
+
341
+ <details>
342
+ <summary>Media (media)</summary>
343
+ <br>
344
+
345
+ `get-media-by-id` - Get media by ID
346
+ `get-media-ancestors` - Get media ancestors
347
+ `get-media-children` - Get media children
348
+ `get-media-root` - Get root media items
349
+ `create-media` - Create new media
350
+ `delete-media` - Delete media
351
+ `update-media` - Update media
352
+ `get-media-configuration` - Get media configuration
353
+ `get-media-urls` - Get media URLs
354
+ `validate-media` - Validate media
355
+ `sort-media` - Sort media items
356
+ `get-media-by-id-array` - Get media by IDs
357
+ `move-media` - Move media
358
+ `get-media-audit-log` - Get media audit log
359
+ `get-media-recycle-bin-root` - Get recycle bin root
360
+ `get-media-recycle-bin-children` - Get recycle bin children
361
+ `empty-recycle-bin` - Empty recycle bin
362
+ `restore-from-recycle-bin` - Restore from recycle bin
363
+ `move-media-to-recycle-bin` - Move to recycle bin
364
+ `delete-from-recycle-bin` - Delete from recycle bin
365
+ </details>
366
+
367
+ <details>
368
+ <summary>Media Type (media-type)</summary>
369
+ <br>
370
+
371
+ `get-media-type-configuration` - Get media type configuration
372
+ `get-media-type-by-id` - Get media type by ID
373
+ `get-media-type-by-ids` - Get media types by IDs
374
+ `get-allowed` - Get allowed media types
375
+ `get-media-type-allowed-at-root` - Get types allowed at root
376
+ `get-media-type-allowed-children` - Get allowed child types
377
+ `get-media-type-composition-references` - Get composition references
378
+ `get-root` - Get root media types
379
+ `get-children` - Get child media types
380
+ `get-ancestors` - Get ancestor media types
381
+ `get-folder` - Get folder information
382
+ `create-folder` - Create a new folder
383
+ `delete-folder` - Delete a folder
384
+ `update-folder` - Update folder details
385
+ `create-media-type` - Create a new media type
386
+ `copy-media-type` - Copy a media type
387
+ `get-media-type-available-compositions` - Get available compositions
388
+ `update-media-type` - Update a media type
389
+ `move-media-type` - Move a media type
390
+ `delete-media-type` - Delete a media type
391
+ </details>
392
+
393
+ <details>
394
+ <summary>Member (member)</summary>
395
+ <br>
396
+
397
+ `get-member` - Get member by ID
398
+ `create-member` - Create a new member
399
+ `delete-member` - Delete a member
400
+ `update-member` - Update a member
401
+ `find-member` - Find members
402
+ </details>
403
+
404
+ <details>
405
+ <summary>Member Group (member-group)</summary>
406
+ <br>
407
+
408
+ `get-member-group` - Get member group
409
+ `get-member-group-by-id-array` - Get member groups by IDs
410
+ `create-member-group` - Create a new member group
411
+ `update-member-group` - Update a member group
412
+ `delete-member-group` - Delete a member group
413
+ `get-member-group-root` - Get root member groups
414
+ </details>
415
+
416
+ <details>
417
+ <summary>Member Type (member-type)</summary>
418
+ <br>
419
+
420
+ `get-member-type-by-id` - Get member type by ID
421
+ `create-member-type` - Create a new member type
422
+ `get-member-type-by-id-array` - Get member types by IDs
423
+ `delete-member-type` - Delete a member type
424
+ `update-member-type` - Update a member type
425
+ `copy-member-type` - Copy a member type
426
+ `get-member-type-available-compositions` - Get available compositions
427
+ `get-member-type-composition-references` - Get composition references
428
+ `get-member-type-configuration` - Get member type configuration
429
+ `get-member-type-root` - Get root member types
430
+ </details>
431
+
432
+ <details>
433
+ <summary>Partial View (partial-view)</summary>
434
+ <br>
435
+
436
+ `get-partial-view-by-path` - Get partial view by path
437
+ `get-partial-view-folder-by-path` - Get partial view folder by path
438
+ `get-partial-view-snippet-by-id` - Get partial view snippet by ID
439
+ `get-partial-view-snippet` - Get partial view snippet
440
+ `create-partial-view` - Create a new partial view
441
+ `create-partial-view-folder` - Create a partial view folder
442
+ `update-partial-view` - Update a partial view
443
+ `rename-partial-view` - Rename a partial view
444
+ `delete-partial-view` - Delete a partial view
445
+ `delete-partial-view-folder` - Delete a partial view folder
446
+ `get-partial-view-root` - Get root partial views
447
+ `get-partial-view-children` - Get child partial views
448
+ `get-partial-view-ancestors` - Get partial view ancestors
449
+ `get-partial-view-search` - Search partial views
450
+ </details>
451
+
452
+ <details>
453
+ <summary>Property Type (property-type)</summary>
454
+ <br>
455
+
456
+ `get-property-type` - Get property type by ID
457
+ `get-property-type-all-property-type-groups` - Get all property type groups
458
+ `create-property-type` - Create a new property type
459
+ `update-property-type` - Update a property type
460
+ `delete-property-type` - Delete a property type
461
+ </details>
462
+
463
+ <details>
464
+ <summary>Redirect (redirect)</summary>
465
+ <br>
466
+
467
+ `get-all-redirects` - Get all redirects
468
+ `get-redirect-by-id` - Get redirect by ID
469
+ `delete-redirect` - Delete a redirect
470
+ `get-redirect-status` - Get redirect status
471
+ `update-redirect-status` - Update redirect status
472
+ </details>
473
+
474
+ <details>
475
+ <summary>Script (script)</summary>
476
+ <br>
477
+
478
+ `get-script-by-path` - Get script by path
479
+ `get-script-folder-by-path` - Get script folder by path
480
+ `get-script-items` - Get script items
481
+ `create-script` - Create a new script
482
+ `create-script-folder` - Create a script folder
483
+ `update-script` - Update a script
484
+ `rename-script` - Rename a script
485
+ `delete-script` - Delete a script
486
+ `delete-script-folder` - Delete a script folder
487
+ `get-script-tree-root` - Get root script items
488
+ `get-script-tree-children` - Get child script items
489
+ `get-script-tree-ancestors` - Get script ancestors
490
+ </details>
491
+
492
+ <details>
493
+ <summary>Stylesheet (stylesheet)</summary>
494
+ <br>
495
+
496
+ `get-stylesheet-by-path` - Get stylesheet by path
497
+ `get-stylesheet-folder-by-path` - Get stylesheet folder by path
498
+ `create-stylesheet` - Create a new stylesheet
499
+ `create-stylesheet-folder` - Create a stylesheet folder
500
+ `update-stylesheet` - Update a stylesheet
501
+ `rename-stylesheet` - Rename a stylesheet
502
+ `delete-stylesheet` - Delete a stylesheet
503
+ `delete-stylesheet-folder` - Delete a stylesheet folder
504
+ `get-stylesheet-root` - Get root stylesheets
505
+ `get-stylesheet-children` - Get child stylesheets
506
+ `get-stylesheet-ancestors` - Get stylesheet ancestors
507
+ `get-stylesheet-search` - Search stylesheets
508
+ </details>
509
+
510
+ <details>
511
+ <summary>Server (server)</summary>
512
+ <br>
513
+
514
+ `get-server-status` - Get server status
515
+ `get-server-log-file` - Get server log file
516
+ `tour-status` - Get tour status
517
+ `upgrade-status` - Get upgrade status
518
+ </details>
519
+
520
+ <details>
521
+ <summary>Template (template)</summary>
522
+ <br>
523
+
524
+ `get-template-search` - Search for templates by name
525
+ `get-template` - Get a template by ID
526
+ `get-templates-by-id-array` - Get templates by IDs
527
+ `create-template` - Create a new template
528
+ `update-template` - Update a template by ID
529
+ `delete-template` - Delete a template by ID
530
+ `execute-template-query` - Execute template queries and return generated LINQ code
531
+ `get-template-query-settings` - Get schema for template queries (document types, properties, operators)
532
+ `get-template-root` - Get root template items
533
+ `get-template-children` - Get child templates or template folders by parent ID
534
+ `get-template-ancestors` - Get ancestors of a template by ID
535
+ </details>
536
+
537
+ <details>
538
+ <summary>Temporary File (temporary-file)</summary>
539
+ <br>
540
+
541
+ `create-temporary-file` - Create a temporary file
542
+ `get-temporary-file` - Get a temporary file
543
+ `delete-temporary-file` - Delete a temporary file
544
+ `get-temporary-file-configuration` - Get temporary file configuration
545
+ </details>
546
+
547
+ <details>
548
+ <summary>User Group (user-group)</summary>
549
+ <br>
550
+
551
+ `get-user-group` - Get user group
552
+ `get-user-group-by-id-array` - Get user groups by IDs
553
+ `get-user-groups` - Get all user groups
554
+ `get-filter-user-group` - Filter user groups
555
+ `create-user-group` - Create a new user group
556
+ `update-user-group` - Update a user group
557
+ `delete-user-group` - Delete a user group
558
+ `delete-user-groups` - Delete multiple user groups
559
+ </details>
560
+
561
+ <details>
562
+ <summary>Webhook (webhook)</summary>
563
+ <br>
564
+
565
+ `get-webhook-by-id` - Get webhook by ID
566
+ `get-webhook-by-id-array` - Get webhooks by IDs
567
+ `delete-webhook` - Delete a webhook
568
+ `update-webhook` - Update a webhook
569
+ `get-webhook-events` - Get webhook events
570
+ `get-all-webhook-logs` - Get all webhook logs
571
+ `create-webhook` - Create a new webhook
572
+ </details>
573
+ </details>
574
+
575
+ ## Contributing with AI Tools
576
+
577
+ This project is optimized for development with AI coding assistants. We provide instruction files for popular AI tools to help maintain consistency with our established patterns and testing standards.
578
+
579
+ ### Using rulesync
580
+
581
+ The project includes rulesync configuration files that can automatically generate instruction files for 19+ AI development tools. Generate configuration files for your preferred AI tools:
582
+
583
+ ```bash
584
+ # Generate only for Claude Code
585
+ npx rulesync generate --claudecode
586
+
587
+ # Generate only for Cursor
588
+ npx rulesync generate --cursor
589
+
590
+ # Generate only for Vs Code Copilot
591
+ npx rulesync generate --copilot
592
+ ```
593
+
594
+ ### Other AI Tools
595
+
596
+ rulesync supports 19+ AI development tools including GitHub Copilot, Cline, Aider, and more. Check the [rulesync repository](https://github.com/dyoshikawa/rulesync) for the complete list of supported tools.
597
+
598
+ The instruction files cover:
599
+ - MCP development patterns and conventions
600
+ - TypeScript implementation guidelines
601
+ - Comprehensive testing standards with builders and helpers
602
+ - Project-specific context and architecture
603
+ - API integration patterns with Umbraco Management API