Just Publish
What this MCP does
Publishes an AI-built website to a live public URL without requiring manual setup.
Tools
Input schema
{'type': 'object', 'required': ['files', 'email'], 'properties': {'email': {'type': 'string', 'description': 'Email address for the site. A link is sent to it to confirm the address; it is also used for recovery and service messages.'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': "Path under the site root, e.g. 'index.html', 'assets/logo.png'."}, 'content': {'type': 'string', 'description': 'File body. Text by default; binary must be base64.'}, 'encoding': {'enum': ['base64', 'utf-8'], 'type': 'string', 'description': 'Defaults to utf-8 for text extensions, base64 otherwise.'}}}, 'minItems': 1, 'description': 'Files to publish. Must include an index.html at the root.'}, 'site_id': {'type': 'string', 'description': 'Existing site id to update. Omit to create a new site.'}, 'edit_token': {'type': 'string', 'description': 'Edit token returned at create time. Required to update.'}}}
Output schema
{'type': 'object', 'required': ['url', 'site_id', 'created', 'email_verified', 'files_uploaded', 'total_bytes', 'email_masked', 'verify_required', 'dashboard_url'], 'properties': {'url': {'type': 'string', 'description': 'The live URL of the published site.'}, 'created': {'type': 'boolean', 'description': 'true if this call created a new site; false if it updated an existing one.'}, 'site_id': {'type': 'string', 'description': "The site's slug / id - pass back to update it later."}, 'edit_token': {'type': 'string', 'description': "Returned ONLY on first create. Save it - it's the only way to update this site."}, 'total_bytes': {'type': 'integer', 'description': 'Total size of the site in bytes after this deploy.'}, 'email_masked': {'type': 'string', 'description': "The owner email, masked for display (e.g. 'a***@example.com')."}, 'dashboard_url': {'type': 'string', 'description': "Deep link to this site in the owner's dashboard."}, 'email_verified': {'type': 'boolean', 'description': "Whether the site's owner email is verified right now. False on a new site unless this address has been verified before."}, 'files_uploaded': {'type': 'integer', 'description': 'Number of files written in this deploy.'}, 'verify_required': {'type': 'boolean', 'description': 'true when the owner still needs to verify their email (keys on !email_verified).'}}}
Input schema
{'type': 'object', 'required': ['site_id', 'edit_token'], 'properties': {'paths': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional. Specific file paths to return contents for (e.g. ['index.html','style.css']). Omit to get all text files. The manifest always lists every file regardless."}, 'site_id': {'type': 'string', 'description': 'The site id returned at publish time.'}, 'edit_token': {'type': 'string', 'description': 'The edit token returned at publish time.'}}}
Output schema
{'type': 'object', 'required': ['site_id', 'version', 'url', 'manifest', 'files', 'truncated'], 'properties': {'url': {'type': 'string', 'description': 'The live URL of the site.'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content', 'encoding'], 'properties': {'path': {'type': 'string', 'description': 'Path of this file under the site root.'}, 'content': {'type': 'string', 'description': 'Full text content of the file.'}, 'encoding': {'enum': ['utf-8'], 'type': 'string', 'description': "Always 'utf-8' - only text files are inlined."}}}, 'description': 'Inlined contents of the requested text files (default: all text files, capped for size).'}, 'site_id': {'type': 'string', 'description': "The site's slug / id."}, 'version': {'type': 'integer', 'description': "The site's current version - pass as expected_version to update_site_file to avoid clobbering."}, 'manifest': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'size_bytes', 'content_type', 'sha256', 'is_text'], 'properties': {'path': {'type': 'string', 'description': "Path under the site root, e.g. 'index.html'."}, 'sha256': {'type': ['string', 'null'], 'description': 'Hex sha256 of the file bytes; null if not recorded for this file.'}, 'is_text': {'type': 'boolean', 'description': 'Whether the file is a text type eligible to have its content inlined.'}, 'size_bytes': {'type': 'integer', 'description': 'File size in bytes.'}, 'content_type': {'type': 'string', 'description': "Stored content-type, e.g. 'text/html'."}}}, 'description': 'Every file on the site (always complete, regardless of which contents were inlined).'}, 'truncated': {'type': 'boolean', 'description': 'true if some requested file contents were omitted for size - request specific paths to read them.'}}}
Input schema
{'type': 'object', 'required': ['site_id', 'edit_token', 'files'], 'properties': {'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': "Path under the site root, e.g. 'index.html'."}, 'content': {'type': 'string', 'description': 'Full new file body. Text by default; binary must be base64.'}, 'encoding': {'enum': ['base64', 'utf-8'], 'type': 'string', 'description': 'Defaults to utf-8 for text, base64 otherwise.'}}}, 'minItems': 1, 'description': 'The files to change. Only these are written; all other files on the site survive.'}, 'site_id': {'type': 'string', 'description': 'The site id returned at publish time.'}, 'edit_token': {'type': 'string', 'description': 'The edit token returned at publish time.'}, 'expected_version': {'type': 'integer', 'description': 'Optional but recommended. The `version` you got from get_site_files. If the site has changed since, the update is rejected with a conflict so you can re-read and re-apply. Omit to force last-writer-wins.'}}}
Output schema
{'type': 'object', 'required': ['site_id', 'url', 'version', 'files_written', 'files_total'], 'properties': {'url': {'type': 'string', 'description': 'The live URL of the site.'}, 'site_id': {'type': 'string', 'description': "The site's slug / id."}, 'version': {'type': 'integer', 'description': "The site's new version after the merge."}, 'files_total': {'type': 'integer', 'description': 'Total number of files on the site after the merge.'}, 'files_written': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Paths of the files written in this update. All other files were left untouched.'}}}
Recent tool changes
Similar MCP servers
shiply
Publishes and manages web applications with SQL databases, serverless functions, domains, email tests, client intake, contracts, …
Fine Structure
Builds and hosts full-stack applications from prompts and supports agent communication through WhatsApp and email.
mcp
Provisions and manages cloud instances, networks, storage, databases, backups, VPNs, application deployments, and autocoding-agen…
EchoRelay
Manages a hosted API relay runtime, including projects, endpoints, credentials, publishing, keys, delivery logs, and dead-letter …
Supero
Builds, validates, publishes, tests, and deploys multi-tenant applications with schemas, CRUD operations, external data connector…
Replicate
Provides access to Replicate models, versions, collections, hardware, predictions, and deployments for running and managing hoste…
Relin
Configures webhook sources and destinations, monitors delivery health, investigates failures, manages retries, and replays events.
Scalix Cloud
Provides managed databases, SQL tools, container builds, persistent Linux machines, domains, scheduled functions, storage, and pr…