@avocadostudio-ai/mcp-server 0.21.1 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/NOTICE ADDED
@@ -0,0 +1,8 @@
1
+ Avocado Studio
2
+ Copyright 2026 Avocado Studio Contributors
3
+
4
+ This product includes software developed by the Avocado Studio
5
+ Contributors (https://www.avocadostudio.dev).
6
+
7
+ Licensed under the Apache License, Version 2.0. See LICENSE for the
8
+ full license text.
@@ -43,6 +43,8 @@ function localRegistryManifest() {
43
43
  ...(m.category ? { category: m.category } : {}),
44
44
  ...(m.description ? { description: m.description } : {}),
45
45
  ...(m.chrome === true ? { chrome: true } : {}),
46
+ ...(m.fixed === true ? { fixed: true } : {}),
47
+ ...(m.shared === true ? { shared: true } : {}),
46
48
  ...(m.fields ? { fields: m.fields } : {}),
47
49
  ...(m.listFields ? { listFields: m.listFields } : {})
48
50
  }];
@@ -51,7 +53,7 @@ function localRegistryManifest() {
51
53
  }
52
54
  /** Read-only tools that help agents discover what they can edit. */
53
55
  export function registerDiscoveryTools(server, client) {
54
- server.tool("avocado-list-block-types", "List every block type THIS SITE can render (name, category, description, whether it is structural chrome). Read from the orchestrator, so it includes the site's own custom blocks. Call this before constructing add-block ops so you know which types exist.", {}, async () => {
56
+ server.tool("avocado-list-block-types", "List every block type THIS SITE can render (name, category, description, whether it is structural chrome, whether it is fixed in place, whether it is shared site-wide). Read from the orchestrator, so it includes the site's own custom blocks. Call this before constructing add-block ops so you know which types exist. A fixed block cannot be moved, removed or duplicated, and no other block may be moved across it. A shared block is one piece of content on every page that carries its id: update it once, on any page, and the change reaches all of them.", {}, async () => {
55
57
  const { manifest, source, note } = await loadManifest(client);
56
58
  const entries = manifest.blocks.map((b) => ({
57
59
  type: b.type,
@@ -59,6 +61,8 @@ export function registerDiscoveryTools(server, client) {
59
61
  category: b.category ?? null,
60
62
  description: b.description ?? null,
61
63
  chrome: b.chrome === true,
64
+ fixed: b.fixed === true,
65
+ shared: b.shared === true,
62
66
  }));
63
67
  return {
64
68
  content: [{
@@ -67,7 +71,7 @@ export function registerDiscoveryTools(server, client) {
67
71
  }]
68
72
  };
69
73
  });
70
- server.tool("avocado-get-block-schema", "Return the JSON schema + field metadata for a block type on THIS SITE. Call this before add-block or update-block-props so you know the exact prop shape (required keys, enum options, list item fields, image aspect ratios).", {
74
+ server.tool("avocado-get-block-schema", "Return the JSON schema + field metadata for a block type on THIS SITE. Call this before add-block or update-block-props so you know the exact prop shape (required keys, enum options, list item fields, image aspect ratios). A field with readOnly: true cannot be changed — its readOnlyReason says why.", {
71
75
  type: z.string().describe("Block type name (e.g. 'Hero', 'CTA', 'FeatureGrid')."),
72
76
  }, async ({ type }) => {
73
77
  const { manifest, source, note } = await loadManifest(client);
@@ -92,6 +96,8 @@ export function registerDiscoveryTools(server, client) {
92
96
  category: definition.category ?? null,
93
97
  description: definition.description ?? null,
94
98
  chrome: definition.chrome === true,
99
+ fixed: definition.fixed === true,
100
+ shared: definition.shared === true,
95
101
  ...(definition.fields ? { fields: definition.fields } : {}),
96
102
  ...(definition.listFields ? { listFields: definition.listFields } : {}),
97
103
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avocadostudio-ai/mcp-server",
3
- "version": "0.21.1",
3
+ "version": "0.22.0",
4
4
  "description": "Avocado Studio MCP server — exposes page/block/discovery tools over the Model Context Protocol.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -11,7 +11,8 @@
11
11
  "files": [
12
12
  "dist",
13
13
  "README.md",
14
- "LICENSE"
14
+ "LICENSE",
15
+ "NOTICE"
15
16
  ],
16
17
  "keywords": [
17
18
  "avocado",
@@ -36,7 +37,7 @@
36
37
  "dependencies": {
37
38
  "@modelcontextprotocol/sdk": "^1.29.0",
38
39
  "zod": "^4.3.6",
39
- "@avocadostudio-ai/shared": "^0.21.1"
40
+ "@avocadostudio-ai/shared": "^0.22.0"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@types/node": "^22.13.10",