Shiply MCP server
Which servers in the official MCP registry are Shiply's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.
read 2026-10-15
- Registry namenow.shiply/shiplyverified in the MCP registry
The registry name sits under shiply.now. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.
- Stateanswerschecked 2026-10-15
- Tools114
- Server calls itselfmcp-typescript server on vercel
- Server version0.1.0
- Protocol version2025-06-18
On 2026-10-15 the server answered initialize and tools/list without a sign-in. First answer in 1000 ms.
publish_sitePublish files to the web → live URL at <slug>.shiply.now. UPDATING: never create a new site for changes — re-call with claimToken (anonymous sites) or slug (sites you own with a Bearer key) and the SAME URL gets the new version. Unchanged…
site_statusCheck any shiply slug or custom hostname: TLS certificate (issuer, days left) + HTTPS probe. ready=true means live.
verify_siteEdge-check a shiply slug or custom hostname and return a structured readiness report: status (LIVE/PENDING), SSL details (valid, issuer, daysLeft), HTTP probe, and a presigned thumbnail URL when available. Use this after publishing to…
list_sitesList the sites owned by this API key. Optional clientId filters to one client.
get_siteSite settings + version history for one of my sites.
delete_sitePERMANENTLY delete a site and all stored files. Irreversible — confirm with the user first.
rollback_siteRe-point a site to any finalized version (rollback or roll-forward). Get version ids from get_site. Serving updates immediately.
list_versionsList a site's finalized deploys newest-first (id, createdAt, isLive, fileCount, bytes), capped at 20. Pair with rollback_site: pick a version id from here and re-point the site to it.
pull_siteDownload the current files of a site you own (or created via a platform connection) so you can edit and republish to the same slug with publish_site. Static sites return editable source; framework/SSR sites return the built bundle…
set_handleGive ONE site a vanity URL: rename it to <handle>.shiply.now (3-30 chars, a-z 0-9 -). The old address 301-redirects for 30 days. (For a portfolio page listing all your sites, use set_profile instead — that lives at shiply.now/@<handle>.)
duplicate_siteServer-side copy of an owned site under a new slug — instantly live. Copies files + title; does NOT copy access settings, domains, or data. Great for iterating on variants.
promote_siteCopy the EXACT live bytes of one owned site (srcSlug — your preview) into another owned site (destSlug — your production site / custom domain), no rebuild. Dest keeps its slug, domains, and access settings; only the served bytes change.
set_linkPath-mounting: serve an owned target site at a path on an owned host site (host/docs -> target). location is a path like "docs", or "__root__" for the host root. Both sites must be owned by you. Pass remove=true to unmount.
set_site_accessProtect an owned site (paid plans). mode 'public' (anyone), 'password' (supply password), or 'restricted' (supply allowedEmails and/or allowedDomains — only those can request a login code). Changing any setting signs out existing visitors.
get_site_accessRead an owned site's current access policy (mode: public/password/restricted, allowedEmails, allowedDomains, hasPassword). Read-only counterpart to set_site_access — check before changing it.
export_accountReturn a JSON bundle of the user's profile, sites, Site Data, drives, and metadata (secrets excluded). Data portability.
whoamiWho am I? Returns the signed-in account: email, @handle, plan + limits, counts of sites/domains/drives, and connected DNS providers. Call this first to orient before managing sites or domains.
get_account_statusGet the signed-in account's plan, capabilities, and upgrade URL. Call this FIRST when figuring out what features you have access to — it tells you exactly what's available and what's blocked. The upgrade_url is human-clickable; show it in…
list_drivesList the user's private cloud Drives (id, name). Optional clientId filters to one client.
create_driveCreate a private cloud Drive (plan-limited). Pass client to file it under a client.
drive_list_filesList files in a Drive (driveId = drv_…, or "default"). Optional prefix filter.
drive_put_fileWrite a file into a Drive (driveId = drv_… or "default"). content is utf8 or base64. Use for agent memory, notes, context, assets.
drive_delete_fileDelete a file from a Drive.
publish_from_driveSnapshot a Drive (or a prefix of it) into a new live site at <slug>.shiply.now. Files copied server-side.
set_profileCreate or update the user's public PORTFOLIO page at shiply.now/@<handle> (handle 3-30 chars a-z0-9-) — a landing page listing the user's sites. This is NOT a site's address: to give one site a vanity URL like <handle>.shiply.now, use…
feature_siteToggle whether an owned, public site appears in the public shiply Explore gallery (https://shiply.now/explore). Only public-access sites are eligible.
set_variableUpsert a key/value in the user's encrypted variable store (UPPER_SNAKE name, ≤8 KiB value). Use for API keys the user's sites/agents need, e.g. SUPABASE_URL. NOTE: saving alone does NOT expose it to any site Worker's env — attach it to a…
list_variablesList the encrypted variables. Values are masked unless reveal=true.
delete_variableRemove one variable by name.
attach_variableExpose one saved variable to ONE owned site's Worker env (plain_text binding). Opt-in per site — unattached variables are never injected, because the Worker runs the site's own code. Takes effect on the site's next function deploy.
detach_variableStop exposing a variable to a site's Worker env. Takes effect on the site's next function deploy.
list_site_variablesNames of the variables attached to an owned site's Worker env (values never shown here).
list_databasesList the SQL databases (D1 or Neon Postgres) on my account, including which owned site (if any) each is attached to. Call this BEFORE db_query/db_schema-style work to discover a databaseId — those live on a per-database MCP server reached…
create_databaseProvision a SQL database — D1 (default, free) or Neon Postgres (--postgres, developer plan). Optionally attach it to an owned site's Worker env in the same call (siteSlug); otherwise attach it later with attach_database.
delete_databasePERMANENTLY delete a database and all its data. Irreversible — confirm with the user first.
attach_databaseBind an existing database to one owned site's Worker env (the binding name chosen at create_database time). Takes effect on the site's next function/publish deploy.
data_list_collectionsList collections declared in an owned site's .shiply/data.json with current record counts. Empty list means the site has no manifest yet — scaffold one with `shiply data init`.
data_queryPage records from an owned site's collection, newest-first. limit ≤ 200 (default 50). cursor from a previous response's nextCursor.
data_insertInsert one record into a collection. Goes through the same public visitor endpoint a browser would use — manifest access.insert decides whether it is allowed. Use to seed waitlist data, test forms end-to-end, etc.
data_export_collectionReturn up to `limit` records (default 1000, max 5000) from a collection — for snapshotting into agent context. For larger sets use the CLI: `shiply data export <slug> <collection>`.
add_domainServe a site on a domain the user owns. Returns the CNAME to add (hostname → cname.shiply.now); the certificate issues automatically once DNS resolves. Poll with check_domain.
add_custom_domainRegister a registrable domain (e.g. example.com) the user owns and detect its DNS provider. Returns the provider and whether one-click connect is available. Then attach sites with add_subdomain.
add_subdomainServe an owned site at <subdomain>.<domain> (use subdomain "@" or "" for the apex — apex needs a provider with CNAME flattening/ALIAS, e.g. Cloudflare). Auto-registers the parent domain. Returns the CNAME record to add (host ->…
set_primary_subdomainMark a hostname as the primary (canonical) URL for its site. Sibling hostnames (apex + www both pointed at the same site) start 301-redirecting to it, preserving path + query. The host-side fix for the duplicate-content SEO problem. The…
list_custom_domainsList registered custom domains grouped with their subdomains, each subdomain's site and status, and the detected provider.
connect_providerStart one-click DNS connect for a registered custom domain. For Cloudflare-hosted domains this returns an authorize URL — SHOW THE USER the url as a clickable link; after they authorize, records are written automatically. For other…
sync_dnsFor a connected custom domain, (re)write the CNAME records for all its subdomains automatically and report what changed. For unconnected domains, returns the records to add manually.
check_custom_domainCheck whether a custom domain's subdomains are live: re-polls Cloudflare cert status + probes DNS/TLS/HTTPS on each subdomain. Poll this after connect_provider / add_subdomain to confirm the domain is serving. Returns per-subdomain status…
remove_custom_domainRemove a registered custom domain and all its subdomains; they stop serving immediately.
list_domainsList connected custom domains with status.
check_domainRefresh certificate status + live TLS/HTTPS probe for a connected domain (by id from list_domains).
remove_domainRemove a connected domain (by id). It stops serving immediately.
get_analyticsDaily page views per site for the last 30 days.
create_testProvision a demand test in one call: deploys a landing page with a native email-capture form and creates a confirmed-subscriber segment. Returns testId + live siteUrl. Share the siteUrl to collect signups; each signup gets a double-opt-in…
list_testsList your demand tests with signups + confirmed counts.
get_test_statusONE consolidated object: page funnel (views, signups, confirmed, conversion) ⊕ email events (delivered/opened/clicked/bounced) ⊕ a computed verdict. The single place to check progress — never query email separately.
send_broadcastSend a campaign to this test's confirmed (double-opt-in) subscribers — the "we're live" email. An unsubscribe link is added automatically. Fails if there are no confirmed subscribers yet.
resend_confirmationRe-send the double-opt-in confirmation to a signup that has not confirmed yet.
verify_claimConfirm a pairing code shown in the user's browser at https://shiply.now/claim/<slug>?pair=1. Use ONLY in the agent session that originally published the site — it reads the claimToken from .shiply.json in the current working directory…
list_inboxList the user's email inbox threads (outbound demand-test sends + inbound replies / unsubscribes / complaints / bounces). Filter by tag.
The first 60 of 114, as the server listed them.
How to connect
Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:
{
"mcpServers": {
"shiply": {
"type": "http",
"url": "https://shiply.now/mcp"
}
}
}OpenAPI spec
26 paths, read 2026-10-15. Open the spec ↗
Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.