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.
add_custom_domain Register a custom domain ~67
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | registrable domain you own, e.g. example.com |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
add_domain Connect a custom domain ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| hostname | string | yes | full hostname to serve, e.g. www.example.com |
| slug | string | yes | owned site slug to serve there |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
add_sending_domain Add a sending domain ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | e.g. mail.yourbrand.com |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
add_subdomain Point a subdomain at a site ~136
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.now); the certificate issues automatically once DNS resolves. Poll with check_domain.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | registrable parent domain, e.g. example.com |
| slug | string | yes | owned site slug to serve there |
| subdomain | string | yes | subdomain label, or "@"/"" for the apex |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
add_suppression Suppress an email or domain ~112
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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | 'email' for one address, 'domain' for everyone @example.com |
| notes | string | — | optional reason / note for the suppression |
| value | string | yes | e.g. '[email protected]' or 'competitor.com' |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
archive_project Archive a project ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | project id to archive |
| reason | string | — | optional reason shown on the project page |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
archive_thread Archive a thread ~58
Soft-archive the thread (sets archivedAt). Hidden from the default inbox view; surface again with list_inbox filter=archived. Reverse with unarchive_thread.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | thread id from list_inbox to archive |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
attach_database Attach a database to a site ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | database id (from list_databases) |
| siteSlug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
attach_variable Attach a variable to a site ~83
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | variable name to attach, e.g. SUPABASE_URL |
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
check_custom_domain Check a custom domain ~85
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 + tls + http + ready.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | registered custom domain to check, e.g. example.com |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
check_domain Check a custom domain ~41
Refresh certificate status + live TLS/HTTPS probe for a connected domain (by id from list_domains).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | connected domain id from list_domains |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
connect_provider Connect the domain's DNS provider ~77
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 providers, add the records manually.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | registered custom domain to connect, e.g. example.com |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
contract_amend Create an amendment to a signed contract ~136
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 amendment (amend the parent instead).
| Name | Type | Req | Description |
|---|---|---|---|
| feeDeltaCents | integer | — | Optional fee adjustment in cents. Can be negative for descope. |
| parentContractId | string | yes | id of the SIGNED parent contract to amend |
| scopeDelta | string | yes | What's changing — visible to customer. |
| targetCompletionDate | string | — | Optional ISO date (YYYY-MM-DD) for revised completion. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
contract_draft Draft a contract from a brief_ready project ~100
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 fields via PATCH /api/v1/contracts/{id} (no MCP edit tool yet), then call contract_send to fire it.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | Project to draft a contract for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
contract_pdf Get the signed contract PDF (base64) ~81
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 contract has not been signed yet.
| Name | Type | Req | Description |
|---|---|---|---|
| contractId | string | yes | signed contract id (parent or amendment) to render as PDF |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
contract_send Send a draft contract to the customer ~75
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 project state.
| Name | Type | Req | Description |
|---|---|---|---|
| contractId | string | yes | draft contract id to send (from contract_draft) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
contract_status Read contract state + amendments ~82
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 GET /api/v1/contracts/{id}.
| Name | Type | Req | Description |
|---|---|---|---|
| contractId | string | yes | contract id to read state for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
create_database Create a database ~128
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.
| Name | Type | Req | Description |
|---|---|---|---|
| binding | string | — | Worker binding name, UPPER_SNAKE (defaults to a name derived from `name`) |
| name | string | yes | database name, a-z 0-9 -, 2-63 chars |
| provider | string | — | defaults to d1 |
| siteSlug | string | — | owned site slug to attach immediately |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
create_drive Create a drive ~64
Create a private cloud Drive (plan-limited). Pass client to file it under a client.
| Name | Type | Req | Description |
|---|---|---|---|
| client | object | — | optional: file this under a client (the publish/site is grouped in their customer view) |
| name | string | yes | display name for the new drive |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
create_listing List one of my sites for sale ~208
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' requires termsCustom ≥50 chars. jurisdiction is required (e.g. 'California, USA').
| Name | Type | Req | Description |
|---|---|---|---|
| jurisdiction | string | yes | governing jurisdiction, e.g. 'California, USA' |
| pitch | string | — | short sales pitch, ≤280 chars |
| priceCents | integer | yes | whole-dollar price in cents, 100–999900 |
| siteSlug | string | yes | slug of the owned site to list |
| status | string | — | publish state (default draft) |
| termsCustom | string | — | custom terms text, ≥50 chars, required when termsMode='custom' |
| termsMode | string | yes | 'standard' uses shiply's template; 'custom' requires termsCustom |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
create_project Create a client-intake project ~149
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 originatedFromSiteId to link a project to an existing site (e.g. 'redesign this site').
| Name | Type | Req | Description |
|---|---|---|---|
| customerEmail | string | — | customer email; if set, shiply emails them the intake invite |
| customerName | string | — | the customer's name |
| label | string | yes | project name shown in the dev dashboard |
| originatedFromSiteId | string | — | link this project to an existing site (e.g. a redesign) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
create_test Create an email demand test ~133
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 confirmation. Read progress with get_test_status.
| Name | Type | Req | Description |
|---|---|---|---|
| cta | string | — | call-to-action button label |
| headline | string | yes | landing-page headline |
| idea | string | yes | the product/idea name |
| price | string | — | price to display, e.g. "$29/mo" |
| sub | string | — | subheadline / supporting line |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
data_export_collection Export records (capped) ~99
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>`.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | yes | collection name to export |
| limit | integer | — | max records to return (default 1000, max 5000) |
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
data_insert Insert a record into a collection ~89
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.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | yes | collection name to insert into |
| record | object | yes | the record fields to insert as key/value pairs |
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
data_list_collections List Site Data collections ~56
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
data_query Query records from a collection ~94
Page records from an owned site's collection, newest-first. limit ≤ 200 (default 50). cursor from a previous response's nextCursor.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | yes | collection name from data_list_collections |
| cursor | string | — | nextCursor from a previous response's page |
| limit | integer | — | max records to return, ≤200 (default 50) |
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
delete_database Delete a database ~44
PERMANENTLY delete a database and all its data. Irreversible — confirm with the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | database id (from list_databases) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
delete_listing Unpublish a listing (set to draft) ~75
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 losing pricing history.
| Name | Type | Req | Description |
|---|---|---|---|
| siteSlug | string | yes | slug of the listed site to unpublish |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
delete_site Delete a site ~41
PERMANENTLY delete a site and all stored files. Irreversible — confirm with the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug to delete |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
delete_variable Delete a variable ~25
Remove one variable by name.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | variable name to delete |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
deploy_function Deploy a Worker function to a site ~126
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 webhook receivers, cron jobs, or a backend for their site.
| Name | Type | Req | Description |
|---|---|---|---|
| crons | array | — | cron triggers to register, ≤20 |
| lang | string | — | source language (default js) |
| slug | string | yes | site slug to deploy the function to |
| source | string | yes | the Worker source code |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
detach_variable Detach a variable from a site ~48
Stop exposing a variable to a site's Worker env. Takes effect on the site's next function deploy.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | variable name to detach |
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
drive_delete_file Delete a drive file ~46
Delete a file from a Drive.
| Name | Type | Req | Description |
|---|---|---|---|
| driveId | string | yes | drive id (drv_…) or "default" |
| path | string | yes | path of the file to delete |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
drive_list_files List drive files ~60
List files in a Drive (driveId = drv_…, or "default"). Optional prefix filter.
| Name | Type | Req | Description |
|---|---|---|---|
| driveId | string | yes | drive id (drv_…) or "default" |
| prefix | string | — | only list files under this path prefix |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
drive_put_file Write a drive file ~118
Write a file into a Drive (driveId = drv_… or "default"). content is utf8 or base64. Use for agent memory, notes, context, assets.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | file contents (utf8 text, or base64 when encoding=base64) |
| driveId | string | yes | drive id (drv_…) or "default" |
| encoding | string | — | default utf8; base64 for binary |
| path | string | yes | destination path inside the drive, e.g. notes/context.md |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
duplicate_site Duplicate a site ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug to copy |
| title | string | — | display title for the new copy (defaults to source title) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
export_account Export account data ~34
Return a JSON bundle of the user's profile, sites, Site Data, drives, and metadata (secrets excluded). Data portability.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
feature_site Feature a site on Explore ~67
Toggle whether an owned, public site appears in the public shiply Explore gallery (https://shiply.now/explore). Only public-access sites are eligible.
| Name | Type | Req | Description |
|---|---|---|---|
| show | boolean | yes | true to feature on Explore, false to remove |
| slug | string | yes | owned, public site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
forward_thread Forward an inbox message to a new recipient ~155
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 existing shiply alias so replies still route through the inbox. Subject defaults to 'Fwd: <original>'.
| Name | Type | Req | Description |
|---|---|---|---|
| messageId | string | — | specific message to forward (default: most recent) |
| note | string | — | intro note prepended above the forwarded quote |
| subject | string | — | subject; defaults to 'Fwd: <original>' |
| threadId | string | yes | thread id from list_inbox to forward from |
| to | string | yes | new recipient email address |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_account_status Account plan + capability matrix ~122
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 chat when a feature requires a higher plan. Returns plan id + name + subscription status, hard limits (sites, databases, custom domains, drives), and a capability matrix listing every gated feature (workers_lite, databases_neon_postgres, custom_domains, etc.) with whether you have access and the minimum plan needed.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_analytics Site analytics ~21
Daily page views per site for the last 30 days.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_connect_status Stripe Connect onboarding status ~72
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 onboardingUrl (if not_started or in_progress) and dashboardUrl (if ready). Refreshes from Stripe on every call.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_function Get the deployed function for a site ~39
Return the deployed function source + metadata for a site, or null if no function deployed.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug whose function to fetch |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_function_logs Read recent function logs ~136
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 this to debug a deployed function: each event has timestamp, level, message, outcome, statusCode, requestId, and CPU/wall time. Also returns a CF dashboard deep-link.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | max events to return (default 50) |
| since | integer | — | look back this many minutes (default 60, max 10080 = 7 days) |
| slug | string | yes | site slug whose function logs to read |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_project Get one project (full row) ~54
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | project id |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_site Site detail ~34
Site settings + version history for one of my sites.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug, e.g. my-site |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_site_access Read site access control ~56
Read 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.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | owned site slug |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
get_test_status Demand test status (the verdict) ~77
ONE 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.
| Name | Type | Req | Description |
|---|---|---|---|
| testId | string | yes | demand test id from create_test / list_tests |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_complaints List complaints + bounces ~33
Return threads tagged as complaints (spam reports) OR bounces (recipient rejected). Read these before any further sending.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.
list_crons List cron triggers for a site ~44
List cron triggers for a site's deployed function. Each cron is (path, schedule, lastRunAt).
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | site slug whose cron triggers to list |
| Name | Type | Req | Description |
|---|---|---|---|
| result | — | yes | — |
No examples provided.