Shiply is a remote MCP server that gives an AI agent 114 tools, among them add_custom_domain, add_domain, add_sending_domain. It answers at https://shiply.now/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 12 September 2026; the last check, on 24 October 2026, succeeded.
Publish any app in one call: SQL database, functions, email, and a custom domain. Flat price.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
add_custom_domain | Register 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. Inputs: domain |
add_domain | Serve 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. Inputs: hostname, slug |
add_sending_domain | Register a domain the user owns for outbound demand-test sends. Returns DNS records (SPF, DKIM, MX) to add at the DNS provider. After DNS propagates, call verify_sending_domain. Cannot be a shiply.now subdomain. Inputs: domain |
add_subdomain | Serve 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 -> cname.shiply Inputs: domain, subdomain, slug |
add_suppression | Add an address (or whole domain) to the user's suppression list. Future confirmations and broadcasts will skip it across every test. Use kind='email' for a single address, kind='domain' for everyone @example.com. Inputs: kind, value, notes |
archive_project | Move a project to status='archived'. Hidden from the default dashboard list. Optional reason is shown on the project page. Restore later with restore_project. Inputs: id, reason |
archive_thread | Soft-archive the thread (sets archivedAt). Hidden from the default inbox view; surface again with list_inbox filter=archived. Reverse with unarchive_thread. Inputs: threadId |
attach_database | Bind 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. Inputs: id, siteSlug |
attach_variable | Expose 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. Inputs: slug, name |
check_custom_domain | Check 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 + Inputs: domain |
check_domain | Refresh certificate status + live TLS/HTTPS probe for a connected domain (by id from list_domains). Inputs: id |
connect_provider | Start 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 provider Inputs: domain |
contract_amend | Create an amendment to a SIGNED parent contract. Scope delta required; fee delta and target date optional. Returns the draft amendment for editing before send — call contract_send with the returned amendment id to fire it. Cannot amend an a Inputs: parentContractId, scopeDelta, feeDeltaCents, targetCompletionDate |
contract_draft | Draft a contract from a brief_ready project. Auto-fills 8 fields from the AI brief, Stripe Connect default currency, and dev profile. Returns the contract row with status='draft' so the dev can review fields before sending. After this, edit Inputs: projectId |
contract_pdf | Get the signed contract PDF as a base64-encoded download. PDF includes the contract, signature certificate, and any signed amendments. Returns { filename, contentType, base64 }. Errors with conflict:contract_not_signed if the parent contrac Inputs: contractId |
contract_send | Send a draft contract to the customer. Validates all 8 fields are non-empty, computes content_hash, flips project to contract_sent, fires the customer email. Same handler works for amendment drafts — sending an amendment does not move proje Inputs: contractId |
contract_status | Read the current state of a contract: status, sent_at, viewed_at, signed_at, signer info, content_hash, plus any amendments. Use this to check whether a customer has signed yet. Returns { contract, amendments } — the contract row matches GE Inputs: contractId |
create_database | Provision 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. Inputs: name, provider, siteSlug, binding |
create_drive | Create a private cloud Drive (plan-limited). Pass client to file it under a client. Inputs: name, client |
create_listing | Publish (or upsert) a marketplace listing for an owned site. Requires Stripe Connect set up (status='ready' — see get_connect_status). priceCents = whole-dollar between 100 and 999900. termsMode='standard' uses shiply's template; 'custom' r Inputs: siteSlug, priceCents, pitch, termsMode, termsCustom, jurisdiction |
create_project | Spin up a new customer-intake project on the dev's account. Returns the project row plus intakeUrl — the public link the customer fills out (10-step wizard). If customerEmail is provided, shiply also emails them the intake invite. Use origi Inputs: label, customerName, customerEmail, originatedFromSiteId |
create_test | Provision 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 c Inputs: idea, headline, sub, cta, price |
data_export_collection | Return 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>`. Inputs: slug, collection, limit |
data_insert | Insert 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. Inputs: slug, collection, record |
data_list_collections | List 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`. Inputs: slug |
data_query | Page records from an owned site's collection, newest-first. limit ≤ 200 (default 50). cursor from a previous response's nextCursor. Inputs: slug, collection, limit, cursor |
delete_database | PERMANENTLY delete a database and all its data. Irreversible — confirm with the user first. Inputs: id |
delete_listing | Take a listing off the public marketplace by moving it to status='draft'. Marketplace v1 keeps the row so analytics + future re-listing work — there's no hard delete. Sold listings can't be modified. Use to stop accepting offers without los Inputs: siteSlug |
delete_site | PERMANENTLY delete a site and all stored files. Irreversible — confirm with the user first. Inputs: slug |
delete_variable | Remove one variable by name. Inputs: name |
deploy_function | Deploy a Worker function to a site. The function runs on every request to <slug>.shiply.now and can receive webhooks, run on cron triggers, and access bindings (D1, secrets, env vars). Requires Developer plan. Use when the user wants webhoo Inputs: slug, source, lang, crons |
detach_variable | Stop exposing a variable to a site's Worker env. Takes effect on the site's next function deploy. Inputs: slug, name |
drive_delete_file | Delete a file from a Drive. Inputs: driveId, path |
drive_list_files | List files in a Drive (driveId = drv_…, or "default"). Optional prefix filter. Inputs: driveId, prefix |
drive_put_file | Write a file into a Drive (driveId = drv_… or "default"). content is utf8 or base64. Use for agent memory, notes, context, assets. Inputs: driveId, path, content, encoding |
duplicate_site | Server-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. Inputs: slug, title |
export_account | Return a JSON bundle of the user's profile, sites, Site Data, drives, and metadata (secrets excluded). Data portability. |
feature_site | Toggle whether an owned, public site appears in the public shiply Explore gallery (https://shiply.now/explore). Only public-access sites are eligible. Inputs: slug, show |
forward_thread | Forward a message from a thread (default: the most recent message) to a NEW recipient with an optional intro note. Body is composed as note + standard '---------- Forwarded message ----------' quote of the original. Goes from the thread's e Inputs: threadId, to, messageId, subject, note |
get_account_status | Get 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 c |
get_analytics, get_connect_status, get_function, get_function_logs, get_project, get_site, get_site_access, get_test_status, list_complaints, list_crons, list_custom_domains, list_databases, list_domains, list_drives, list_inbox, list_listings, list_mailbox_contacts, list_my_orders, list_my_sales, list_project_files, list_projects, list_secrets, list_sending_domains, list_site_inbox, list_site_variables, list_sites, list_suppressions, list_test_inbox_addresses, list_tests, list_unsubscribes, list_variables, list_versions, mark_thread_read, promote_site, publish_from_drive, publish_site, pull_site, read_thread, refund_order, regenerate_brief, remove_cron, remove_custom_domain, remove_domain, remove_function, remove_secret, remove_sending_domain, remove_suppression, reply_to_thread, resend_confirmation, resend_intake_invite, restore_project, rollback_site, send_broadcast, send_email, send_mailbox_broadcast, set_cron, set_handle, set_link, set_mailbox, set_primary_subdomain, set_profile, set_secret, set_site_access, set_variable, site_status, summarize_thread, sync_dns, unarchive_thread, update_brief, update_listing, verify_claim, verify_sending_domain, verify_site, whoami
Every block below points at https://shiply.now/mcp. Pick your client and copy.
claude mcp add --transport http shiply https://shiply.now/mcp
{
"mcpServers": {
"shiply": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://shiply.now/mcp"]
}
}
}{
"mcpServers": {
"shiply": {
"url": "https://shiply.now/mcp"
}
}
}{
"servers": {
"shiply": {
"type": "http",
"url": "https://shiply.now/mcp"
}
}
}{
"context_servers": {
"shiply": {
"url": "https://shiply.now/mcp"
}
}
}{
"mcpServers": {
"shiply": {
"serverUrl": "https://shiply.now/mcp"
}
}
}{
"mcpServers": {
"shiply": {
"url": "https://shiply.now/mcp"
}
}
}name: Shiply
version: 0.0.1
schema: v1
mcpServers:
- name: Shiply
type: streamable-http
url: https://shiply.now/mcp{
"mcpServers": {
"shiply": {
"httpUrl": "https://shiply.now/mcp"
}
}
}{
"mcpServers": {
"shiply": {
"type": "http",
"url": "https://shiply.now/mcp"
}
}
}{
"mcpServers": {
"shiply": {
"url": "https://shiply.now/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fshiply.now%2Fmcp&type=streamable_http&id=shiply&name=Shiply
It answered our last check on 24 October 2026 in 1777 ms. Over 6 checks since 12 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by shiply.now and served from shiply.now, the vendor's own domain: https://shiply.now/mcp.
114, as returned by the server's own tools/list on 23 September 2026: add_custom_domain, add_domain, add_sending_domain, add_subdomain, add_suppression, archive_project, archive_thread, attach_database, and 106 more.
It answered our last check on 24 October 2026 in 1777 ms. Over 6 checks since 12 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://shiply.now/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: now.shiply. Endpoint host: shiply.now. ARD identifier: urn:air:now.shiply:mcp:shiply.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.