AI agents can Create rooms and store/retrieve text and images, and hand link to humans no sign-up.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Delete ALL items in a Clippy room (and their images). Use with care — this wipes everything shared in the room and cannot be undone. The room itself continues to exist and can be reused.
The 6-character room code (or a Clippy share URL / #CODE link).
Required only if the room is password-protected and you are not using owner_token.
Optional. The room owner_token; bypasses the password on a locked room.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Delete ALL items in a Clippy room (and their images). Use with care — this wipes everything shared in the room and cannot be undone. The room itself continues to exist and can be reused.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). |
| password | string | Required only if the room is password-protected and you are not using owner_token. |
| owner_token | string | Optional. The room owner_token; bypasses the password on a locked room. |
{
"type": "object",
"required": [
"room"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link)."
},
"password": {
"type": "string",
"description": "Required only if the room is password-protected and you are not using owner_token."
},
"owner_token": {
"type": "string",
"description": "Optional. The room owner_token; bypasses the password on a locked room."
}
}
}Create a brand-new Clippy room and get back its 6-character code, a private owner_token, and a share URL. Use this when you want a fresh shared clipboard to push content to a user (hand them the URL) or to coordinate with other agents. Keep the owner_token private — it grants password control over the room.
| Argument | Type | Description |
|---|---|---|
| password | string | Optional. Lock the new room with this password so only holders of the password (or the owner_token) can read/write it. |
{
"type": "object",
"properties": {
"password": {
"type": "string",
"description": "Optional. Lock the new room with this password so only holders of the password (or the owner_token) can read/write it."
}
}
}Delete a single item from a Clippy room by its item id (the `id` returned by store-item / list-items). Any images attached to the item are removed too. This cannot be undone.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). |
| item_id* | string | The item id (UUID) to delete. |
| password | string | Required only if the room is password-protected and you are not using owner_token. |
| owner_token | string | Optional. The room owner_token; bypasses the password on a locked room. |
{
"type": "object",
"required": [
"room",
"item_id"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link)."
},
"item_id": {
"type": "string",
"description": "The item id (UUID) to delete."
},
"password": {
"type": "string",
"description": "Required only if the room is password-protected and you are not using owner_token."
},
"owner_token": {
"type": "string",
"description": "Optional. The room owner_token; bypasses the password on a locked room."
}
}
}Read the items in a Clippy room (newest first). Use this to pick up text a user or another agent left for you, or to see what is currently in a shared room. Pass `since` (a millisecond timestamp from a previous call) to fetch only items added after that point. Image items include direct image URLs.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). |
| limit | integer | Optional. Maximum number of items to return (1–100). Defaults to 100. |
| since | integer | Optional. Return only items created strictly after this Unix timestamp in milliseconds. Use the `now` value from a previous call to poll incrementally. |
| password | string | Required only if the room is password-protected and you are not using owner_token. |
| owner_token | string | Optional. The room owner_token; bypasses the password on a locked room. |
{
"type": "object",
"required": [
"room"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link)."
},
"limit": {
"type": "integer",
"description": "Optional. Maximum number of items to return (1–100). Defaults to 100."
},
"since": {
"type": "integer",
"description": "Optional. Return only items created strictly after this Unix timestamp in milliseconds. Use the `now` value from a previous call to poll incrementally."
},
"password": {
"type": "string",
"description": "Required only if the room is password-protected and you are not using owner_token."
},
"owner_token": {
"type": "string",
"description": "Optional. The room owner_token; bypasses the password on a locked room."
}
}
}Check whether a Clippy room exists, whether it is password-protected, and how many items it holds — without reading the contents. Handy before deciding to read or write, or to confirm a code a user gave you is valid.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). |
{
"type": "object",
"required": [
"room"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link)."
}
}
}Lock or unlock a Clippy room. Requires the room owner_token (returned by create-room). Pass a password to lock the room; pass an empty password to remove the lock. Only the owner can change this.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). |
| password | string | The new password to lock the room with. Pass an empty string to remove the password and make the room open. |
| owner_token* | string | The room owner_token proving you own this room. Required. |
{
"type": "object",
"required": [
"room",
"owner_token"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link)."
},
"password": {
"type": "string",
"description": "The new password to lock the room with. Pass an empty string to remove the password and make the room open."
},
"owner_token": {
"type": "string",
"description": "The room owner_token proving you own this room. Required."
}
}
}Post one or more images (PNG, JPEG, GIF, or WEBP) to a Clippy room so they appear on every device watching it, optionally with a text caption. Pass each image as a base64 string or a data: URI. The room is created if it does not exist. Subscribed devices get a push notification. Returns the stored item, including direct URLs to fetch each image.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). The room is created if new. |
| text | string | Optional caption to store alongside the image(s). Up to 200,000 characters. |
| device | string | Optional short label for who is posting (max 64 chars). Defaults to "AI Agent". |
| images* | array | One or more images, each a base64-encoded PNG/JPEG/GIF/WEBP or a data: URI (e.g. "data:image/png;base64,iVBOR..."). Up to 10 images, 10 MB each. |
| password | string | Required only if the room is password-protected and you are not using owner_token. |
| owner_token | string | Optional. The room owner_token; bypasses the password on a locked room. |
{
"type": "object",
"required": [
"room",
"images"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link). The room is created if new."
},
"text": {
"type": "string",
"description": "Optional caption to store alongside the image(s). Up to 200,000 characters."
},
"device": {
"type": "string",
"description": "Optional short label for who is posting (max 64 chars). Defaults to \"AI Agent\"."
},
"images": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "One or more images, each a base64-encoded PNG/JPEG/GIF/WEBP or a data: URI (e.g. \"data:image/png;base64,iVBOR...\"). Up to 10 images, 10 MB each."
},
"password": {
"type": "string",
"description": "Required only if the room is password-protected and you are not using owner_token."
},
"owner_token": {
"type": "string",
"description": "Optional. The room owner_token; bypasses the password on a locked room."
}
}
}Post a piece of text to a Clippy room so it appears on every device and agent watching that room. The room is created automatically if it does not exist yet. Subscribed devices receive a push notification. This is how you "send" something to a user or leave a note for another agent. Returns the stored item.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). The room is created if new. |
| text* | string | The text content to store (a snippet, link, message, etc.). Up to 200,000 characters. |
| device | string | Optional short label for who is posting (max 64 chars). Defaults to "AI Agent" so humans can tell agent posts apart. |
| password | string | Required only if the room is password-protected and you are not using owner_token. |
| owner_token | string | Optional. The room owner_token; bypasses the password on a locked room. |
{
"type": "object",
"required": [
"room",
"text"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link). The room is created if new."
},
"text": {
"type": "string",
"description": "The text content to store (a snippet, link, message, etc.). Up to 200,000 characters."
},
"device": {
"type": "string",
"description": "Optional short label for who is posting (max 64 chars). Defaults to \"AI Agent\" so humans can tell agent posts apart."
},
"password": {
"type": "string",
"description": "Required only if the room is password-protected and you are not using owner_token."
},
"owner_token": {
"type": "string",
"description": "Optional. The room owner_token; bypasses the password on a locked room."
}
}
}Edit the text of an existing item in a Clippy room, identified by its item id (the `id` field returned by store-item / list-items). Image bytes are immutable; this changes only the text.
| Argument | Type | Description |
|---|---|---|
| room* | string | The 6-character room code (or a Clippy share URL / #CODE link). |
| text* | string | The new text. For a text-only item this cannot be empty — delete it instead. |
| item_id* | string | The item id (UUID) to edit, as returned in the `id` field of a stored/listed item. |
| password | string | Required only if the room is password-protected and you are not using owner_token. |
| owner_token | string | Optional. The room owner_token; bypasses the password on a locked room. |
{
"type": "object",
"required": [
"room",
"item_id",
"text"
],
"properties": {
"room": {
"type": "string",
"description": "The 6-character room code (or a Clippy share URL / #CODE link)."
},
"text": {
"type": "string",
"description": "The new text. For a text-only item this cannot be empty — delete it instead."
},
"item_id": {
"type": "string",
"description": "The item id (UUID) to edit, as returned in the `id` field of a stored/listed item."
},
"password": {
"type": "string",
"description": "Required only if the room is password-protected and you are not using owner_token."
},
"owner_token": {
"type": "string",
"description": "Optional. The room owner_token; bypasses the password on a locked room."
}
}
}