A personal artifact library MCP server for saving, retrieving, searching, and managing code artifacts with version history and tagging
Artifact Vault has well-structured tool definitions with complete input schemas and clear naming conventions. All 5 tools follow verb_noun patterns (save_, get_, search_, list_, delete_). Descriptions are present and adequate (avg ~80 chars), though some lack actionable context for LLM selection. Parameter descriptions are consistently provided. However, output schemas are not documented, LLMs cannot predict response structure for planning downstream calls. Error handling is minimal; no recovery guidance or actionable error messages visible in the code. The server lacks tool annotations (readOnlyHint, destructiveHint) despite having clear risk profiles (WRITE, READ_ONLY, DESTRUCTIVE). No pagination guidance in list_artifacts despite accepting a limit parameter.
Delete an artifact by name or ID
Retrieve an artifact by name or ID
List all artifacts with optional filtering
Save a new artifact or update an existing one by name
Search artifacts by query, type, tag, or project
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for planning multi-step workflows. E.g., does save_artifact return artifact.id, artifact.slug, artifact.tags? Does list_artifacts return total_count or next_cursor for pagination?
Tool annotations missing. delete_artifact is destructive and should carry destructiveHint=true; get_artifact, search_artifacts, list_artifacts are read-only and should carry readOnlyHint=true. These hints guide LLM planning and safety reasoning.
Error handling lacks recovery guidance. Code throws generic errors ('name, content, and type are required') with no hint about which tool to call next or how to self-correct. Pattern: 'Invalid type. Must be one of: ...' is good, but missing context like 'Call list_artifacts to see available types.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Pagination not fully specified. list_artifacts accepts limit but no offset/page/cursor parameter. Response structure (total_count, next_cursor, has_more) not documented. Large result sets risk context window exhaustion.
Descriptions lack WHEN-to-use context. E.g., 'Retrieve an artifact by name or ID' does not explain: when should I use this vs search_artifacts? What if I only have a partial name? This forces LLMs to guess tool selection.