A Next.js-based AI chatbot application with support for multiple artifact types (text, code, images, sheets), document upload (EPUB), chat history, and AI-powered suggestions. Integrates with multiple AI providers and uses PostgreSQL for persistence.
This server exhibits critical definition quality gaps across all tools. No tool has a complete input schema visible in the provided source code. Only 2 of 4 tools have descriptions (createDocument, updateDocument, requestSuggestions), and getWeather has no description at all. Tools are defined in app/api/chat/route.ts but the actual tool registration code and schemas are not shown. Parameter descriptions exist for 2 tools (createDocument, updateDocument) but are generic and lack actionable constraints. No output schemas are documented. Error handling patterns are absent. The naming is inconsistent, getWeather uses camelCase (non-standard verb_noun), while others use mixed patterns. No tool annotations, permission declarations, or audit trail guidance visible.
Creates a new document (artifact) of a specified kind (text, code, image, or sheet) with AI-generated content based on a title
Requests AI-generated suggestions for a document
Updates an existing document with AI-generated modifications based on a description of desired changes
getWeather has no description; LLM cannot determine when to select this tool
No input/output schemas visible in source code; if they exist, they are not shown. Cannot verify parameter types, constraints, or response structure.
Tool names are inconsistent: getWeather uses camelCase (verb_noun anti-pattern); others use camelCase. Standard should be verb_object in lowercase (get_weather, create_document).
createDocument and updateDocument descriptions lack actionable constraints. 'AI-generated content' does not explain format, length limits, or quality expectations. 'kind' enum is present but no guidance on when to use each type.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 38 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
No error handling guidance visible. Descriptions do not mention what happens on invalid input, rate limits, or how to recover from failures.
No output schemas documented. LLM cannot plan downstream tool calls or extract returned data. createDocument and updateDocument likely return an ID for chaining, but this is not stated.
requestSuggestions parameter 'documentId' lacks format guidance. Is this a UUID, numeric ID, or slug? No pattern or example provided.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible. createDocument and updateDocument are destructive/mutating but this is not explicitly marked.