Skip to content

Artifact Publisher

by artifactpublisher.com · remote · no sign-in to list tools · v0.1.0 · published by com.artifactpublisher

Agents publish self-contained HTML to a stable review link, with page-level feedback and revoke.

Deletes · 6Final · 2

12 tools: 6 can delete or cancel things, 2 do something that can't be undone and 4 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http artifactpublisher https://app.artifactpublisher.com/mcp --header 'Authorization: <your-authorization>'

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Deletes or cancels 6Claude Code: deny
  • configure_workspaceRead or update workspace defaults (comments_enabled, default_expiry_seconds, default_artifact_title); pass empty settings to read.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Read or update workspace defaults (comments_enabled, default_expiry_seconds, default_artifact_title); pass empty settings to read. Platform guardrails are refused with an error: max_artifact_bytes, storage_bytes_limit, monthly_versions_limit, rate_limits, comment_rate_limit, publish_rate_limit, isolation, origins, artifact_origin, control_origin, storage_key_prefix, object_key_prefix, security_headers, content_security_policy. Not available in every workspace.

    Annotations the server declares

    • destructiveHint: true
    • openWorldHint: false
  • reset_artifact_stateClear all state, including board values; HTML is unchanged.No findings

    Why it is in this group

    • The name "reset_artifact_state" says "reset": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Clear all state, including board values; HTML is unchanged. Shared JSON key/value state, synced to viewers across versions (page JS: ArtifactRelayState). Last write wins per key. Limits: 200 keys, 16 KiB per value, 64 KiB total. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • destructiveHint: true
    • openWorldHint: false
  • revoke_artifactStop serving this artifact (410 Gone).No findings

    Why it is in this group

    • The name "revoke_artifact" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Stop serving this artifact (410 Gone). Cannot undo; viewed copies exist. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • set_artifact_accessChange an artifact's access mode without a new version.No findings

    Why it is in this group

    • The name "set_artifact_access" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change an artifact's access mode without a new version. For accountless coworkers use public, not allowlist. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • destructiveHint: true
    • openWorldHint: false
  • set_artifact_stateSet the given keys atomically; other keys stay.No findings

    Why it is in this group

    • The name "set_artifact_state" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Set the given keys atomically; other keys stay. Null is stored, not deleted. Shared JSON key/value state, synced to viewers across versions (page JS: ArtifactRelayState). Last write wins per key. Limits: 200 keys, 16 KiB per value, 64 KiB total. Page JS: ArtifactRelayState.subscribe(fn)/set(k,v)/patch(obj); callbacks get {revision, values, resetAt}; set/patch reject on failure; whole-value writes, no increments or nested merges. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • destructiveHint: true
    • openWorldHint: false
  • update_artifactAppend a new immutable version to an existing artifact.No findings

    Why it is in this group

    • The name "update_artifact" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Append a new immutable version to an existing artifact. `expected_version` must equal the current version; the share link moves to the new version; earlier versions stay readable at their pinned URL. Optional `title` renames; with no `html` only the title changes. Each version counts toward the free 50 version cap. For styling, add <meta name="ap-theme" content="firn"> to <head>; call get_authoring_guide for themes and layout classes. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • destructiveHint: true
    • openWorldHint: false
Can't be undone 2Claude Code: ask
  • publish_artifactPublish self-contained HTML as version 1; return a share link.No findings

    Why it is in this group

    • The name "publish_artifact" says "publish": a word for a change that another call does not undo.
    Description, as the server wrote it
    Publish self-contained HTML as version 1; return a share link. Optional Idempotency-Key HTTP header. Limit 10 MiB UTF-8; larger on some paid plans. No network in sandbox; inline assets. Free: 5 active artifacts, 50 versions. For styling, add <meta name="ap-theme" content="firn"> to <head>; call get_authoring_guide for themes and layout classes.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
  • reply_to_feedbackReply once to a comment (a second reply fails with conflict); resolve: true also marks it resolved.No findings

    Why it is in this group

    • The name "reply_to_feedback" says "reply": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Reply once to a comment (a second reply fails with conflict); resolve: true also marks it resolved. Anyone who can open the artifact can read the reply. Refused on revoked or expired artifacts. Returns the comment.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 4Claude Code: allow
  • get_artifact_stateRead an artifact's state.No findings

    Why it is in this group

    • The name "get_artifact_state" says "get": a word for reading.
    Description, as the server wrote it
    Read an artifact's state. Shared JSON key/value state, synced to viewers across versions (page JS: ArtifactRelayState). Last write wins per key. Limits: 200 keys, 16 KiB per value, 64 KiB total. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_authoring_guideRead before writing HTML or a routine: themes, ap-* layout classes, an example page, the snippet, size, sandbox and routine rules.No findings

    Why it is in this group

    • The name "get_authoring_guide" says "get": a word for reading.
    Description, as the server wrote it
    Read before writing HTML or a routine: themes, ap-* layout classes, an example page, the snippet, size, sandbox and routine rules. Optional theme (firn, firn@1) is validated and returned as selected.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_feedbackRead reviewer comments on an artifact, oldest first; use after sharing or to poll.No findings

    Why it is in this group

    • The name "get_feedback" says "get": a word for reading.
    Description, as the server wrote it
    Read reviewer comments on an artifact, oldest first; use after sharing or to poll. Filters: unresolved_only, since; version (default current) picks the version anchor_status is checked against. Page with limit and cursor. Returns comments, unresolved_count, next_cursor. artifact_id: id, slug or viewer URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_artifactsList artifacts in this key's workspace, newest first, with unresolved comment counts.No findings

    Why it is in this group

    • The name "list_artifacts" says "list": a word for reading.
    Description, as the server wrote it
    List artifacts in this key's workspace, newest first, with unresolved comment counts. Pass `next_cursor` back as `cursor` to page.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http artifactpublisher https://app.artifactpublisher.com/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__artifactpublisher__get_feedback",
      "mcp__artifactpublisher__list_artifacts",
      "mcp__artifactpublisher__get_artifact_state",
      "mcp__artifactpublisher__get_authoring_guide"
    ],
    "ask": [
      "mcp__artifactpublisher__publish_artifact",
      "mcp__artifactpublisher__reply_to_feedback"
    ],
    "deny": [
      "mcp__artifactpublisher__update_artifact",
      "mcp__artifactpublisher__set_artifact_access",
      "mcp__artifactpublisher__revoke_artifact",
      "mcp__artifactpublisher__configure_workspace",
      "mcp__artifactpublisher__set_artifact_state",
      "mcp__artifactpublisher__reset_artifact_state"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as artifactpublisher. Review it before you use it.