Weaverse MCP server: public docs search plus the mounted Weaverse Content API reads. All six mutations stay unregistered unless WEAVERSE_ENABLE_LIVE_WRITES=true and still require ordinary Content API authentication.
Server has solid foundations: all 15 tools are registered with descriptions and input schemas. Naming follows verb_noun convention (list_, get_, create_, update_, delete_, search_). Descriptions are substantive (avg ~150 chars) and include prerequisites (API key requirements, feature flags). However, several tools lack output schema documentation, parameter descriptions are sometimes generic, and error handling guidance is minimal. Two tools (search_weaverse_docs, search_docs) are duplicates. Pagination is well-implemented for list tools. Security is properly handled via environment variables, not parameters.
Assign template resources to a page. Each assignment creates a live assignment linking the page to a Shopify resource. Duplicate assignments return 409. Requires WEAVERSE_API_KEY and WEAVERSE_ENABLE_LIVE_WRITES=true.
Create one page and assignment. Only ARTICLE, BLOG, COLLECTION, CUSTOM, PAGE, and PRODUCT are creatable. Duplicate live assignments return 409. Not idempotent. A 500 may occur after commit; re-read before retrying. Requires WEAVERSE_API_KEY and WEAVERSE_ENABLE_LIVE_WRITES=true.
Soft-delete pages by assignment ids (`id` from list_pages), or by handles + type. Delete-by-handle defaults locale to en-us when omitted. Max 500 targets. No restore endpoint exists. A 500 may occur after commit; re-read before retrying. Requires WEAVERSE_API_KEY and WEAVERSE_ENABLE_LIVE_WRITES=true.
Get the mounted Content API OpenAPI document. Public; no WEAVERSE_API_KEY required. Mounted runtime code remains authoritative where the static spec differs.
Get one page. Defaults to the writable `weaverse` item tree. `portable-text` is a lossy read-only view and cannot be sent back to update_page. Requires WEAVERSE_API_KEY.
Duplicate tools: search_weaverse_docs and search_docs are identical. LLMs will waste reasoning cycles deciding between them. Consolidate to one canonical tool.
Output schemas not documented. Tools like get_project, get_page, get_theme_settings return complex objects but lack schema documentation. LLMs cannot plan downstream calls or extract fields without knowing the response structure.
Error handling lacks recovery guidance. Descriptions mention prerequisites (API key, feature flags) but do not guide LLMs on what to do if calls fail. E.g., 'Requires WEAVERSE_API_KEY' does not tell the agent how to recover if the key is missing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get one project by id: object, id, name, parentProjectId, createdAt. Requires WEAVERSE_API_KEY.
Get a project's own theme settings. With locale, also resolves static translations. Portable Text conversion only changes rich-text leaves inside the same envelope. Requires WEAVERSE_API_KEY.
List all project locales as code, name, and isDefault. This response is not paginated. Requires WEAVERSE_API_KEY.
List page assignments in a project. Each item has `id` (assignment id) and `pageId` (content page id); use pageId with assign_template_resources. Filter by type/locale; cursor-paginated with default 50 and max 100. Requires WEAVERSE_API_KEY.
List projects owned by the shop for the configured Content API token. Cursor-paginated; default limit 50, max 100. Requires WEAVERSE_API_KEY.
Search the official Weaverse documentation and knowledge base. Returns relevant docs (titles, direct links, and content) to answer questions about Weaverse, Pilot themes, the Hydrogen SDK, custom sections/schemas, theme settings, and the visual builder. Public — no API key required.
Search the official Weaverse documentation and knowledge base. Returns relevant docs (titles, direct links, and content) to answer questions about Weaverse, Pilot themes, the Hydrogen SDK, custom sections/schemas, theme settings, and the visual builder. Public — no API key required.
Update page items (upsert). Items are shallow-merged; omitted keys are left alone. New items require `type`. Children are replaced wholesale; `null` clears the tree. Requires WEAVERSE_API_KEY and WEAVERSE_ENABLE_LIVE_WRITES=true.
Overwrite a project name. The body contains only `name` (max 191 characters). Requires WEAVERSE_API_KEY and WEAVERSE_ENABLE_LIVE_WRITES=true.
Update theme settings. Top-level `theme` keys are shallow-merged over the project's own settings. Requires WEAVERSE_API_KEY and WEAVERSE_ENABLE_LIVE_WRITES=true.
Mutually exclusive parameters not clearly documented. delete_pages accepts either pageIds OR handles+type, but the mutual exclusivity is buried in the description. LLMs may pass both, causing ambiguous failures.
Destructive operations lack confirmation step. create_page, delete_pages, update_page, and update_project can modify storefront content but offer no dry-run or confirmation mechanism. Agents may accidentally delete pages or overwrite settings.