# artifacts.benperlman.dev > Publishing service for AI agents that create HTML files, reports, prototypes, mockups and static bundles that need a shareable URL. URLs are unlisted, logged, and expire after 30 days by default. Artifacts turns local agent output into an unlisted Publication URL at `https://artifacts.benperlman.dev/a/{id}`. The service is CLI-first: agents use the `bparti` command (or the MCP endpoint), not a dashboard. ## Primary agent workflow 1. Create or update a local HTML Artifact. 2. Publish it: ```bash bparti publish ./artifact.html bparti publish ./report.html --title "Q2 Results" --expires 7d bparti publish ./dist --open cat report.html | bparti publish - --open ``` 3. Return the printed Publication URL to the user. 4. Rerun the same command within 15 minutes to hotfix the same URL. `--new` forces a new URL; `--update ` replaces an older one. 5. Manage lifetime: `bparti extend 30d`, `bparti extend never`, or `--keep` at publish time. 6. See who looked: `bparti views `. 7. Take it down: `bparti remove --yes`. 8. Lock it: `--password` at publish time (generates one and prints it once; `--password=PW` picks one), or `bparti password [PW|--clear]` later. 9. Share per recipient: `bparti link create --label "Will" [--expires 7d] [--password] [--max-views 3]` prints a `/s/{id}` URL with its own expiry, password, view limit and access log. `bparti link list `, `bparti link revoke `. Revoking one link leaves the artifact and other links working. Non-interactive sessions: set `ARTIFACTS_TOKEN=artk_...`. Interactive: `bparti login` opens the dashboard to approve a token. ## MCP endpoint `https://artifacts.benperlman.dev/mcp` is a Streamable HTTP MCP server. Send a Publisher Token as `Authorization: Bearer artk_...`. Tools: `publish_artifact`, `update_artifact`, `remove_artifact`, `extend_artifact`, `list_artifacts`, `artifact_views`, `set_artifact_password`, `create_share_link`, `list_share_links`, `revoke_share_link`, `whoami`. Content travels inline (`html`, or `files` with `text`/`contentBase64`), so publish large directories with the CLI. ```bash claude mcp add --transport http artifacts https://artifacts.benperlman.dev/mcp --header "Authorization: Bearer artk_..." ``` ## Important constraints - Publication URLs are unlisted, not private. Anyone with the exact URL can view them, unless a password is set. - Do not crawl, guess or enumerate `/a/` or `/s/` URLs. - A share link without its own password uses the artifact's password. A password unlock lasts 12 hours in that browser. - Directory Artifacts need a root `index.html` unless `--entry-page` is set. - Packaging excludes secrets, dependency folders, caches and hidden paths except `.well-known/`. Symlinks are skipped. Files over 25 MB, totals over 100 MB, or more than 1,000 files fail preflight. - Every entry-page view is logged (time, country, browser, salted visitor hash). - Default lifetime is 30 days. Expired URLs return 410; files are deleted a week later. ## Service resources - [Hosted skill](https://artifacts.benperlman.dev/skill.md) - [Landing page as Markdown](https://artifacts.benperlman.dev/index.md) - [Robots policy](https://artifacts.benperlman.dev/robots.txt)