Koskamo

83blue MCP

An official MCP server provided by 83blue for AI agents to perform file transfers, static site hosting, and conversation handoffs without requiring accounts or API keys. It exposes tools for sharing text, files, and conversation contexts, as well as deploying and managing static websites.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

83blue MCP logo, by 83blueVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by 83blue
MCP endpoint (Streamable HTTP)
https://upload.83blue.com/mcp
Vendor documentation

What its tools do

9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

9 of 9 have a description · 9 of 9 declare behavior hints · 8 of 9 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to upload.83blue.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Transfer files between AI agents using secure, password-protected links
  • Deploy static websites for demos or prototypes with a single tool call
  • Hand off conversation context and files to another agent or model
  • Retrieve file metadata and contents via MCP tools

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
agent-cloud-tools 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Free, no-signup file transfer for handing files between AI agents, machines, chat sessions and people. share_text / share_file upload content and return a capability url (one GET fetches it, no password) plus a share url + password. share_conversation packages a transcript and files into one bundle with HANDOFF.md at the root, and returns a handoff url that any model from any provider can fetch to pick up the whole context in one go. receive_file fetches any of these links, reads HANDOFF.md first for zip bundles, and verifies sha256. Files auto-delete after expires_days (default 30, max 180). It also works as durable scratchpad memory: stash text with share_text (kept up to 180 days) and fetch it back by url in any later session. deploy_site publishes a static website (HTML/CSS/JS/images) an agent has built to a live public url in one call, no signup: perfect for showing a user the site you just coded. list_sites and delete_site manage them. Free zero-knowledge WordPress backups too: the 83blue-backup plugin backs up a WP site encrypted with a key only the owner holds. To restore from a recovery code (83B1:install_id:token:key), a human pastes it at https://upload.83blue.com/restore (decrypts in the browser); an agent calls GET https://upload.83blue.com/api/wp/blist?install_id=ID then GET https://upload.83blue.com/api/wp/bget?backup_id=N (both with header X-Wp-Token: TOKEN) and decrypts the .enc locally with the key. Full format and decoders: https://upload.83blue.com/docs#backups. For large local files (up to 2 TB) use the HTTP API instead: https://upload.83blue.com/docs

Tools

9 advertised

share_text — Share text with another agent or person
Advertised by the server during the last successful anonymous check.
Open-world

Use this when another AI agent, chat session or person needs text you have: instructions, code, JSON, a prompt for another model. Uploads it as a downloadable file and returns a capability url (one GET fetches it) plus a share url and password. No account or API key needed.

share_text input schema
{
  "type": "object",
  "required": [
    "content"
  ],
  "properties": {
    "content": {
      "type": "string",
      "description": "The text to share"
    },
    "filename": {
      "type": "string",
      "default": "handoff.md",
      "description": "File name for the download, e.g. instructions.md"
    },
    "password": {
      "type": "string",
      "maxLength": 64,
      "minLength": 8,
      "description": "Optional custom password (8-64 chars); a strong one is generated when omitted"
    },
    "expires_days": {
      "type": "integer",
      "default": 30,
      "maximum": 180,
      "minimum": 1,
      "description": "Days until the file is deleted (1-180, default 30)"
    }
  }
}
share_text annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
share_file — Share one or more files with another agent
Advertised by the server during the last successful anonymous check.
Open-world

Use this when another AI agent (a different machine, model or chat session) or a person needs access to one or more files. Accepts text or base64-encoded binary content; multiple files are zipped into one bundle server-side, so a whole handoff (instructions plus code plus data) travels as one capability url. For large files already on local disk, prefer the HTTP API (one curl command, up to 2 TB): https://upload.83blue.com/docs

share_file input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "filename"
        ],
        "properties": {
          "filename": {
            "type": "string"
          },
          "content_text": {
            "type": "string",
            "description": "UTF-8 text content"
          },
          "content_base64": {
            "type": "string",
            "description": "Base64 content for binary files"
          }
        }
      },
      "maxItems": 100,
      "minItems": 1
    },
    "password": {
      "type": "string",
      "maxLength": 64,
      "minLength": 8,
      "description": "Optional custom password (8-64 chars); a strong one is generated when omitted"
    },
    "bundle_name": {
      "type": "string",
      "default": "handoff-bundle.zip",
      "description": "Zip name used when more than one file is sent"
    },
    "expires_days": {
      "type": "integer",
      "default": 30,
      "maximum": 180,
      "minimum": 1,
      "description": "Days until the file is deleted (1-180, default 30)"
    }
  }
}
share_file annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
share_conversation — Hand a whole conversation to another model
Advertised by the server during the last successful anonymous check.
Open-world

Use this to hand your full working context to another AI: any provider, any model, any chat client. Packages a markdown transcript (instructions, conversation summary, task state) as HANDOFF.md at the root of a zip bundle together with any files, and returns a single handoff url. The receiving model just fetches that url: it gets a briefing, the file manifest and download commands in one go. Say to the next agent: "Fetch this url to pick up where I left off."

share_conversation input schema
{
  "type": "object",
  "required": [
    "transcript"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "filename"
        ],
        "properties": {
          "filename": {
            "type": "string"
          },
          "content_text": {
            "type": "string"
          },
          "content_base64": {
            "type": "string"
          }
        }
      },
      "maxItems": 100,
      "description": "Optional files the next agent needs alongside the transcript"
    },
    "title": {
      "type": "string",
      "description": "Short name for the bundle, e.g. \"auth refactor handoff\""
    },
    "password": {
      "type": "string",
      "maxLength": 64,
      "minLength": 8,
      "description": "Optional custom password (8-64 chars); a strong one is generated when omitted"
    },
    "transcript": {
      "type": "string",
      "description": "Markdown briefing for the next agent: context, instructions, conversation summary, task state. Becomes HANDOFF.md at the bundle root."
    },
    "expires_days": {
      "type": "integer",
      "default": 30,
      "maximum": 180,
      "minimum": 1,
      "description": "Days until the file is deleted (1-180, default 30)"
    }
  }
}
share_conversation annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
receive_file — Receive a file another agent shared
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when you have been given an 83blue link and need the file. Accepts a capability url (https://upload.83blue.com/f/...) on its own, or a share url plus password. Returns metadata including sha256, the file list for zip bundles, and the content inline when it is text within max_inline_bytes; otherwise returns a ready-made curl command to save the file locally.

receive_file input schema
{
  "type": "object",
  "required": [
    "url_or_token"
  ],
  "properties": {
    "password": {
      "type": "string",
      "description": "Needed for share urls and bare tokens; not needed for capability urls"
    },
    "url_or_token": {
      "type": "string",
      "description": "Capability url (https://upload.83blue.com/f/TOKEN/KEY), share url (https://upload.83blue.com/d/TOKEN), or the bare token"
    },
    "max_inline_bytes": {
      "type": "integer",
      "default": 100000,
      "maximum": 1000000,
      "minimum": 0,
      "description": "Inline text content up to this many bytes (max 1000000)"
    }
  }
}
receive_file annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
deploy_site — Publish a static website to a live public url
Advertised by the server during the last successful anonymous check.
Open-world

Use this to put a static website you have built (HTML, CSS, JS, images, fonts) onto the public web in one call, with no signup, no account and no config. Give it the files (there must be an index.html at the root) and it returns a live https url, e.g. https://upload.83blue.com/s/brave-otter-482/, plus a manage_key you can reuse to update or delete it. Ideal when a person asks you to build them a website, landing page, demo, prototype or report and wants to see it live. IMPORTANT: the site is served from a subfolder, so use RELATIVE asset paths only (href="style.css", src="img/logo.png"), never root-absolute paths like "/style.css" which would break. Sites are served as pure static files (server-side code is never executed) and auto-expire after 30 days unless renewed. Each file is text or base64. Total site up to 50 MB, 300 files.

deploy_site input schema
{
  "type": "object",
  "required": [
    "files"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Optional name for the site path (3-40 chars, a-z 0-9 and hyphens); it becomes /s/{name}/. A friendly one is generated when omitted."
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "path"
        ],
        "properties": {
          "path": {
            "type": "string",
            "description": "Relative path within the site, e.g. index.html, css/style.css, img/logo.png"
          },
          "text": {
            "type": "string",
            "description": "UTF-8 text content (for html/css/js/svg etc.)"
          },
          "base64": {
            "type": "string",
            "description": "Base64 content (for binary assets like images/fonts)"
          }
        }
      },
      "maxItems": 300,
      "minItems": 1,
      "description": "The site files. Must include an index.html at the root."
    },
    "title": {
      "type": "string",
      "description": "Optional short label for your own reference"
    },
    "manage_key": {
      "type": "string",
      "description": "Pass the manage_key from a previous deploy together with the same slug to update that site in place."
    },
    "expires_days": {
      "type": "integer",
      "default": 30,
      "maximum": 30,
      "minimum": 1,
      "description": "Days until the site is removed (1-30, default 30)"
    }
  }
}
deploy_site annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
list_sites — Look up a hosted site
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return the status, address, size and expiry of a site you deployed. Pass the url, host or slug.

list_sites input schema
{
  "type": "object",
  "required": [
    "site"
  ],
  "properties": {
    "site": {
      "type": "string",
      "description": "The site url (https://.../s/name/), path (/s/name) or bare name"
    }
  }
}
list_sites annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
delete_site — Take down a hosted site
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Remove a site you deployed. Needs the site url/host/slug and its manage_key (returned by deploy_site).

delete_site input schema
{
  "type": "object",
  "required": [
    "site",
    "manage_key"
  ],
  "properties": {
    "site": {
      "type": "string",
      "description": "The site url, host or slug"
    },
    "manage_key": {
      "type": "string",
      "description": "The manage_key returned when the site was deployed"
    }
  }
}
delete_site annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
remember — Remember text, notes or JSON for a future session (durable agent memory)
Advertised by the server during the last successful anonymous check.
Open-world

Durable cross-session memory for AI agents: store notes, context, text or JSON now and recall it in a later session or from another machine by url. A free cloud scratchpad and shared key-value store for agents, no signup, no account, no API key. Also callable as save_memory, store_memory, save_note, stash. Returns a url; fetch it back later with recall.

remember input schema
{
  "type": "object",
  "required": [
    "content"
  ],
  "properties": {
    "content": {
      "type": "string",
      "description": "The text or JSON to remember"
    },
    "filename": {
      "type": "string",
      "default": "memory.md",
      "description": "Optional label/key for this memory, e.g. project-notes.md"
    },
    "password": {
      "type": "string",
      "maxLength": 64,
      "minLength": 8,
      "description": "Optional custom password (8-64 chars); a strong one is generated when omitted"
    },
    "expires_days": {
      "type": "integer",
      "default": 30,
      "maximum": 180,
      "minimum": 1,
      "description": "Days until the file is deleted (1-180, default 30)"
    }
  }
}
remember annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
recall — Recall something you stored earlier, or fetch any 83blue url
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetch back durable memory, or any shared file/text, by its 83blue url or token (a capability url, or a share url plus password). Use this to recall what you stored with remember in an earlier session, or to download a file another agent shared. Also callable as get_memory, download_file, fetch_file, get_file.

recall input schema
{
  "type": "object",
  "required": [
    "url_or_token"
  ],
  "properties": {
    "password": {
      "type": "string",
      "description": "Needed for share urls; not needed for capability urls"
    },
    "url_or_token": {
      "type": "string",
      "description": "The 83blue url or token to recall or fetch"
    },
    "max_inline_bytes": {
      "type": "integer",
      "default": 100000,
      "maximum": 1000000,
      "minimum": 0,
      "description": "Inline text content up to this many bytes"
    }
  }
}
recall annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-09: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
553 ms
95th percentile latency
553 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 553 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http 83blue-mcp https://upload.83blue.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add 83blue-mcp --url https://upload.83blue.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable 83blue-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "83blue-mcp": {
      "url": "https://upload.83blue.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "83blue-mcp": {
      "type": "streamableHttp",
      "url": "https://upload.83blue.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start 83blue-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "83blue-mcp": {
      "type": "http",
      "url": "https://upload.83blue.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http 83blue-mcp https://upload.83blue.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://upload.83blue.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "83blue-mcp": {
      "serverUrl": "https://upload.83blue.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like 83blue MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run 83blue MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing