Single tool 'create-form' has a basic schema and description, but lacks critical production-grade quality markers. The tool definition is visible in src/index.ts with explicit Zod schema registration. However, the description is generic (16 chars), parameters lack detailed constraints, output structure is undocumented, and there is no error handling guidance. The schema uses Zod which transpiles to JSON Schema, but the actual parameter descriptions are minimal. This server falls into the 'Fair to Poor' range typical of community MCP implementations.
Create a new Weavely form.
Tool description is too short (16 chars: 'Create a new Weavely form.'). Does not explain WHEN to use this tool, what a 'Weavely form' is, what the prompt parameter controls, or what the tool returns.
Parameter 'prompt' has a generic description ('Prompt text for form generation') with no constraints on length, format, or content. Should specify example use, max length, or domain-specific guidance.
Parameter 'name' description says 'Optional name for the form' but does not explain: What is the form's name used for? Can it contain special characters? Length limits? What happens if omitted?
No documented output schema. The code returns JSON from api.weavely.ai and wraps it in a text response, but LLMs cannot predict what fields will be present (e.g., form_id, url, status, errors). Without output documentation, downstream tool chains cannot reference form IDs or parse results.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
No error handling guidance. If the API call fails (network error, rate limit, invalid prompt), the code throws a generic Error without actionable recovery steps. LLMs receive only error.message with no suggestion for what to do next.
No input validation or constraints. The 'prompt' parameter is a bare z.string() with no minLength, maxLength, or pattern. LLMs can pass empty strings, very long strings, or malformed content without feedback.
API response is returned as-is in JSON.stringify without stripping metadata, nested structures, or verbose fields. If the Weavely API returns pagination info, audit logs, or internal IDs, all are passed to the LLM, wasting tokens and increasing hallucination risk.
Tool name 'create-form' is hyphenated and generic. Unclear whether this creates a *survey form*, *contact form*, *application form*, or some other Weavely-specific construct. More specific names like 'create-weavely-survey' or 'create-contact-form' would aid LLM tool selection.