now.shiply/shiply
REMOTE · SHIPLY.NOW · SCANNED AUG 3
Publish any app in one call: SQL database, functions, email, and a custom domain. Flat price.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 9168 tokens (~78/item across 117 items; 114 tools + 3 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · shiply.now
claude mcp add --transport http now-shiply-shiply https://shiply.now/mcp
[mcp_servers.now-shiply-shiply] url = "https://shiply.now/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"now-shiply-shiply": {
"type": "remote",
"url": "https://shiply.now/mcp",
"enabled": true
}
}
} openclaw mcp add now-shiply-shiply --url https://shiply.now/mcp --transport streamable-http
mcp_servers:
now-shiply-shiply:
url: "https://shiply.now/mcp" {
"mcpServers": {
"now-shiply-shiply": {
"type": "http",
"url": "https://shiply.now/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +6
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 74
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://shiply.now/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=shiply.now | CN=WE1,O=Google Trust Services,C=US | 11 Jun 2026 | 9 Sept 2026 | ECDSA 256 | ECDSA-SHA256 | c2577c70f60d0a4113fa4d399ec10b5a |
| SANs: shiply.now, *.shiply.now | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC insecure
Validation of shiply.now. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| now. | present | 53572 | 8 | Verified |
| shiply.now. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://shiply.now/.well-known/oauth-protected-resource"
Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://shiply.now/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), payment=(), usb=() |
Protected resource metadata
| Document | https://shiply.now/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://shiply.now/mcp |
| Authorisation server | https://shiply.now |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://shiply.now/mcp | Verified | 200 | |
| http (plaintext) | http://shiply.now/mcp | HTTPS enforced | 301 | https://shiply.now/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
list_custom_domains List custom domains ~32
List registered custom domains grouped with their subdomains, each subdomain's site and status, and the detected provider.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_databases List my databases ~85
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 databaseId — those live on a per-database MCP server reached via GET /api/v1/databases/{id} (see llms.txt), which this id feeds.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_domains List custom domains ~15
List connected custom domains with status.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_drives List drives ~42
List the user's private cloud Drives (id, name). Optional clientId filters to one client.
| Name | Type | Req | Description |
|---|---|---|---|
| clientId | string | — | only drives filed under this client |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_inbox List inbox threads ~75
List the user's email inbox threads (outbound demand-test sends + inbound replies / unsubscribes / complaints / bounces). Filter by tag.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | — | default all |
| limit | integer | — | max threads to return, ≤200 |
| offset | integer | — | number of threads to skip (pagination) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_listings List my marketplace listings ~45
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_mailbox_contacts List a mailbox's contacts ~84
List captured contacts for a (site, collection) mailbox, optionally filtered by status (signed_up/confirmed/unsubscribed). Returns email, status, confirmedAt, createdAt, and captured fields.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | yes | mailbox collection name |
| slug | string | yes | site slug the mailbox belongs to |
| status | string | — | filter contacts by status |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_my_orders List orders where I am the buyer ~73
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 recap what the user owns by purchase.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | max orders to return (default 100, max 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_my_sales List orders where I am the seller ~77
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 the 30-day refund window (refundExpiresAt > now).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | max orders to return (default 100, max 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_project_files List files uploaded to a project ~64
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 customer attached.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | project id whose uploaded files to list |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_projects List my client-intake projects ~128
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 customer email), limit (default 100). Use to triage what's in flight before opening a specific project.
| Name | Type | Req | Description |
|---|---|---|---|
| clientId | string | — | only projects filed under this client |
| limit | integer | — | max projects to return (default 100) |
| q | string | — | case-insensitive match on label or customer email |
| status | string | — | filter by project status |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_secrets List secret names for a site ~37
List secret names (values not returned) for a site's deployed function.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug whose secret names to list |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_sending_domains List my sending domains ~55
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 domain to verify/remove.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_site_inbox List a site's email inbox threads ~55
Read the email threads (received, sent, web captures) for the agent's sites. Optionally scoped to one site by slug.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | — | limit to one site by slug; omit for all sites |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_site_variables List variables attached to a site ~36
Names of the variables attached to an owned site's Worker env (values never shown here).
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_sites List my sites ~39
List the sites owned by this API key. Optional clientId filters to one client.
| Name | Type | Req | Description |
|---|---|---|---|
| clientId | string | — | only sites filed under this client |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_suppressions List suppressed emails / domains ~49
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_test_inbox_addresses List per-test inbox addresses ~71
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 contact address. Mail sent to these aliases lands in /dashboard/inbox tied to the test.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_tests List demand tests ~19
List your demand tests with signups + confirmed counts.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_unsubscribes List unsubscribes ~48
Shortcut for list_inbox with filter=unsubscribes — shows every thread tagged as an opt-out request.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | max threads to return, ≤200 |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_variables List variables ~33
List the encrypted variables. Values are masked unless reveal=true.
| Name | Type | Req | Description |
|---|---|---|---|
| reveal | boolean | — | return plaintext values instead of masked |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_versions List a site's deploys ~68
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 it.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug to list deploys for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
mark_thread_read Mark a thread read ~68
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 without re-fetching the thread body.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | thread id from list_inbox to mark read |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
promote_site Promote a preview to a production site ~75
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, domains, and access settings; only the served bytes change.
| Name | Type | Req | Description |
|---|---|---|---|
| destSlug | string | yes | — |
| srcSlug | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
publish_from_drive Publish a drive as a site ~81
Snapshot a Drive (or a prefix of it) into a new live site at <slug>.shiply.now. Files copied server-side.
| Name | Type | Req | Description |
|---|---|---|---|
| driveId | string | yes | drive id (drv_…) or "default" |
| prefix | string | — | only snapshot files under this path prefix |
| title | string | — | display title for the new site |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
publish_site Publish a site ~278
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 Bearer key) and the SAME URL gets the new version. Unchanged files are hash-skipped server-side, so re-publishing (including retrying a failed publish) is cheap — always update the same site rather than creating a new one. Works WITHOUT auth (anonymous: 24h lifetime, returns claimToken/claimUrl — SAVE THEM). With a Bearer shp_ key sites are permanent. ≤50 files / 2 MB inline; bigger: REST flow per https://shiply.now/llms.txt. index.html serves at /. spaMode for client-side routing.
| Name | Type | Req | Description |
|---|---|---|---|
| claimToken | string | — | UPDATE an existing anonymous site (from the original publish result) |
| client | object | — | optional: file this under a client (the publish/site is grouped in their customer view) |
| files | array | yes | site files; index.html required for a homepage |
| slug | string | — | UPDATE an existing site you own (requires Bearer key) |
| spaMode | boolean | — | serve index.html for unknown paths (client-side routing) |
| title | string | — | display title for the site |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
pull_site Pull a site's current files ~80
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 source; framework/SSR sites return the built bundle (`.shiply/bundle/*`), not original source.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug to pull files for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
read_thread Read an inbox thread ~44
Return the thread metadata + all messages in chronological order. Use list_inbox first to get a threadId.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | thread id from list_inbox |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
refund_order Refund one of my sales ~98
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' and reverts site ownership to the seller. Idempotent on already-refunded orders.
| Name | Type | Req | Description |
|---|---|---|---|
| orderId | string | yes | id of the paid order to refund (from list_my_sales) |
| reason | string | — | optional refund reason |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
regenerate_brief Re-run AI brief generation ~77
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. Use after the customer edits answers post-submit, or when the first AI attempt failed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | project id to re-run the brief for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_cron Remove a cron trigger ~46
Remove a cron trigger from a site's deployed function.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | URL path of the cron to remove |
| slug | string | yes | site slug whose cron to remove |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_custom_domain Remove a custom domain ~43
Remove a registered custom domain and all its subdomains; they stop serving immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | registered custom domain to remove, e.g. example.com |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_domain Disconnect a custom domain ~34
Remove a connected domain (by id). It stops serving immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | connected domain id from list_domains |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_function Remove the deployed function from a site ~53
Remove the deployed Worker function from a site (and all its routes, secrets, and cron triggers). Site falls back to static-only serving. Irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug whose function to remove |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_secret Remove a secret from a site ~49
Remove a secret from a site's deployed function. The binding disappears on next request.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | secret name to remove |
| slug | string | yes | site slug whose function holds the secret |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_sending_domain Remove a sending domain ~69
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-verifying DNS.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | sending domain id from list_sending_domains |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
remove_suppression Remove from suppression list ~42
Delete one suppression by id. Use list_suppressions first to find the id.
| Name | Type | Req | Description |
|---|---|---|---|
| suppressionId | string | yes | suppression id from list_suppressions |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
reply_to_thread Reply to an inbox thread ~147
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 In-Reply-To so Gmail/Outlook group it with the original. Subject defaults to 'Re: <original>' when omitted. Cap at 20,000 chars. Use after read_thread to make sure you're replying to the right conversation.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | reply body, ≤20,000 chars |
| subject | string | — | subject; defaults to 'Re: <original>' |
| threadId | string | yes | thread id from list_inbox to reply on |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
resend_confirmation Resend a confirmation email ~55
Re-send the double-opt-in confirmation to a signup that has not confirmed yet.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | the unconfirmed signup email to re-send to | |
| testId | string | yes | demand test id the signup belongs to |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
resend_intake_invite Re-send the customer intake invite email ~86
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 dashboard first — customer email isn't agent-patchable). Use when the customer says they didn't receive the link.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | project id to re-send the intake invite for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
restore_project Restore an archived project ~63
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 currently archived.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | archived project id to restore |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
rollback_site Roll back a site ~59
Re-point a site to any finalized version (rollback or roll-forward). Get version ids from get_site. Serving updates immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug to re-point |
| versionId | string | yes | finalized version id from get_site |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
send_broadcast Broadcast to confirmed subscribers ~101
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 subscribers yet.
| Name | Type | Req | Description |
|---|---|---|---|
| html | string | yes | email HTML body (unsubscribe link added automatically) |
| subject | string | yes | email subject line |
| testId | string | yes | demand test id whose confirmed subscribers to email |
| text | string | — | plain-text fallback body |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
send_email Send an email from a site ~111
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 site inbox.
| Name | Type | Req | Description |
|---|---|---|---|
| html | string | yes | email HTML body |
| slug | string | yes | site slug to send from (<slug>.shiply.now sender) |
| subject | string | yes | email subject line |
| text | string | — | plain-text fallback body |
| to | string | yes | recipient email address |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
send_mailbox_broadcast Broadcast to a mailbox's confirmed audience ~115
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 subscribers exist yet.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | yes | mailbox collection whose confirmed audience to email |
| html | string | yes | email HTML body (unsubscribe footer added automatically) |
| slug | string | yes | site slug the mailbox belongs to |
| subject | string | yes | email subject line |
| text | string | — | plain-text fallback body |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
set_cron Set or update a cron trigger ~101
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 context).
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | URL path the cron handler fires on |
| schedule | string | yes | crontab schedule in UTC, e.g. "0 * * * *" |
| slug | string | yes | site slug whose function gets the cron |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
set_handle Set a vanity handle ~109
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 set_profile instead — that lives at shiply.now/@<handle>.)
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | yes | new vanity handle, 3-30 chars a-z 0-9 - |
| slug | string | yes | current site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
set_link Mount a site at a path ~139
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 owned by you. Pass remove=true to unmount.
| Name | Type | Req | Description |
|---|---|---|---|
| hostSlug | string | yes | slug of the owned host site |
| location | string | yes | path to mount at, e.g. "docs", or "__root__" for the host root |
| remove | boolean | — | unmount instead of mounting |
| targetSlug | string | — | slug of the owned site to serve there (required unless remove=true) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
set_mailbox Configure a site collection's email behavior ~149
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 handled.
| Name | Type | Req | Description |
|---|---|---|---|
| branding | object | — | branding applied to mailbox emails |
| collection | string | yes | Site Data collection to turn into a mailbox |
| doubleOptIn | boolean | — | require email confirmation before a contact is active |
| notifyOwner | boolean | — | email the owner on each new capture |
| notifyTo | string | — | address to send owner notifications to |
| sendingDomainId | string | — | BYO sending domain id to send from |
| slug | string | yes | site slug the collection belongs to |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
set_primary_subdomain Pick the canonical URL for a custom domain ~123
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 host-side fix for the duplicate-content SEO problem. The first subdomain you add for a site is primary by default; call this only when you need to switch.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | registered custom domain, e.g. example.com |
| hostname | string | yes | full hostname to make primary, e.g. www.example.com |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.