Server definition
- Hash
- sha256:5330d42f96e398ec86f5a32a5fb574035c02ced1557649593d2116531e0c4266
- What it is
- What a remote MCP server returned when asked what it offers: 9 tools
The blob, as servednamed by its sha256
{
"instructions": "Clippy is a no-sign-up, cross-device shared clipboard. Content lives in a\n\"room\" identified by a 6-character code (e.g. ABC123). Anyone — a person on\ntheir phone, a browser extension, or another AI agent — who knows the code can\nread and write that room's items. It is the fastest way to move text between an\nagent and a human's devices, or to leave a shared scratchpad several agents can\nall reach.\n\nCore model:\n- A room holds up to 100 items (newest first). Each item is a piece of text\n (and/or images) plus a small \"device\" label saying who posted it.\n- Rooms are created on demand — the first time anyone touches a code, it exists.\n- A room can be locked with a password. Creating a room also returns a private\n `owner_token`; keep it if you want to lock/unlock the room later or bypass its\n password. NEVER share the owner_token with anyone you wouldn't trust with full\n control of the room.\n\nHow to use it well:\n- To hand a user something (a snippet, a link, an answer they want on another\n device): call `create-room`, `store-item` the text into it, then give the user\n the returned share URL — https://…/r/CODE — which opens in any browser, or tell\n them to point the Clippy extension at the code. Their devices get a push\n notification when new items land.\n- To pick up what a user (or another agent) left for you: `list-items` on the\n code they gave you. Use the `since` argument to poll only for new items.\n- To coordinate with other agents: agree on a code, then `store-item` /\n `list-items` against it as a shared blackboard.\n\nAlways report the room CODE and the share URL back to the user in plain text —\nthat string is the only thing they need to get the content onto their devices.\nPrefer sharing the code over dumping large content back into chat.",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"owner_token": {
"description": "Optional. The room owner_token; bypasses the password on a locked room.",
"type": "string"
},
"password": {
"description": "Required only if the room is password-protected and you are not using owner_token.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link).",
"type": "string"
}
},
"required": [
"room"
],
"type": "object"
},
"name": "clear-room-tool",
"outputSchema": {
"properties": {
"cleared": {
"description": "Number of items that were deleted.",
"type": "integer"
},
"code": {
"description": "The room code that was cleared.",
"type": "string"
}
},
"required": [
"code",
"cleared"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"password": {
"description": "Optional. Lock the new room with this password so only holders of the password (or the owner_token) can read/write it.",
"type": "string"
}
},
"type": "object"
},
"name": "create-room-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The new 6-character room code.",
"type": "string"
},
"locked": {
"description": "Whether the room is password-protected.",
"type": "boolean"
},
"owner_token": {
"description": "Private token granting password control over the room. Keep secret.",
"type": "string"
},
"url": {
"description": "Human-shareable URL that opens the room on any device.",
"type": "string"
}
},
"required": [
"code",
"url",
"owner_token",
"locked"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"item_id": {
"description": "The item id (UUID) to delete.",
"type": "string"
},
"owner_token": {
"description": "Optional. The room owner_token; bypasses the password on a locked room.",
"type": "string"
},
"password": {
"description": "Required only if the room is password-protected and you are not using owner_token.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link).",
"type": "string"
}
},
"required": [
"room",
"item_id"
],
"type": "object"
},
"name": "delete-item-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code that was targeted.",
"type": "string"
},
"deleted": {
"description": "Whether an item was actually deleted (false if it did not exist).",
"type": "boolean"
}
},
"required": [
"code",
"deleted"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"limit": {
"description": "Optional. Maximum number of items to return (1–100). Defaults to 100.",
"type": "integer"
},
"owner_token": {
"description": "Optional. The room owner_token; bypasses the password on a locked room.",
"type": "string"
},
"password": {
"description": "Required only if the room is password-protected and you are not using owner_token.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link).",
"type": "string"
},
"since": {
"description": "Optional. Return only items created strictly after this Unix timestamp in milliseconds. Use the `now` value from a previous call to poll incrementally.",
"type": "integer"
}
},
"required": [
"room"
],
"type": "object"
},
"name": "list-items-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code that was read.",
"type": "string"
},
"count": {
"description": "Number of items returned.",
"type": "integer"
},
"items": {
"description": "The matching items, newest first.",
"items": {
"properties": {
"createdAt": {
"description": "Creation time, Unix milliseconds.",
"type": [
"integer",
"null"
]
},
"device": {
"description": "Label for who posted the item.",
"type": "string"
},
"edited": {
"description": "Whether the item was edited after it was created.",
"type": "boolean"
},
"hasImage": {
"description": "Whether the item has one or more images.",
"type": "boolean"
},
"id": {
"description": "The item id (UUID).",
"type": "string"
},
"imageCount": {
"description": "Number of images attached to the item.",
"type": "integer"
},
"imageMime": {
"description": "Legacy convenience: MIME type of the first image.",
"type": "string"
},
"imageSize": {
"description": "Legacy convenience: size of the first image in bytes.",
"type": [
"integer",
"null"
]
},
"imageUrl": {
"description": "Legacy convenience: URL of the first image. Present only when hasImage is true.",
"type": "string"
},
"images": {
"description": "Attached images, ordered by position. Present only when hasImage is true.",
"items": {
"properties": {
"mime": {
"description": "Image MIME type.",
"type": "string"
},
"position": {
"description": "0-based position in the gallery.",
"type": "integer"
},
"size": {
"description": "Image size in bytes.",
"type": [
"integer",
"null"
]
},
"url": {
"description": "Absolute URL to fetch the image bytes.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"type": "array"
},
"text": {
"description": "The text content, or null for image-only items.",
"type": [
"string",
"null"
]
},
"updatedAt": {
"description": "Last-update time, Unix milliseconds.",
"type": [
"integer",
"null"
]
}
},
"required": [
"id",
"device",
"edited",
"hasImage",
"imageCount"
],
"type": "object"
},
"type": "array"
},
"locked": {
"description": "Whether the room is password-protected.",
"type": "boolean"
},
"now": {
"description": "Server time in Unix milliseconds; pass as `since` next call to poll incrementally.",
"type": "integer"
}
},
"required": [
"code",
"locked",
"count",
"items",
"now"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link).",
"type": "string"
}
},
"required": [
"room"
],
"type": "object"
},
"name": "room-status-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code that was checked.",
"type": "string"
},
"exists": {
"description": "Whether the room currently exists.",
"type": "boolean"
},
"itemCount": {
"description": "Number of items currently in the room.",
"type": "integer"
},
"locked": {
"description": "Whether the room is password-protected.",
"type": "boolean"
},
"url": {
"description": "Human-shareable URL for the room.",
"type": "string"
}
},
"required": [
"code",
"exists",
"locked",
"itemCount",
"url"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"owner_token": {
"description": "The room owner_token proving you own this room. Required.",
"type": "string"
},
"password": {
"description": "The new password to lock the room with. Pass an empty string to remove the password and make the room open.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link).",
"type": "string"
}
},
"required": [
"room",
"owner_token"
],
"type": "object"
},
"name": "set-room-password-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code whose lock state changed.",
"type": "string"
},
"locked": {
"description": "Whether the room is now password-protected.",
"type": "boolean"
}
},
"required": [
"code",
"locked"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"device": {
"description": "Optional short label for who is posting (max 64 chars). Defaults to \"AI Agent\".",
"type": "string"
},
"images": {
"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.",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
},
"owner_token": {
"description": "Optional. The room owner_token; bypasses the password on a locked room.",
"type": "string"
},
"password": {
"description": "Required only if the room is password-protected and you are not using owner_token.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link). The room is created if new.",
"type": "string"
},
"text": {
"description": "Optional caption to store alongside the image(s). Up to 200,000 characters.",
"type": "string"
}
},
"required": [
"room",
"images"
],
"type": "object"
},
"name": "store-image-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code the image was stored in.",
"type": "string"
},
"item": {
"description": "The stored item, including image URLs.",
"properties": {
"createdAt": {
"description": "Creation time, Unix milliseconds.",
"type": [
"integer",
"null"
]
},
"device": {
"description": "Label for who posted the item.",
"type": "string"
},
"edited": {
"description": "Whether the item was edited after it was created.",
"type": "boolean"
},
"hasImage": {
"description": "Whether the item has one or more images.",
"type": "boolean"
},
"id": {
"description": "The item id (UUID).",
"type": "string"
},
"imageCount": {
"description": "Number of images attached to the item.",
"type": "integer"
},
"imageMime": {
"description": "Legacy convenience: MIME type of the first image.",
"type": "string"
},
"imageSize": {
"description": "Legacy convenience: size of the first image in bytes.",
"type": [
"integer",
"null"
]
},
"imageUrl": {
"description": "Legacy convenience: URL of the first image. Present only when hasImage is true.",
"type": "string"
},
"images": {
"description": "Attached images, ordered by position. Present only when hasImage is true.",
"items": {
"properties": {
"mime": {
"description": "Image MIME type.",
"type": "string"
},
"position": {
"description": "0-based position in the gallery.",
"type": "integer"
},
"size": {
"description": "Image size in bytes.",
"type": [
"integer",
"null"
]
},
"url": {
"description": "Absolute URL to fetch the image bytes.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"type": "array"
},
"text": {
"description": "The text content, or null for image-only items.",
"type": [
"string",
"null"
]
},
"updatedAt": {
"description": "Last-update time, Unix milliseconds.",
"type": [
"integer",
"null"
]
}
},
"required": [
"id",
"device",
"edited",
"hasImage",
"imageCount"
],
"type": "object"
},
"url": {
"description": "Human-shareable URL that opens the room on any device.",
"type": "string"
}
},
"required": [
"code",
"url",
"item"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"device": {
"description": "Optional short label for who is posting (max 64 chars). Defaults to \"AI Agent\" so humans can tell agent posts apart.",
"type": "string"
},
"owner_token": {
"description": "Optional. The room owner_token; bypasses the password on a locked room.",
"type": "string"
},
"password": {
"description": "Required only if the room is password-protected and you are not using owner_token.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link). The room is created if new.",
"type": "string"
},
"text": {
"description": "The text content to store (a snippet, link, message, etc.). Up to 200,000 characters.",
"type": "string"
}
},
"required": [
"room",
"text"
],
"type": "object"
},
"name": "store-item-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code the item was stored in.",
"type": "string"
},
"item": {
"description": "The stored item.",
"properties": {
"createdAt": {
"description": "Creation time, Unix milliseconds.",
"type": [
"integer",
"null"
]
},
"device": {
"description": "Label for who posted the item.",
"type": "string"
},
"edited": {
"description": "Whether the item was edited after it was created.",
"type": "boolean"
},
"hasImage": {
"description": "Whether the item has one or more images.",
"type": "boolean"
},
"id": {
"description": "The item id (UUID).",
"type": "string"
},
"imageCount": {
"description": "Number of images attached to the item.",
"type": "integer"
},
"imageMime": {
"description": "Legacy convenience: MIME type of the first image.",
"type": "string"
},
"imageSize": {
"description": "Legacy convenience: size of the first image in bytes.",
"type": [
"integer",
"null"
]
},
"imageUrl": {
"description": "Legacy convenience: URL of the first image. Present only when hasImage is true.",
"type": "string"
},
"images": {
"description": "Attached images, ordered by position. Present only when hasImage is true.",
"items": {
"properties": {
"mime": {
"description": "Image MIME type.",
"type": "string"
},
"position": {
"description": "0-based position in the gallery.",
"type": "integer"
},
"size": {
"description": "Image size in bytes.",
"type": [
"integer",
"null"
]
},
"url": {
"description": "Absolute URL to fetch the image bytes.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"type": "array"
},
"text": {
"description": "The text content, or null for image-only items.",
"type": [
"string",
"null"
]
},
"updatedAt": {
"description": "Last-update time, Unix milliseconds.",
"type": [
"integer",
"null"
]
}
},
"required": [
"id",
"device",
"edited",
"hasImage",
"imageCount"
],
"type": "object"
},
"url": {
"description": "Human-shareable URL that opens the room on any device.",
"type": "string"
}
},
"required": [
"code",
"url",
"item"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"item_id": {
"description": "The item id (UUID) to edit, as returned in the `id` field of a stored/listed item.",
"type": "string"
},
"owner_token": {
"description": "Optional. The room owner_token; bypasses the password on a locked room.",
"type": "string"
},
"password": {
"description": "Required only if the room is password-protected and you are not using owner_token.",
"type": "string"
},
"room": {
"description": "The 6-character room code (or a Clippy share URL / #CODE link).",
"type": "string"
},
"text": {
"description": "The new text. For a text-only item this cannot be empty — delete it instead.",
"type": "string"
}
},
"required": [
"room",
"item_id",
"text"
],
"type": "object"
},
"name": "update-item-tool",
"outputSchema": {
"properties": {
"code": {
"description": "The room code containing the item.",
"type": "string"
},
"item": {
"description": "The updated item.",
"properties": {
"createdAt": {
"description": "Creation time, Unix milliseconds.",
"type": [
"integer",
"null"
]
},
"device": {
"description": "Label for who posted the item.",
"type": "string"
},
"edited": {
"description": "Whether the item was edited after it was created.",
"type": "boolean"
},
"hasImage": {
"description": "Whether the item has one or more images.",
"type": "boolean"
},
"id": {
"description": "The item id (UUID).",
"type": "string"
},
"imageCount": {
"description": "Number of images attached to the item.",
"type": "integer"
},
"imageMime": {
"description": "Legacy convenience: MIME type of the first image.",
"type": "string"
},
"imageSize": {
"description": "Legacy convenience: size of the first image in bytes.",
"type": [
"integer",
"null"
]
},
"imageUrl": {
"description": "Legacy convenience: URL of the first image. Present only when hasImage is true.",
"type": "string"
},
"images": {
"description": "Attached images, ordered by position. Present only when hasImage is true.",
"items": {
"properties": {
"mime": {
"description": "Image MIME type.",
"type": "string"
},
"position": {
"description": "0-based position in the gallery.",
"type": "integer"
},
"size": {
"description": "Image size in bytes.",
"type": [
"integer",
"null"
]
},
"url": {
"description": "Absolute URL to fetch the image bytes.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"type": "array"
},
"text": {
"description": "The text content, or null for image-only items.",
"type": [
"string",
"null"
]
},
"updatedAt": {
"description": "Last-update time, Unix milliseconds.",
"type": [
"integer",
"null"
]
}
},
"required": [
"id",
"device",
"edited",
"hasImage",
"imageCount"
],
"type": "object"
}
},
"required": [
"code",
"item"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:5330d42f96e398ec86f5a32a5fb574035c02ced1557649593d2116531e0c4266 | sha256sum