Skip to main content
Glama

Server Details

Deploy sites and apps from your AI coding agent: domains, DNS, logs, env, versions and rollback.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

B3.4/5.0

Scored across 43 tools

Disambiguation3/5

Most tools target distinct resources, but several boundaries blur: create_project with serviceId duplicates deploy, create_project and create_wordpress both order sites, and the numerous *_status tools require careful resource matching. Descriptions usually clarify the intended use, so misselection is possible but often recoverable.

Naming Consistency3/5

Names are consistently snake_case with useful prefixes such as wp_, tls_, list_, and request_, but the convention is mixed: many are verb_noun, others are noun_status or bare verbs like deploy, restart, resize, rollback, and logs. It remains readable, but the pattern is not predictable enough for a top score.

Tool Count2/5

With 43 tools, the surface is heavy for a single MCP server even though the hosting domain is broad. Many tools are justified individually, but the total set is over-scoped and raises selection burden.

Completeness4/5

Coverage is extensive across services, deploys, domains, DNS, TLS, mail, backups, environment variables, approvals, and WordPress lifecycle operations. Minor gaps remain, such as domain deletion/transfer and direct service deletion only through approvals, but core workflows have no major dead ends.

Publisher details

Operator
Handsome Hosting · Publisher source
Vendor relationship
First-party
Trust center
Not available
Restrictions
Requires a Handsome Hosting account with a confirmed email address. Servers and domains are paid services; any action that costs money or cannot be undone waits for an approval link mailed to the account owner.

Available Tools

43 tools
action_statusApproval statusA
Read-only
Inspect

The state of an approval by actionId: pending, approved, done, declined, expired or failed, with the decision time, the error if any and a note on what to do next. Or a client link by inviteId (from a new project ordered with payer client): sent, claimed, paid, live, cancelled or expired, with the service once it exists, the person's monthly share and a note on what to do next.

Inputs: actionId, inviteId. Returns: ok, data, error

attach_domainAttach a domainA
Destructive
Inspect

Point a domain bought here at a running, deployed service: the DNS zone is created or moved to the service address, the platform attaches the name and issues the certificate within about half an hour. Runs on the call, no approval: it costs nothing, and the same call moves the name to another service (the old one stops serving it). A name still registering is not-ready; a service with no deploy yet is not-deployed; a connected domain (one owned at another registrar) moves from the dashboard instead. The names are the account's heldDomains (unattached) and the domains of its services.

Inputs: name (required), serviceId (required), wpSwitch. Returns: ok, data, error

backup_nowBack up nowA
Destructive
Inspect

Take a backup point of a live WordPress site now, once a day (the website button included). Answers state done with the stamp, or running for a big site (it joins the backup points when it lands). Refusals: too-soon, busy, not-live, migration-open, deploy-open, failed.

Inputs: serviceId (required). Returns: ok, data, error

buy_domainBuy a domainA
Destructive
Inspect

Mint an approval for the person to buy an available domain for a year, optionally attached to a running service. Mails the link and returns actionId and approveUrl; the click opens the website buy page prefilled with the name and the service, where the person enters the registrant details and pays. Nothing is registered or charged here; the approval reads done once paid.

Inputs: name (required), serviceId. Returns: ok, data, error

connect_domainConnect a domainB
Destructive
Inspect

Connect a domain the person already owns at another registrar to a running service. method a-record (default) returns the two A records to set; method nameservers creates a zone here and returns our nameservers. Returns the steps and per-registrar guides for the person; the platform verifies every few minutes.

Inputs: name (required), serviceId (required), method, wpSwitch. Returns: ok, data, error

create_projectCreate a projectA
Destructive
Inspect

Create and deploy a project. With serviceId: deploy into that existing service (the same as a deploy). Without serviceId: store the archive (the uploadId of an upload made without a serviceId, or archive as base64 under 1 MiB), analyse it, quote the cheapest server that fits, create the order and return actionId and approveUrl (also mailed to the person; one hour): the person opens it, sees the whole order (server, cost, card) and pays with one click; nothing is charged without that click. domain takes a name found available: the page offers it outside the total and the person adds it with one click (domainNote in the answer says when it could not be offered, or was offered before the registry answered). Once paid, the project deploys on the new server by itself. A partner account can instead have the client pay: payer client with clientEmail and secrets with a value for each secret the project declares; nothing is minted for the partner, the client gets a signup and payment link by mail and pays the regular price in their own account, and the answer carries inviteId. This fits only when the pre-flight needs list has a payer entry. An active partner with servers for client sites (services of kind host) can put the new site on one: hostId with the host's id puts it there for the site fee alone (the answer's mode is on-host and names the server's fit), hostId new buys a server of its own; left out, the site goes where the website's order form would put it. A full server refuses.

Inputs: name (required), payer, domain, hostId, +7 more. Returns: ok, data, error

create_wordpressOrder a WordPress siteA
Destructive
Inspect

Order a WordPress site: a fresh install (mode new) or a server ready to receive an existing WordPress site (mode move). No upload and no pre-flight: the platform installs WordPress itself. Returns actionId and approveUrl (also mailed to the person; one hour): they see the order and pay with one click; nothing is charged without it. domain works as for a new project. Once paid, a new site installs and goes live by itself; a move server waits for the person to move the old site with the migration details. A partner account can instead have the client pay for a new site: payer client with clientEmail; the client gets a signup and payment link by mail and pays the regular price in their own account, and the answer carries inviteId. An active partner with servers for client sites (services of kind host) can put the new site on one: hostId with the host's id puts it there for the site fee alone (the answer's mode is on-host and names the server's fit), hostId new buys a server of its own; left out, the site goes where the website's order form would put it. A full server refuses.

Inputs: mode (required), name (required), payer, domain, +3 more. Returns: ok, data, error

deployDeployA
Destructive
Inspect

Start a deploy into an existing running service: from an uploaded archive (uploadId, after its PUT), or archive as the base64 of a gzip tar for a tiny project under 1 MiB. Returns the deploy id; the deploy runs on its own. The service must already exist; a project with no server yet is ordered, not deployed.

Inputs: serviceId (required), archive, uploadId, preflight. Returns: ok, data, error

deploy_statusDeploy statusB
Read-only
Inspect

The current deploy phase of a service with the live url, the plain-language reason if it failed and the launch checklist.

Inputs: serviceId (required). Returns: ok, data, error

dns_editEdit a DNS recordA
Destructive
Inspect

One record change in a zone we serve, inside the website editor rails. op add needs record.type (A, AAAA, CNAME, MX, TXT, SRV, CAA), name (the subdomain, empty for the apex), target and optional ttl (default 300), priority (MX, SRV), weight, port, service, protocol (SRV), tag (CAA). op replace needs record.id plus the full record; op delete needs record.id. Managed records are refused; invalid-record carries the field and the reason.

Inputs: op (required), record (required), domainId (required). Returns: ok, data, error

domain_statusDomain statusB
Read-only
Inspect

The stage of a domain (connecting, registered, attached, live, paid and so on), the website wording, which names resolve yet, when it was last checked, the next step in plain words and whether its DNS can be edited here.

Inputs: domainId (required). Returns: ok, data, error

form_mailForm mail endpointA
Read-only
Inspect

The form relay endpoint of an existing service, for a contact form on the site: the URL to POST to and the rules the form must follow (submit with fetch, the email and _gotcha fields, the success check, the limits). A new project's forms post to the same full address with the literal HH_FORM_TOKEN as the token; the site's own server does not answer a relative /f/ path.

Inputs: serviceId (required). Returns: ok, data, error

list_backupsList backupsA
Read-only
Inspect

The backup points on the server of a live WordPress site, newest first: stamp, time, kind (scheduled nightly, manual, pre-restore, pre-import) and the size of the database and files halves; a restore takes the stamp. older counts the points kept off the server, which the person brings back on the website first (olderNote). running names a backup or restore under way; nextManualAt is when a manual backup opens again.

Inputs: serviceId (required). Returns: ok, data, error

list_dnsList DNS recordsB
Read-only
Inspect

The DNS records of a domain whose zone we serve (a purchased domain, or one connected by nameservers): id, type, host, target, ttl and the extra fields, with managed: true on the records the platform protects (NS, SOA, and the apex and www A while a service is attached). not-ours for a domain pointed at us by A records at another registrar.

Inputs: domainId (required). Returns: ok, data, error

list_envList environment variablesA
Read-only
Inspect

Names of the environment variables the project declares or has stored, with a flag for stored ones. Values are never returned.

Inputs: serviceId (required). Returns: ok, data, error

list_plansList plansA
Read-only
Inspect

The plans this running server can move to, as the website plan page lists them: larger ones always, smaller ones only when the current disk fits. Each line carries planId, label, size tier, disk, direction (up or down), chargeNowIls (the difference for the upcoming month or year, 0 for a move down) and recurringIls (the price after, per month or per year by the service cadence, see period), in ILS including VAT.

Inputs: serviceId (required). Returns: ok, data, error

list_servicesList servicesA
Read-only
Inspect

Every service on this account: id, name, kind, status, address, live url, plan, region, renewal date, the latest deploy and its domains; plus heldDomains, the names bought here that point at no service yet. wordpress is null for a code service, else its mode (new or move), whether the site is live and an open move. The starting point of a session: its ids are the serviceId and domainId values every other call takes.

Inputs: no named parameters. Returns: ok, data, error

list_versionsList versionsB
Read-only
Inspect

Kept versions of a service, newest first, with their numbers and which one is live.

Inputs: serviceId (required). Returns: ok, data, error

logsRead logsA
Read-only
Inspect

The last lines of a log of a running service, scrubbed of visitor addresses. source defaults to the main log for the service kind; lines up to 500.

Inputs: serviceId (required), lines, filter, source. Returns: ok, data, error

mail_statusMail statusA
Read-only
Inspect

Mail through the platform gate for an app that sends its own mail: tier (0 = the owner only, 1 = any recipient), hourly and daily limits, whether sending is suspended, and how much went out in the last hour and day. A static site answers no-mailer: its forms use the form relay. A server with hosted mailboxes also lists them (address, and whether a password is set); passwords are set by the person on the mail page of the service and by no tool.

Inputs: serviceId (required). Returns: ok, data, error

preflightPre-flight checksB
Read-only
Inspect

The pre-flight protocol for a project, before its first upload: the checks to run on the person's machine (build, render, console, bundle, accessibility), the report a new project or a deploy must carry, and the needs list (mail, domain, certificates, visitors, accessibility) with what the platform offers for each.

Inputs: signature. Returns: ok, data, error

redeployRedeployB
Destructive
Inspect

Run the latest archive through the deploy again (same files, fresh build).

Inputs: serviceId (required). Returns: ok, data, error

request_actionRequest an approvalA
Destructive
Inspect

Mint an approval for a money or irreversible step. kind: cancel (renewal off, the service runs to the end of the paid period), cancel-now (off the air now), delete (remove a finished or failed project), restore (a backup point over the live WordPress site: backupStamp is its stamp; scope db, files or both, default both), root-reset (a bare server) or wp-reset (a moved WordPress site, or one whose move failed, back to a fresh WordPress; the site is copied first when one was live). Nothing changes until the person clicks the approval link, which is also mailed to them and expires after one hour. Returns actionId and approveUrl.

Inputs: kind (required), serviceId (required), scope, backupStamp. Returns: ok, data, error

request_mail_tierChange mail reachA
Destructive
Inspect

Change who an app's mail may reach. tier 1 lets it mail anyone it collects addresses from (50 an hour, 200 a day): this returns an approval link mailed to the person. tier 0 goes back to the owner only and runs now. Refusals: no-mailer, suspended, already-there, already-pending.

Inputs: tier (required), serviceId (required). Returns: ok, data, error

request_uploadRequest an upload URLA
Destructive
Inspect

A one-time PUT url for an archive: the first step of a deploy, a new project, or a WordPress plugin or theme upload. The archive is a gzip tar of the folder (tar -czf project.tgz -C .) sent with content-type application/gzip; the answer carries the exact curl command and the uploadId. With serviceId the upload belongs to that service; without it, to a new project. The url takes one file up to 25 MiB and expires after 15 minutes.

Inputs: serviceId. Returns: ok, data, error

resizeResize a serverA
Destructive
Inspect

Move a running server to another plan by planId. A smaller plan is applied on this call (no charge, no refund; the machine reboots, usually within minutes). A larger plan needs the person: this mints an upsize approval, mails the link and returns actionId and approveUrl; the click charges the difference on their saved card (or opens the payment page) and the resize starts.

Inputs: planId (required), serviceId (required). Returns: ok, data, error

restartRestart a serviceA
Destructive
Inspect

Restart the service process: the site unit on a shared host, the whole box on a managed server. Refused while a deploy is in progress.

Inputs: serviceId (required). Returns: ok, data, error

rollbackRoll back to a versionA
Destructive
Inspect

Put an earlier version live again: the previous one by default, or a specific version number. Starts a deploy, which runs on its own.

Inputs: serviceId (required), version. Returns: ok, data, error

search_domainSearch a domainA
Read-only
Inspect

Availability and yearly price in ILS (VAT included) for a domain: a bare label checks .co.il and .com, a full name checks that one. availability is available, taken, premium, invalid or unknown (the registry did not answer within 25 seconds; a later search may answer). Costs write points: the registry is slow.

Inputs: query (required). Returns: ok, data, error

set_envSet environment variablesA
Destructive
Inspect

Store one or more environment values by name and reload the service. A name is accepted when the deployed handsome.json declares it (secrets: [{ name, label }]) or a value is already stored. Values are never echoed back.

Inputs: values (required), serviceId (required). Returns: ok, data, error

set_form_recipientsSet form recipientsA
Destructive
Inspect

Set where a site's form messages go: 1 to 5 email addresses, all in one message, or reset: true for the account address. Not for WordPress, which sends its own form mail.

Inputs: serviceId (required), to, reset. Returns: ok, data, error

site_document_templateSite document templateA
Read-only
Inspect

The Hebrew privacy policy or accessibility statement a business site needs under Israeli law, as a template: every section in and every answer a {{name}} blank, the fields, each with its question for the person and what we already know (pass serviceId for a site that exists), and the rules for building the page into the site.

Inputs: doc (required), serviceId. Returns: ok, data, error

tls_reissueReissue a certificateA
Destructive
Inspect

Renew the certificate of one served name now (no money, runs on the call): only on a running server with no deploy in progress, at most once every 34 hours per name (the certificate issuer allows five a week, and a reissue deletes the old one first), never for a custom certificate the person uploaded. Refusals: not-served, custom, deploy-open, too-soon, reissue-failed.

Inputs: name (required), serviceId (required). Returns: ok, data, error

tls_statusCertificate statusA
Read-only
Inspect

Certificates of a service: every name it serves (the app address and each connected domain) with mode (auto or custom), valid-to, days left, the last reissue and until when a reissue is blocked. Certificates renew on their own.

Inputs: serviceId (required). Returns: ok, data, error

wp_app_passwordWordPress application passwordA
Destructive
Inspect

Create a WordPress application password for the site's administrator, for the site's own REST API (posts, pages, media): the answer carries the user, the password (shown once, never stored by the platform) and the REST address; a second create replaces this connection's earlier password. Revoke removes the passwords this connection created and no others; revoking the key on the account page removes them too. Refusals: not-live, migration-open, deploy-open, busy, failed.

Inputs: action (required), serviceId (required). Returns: ok, data, error

wp_cache_purgePurge the WordPress cacheA
Destructive
Inspect

Empty the page cache and the object cache of a live WordPress site, so the next visit shows the current content. Refusals: not-live, migration-open, deploy-open, busy, failed.

Inputs: serviceId (required). Returns: ok, data, error

wp_core_updateUpdate WordPress coreA
Destructive
Inspect

Update WordPress itself to the latest version and upgrade the database; can take a few minutes. The answer names the newest backup point (latestBackup), which a restore approval can put back. Refusals: not-live, migration-open, deploy-open, busy, failed.

Inputs: serviceId (required). Returns: ok, data, error

wp_loginWordPress admin login linkA
Destructive
Inspect

A one-time link that signs the person into wp-admin of a live WordPress site as its administrator, for the person's own browser; it works once and expires in 4 minutes. Refusals: not-wordpress, not-live.

Inputs: serviceId (required). Returns: ok, data, error

wp_migrationWordPress move detailsA
Read-only
Inspect

For a WordPress site ordered as a move: the plugin address, the migration key (until the old site first uses it, then masked), the steps the person takes on the old site, the state of an open move and movedAt once a move landed.

Inputs: serviceId (required). Returns: ok, data, error

wp_pluginManage a WordPress pluginA
Destructive
Inspect

Install (from the WordPress.org directory; activate true switches it on too), activate, deactivate or update one plugin of a live WordPress site by its slug (the folder name: lowercase letters, digits and hyphens). Runs on the call. Deleting a plugin is not offered here: the person does it in wp-admin. The platform helper hh-migrate is not touched. Refusals: invalid-argument, not-a-target, not-live, migration-open, deploy-open, busy, failed (with WP-CLI's line).

Inputs: slug (required), action (required), serviceId (required), activate. Returns: ok, data, error

wp_statusWordPress statusA
Read-only
Inspect

A live WordPress site as WP-CLI reads it: the core version and the update on offer, every plugin and theme with its status, version and update on offer, the active theme, and the site and admin addresses. Refusals: not-wordpress, not-live, not-running.

Inputs: serviceId (required). Returns: ok, data, error

wp_themeManage a WordPress themeA
Destructive
Inspect

Install (from the WordPress.org directory), activate or update one theme of a live WordPress site by its slug (the folder name). Runs on the call; switching away from a theme leaves it installed. Refusals: invalid-argument, not-live, migration-open, deploy-open, busy, failed.

Inputs: slug (required), action (required), serviceId (required). Returns: ok, data, error

wp_upload_extensionUpload a WordPress plugin or themeA
Destructive
Inspect

Install the builder's own plugin or theme on a live WordPress site from an uploaded archive (the uploadId of an upload made with this serviceId, after its PUT). The archive is built from inside the plugin or theme folder (tar -czf extension.tgz -C .). A plugin needs a PHP file at the root with a Plugin Name: header, a theme a style.css with Theme Name:. A folder of the same slug is replaced. Refusals: invalid-argument, not-a-target, invalid-archive, too-large, not-live, migration-open, deploy-open, busy, failed.

Inputs: slug (required), type (required), uploadId (required), serviceId (required), +1 more. Returns: ok, data, error

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI clients and users to deploy static sites, Node.js services, and Python web applications without Docker, with tools for project management, deployment, rollback, and domain configuration.
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to build and deploy an app from a GitHub repository to a managed live server and then operate it — logs, captured errors, health checks, managed Postgres, secrets, custom domains, email authentication, and Stripe checkout links. It also exposes safe, read/write-labelled tools so agents can rebuild, start/stop, and inspect projects without ever editing source code.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI coding agents to check repository deploy readiness, deploy apps to your own cloud (AWS, Google Cloud, Azure, DigitalOcean), and migrate apps from platforms like Heroku, Railway, Render, or Vercel with rollback.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to deploy code to any hosting provider by creating PRs, building, and verifying health checks, all from a single natural language command.
      61 npm
      1
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources