A preview environment for agent-authored documents with MCP server integration for creating, updating, removing, and listing artifacts
Artifacts demonstrates solid tool design with complete schemas, clear descriptions, and proper error handling. All 5 tools have explicit input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (add_, update_, remove_, list_). Descriptions are concise (40-120 chars) and action-oriented. However, output schemas are not formally documented in the visible code, and some parameter descriptions lack constraint details (e.g., collection/project name format, length limits). Error handling is present but could be more prescriptive about recovery paths. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
Create a text or binary artifact and return its metadata and resolved URL. Use content for text media and contentBase64 for binary media. Legacy type remains accepted for text.
List lightweight artifact metadata and resolved URLs, newest first.
List distinct non-empty collection names, preserving their stored casing.
Delete an artifact (both its metadata and content) by id.
Update an artifact by id. Unset fields remain unchanged; null clears collection or filename. Use content for text media and contentBase64 for binary media.
Output schemas not formally documented. Code shows artifactResult() and artifactWithContentResult() helpers but no explicit schema definitions visible for tool responses. LLMs cannot plan downstream calls without knowing returned fields.
Tool annotations missing. Metadata declares risk levels (WRITE, DESTRUCTIVE, READ_ONLY) but tools lack readOnlyHint/destructiveHint/idempotentHint annotations in schema. Agents cannot infer safety properties from tool definitions alone.
Parameter constraints under-specified. 'project' and 'collection' parameters lack format/length constraints in descriptions. 'title' and 'description' have no length limits documented. Descriptions should state: 'Project name (1-100 chars, alphanumeric + hyphens)' rather than just 'Project name grouping related artifacts'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Error recovery guidance incomplete. Code returns toolError() with messages but does not guide LLM on next steps. E.g., 'contentBase64 must be non-empty, canonical base64' should suggest 'Ensure the base64 string is properly encoded and non-empty, then retry.'
Pagination not implemented for list_artifacts. No limit, offset, or cursor parameters visible. Large artifact collections could return unbounded results, exhausting context windows. Should support limit (default 20, max 100) and offset/cursor.