React artifacts with a web gallery, version history, CLI, MCP, and optional Herdr integration.
Sidequery Artifacts demonstrates solid definition quality with comprehensive schemas, clear descriptions, and thoughtful parameter design. All 21 tools have explicit JSON Schema definitions with type constraints and descriptions. Tool names follow verb_noun conventions (artifact_read, artifact_write, script_edit). Descriptions average ~150 chars and explain WHAT, WHEN, and consequences. However, some parameter descriptions lack actionable constraints (e.g., artifact_remix's 'slug' pattern is defined in schema but not restated in description text). Error handling guidance is minimal, most tools lack recovery hints. Output schemas are documented in descriptions but not formally specified. Security considerations (secret injection, permission gates) are absent from tool definitions.
Sandbox-scan and bundle an artifact file with Bun.
Apply sequential exact-text replacements to a working artifact. Every non-empty old_text must match exactly once; empty new_text deletes. Optional expected_hash guards against changes since artifact_read. Invalid batches write nothing. Atomically replaces source then typechecks once; failed diagnostics leave edits applied. Returns compact summary, hash and diagnostics, not source. Rejects symlinks and names with slashes.
Manage files belonging to one artifact. List returns up to 100 files and an optional cursor. Upload allocates a new file and a single-use PUT URL (5 minutes, exact declared size, maximum 25 MiB); send raw bytes to that URL, never through this tool. Download returns a GET URL valid for 5 minutes. Delete removes a file. Files remain live across source edits and restores. Requires an existing artifact; no server code needed. Transfer URLs are bearer capabilities: do not publish them.
Read the Sidequery Artifacts SDK contract: exports, host APIs, component conventions, restrictions, and validation behavior. Call before creating an artifact if you have not read it in this conversation.
List archived artifact versions in this workspace, including deleted artifacts. Optionally filter by name.
Missing error recovery guidance. Tools lack actionable error messages. E.g., artifact_edit says 'Invalid batches write nothing' but does not guide LLM on what to do next (retry with corrected text, call artifact_read to verify, etc.).
Output schemas not formally documented. Descriptions mention return values (e.g., 'Returns compact summary, hash and diagnostics') but no structured schema is provided. LLMs cannot reliably parse unstructured output.
Parameter constraints not restated in descriptions. E.g., artifact_remix's 'slug' has a regex pattern in schema but the description does not explain the constraint (kebab-case, 1-80 chars, no leading/trailing hyphens). LLMs cannot read JSON Schema patterns reliably.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2025-06-18+ | v2 |
Give an artifact or script a chosen root URL. Artifact links require valid source and work independently of the gallery. Defaults to private access. Renaming a slug changes its URL.
List .artifact.tsx files in the artifacts directory.
Show the interactive artifact inline in chat. Supply name for a working artifact, or version_id for an archived artifact. Optional event_id selects archived initial state. Use target: herdr only to explicitly open a terminal pane instead.
Read working raw TSX by inclusive 1-based line range (default 200 lines). Returns exact source with line endings, total_lines, next_line and a full-file source_hash for guarded edits. Rejects symlinks and names with slashes.
Copy a working artifact or immutable revision to a new name in this workspace. Preserves source provenance. Starts with fresh state, storage, and secrets and a private URL. Never overwrites an existing artifact.
Copy a working artifact or archived version to a new artifact with source provenance and fresh state. Never overwrites existing artifacts or archived identities. Supply exactly one of name and version_id, plus new_name.
Send an HTTP request to an artifact's native server. Its fetch handler can use native Durable Object SQLite/KV APIs. Select name or version_id. Database contents remain live across source edits and restores. Returns a response envelope with base64 body; artifactFetch provides ordinary Request/Response behavior in the UI.
Replace a working artifact with archived TSX. Saves the current working source first, adds a new revision, and preserves later history and current UI state. Returns typecheck diagnostics after restoration.
Typecheck and sandbox-scan an artifact file.
Read an archived version's raw TSX, metadata, and serve events with initial-state snapshots.
Create or replace an artifact and display it inline in chat after typechecking. Before creating an artifact, call artifact_guide if you have not read it in this conversation. Import from sidequery/artifacts. Pass kebab-case name without slashes. Returns Artifact TypeScript check diagnostics.
Apply ordered, uniquely matching text replacements atomically, validate, and update the same URL on success. Invalid drafts retain the last working handler.
Read the hosted script and root-URL authoring guide before creating a script. Covers runtime, access, storage, secrets, validation, HTTP requests, and bundling third-party dependencies.
List scripts in this workspace.
Read script source with bounded line ranges, optionally from a historical version. Does not execute the script.
Call script_guide first. Create or replace arbitrary Workers-compatible TypeScript exporting default { fetch(request, env, ctx) }. Saved drafts and history are retained even when validation fails; only valid updates replace the running code. Scripts have outbound fetch, env.secrets, and env.sql for persistent SQLite. Slug defaults to the name; URLs use /<slug>. Use project.files for relative modules and project.dependencies for exact package versions. Dependencies are resolved and integrity-verified at write time, then archived as a source lock; execution and replay do not install packages. This loads the module for validation but does not execute the handler.
Duplicate tool definition. artifact_remix appears twice (lines 6 and 21) with slightly different schemas. The second version includes 'slug' parameter; the first does not. This ambiguity will confuse LLMs about which version to call.
No permission or scope declarations. Tools like artifact_edit, artifact_write, and artifact_request perform destructive operations but lack descriptions of required permissions (e.g., 'Requires write:artifacts scope'). This prevents least-privilege agent configuration.