Jamb MCP Server implementing Model Context Protocol for managing website content, business information, products, feedback, forms, themes, and website configuration through the Local-Victor platform API
Server has 22 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, input schemas are dynamically generated from OpenAPI and fall back to z.any() on failure, creating validation gaps. Parameter descriptions are minimal (10-30 chars typical). Output schemas are not documented, responses are JSON stringified without field-level guidance. Error handling returns plain error messages without recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is sound (single responsibility per tool), but schema completeness and LLM-optimized descriptions are weak.
* Creates or updates multiple forms in bulk. * Provide an array of forms to be created or updated. * Forms are matched by their type. * If a form with the given type exists, it will be updated; otherwise, a new form will be created.
* Creates or updates multiple product groups in bulk. * Provide an array of product groups to be created or updated. * Product groups are matched by their slug. * If a product group with the given slug exists, it will be updated; otherwise, a new product group will be created.
* Creates or updates multiple products in bulk. * Provide an array of products to be created or updated. * Products are matched by their slug. * If a product with the given slug exists, it will be updated; otherwise, a new product will be created.
* Creates a new feedback item. * Returns the created feedback object.
* Deletes a specific feedback item by its ID. * Returns a success message if deleted successfully.
Input schemas fall back to z.any() on OpenAPI fetch failure, eliminating validation. No fallback error handling or retry logic visible.
Output schemas not documented. Responses are JSON.stringify() without field-level descriptions. LLMs cannot plan downstream tool calls or extract specific fields.
Error responses are plain error messages without recovery guidance, categorization (retryable/user-fixable/fatal), or actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
* Deletes a specific form by its type. * Provide the site and the form type to be deleted.
* Deletes a specific product by its slug. * Provide the site and the product slug to be deleted.
* Deletes a specific product group by its slug. * Provide the site and the product group slug to be deleted.
* Gets a specific feedback item by its ID. * Returns the feedback object if found.
* Lists feedback for the account with pagination support. * Returns an object with a list of feedback items and the total count. * Can filter by source and supports pagination with limit and skip parameters. * Maximum limit is 100 items.
* Lists all forms for the site. * Returns an array of form objects with their details.
* Lists all product groups for the site. * Returns an array of product group objects with their details.
* Lists all products for the site. * Returns an array of product objects with their details.
* Gets the "business" information for the site. This includes name, address, services, hours, locations, and other core business details. * The response contains the complete business object with all properties. * Always read before update as you need to pass the entire object back when updating, even if only changing one field.
* Gets the current theme configuration for the site. * The response contains the complete theme object with all styling properties. * Always read before update as you need to pass the entire object back when updating, even if only changing one field.
* Gets the current website configuration. * The response contains the complete website configuration object. * Always read before update as you need to pass the entire object back when updating, even if only changing one field.
* Gets the current scrape content for the site.
* If there is a scrape of the current website we're converting, this will give you a list of pages available in that scrape. * Content can be retrieved using the scrape_page_content tool.
* Updates the "business" information for the site. This includes name, address, services, hours, locations, and other core business details. * The ENTIRE object needs to be saved even if only one field is updated - make sure to read first. * Optional fields can be omitted or set to null, but required fields must always be included. * Required fields include: name, description, intro, category, about, hours, locations, payment, services.
* Updates an existing feedback item. Only *Ref fields are required rest will be ignored. * Returns the updated feedback object.
* Updates the theme configuration for the site. * The ENTIRE object needs to be saved even if only one field is updated - make sure to read first. * Optional fields can be omitted or set to null, but required fields must always be included.
* Updates the website configuration for the site. * The ENTIRE object needs to be saved even if only one field is updated - make sure to read first. * Optional fields can be omitted or set to null, but required fields must always be included.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). LLMs cannot infer safety properties.
Parameter descriptions are minimal (10-30 chars). 'site' param lacks context; 'feedback' param has no field-level guidance. Descriptions should be 50-200 chars with format/constraint hints.