Publish AI-made web pages and share files as short links from any MCP client.
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.
For files too large to send inline: reserves a link and returns a one-time upload_url. PUT the raw bytes there (e.g. give the user the returned curl command), then poll get_link with the slug (and manage_token) until status is "live".
Name of the file that will be uploaded, including extension.
Custom link name (3-40 letters, digits, dashes); available on plans with custom names.
Visitors must enter this password to open the link; available on plans with password protection.
Expected size, checked against your plan limit up front.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
For files too large to send inline: reserves a link and returns a one-time upload_url. PUT the raw bytes there (e.g. give the user the returned curl command), then poll get_link with the slug (and manage_token) until status is "live".
| Argument | Type | Description |
|---|---|---|
| slug | string | Custom link name (3-40 letters, digits, dashes); available on plans with custom names. |
| filename* | string | Name of the file that will be uploaded, including extension. |
| password | string | Visitors must enter this password to open the link; available on plans with password protection. |
| size_bytes | integer | Expected size, checked against your plan limit up front. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"filename"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]+$",
"maxLength": 40,
"minLength": 3,
"description": "Custom link name (3-40 letters, digits, dashes); available on plans with custom names."
},
"filename": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Name of the file that will be uploaded, including extension."
},
"password": {
"type": "string",
"maxLength": 200,
"minLength": 4,
"description": "Visitors must enter this password to open the link; available on plans with password protection."
},
"size_bytes": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Expected size, checked against your plan limit up front.",
"exclusiveMinimum": 0
}
}
}Permanently delete a link and its files. Account owners can delete their links; anonymous callers need the manage_token. This cannot be undone.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works). |
| manage_token | string | Secret manage token returned when the link was created (lets anonymous callers manage it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The link name, e.g. \"k3x9pq\" (a full https://putit.online/<name> URL also works)."
},
"manage_token": {
"type": "string",
"maxLength": 200,
"minLength": 10,
"description": "Secret manage token returned when the link was created (lets anonymous callers manage it)."
}
}
}Restart an expiring link's expiry clock (also brings back a recently expired link). Permanent links are unaffected. Requires a connected account whose plan includes extending.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The link name, e.g. \"k3x9pq\" (a full https://putit.online/<name> URL also works)."
}
}
}The connected account's plan, permanent-link slots used/available, size limit and features.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Status of a link: live, checking, publishing, unpublished, in_review, removed (by moderation: removed_reason + appeal_url), expired or awaiting_upload; plus expiry, size and views (null when the account’s plan has no view counts). Anonymous callers pass the manage_token they got on creation.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works). |
| manage_token | string | Secret manage token returned when the link was created (lets anonymous callers manage it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The link name, e.g. \"k3x9pq\" (a full https://putit.online/<name> URL also works)."
},
"manage_token": {
"type": "string",
"maxLength": 200,
"minLength": 10,
"description": "Secret manage token returned when the link was created (lets anonymous callers manage it)."
}
}
}List the links in the connected Put It Online account (newest first, permanent first). Requires a connected account.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0
}
}
}Turn an expiring link into a permanent one (uses one of the plan's permanent slots; see get_account). Requires a connected account whose plan includes permanent links.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The link name, e.g. \"k3x9pq\" (a full https://putit.online/<name> URL also works)."
}
}
}Put a web page or small static site you created online instantly. Pass {"files": {"index.html": "<!doctype html>…", "style.css": "…", "app.js": "…"}} (paths relative to the site root; index.html required). Images can go in base64_files. Returns the public URL. Pages are served sandboxed on their own link.
| Argument | Type | Description |
|---|---|---|
| slug | string | Custom link name (3-40 letters, digits, dashes); available on plans with custom names. |
| files* | object | Map of path -> text content, e.g. {"index.html": "<!doctype html>…", "style.css": "body{…}"}. Must include index.html. |
| title | string | Name for the site (shown in the dashboard). |
| password | string | Visitors must enter this password to open the link; available on plans with password protection. |
| base64_files | object | Optional map of path -> base64 content for binary assets such as images. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"files"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]+$",
"maxLength": 40,
"minLength": 3,
"description": "Custom link name (3-40 letters, digits, dashes); available on plans with custom names."
},
"files": {
"type": "object",
"description": "Map of path -> text content, e.g. {\"index.html\": \"<!doctype html>…\", \"style.css\": \"body{…}\"}. Must include index.html.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"title": {
"type": "string",
"maxLength": 80,
"description": "Name for the site (shown in the dashboard)."
},
"password": {
"type": "string",
"maxLength": 200,
"minLength": 4,
"description": "Visitors must enter this password to open the link; available on plans with password protection."
},
"base64_files": {
"type": "object",
"description": "Optional map of path -> base64 content for binary assets such as images.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
}
}Protect a link with a password (visitors must enter it), or pass null to remove it. Requires a connected account whose plan includes passwords; otherwise returns a subscription_required error.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works). |
| password* | any | New password, or null to remove protection. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug",
"password"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The link name, e.g. \"k3x9pq\" (a full https://putit.online/<name> URL also works)."
},
"password": {
"anyOf": [
{
"type": "string",
"maxLength": 200,
"minLength": 4,
"description": "Visitors must enter this password to open the link; available on plans with password protection."
},
{
"type": "null"
}
],
"description": "New password, or null to remove protection."
}
}
}Put a file online and get a short public link. Pass text directly, or base64 with encoding="base64" for binary files (images, PDFs, zips). An .html file becomes a web page; a .zip containing index.html becomes a website. Returns the URL, expires_at and a manage_token (shown once; anonymous callers need it to check or delete the link). Status may be "checking"/"publishing" (call get_link before sharing) or "unpublished" (not published). Limit 20 MB inline; use create_upload_session for bigger files.
| Argument | Type | Description |
|---|---|---|
| slug | string | Custom link name (3-40 letters, digits, dashes); available on plans with custom names. |
| content* | string | File content: plain text, or base64 when encoding is "base64" (use base64 for any binary file). |
| encoding | string | How `content` is encoded. |
| filename* | string | File name including extension, e.g. "report.pdf" or "index.html". The extension decides how the link renders. |
| password | string | Visitors must enter this password to open the link; available on plans with password protection. |
| mime_type | string | Optional MIME type; used to add a missing file extension. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"filename",
"content"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]+$",
"maxLength": 40,
"minLength": 3,
"description": "Custom link name (3-40 letters, digits, dashes); available on plans with custom names."
},
"content": {
"type": "string",
"description": "File content: plain text, or base64 when encoding is \"base64\" (use base64 for any binary file)."
},
"encoding": {
"enum": [
"text",
"base64"
],
"type": "string",
"default": "text",
"description": "How `content` is encoded."
},
"filename": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "File name including extension, e.g. \"report.pdf\" or \"index.html\". The extension decides how the link renders."
},
"password": {
"type": "string",
"maxLength": 200,
"minLength": 4,
"description": "Visitors must enter this password to open the link; available on plans with password protection."
},
"mime_type": {
"type": "string",
"maxLength": 100,
"description": "Optional MIME type; used to add a missing file extension."
}
}
}