mcpserver.lol
registry/shiply
Connection check verified live · 26h ago

shiply

Publish any app in one call: SQL database, functions, email, and a custom domain. Flat price.

Tools 114
GitHub stars
Installs / wk
Licence
Transport streamable-http
Last checked 26h ago

Tools & capabilities

114 tools

Read from the running server on 26h ago.

add_custom_domain 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_domain slug*hostname*
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.
add_sending_domain 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. Ca…
add_subdomain slug*domain*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 d…
add_suppression kind*notesvalue*
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='do…
archive_project id*reason
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.
archive_thread threadId*
Soft-archive the thread (sets archivedAt). Hidden from the default inbox view; surface again with list_inbox filter=archived. Reverse with unarchive_thread.
attach_database id*siteSlug*
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.
attach_variable name*slug*
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 cod…
check_custom_domain read-only 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 c…
check_domain read-only id*
Refresh certificate status + live TLS/HTTPS probe for a connected domain (by id from list_domains).
connect_provider domain*
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 auth…
contract_amend scopeDelta*feeDeltaCentsparentContractId*targetCompletionDate
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…
contract_draft projectId*
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' s…
contract_pdf read-only contractId*
Get the signed contract PDF as a base64-encoded download. PDF includes the contract, signature certificate, and any signed amendments. Returns { filename, contentType, base64 }. Er…
contract_send contractId*
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…
contract_status read-only contractId*
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. Re…
create_database name*bindingprovidersiteSlug
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); otherwi…
create_drive name*client
Create a private cloud Drive (plan-limited). Pass client to file it under a client.
create_listing pitchstatussiteSlug*termsMode*priceCents*termsCustom +1
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 999…
create_project label*customerNamecustomerEmailoriginatedFromSiteId
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 pr…
create_test ctasubidea*priceheadline*
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 si…
data_export_collection read-only slug*limitcollection*
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>`…
data_insert slug*record*collection*
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_list_collections read-only slug*
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`.
data_query read-only slug*limitcursorcollection*
Page records from an owned site's collection, newest-first. limit ≤ 200 (default 50). cursor from a previous response's nextCursor.
delete_database can modify data id*
PERMANENTLY delete a database and all its data. Irreversible — confirm with the user first.
delete_listing can modify data siteSlug*
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…
delete_site can modify data slug*
PERMANENTLY delete a site and all stored files. Irreversible — confirm with the user first.
delete_variable can modify data name*
Remove one variable by name.
deploy_function langslug*cronssource*
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 va…
detach_variable can modify data name*slug*
Stop exposing a variable to a site's Worker env. Takes effect on the site's next function deploy.
drive_delete_file can modify data path*driveId*
Delete a file from a Drive.
drive_list_files read-only prefixdriveId*
List files in a Drive (driveId = drv_…, or "default"). Optional prefix filter.
drive_put_file path*content*driveId*encoding
Write a file into a Drive (driveId = drv_… or "default"). content is utf8 or base64. Use for agent memory, notes, context, assets.
duplicate_site slug*title
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.
export_account read-only
Return a JSON bundle of the user's profile, sites, Site Data, drives, and metadata (secrets excluded). Data portability.
feature_site show*slug*
Toggle whether an owned, public site appears in the public shiply Explore gallery (https://shiply.now/explore). Only public-access sites are eligible.
forward_thread to*notesubjectthreadId*messageId
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…
get_account_status read-only
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…
get_analytics read-only
Daily page views per site for the last 30 days.
get_connect_status read-only
Return the seller's Stripe Connect state: not_started | in_progress | pending_verification | ready | disabled. When status != 'ready' the user can't list sites. Includes a one-shot…
get_function read-only slug*
Return the deployed function source + metadata for a site, or null if no function deployed.
get_function_logs read-only slug*limitsince
Read recent runtime logs for a site's per-site Worker (console output, request summaries, exceptions) from Cloudflare Workers Observability — 7-day retention, newest first. Use thi…
get_project read-only id*
Read one of the dev's projects by id — includes label, status, customer details, intake responses, AI brief, drive folder. Use before update_brief / regenerate_brief.
get_site read-only slug*
Site settings + version history for one of my sites.
get_site_access read-only slug*
Read an owned site's current access policy (mode: public/password/restricted, allowedEmails, allowedDomains, hasPassword). Read-only counterpart to set_site_access — check before c…
get_test_status read-only testId*
ONE consolidated object: page funnel (views, signups, confirmed, conversion) ⊕ email events (delivered/opened/clicked/bounced) ⊕ a computed verdict. The single place to check progr…
list_complaints read-only
Return threads tagged as complaints (spam reports) OR bounces (recipient rejected). Read these before any further sending.
list_crons read-only slug*
List cron triggers for a site's deployed function. Each cron is (path, schedule, lastRunAt).
list_custom_domains read-only
List registered custom domains grouped with their subdomains, each subdomain's site and status, and the detected provider.
list_databases read-only
List 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 da…
list_domains read-only
List connected custom domains with status.
list_drives read-only clientId
List the user's private cloud Drives (id, name). Optional clientId filters to one client.
list_inbox read-only limitfilteroffset
List the user's email inbox threads (outbound demand-test sends + inbound replies / unsubscribes / complaints / bounces). Filter by tag.
list_listings read-only
Return every marketplace listing the seller owns (any status: draft, live, paused, sold). Includes site slug and current price. Use to see what's for sale across the account.
list_mailbox_contacts read-only slug*statuscollection*
List captured contacts for a (site, collection) mailbox, optionally filtered by status (signed_up/confirmed/unsubscribed). Returns email, status, confirmedAt, createdAt, and captur…
list_my_orders read-only limit
Return every marketplace order the user PURCHASED. Most recent first. Shows the acquired site, paid amount, and whether the order is still inside the 30-day refund window. Use to r…
list_my_sales read-only limit
Return every marketplace order for sites the user sold (incl. pending, paid, refunded, failed, disputed). Most recent first. Use to surface revenue + which orders are still inside…
list_project_files read-only id*
Return the customer-uploaded files for one project (path, size, contentType, createdAt). Empty when no drive folder exists yet (no uploads). Use to inspect what intake assets the c…
list_projects read-only qlimitstatusclientId
List the dev's customer-intake projects (newest first). Optional filters: status (draft|intake_open|brief_ready|brief_failed|archived), q (case-insensitive match on label or custom…
list_secrets read-only slug*
List secret names (values not returned) for a site's deployed function.
list_sending_domains read-only
Return every BYO sending domain the user has added (id, domain, fromAddress, status: pending|verified|failed, DNS records). Use to inspect verification state or find the id of a do…
list_site_inbox read-only slug
Read the email threads (received, sent, web captures) for the agent's sites. Optionally scoped to one site by slug.
list_sites read-only clientId
List the sites owned by this API key. Optional clientId filters to one client.
list_site_variables read-only slug*
Names of the variables attached to an owned site's Worker env (values never shown here).
list_suppressions read-only
Return the user's suppression list — addresses (and full domains) that shiply skips when sending. Bounces, complaints, manual user adds, and AI-detected unsubscribes all land here.
list_test_inbox_addresses read-only
Return every active demand test's reply / inbound address (<slug>@<sitesDomain>). Use this when you need to TELL someone where to email — e.g. drafting a reply or sharing a test's…
list_tests read-only
List your demand tests with signups + confirmed counts.
list_unsubscribes read-only limit
Shortcut for list_inbox with filter=unsubscribes — shows every thread tagged as an opt-out request.
list_variables read-only reveal
List the encrypted variables. Values are masked unless reveal=true.
list_versions slug*
List 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…
mark_thread_read threadId*
Zero the unread counter for a thread. Useful after the agent has read but not acted. read_thread already calls this implicitly; use this explicitly when you want to clear unread wi…
promote_site srcSlug*destSlug*
Copy 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, dom…
publish_from_drive titleprefixdriveId*
Snapshot a Drive (or a prefix of it) into a new live site at <slug>.shiply.now. Files copied server-side.
publish_site slugfiles*titleclientspaModeagentName +1
Publish 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 Be…
pull_site slug*
Download 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 s…
read_thread read-only threadId*
Return the thread metadata + all messages in chronological order. Use list_inbox first to get a threadId.
refund_order can modify data reasonorderId*
Issue a full refund on a paid order the user sold. Must be inside the 30-day refund window (server enforces). Triggers a Stripe refund; the webhook flips the order to 'refunded' an…
regenerate_brief id*
Re-run the MiniMax/Anthropic brief generator from the project's current intake_responses and persist the result. Flips status to brief_ready on success or brief_failed on error. Us…
remove_cron can modify data path*slug*
Remove a cron trigger from a site's deployed function.
remove_custom_domain can modify data domain*
Remove a registered custom domain and all its subdomains; they stop serving immediately.
remove_domain can modify data id*
Remove a connected domain (by id). It stops serving immediately.
remove_function can modify data slug*
Remove the deployed Worker function from a site (and all its routes, secrets, and cron triggers). Site falls back to static-only serving. Irreversible.
remove_secret can modify data name*slug*
Remove a secret from a site's deployed function. The binding disappears on next request.
remove_sending_domain can modify data id*
Delete a BYO sending domain. Any demand tests bound to it fall back to the managed shiply sender. Also GCs the underlying Resend domain. Irreversible — re-adding requires re-verify…
remove_suppression can modify data suppressionId*
Delete one suppression by id. Use list_suppressions first to find the id.
reply_to_thread body*subjectthreadId*
Send an email reply on an existing thread. Goes FROM the original recipient address (the <slug>@shiply.now alias the sender used) and TO the original sender. Threaded via RFC 5322…
resend_confirmation email*testId*
Re-send the double-opt-in confirmation to a signup that has not confirmed yet.
resend_intake_invite id*
Re-fire the 'your developer sent you a project intake' email to the project's customer. Throws invalid_request if the project has no customerEmail (the dev needs to set one via the…
restore_project id*
Move an archived project back to status='draft' so it reappears in the active list. Idempotent on non-archived projects? No — server rejects the transition unless the project is cu…
rollback_site slug*versionId*
Re-point a site to any finalized version (rollback or roll-forward). Get version ids from get_site. Serving updates immediately.
send_broadcast html*texttestId*subject*
Send 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 subscribe…
send_email to*html*slug*textsubject*
Send an email from <slug>.shiply.now's managed sender. The site can send transactional/notification email — no SMTP setup. Rate-limited and spam-checked; replies route back to the…
send_mailbox_broadcast html*slug*textsubject*collection*
Send a one-shot broadcast to the confirmed (double-opt-in) subscribers of a (site, collection) mailbox. Spam-checked; unsubscribe footer auto-added. Fails if no confirmed subscribe…
set_cron path*slug*schedule*
Set or update a cron trigger on a site's deployed function. Schedule is crontab syntax (UTC). Path is the URL the cron handler should fire on (for the worker's scheduled() handler…
set_handle slug*handle*
Give 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 s…
set_link removehostSlug*location*targetSlug
Path-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…
set_mailbox slug*brandingnotifyTocollection*doubleOptInnotifyOwner +1
Turn a Site Data collection into a mailbox: double opt-in, owner notifications, sending domain, branding. Call once per (site, collection) to configure how captured leads are handl…
set_primary_subdomain domain*hostname*
Mark 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…
set_profile enablehandleautoAdd
Create 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 gi…
set_secret name*slug*value*
Set a CF Worker secret on a site's deployed function. Value is encrypted-at-rest and accessible as env.<NAME> inside the worker. Use for Stripe keys, Resend API keys, etc.
set_site_access mode*slug*passwordallowedEmailsallowedDomains
Protect an owned site (paid plans). mode 'public' (anyone), 'password' (supply password), or 'restricted' (supply allowedEmails and/or allowedDomains — only those can request a log…
set_variable name*value*
Upsert 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 doe…
site_status read-only target*
Check any shiply slug or custom hostname: TLS certificate (issuer, days left) + HTTPS probe. ready=true means live.
summarize_thread read-only threadId*
One-paragraph summary of the thread, oriented to the most actionable signal (interest, complaint, question, unsubscribe).
sync_dns domain*
For 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 manuall…
unarchive_thread threadId*
Restore an archived thread (clears archivedAt). It reappears in the default inbox list. Pair with list_inbox filter=archived to find archived threadIds first.
update_brief id*brief*
Overwrite the project's working brief (jsonb). Hard-capped at 500 KB. Use to revise the AI-generated brief by hand; the original AI output is preserved separately in briefAiOrigina…
update_listing pitchstatussiteSlug*termsModepriceCentstermsCustom +1
Patch a listing by siteSlug — change price, pitch, terms, jurisdiction, or status (draft|live|paused). Sold listings cannot be edited. Status transitions enforced server-side. Use…
verify_claim code*
Confirm 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 claimT…
verify_sending_domain id*
Trigger Resend to re-check the domain's DNS records, persist the new status. Call after adding the DNS records returned by add_sending_domain. Status flips to 'verified' once SPF +…
verify_site read-only target*
Edge-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 thum…
whoami read-only
Who 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…