> ## Documentation Index
> Fetch the complete documentation index at: https://docs.murmur.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# upload

> MCP tool that uploads a file to Murmur's public storage and returns its URL — used to share screenshots and artifacts with running agents.

Uploads a file from the agent's local disk to the public storage bucket. Returns the public HTTPS URL. Useful for attaching screenshots, diagrams, or build artifacts to PR descriptions and comments.

Equivalent to [`murmur upload`](/cli/upload) in the CLI.

## Parameters

| Name           | Type   | Required | Description                                                                                                            |
| -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `filename`     | string | yes      | File name (e.g. `diagram.png`). Used as the storage object name and to infer MIME type when `content_type` is omitted. |
| `path`         | string | yes      | Absolute path to the file on disk.                                                                                     |
| `content_type` | string | no       | MIME type (e.g. `image/png`). Inferred from `filename` extension if omitted. Falls back to `application/octet-stream`. |
| `workspace`    | string | no       | Workspace name. Overrides the session default.                                                                         |

## Response

Returns the public HTTPS URL as a plain string.

## Examples

### Upload a screenshot

```json theme={null}
{
  "filename": "screenshot.png",
  "path": "/tmp/screenshot.png"
}
```

Response:

```
https://storage.googleapis.com/murmur-public/uploads/abc123/screenshot.png
```

### Upload with explicit MIME type

```json theme={null}
{
  "filename": "report.html",
  "path": "/home/agent/output/report.html",
  "content_type": "text/html"
}
```

## Errors

| Code               | Meaning                               | What to do                          |
| ------------------ | ------------------------------------- | ----------------------------------- |
| `INVALID_ARGUMENT` | Missing `filename` or `path`.         | Provide both required fields.       |
| `NOT_FOUND`        | File not found at the given `path`.   | Check the file path exists on disk. |
| `UNAUTHENTICATED`  | Identity token is missing or expired. | Check credentials.                  |

## Related

* [`murmur upload`](/cli/upload) — equivalent CLI command
* [`port_url`](/mcp-server/port-url) — share a live service URL instead of a static file
* [`status`](/mcp-server/status) — check agent state (timeline includes upload events)
