# upload

Upload a ZIP file to update an existing Chrome Web Store item draft. Note: Creating new items via API is not supported in v2 — use the Developer Dashboard to create new items.

Agent View of the PolicyLayer registry record for `upload`. HTML page: https://policylayer.com/tools/1llum1n4t1-cws-mcp/upload

## Facts

- Tool: `upload`
- Server: Cws (`@1llum1n4t1/cws-mcp`) — https://policylayer.com/tools/1llum1n4t1-cws-mcp.md
- Install: `npx -y @1llum1n4t1/cws-mcp`
- Homepage: https://www.npmjs.com/package/@1llum1n4t1/cws-mcp
- Risk category: Write (Medium risk)
- Registry record: grade D, identity unverified
- Server rate-limited: no
- Parameters: 3 (1 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `itemId` | string | no | Extension item ID (defaults to CWS_ITEM_ID env var) |
| `zipPath` | string | yes | Absolute path to the ZIP file to upload |
| `publisherId` | string | no | Publisher ID (defaults to CWS_PUBLISHER_ID env var or 'me') |

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": "upload",
    "arguments": {
      "zipPath": "<zipPath>"
    }
  }
}
```

## Why upload is rated Medium

This tool creates or modifies extension draft data by uploading a ZIP file, which is a reversible change. While the blast radius is significant (an attacker could maliciously modify extension code before publication), it does not permanently delete data or commit irreversible changes, nor does it publish the extension (publish is a separate sibling tool).

From the tool's own definition: "Tool description states 'Upload a ZIP file to update an existing Chrome Web Store item draft.' The action of uploading and updating a draft is a reversible modification to extension data on the Chrome Web Store."

## Use case

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

## Recommended policy (PolicyLayer)

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

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

## Other tools on Cws (7)

- `deploy-percentage` — Execute — https://policylayer.com/tools/1llum1n4t1-cws-mcp/deploy-percentage.md
- `get` — Read — https://policylayer.com/tools/1llum1n4t1-cws-mcp/get.md
- `status` — Read — https://policylayer.com/tools/1llum1n4t1-cws-mcp/status.md
- `cancel` — Write — https://policylayer.com/tools/1llum1n4t1-cws-mcp/cancel.md
- `publish` — Write — https://policylayer.com/tools/1llum1n4t1-cws-mcp/publish.md
- `submit` — Write — https://policylayer.com/tools/1llum1n4t1-cws-mcp/submit.md
- `update-metadata` — Write — https://policylayer.com/tools/1llum1n4t1-cws-mcp/update-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=1llum1n4t1-cws-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/1llum1n4t1-cws-mcp
