---
name: rock8cloud-pages
description: Publishes a static site or an agent output such as a report, preview or summary to a shareable Rock8Cloud Pages URL at name.rock8cloud.page, with password protection by default, and lists, updates or deletes published pages. Use when the user wants to share, host or publish HTML, a report, a demo or a static site without deploying a service, or asks for a link to something you generated.
---

# Publish a page on Rock8Cloud

Pages host static files (HTML, CSS, JS, images) at `https://<name>.rock8cloud.page`. Use them for reports, feature previews, summaries and small static sites. For anything that needs a server, use skill `rock8cloud-deploy` instead. Needs the rock8cloud MCP server connected (skill `rock8cloud-setup`) with the `read:artifacts` and `write:artifacts` scopes. Pages are called artifacts in scopes and in the deprecated tool names.

## Publish

Call `publish_page` with:

- `organizationId` - from `list_organizations`.
- `files` - array of `{ path, content, encoding? }`. `path` is site relative, such as `index.html` or `assets/style.css`. Include `index.html` at the root, since it is what the address serves. `encoding` is `utf8` (default) or `base64` for binary files.
- `slug` (optional) - the page's storage id. Lowercase letters, digits and dashes, up to 63 characters. Omit it to auto-generate. Reuse it to update an existing page.
- `hostname` (optional) - the public name, giving `<hostname>.rock8cloud.page`. Lowercase letters, digits and single dashes, up to 63 characters. Names are first come, first served across the whole platform. Omit it on a first publish to derive one from the slug, and omit it later to keep the current name. Renaming frees the old name for anyone to claim.
- `title` (optional) - label shown in listings.
- Access - see below.
- `storageMb` (optional, at least 100) - the organization's pages bucket cap. Leave it alone unless the user asks.

Limits per publish: 200 files, 1 MB per file, 5 MB in total. Keep pages self-contained, with inline CSS or small assets.

The first publish in an organization creates the bucket and can take about a minute. The tool waits. If it reports that the bucket is still provisioning, call it again with the same arguments.

## Access

Pages are private by default, behind HTTP basic auth.

- Private: pass both `basicAuthUsername` and `basicAuthPassword`. Generate a strong password, and give the user the address, username and password once in your reply. Do not write the password into files.
- Public: pass `public: true` only when the user wants anyone with the link to read it. Ask first if it is unclear, and never publish secrets, tokens or personal data publicly.
- Republishing an existing slug with neither set keeps the current protection. Pass new values to change it.
- To change access without republishing, call `set_page_access` with `organizationId`, `slug` and either `public: true` or both `basicAuthUsername` and `basicAuthPassword`. The password is stored hashed, so generate a strong one and give it to the user in your reply.

## Read the result

The result has `slug`, `status`, `url`, `hostname`, `uploaded`, `deleted` and `message`.

- `status: "published"` - live at `url`. Give it to the user together with the credentials if private.
- `status: "needs_hostname"` - the requested name is taken, so the files are stored as a hidden draft with `url: null`. Call `publish_page` again with the same `slug` and a different `hostname`.
- An invalid `hostname` is rejected before upload.

## Update and clean up

- Republishing the same `slug` replaces the whole site. Files missing from the new set are permanently deleted, so always send the complete file set.
- `list_pages` with `organizationId`, optional `limit` (1 to 100) and `offset`. The list is under the `artifacts` key, with `slug`, `title`, `url`, `hostname`, `publicationStatus` (`draft` or `published`), `isPublic`, `isDisabled`, `sizeBytes`, `fileCount` and timestamps. Use it to find an existing slug before creating a duplicate.
- `delete_page` with `organizationId` and `slug` removes all files and the listing. It cannot be undone, so confirm with the user first.

## Notes

- `publish_artifact`, `list_artifacts` and `delete_artifact` are deprecated aliases with identical inputs. Use the page names.
- Pages count against the organization's S3 storage quota (100 MB minimum bucket). The user can resize the bucket in the dashboard under Pages.
- In the dashboard, Pages shows every page with its status (Live, Needs address, Offline, Removed) and lets the user rotate the password, rename the address or delete it.

## Docs

- https://docs.rock8.cloud/docs/guides/pages.md
- https://docs.rock8.cloud/docs/guides/mcp-integration.md
