# publish_site

Deploy files to a live URL. No slug → create a NEW site (works without auth; anonymous sites expire in 24h — always show the user the claimUrl). With slug → UPDATE that site (complete snapshot: send ALL files). A Dockerfile in the files makes it a server-side app (auth required; listen on process.env.PORT; persist under /data; poll app_status). Total payload ≤ 8 MB — for bigger sites use the dataecho skill scripts.

Agent View of the PolicyLayer registry record for `publish_site`. HTML page: https://policylayer.com/tools/ai-dataecho-mcp/publish-site

## Facts

- Tool: `publish_site`
- Server: Mcp (`https://dataecho.ai/mcp`) — https://policylayer.com/tools/ai-dataecho-mcp.md
- Homepage: https://github.com/mohocp/dataecho
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server CORS policy: *
- Server rate-limited: no
- Parameters: 7 (1 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `spa` | boolean | no | Enable SPA fallback routing (serve index.html for unknown paths) |
| `slug` | string | no | Existing site slug to update (omit to create a new site) |
| `files` | array | yes | Files to publish. Each file: { path, content (utf-8 text) OR contentBase64 (binary), contentType? }. The publish is a COMPLETE snapshot — omitted files are remo |
| `title` | string | no | Viewer page title (used when there's no index.html) |
| `claimToken` | string | no | Claim token — required to update an anonymous site without auth |
| `ttlSeconds` | number | no | Expiry for authenticated sites, in seconds |
| `description` | string | no | Viewer page description |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "publish_site",
    "arguments": {
      "files": []
    }
  }
}
```

## Why publish_site is rated Medium

publish_site creates or updates a publicly accessible website by deploying files to a live URL. This is a Write operation (reversible via re-deployment or deletion), but carries high severity because it publishes content to the public internet, can run server-side applications via Dockerfile, and could be misused to deploy malicious content or expose sensitive files publicly.

From the tool's own definition: "Deploy files to a live URL... create a NEW site... UPDATE that site (complete snapshot: send ALL files)"

Risk signals: Accepts file system path (files[].path) · Accepts raw HTML/template content (files[].content) · High parameter count (11 properties) · Bulk/mass operation — affects multiple targets

## Use case

AI agents use publish_site to create or update resources in Mcp, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Mcp environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Mcp:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "publish_site": {
      "limits": [
        {
          "counter": "publish_site_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Mcp (25)

- `delete_site` — Destructive — https://policylayer.com/tools/ai-dataecho-mcp/delete-site.md
- `delete_variable` — Destructive — https://policylayer.com/tools/ai-dataecho-mcp/delete-variable.md
- `drive_delete_file` — Destructive — https://policylayer.com/tools/ai-dataecho-mcp/drive-delete-file.md
- `drive_revoke_token` — Destructive — https://policylayer.com/tools/ai-dataecho-mcp/drive-revoke-token.md
- `app_status` — Read — https://policylayer.com/tools/ai-dataecho-mcp/app-status.md
- `drive_history` — Read — https://policylayer.com/tools/ai-dataecho-mcp/drive-history.md
- `drive_list_files` — Read — https://policylayer.com/tools/ai-dataecho-mcp/drive-list-files.md
- `drive_read_file` — Read — https://policylayer.com/tools/ai-dataecho-mcp/drive-read-file.md
- `drive_tokens` — Read — https://policylayer.com/tools/ai-dataecho-mcp/drive-tokens.md
- `get_site` — Read — https://policylayer.com/tools/ai-dataecho-mcp/get-site.md
- `list_drives` — Read — https://policylayer.com/tools/ai-dataecho-mcp/list-drives.md
- `list_sites` — Read — https://policylayer.com/tools/ai-dataecho-mcp/list-sites.md
- `list_variables` — Read — https://policylayer.com/tools/ai-dataecho-mcp/list-variables.md
- `platform_info` — Read — https://policylayer.com/tools/ai-dataecho-mcp/platform-info.md
- `search_sites` — Read — https://policylayer.com/tools/ai-dataecho-mcp/search-sites.md
- `verify_login_code` — Read — https://policylayer.com/tools/ai-dataecho-mcp/verify-login-code.md
- `claim_site` — Write — https://policylayer.com/tools/ai-dataecho-mcp/claim-site.md
- `create_drive` — Write — https://policylayer.com/tools/ai-dataecho-mcp/create-drive.md
- `drive_move_file` — Write — https://policylayer.com/tools/ai-dataecho-mcp/drive-move-file.md
- `drive_restore` — Write — https://policylayer.com/tools/ai-dataecho-mcp/drive-restore.md
- `drive_share` — Write — https://policylayer.com/tools/ai-dataecho-mcp/drive-share.md
- `drive_write_file` — Write — https://policylayer.com/tools/ai-dataecho-mcp/drive-write-file.md
- `request_login_code` — Write — https://policylayer.com/tools/ai-dataecho-mcp/request-login-code.md
- `set_variable` — Write — https://policylayer.com/tools/ai-dataecho-mcp/set-variable.md
- `update_site_metadata` — Write — https://policylayer.com/tools/ai-dataecho-mcp/update-site-metadata.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=ai-dataecho-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/ai-dataecho-mcp
