---
title: sherserve tools
description: The five store_* MCP tools, with their real argument shapes.
---

# sherserve tools

| Tool | What it does |
| --- | --- |
| `store_upload_file` | Upload a local file as a new object (stdio only) |
| `store_upload_content` | Upload bytes or text as a new object (hosted MCP) |
| `store_list_objects` | List your uploaded objects |
| `store_get_object` | Get one object's details by slug or id |
| `store_delete_object` | Permanently delete an object and its file |

Five tools in total, split across the two servers: the local npm server
exposes `store_upload_file`, the hosted server exposes
`store_upload_content` instead — each server registers exactly one of
the two upload tools, never both. See
[uploading](/sherserve/uploading) for which one you'll see, and why.
Every tool accepts an optional `project` (a slug), defaulting to the
calling key's own home project.

## Arguments

`store_upload_file`: `path` (required, local filesystem path); optional
`slug`, `title` (defaults to the uploaded filename), `access`,
`password`, `expiresAt`, `maxViews`, `allow` (emails or `@handles`, for
`access: "allow_list"`).

`store_upload_content`: `slug` and `contentType` (required), plus
exactly one of `contentBase64` or `text` (required); optional `path`
(a filename hint only — see
[content types and limits](/sherserve/content-types-and-limits)),
`title`, `access`, `password`, `expiresAt`, `maxViews`, `allow`.

`store_list_objects`: no required arguments.

`store_get_object`: either `slug` or `id` (one is required).

`store_delete_object`: either `slug` or `id`, plus `confirm` (required)
— `confirm` must exactly equal whichever of `slug`/`id` was passed, or
the call fails rather than deleting anything.

None of these tools set or change an object's access level directly —
that's `link_set_access`, on the object's short link. See
[sherlink tools](/sherlink/tools).

## Next

[sherlink](/sherlink).
