accueil / serveurs / Fichiers & Documents / now.shiply/shiply
now.shiply/shiply
serveur MCP (Model Context Protocol) · mcp-typescript server on vercel 0.1.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que now.shiply/shiply est sûr ?
Au dernier audit MCP Hub, le serveur MCP « now.shiply/shiply » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 114 outils
- add_custom_domain≈ 185 tokens
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.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
registrable domain you own, e.g. example.com
Exemple d'appel{"name": "add_custom_domain", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - add_domain≈ 200 tokens
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.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
owned site slug to serve therehostname· string · requis
full hostname to serve, e.g. www.example.com
Exemple d'appel{"name": "add_domain", "arguments": {"slug": "texte", "hostname": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - add_sending_domain≈ 183 tokens
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.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
e.g. mail.yourbrand.com
Exemple d'appel{"name": "add_sending_domain", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - add_subdomain≈ 267 tokens
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.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
owned site slug to serve theredomain· string · requis
registrable parent domain, e.g. example.comsubdomain· string · requis
subdomain label, or "@"/"" for the apex
Exemple d'appel{"name": "add_subdomain", "arguments": {"slug": "texte", "domain": "texte", "subdomain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - add_suppression≈ 242 tokens
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.
Paramètres, retour & exemple (3)
Paramètreskind· string · requis · email | domain
'email' for one address, 'domain' for everyone @example.comnotes· string · optionnel
optional reason / note for the suppressionvalue· string · requis
e.g. 'spammy@example.com' or 'competitor.com'
Exemple d'appel{"name": "add_suppression", "arguments": {"kind": "email", "value": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - archive_project≈ 237 tokens
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.
Paramètres, retour & exemple (2)
Paramètresid· string · requis
project id to archivereason· string · optionnel
optional reason shown on the project page
Exemple d'appel{"name": "archive_project", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - archive_thread≈ 166 tokens
Soft-archive the thread (sets archivedAt). Hidden from the default inbox view; surface again with list_inbox filter=archived. Reverse with unarchive_thread.
Paramètres, retour & exemple (1)
ParamètresthreadId· string · requis
thread id from list_inbox to archive
Exemple d'appel{"name": "archive_thread", "arguments": {"threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - attach_database≈ 187 tokens
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.
Paramètres, retour & exemple (2)
Paramètresid· string · requis
database id (from list_databases)siteSlug· string · requis
owned site slug
Exemple d'appel{"name": "attach_database", "arguments": {"id": "texte", "siteSlug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - attach_variable≈ 205 tokens
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.
Paramètres, retour & exemple (2)
Paramètresname· string · requis
variable name to attach, e.g. SUPABASE_URLslug· string · requis
owned site slug
Exemple d'appel{"name": "attach_variable", "arguments": {"name": "texte", "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - check_custom_domain≈ 202 tokens
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.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
registered custom domain to check, e.g. example.com
Exemple d'appel{"name": "check_custom_domain", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - check_domain≈ 155 tokens
Refresh certificate status + live TLS/HTTPS probe for a connected domain (by id from list_domains).
Paramètres, retour & exemple (1)
Paramètresid· string · requis
connected domain id from list_domains
Exemple d'appel{"name": "check_domain", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - connect_provider≈ 208 tokens
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.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
registered custom domain to connect, e.g. example.com
Exemple d'appel{"name": "connect_provider", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - contract_amend≈ 363 tokens
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).
Paramètres, retour & exemple (4)
ParamètresscopeDelta· string · requis
What's changing — visible to customer.feeDeltaCents· integer · optionnel
Optional fee adjustment in cents. Can be negative for descope.parentContractId· string · requis
id of the SIGNED parent contract to amendtargetCompletionDate· string · optionnel
Optional ISO date (YYYY-MM-DD) for revised completion.
Exemple d'appel{"name": "contract_amend", "arguments": {"scopeDelta": "texte", "parentContractId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - contract_draft≈ 268 tokens
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.
Paramètres, retour & exemple (1)
ParamètresprojectId· string · requis
Project to draft a contract for
Exemple d'appel{"name": "contract_draft", "arguments": {"projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - contract_pdf≈ 254 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescontractId· string · requis
signed contract id (parent or amendment) to render as PDF
Exemple d'appel{"name": "contract_pdf", "arguments": {"contractId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - contract_send≈ 254 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescontractId· string · requis
draft contract id to send (from contract_draft)
Exemple d'appel{"name": "contract_send", "arguments": {"contractId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - contract_status≈ 246 tokens
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}.
Paramètres, retour & exemple (1)
ParamètrescontractId· string · requis
contract id to read state for
Exemple d'appel{"name": "contract_status", "arguments": {"contractId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_database≈ 256 tokens
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.
Paramètres, retour & exemple (4)
Paramètresname· string · requis
database name, a-z 0-9 -, 2-63 charsbinding· string · optionnel
Worker binding name, UPPER_SNAKE (defaults to a name derived from `name`)provider· string · optionnel · d1 | neon
defaults to d1siteSlug· string · optionnel
owned site slug to attach immediately
Exemple d'appel{"name": "create_database", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_drive≈ 355 tokens
Create a private cloud Drive (plan-limited). Pass client to file it under a client.
Paramètres, retour & exemple (2)
Paramètresname· string · requis
display name for the new driveclient· object · optionnel
optional: file this under a client (the publish/site is grouped in their customer view)
Exemple d'appel{"name": "create_drive", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_listing≈ 406 tokens
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').
Paramètres, retour & exemple (7)
Paramètrespitch· string · optionnel
short sales pitch, ≤280 charsstatus· string · optionnel · draft | live
publish state (default draft)siteSlug· string · requis
slug of the owned site to listtermsMode· string · requis · standard | custom
'standard' uses shiply's template; 'custom' requires termsCustompriceCents· integer · requis
whole-dollar price in cents, 100–999900termsCustom· string · optionnel
custom terms text, ≥50 chars, required when termsMode='custom'jurisdiction· string · requis
governing jurisdiction, e.g. 'California, USA'
Exemple d'appel{"name": "create_listing", "arguments": {"siteSlug": "texte", "termsMode": "standard", "priceCents": 1, "jurisdiction": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_project≈ 389 tokens
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').
Paramètres, retour & exemple (4)
Paramètreslabel· string · requis
project name shown in the dev dashboardcustomerName· string · optionnel
the customer's namecustomerEmail· string · optionnel
customer email; if set, shiply emails them the intake inviteoriginatedFromSiteId· string · optionnel
link this project to an existing site (e.g. a redesign)
Exemple d'appel{"name": "create_project", "arguments": {"label": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_test≈ 274 tokens
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.
Paramètres, retour & exemple (5)
Paramètrescta· string · optionnel
call-to-action button labelsub· string · optionnel
subheadline / supporting lineidea· string · requis
the product/idea nameprice· string · optionnel
price to display, e.g. "$29/mo"headline· string · requis
landing-page headline
Exemple d'appel{"name": "create_test", "arguments": {"idea": "texte", "headline": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - data_export_collection≈ 223 tokens
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>`.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
owned site sluglimit· integer · optionnel
max records to return (default 1000, max 5000)collection· string · requis
collection name to export
Exemple d'appel{"name": "data_export_collection", "arguments": {"slug": "texte", "collection": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - data_insert≈ 244 tokens
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.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
owned site slugrecord· object · requis
the record fields to insert as key/value pairscollection· string · requis
collection name to insert into
Exemple d'appel{"name": "data_insert", "arguments": {"slug": "texte", "record": {}, "collection": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - data_list_collections≈ 168 tokens
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`.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
owned site slug
Exemple d'appel{"name": "data_list_collections", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - data_query≈ 234 tokens
Page records from an owned site's collection, newest-first. limit ≤ 200 (default 50). cursor from a previous response's nextCursor.
Paramètres, retour & exemple (4)
Paramètresslug· string · requis
owned site sluglimit· integer · optionnel
max records to return, ≤200 (default 50)cursor· string · optionnel
nextCursor from a previous response's pagecollection· string · requis
collection name from data_list_collections
Exemple d'appel{"name": "data_query", "arguments": {"slug": "texte", "collection": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - delete_database≈ 147 tokens
PERMANENTLY delete a database and all its data. Irreversible — confirm with the user first.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
database id (from list_databases)
Exemple d'appel{"name": "delete_database", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - delete_listing≈ 197 tokens
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.
Paramètres, retour & exemple (1)
ParamètressiteSlug· string · requis
slug of the listed site to unpublish
Exemple d'appel{"name": "delete_listing", "arguments": {"siteSlug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - delete_site≈ 142 tokens
PERMANENTLY delete a site and all stored files. Irreversible — confirm with the user first.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug to delete
Exemple d'appel{"name": "delete_site", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - delete_variable≈ 130 tokens
Remove one variable by name.
Paramètres, retour & exemple (1)
Paramètresname· string · requis
variable name to delete
Exemple d'appel{"name": "delete_variable", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - deploy_function≈ 360 tokens
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.
Paramètres, retour & exemple (4)
Paramètreslang· string · optionnel · js | ts
source language (default js)slug· string · requis
site slug to deploy the function tocrons· array · optionnel
cron triggers to register, ≤20source· string · requis
the Worker source code
Exemple d'appel{"name": "deploy_function", "arguments": {"slug": "texte", "source": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - detach_variable≈ 167 tokens
Stop exposing a variable to a site's Worker env. Takes effect on the site's next function deploy.
Paramètres, retour & exemple (2)
Paramètresname· string · requis
variable name to detachslug· string · requis
owned site slug
Exemple d'appel{"name": "detach_variable", "arguments": {"name": "texte", "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - drive_delete_file≈ 154 tokens
Delete a file from a Drive.
Paramètres, retour & exemple (2)
Paramètrespath· string · requis
path of the file to deletedriveId· string · requis
drive id (drv_…) or "default"
Exemple d'appel{"name": "drive_delete_file", "arguments": {"path": "texte", "driveId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - drive_list_files≈ 167 tokens
List files in a Drive (driveId = drv_…, or "default"). Optional prefix filter.
Paramètres, retour & exemple (2)
Paramètresprefix· string · optionnel
only list files under this path prefixdriveId· string · requis
drive id (drv_…) or "default"
Exemple d'appel{"name": "drive_list_files", "arguments": {"driveId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - drive_put_file≈ 244 tokens
Write a file into a Drive (driveId = drv_… or "default"). content is utf8 or base64. Use for agent memory, notes, context, assets.
Paramètres, retour & exemple (4)
Paramètrespath· string · requis
destination path inside the drive, e.g. notes/context.mdcontent· string · requis
file contents (utf8 text, or base64 when encoding=base64)driveId· string · requis
drive id (drv_…) or "default"encoding· string · optionnel · utf8 | base64
default utf8; base64 for binary
Exemple d'appel{"name": "drive_put_file", "arguments": {"path": "texte", "content": "texte", "driveId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - duplicate_site≈ 190 tokens
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.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
site slug to copytitle· string · optionnel
display title for the new copy (defaults to source title)
Exemple d'appel{"name": "duplicate_site", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - export_account≈ 130 tokens
Return a JSON bundle of the user's profile, sites, Site Data, drives, and metadata (secrets excluded). Data portability.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "export_account", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - feature_site≈ 186 tokens
Toggle whether an owned, public site appears in the public shiply Explore gallery (https://shiply.now/explore). Only public-access sites are eligible.
Paramètres, retour & exemple (2)
Paramètresshow· boolean · requis
true to feature on Explore, false to removeslug· string · requis
owned, public site slug
Exemple d'appel{"name": "feature_site", "arguments": {"show": true, "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - forward_thread≈ 410 tokens
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>'.
Paramètres, retour & exemple (5)
Paramètresto· string · requis
new recipient email addressnote· string · optionnel
intro note prepended above the forwarded quotesubject· string · optionnel
subject; defaults to 'Fwd: <original>'threadId· string · requis
thread id from list_inbox to forward frommessageId· string · optionnel
specific message to forward (default: most recent)
Exemple d'appel{"name": "forward_thread", "arguments": {"to": "texte", "threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_account_status≈ 243 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_account_status", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_analytics≈ 96 tokens
Daily page views per site for the last 30 days.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_analytics", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_connect_status≈ 177 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_connect_status", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_function≈ 151 tokens
Return the deployed function source + metadata for a site, or null if no function deployed.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug whose function to fetch
Exemple d'appel{"name": "get_function", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_function_logs≈ 277 tokens
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.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
site slug whose function logs to readlimit· integer · optionnel
max events to return (default 50)since· integer · optionnel
look back this many minutes (default 60, max 10080 = 7 days)
Exemple d'appel{"name": "get_function_logs", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_project≈ 210 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
project id
Exemple d'appel{"name": "get_project", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_site≈ 132 tokens
Site settings + version history for one of my sites.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug, e.g. my-site
Exemple d'appel{"name": "get_site", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_site_access≈ 169 tokens
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.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
owned site slug
Exemple d'appel{"name": "get_site_access", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_test_status≈ 186 tokens
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.
Paramètres, retour & exemple (1)
ParamètrestestId· string · requis
demand test id from create_test / list_tests
Exemple d'appel{"name": "get_test_status", "arguments": {"testId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_complaints≈ 132 tokens
Return threads tagged as complaints (spam reports) OR bounces (recipient rejected). Read these before any further sending.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_complaints", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_crons≈ 150 tokens
List cron triggers for a site's deployed function. Each cron is (path, schedule, lastRunAt).
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug whose cron triggers to list
Exemple d'appel{"name": "list_crons", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_custom_domains≈ 131 tokens
List registered custom domains grouped with their subdomains, each subdomain's site and status, and the detected provider.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_custom_domains", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_databases≈ 176 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_databases", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_domains≈ 96 tokens
List connected custom domains with status.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_domains", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_drives≈ 190 tokens
List the user's private cloud Drives (id, name). Optional clientId filters to one client.
Paramètres, retour & exemple (1)
ParamètresclientId· string · optionnel
only drives filed under this client
Exemple d'appel{"name": "list_drives", "arguments": {"clientId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_inbox≈ 226 tokens
List the user's email inbox threads (outbound demand-test sends + inbound replies / unsubscribes / complaints / bounces). Filter by tag.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
max threads to return, ≤200filter· string · optionnel · all | unread | replies | unsubscribes | complaints | bounces
default alloffset· integer · optionnel
number of threads to skip (pagination)
Exemple d'appel{"name": "list_inbox", "arguments": {"limit": 1, "filter": "all", "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_listings≈ 145 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_listings", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_mailbox_contacts≈ 229 tokens
List captured contacts for a (site, collection) mailbox, optionally filtered by status (signed_up/confirmed/unsubscribed). Returns email, status, confirmedAt, createdAt, and captured fields.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
site slug the mailbox belongs tostatus· string · optionnel · signed_up | confirmed | unsubscribed
filter contacts by statuscollection· string · requis
mailbox collection name
Exemple d'appel{"name": "list_mailbox_contacts", "arguments": {"slug": "texte", "collection": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_my_orders≈ 187 tokens
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.
Paramètres, retour & exemple (1)
Paramètreslimit· integer · optionnel
max orders to return (default 100, max 500)
Exemple d'appel{"name": "list_my_orders", "arguments": {"limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_my_sales≈ 190 tokens
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).
Paramètres, retour & exemple (1)
Paramètreslimit· integer · optionnel
max orders to return (default 100, max 500)
Exemple d'appel{"name": "list_my_sales", "arguments": {"limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_project_files≈ 228 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
project id whose uploaded files to list
Exemple d'appel{"name": "list_project_files", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_projects≈ 332 tokens
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.
Paramètres, retour & exemple (4)
Paramètresq· string · optionnel
case-insensitive match on label or customer emaillimit· integer · optionnel
max projects to return (default 100)status· string · optionnel · draft | intake_open | brief_ready | brief_failed | archived
filter by project statusclientId· string · optionnel
only projects filed under this client
Exemple d'appel{"name": "list_projects", "arguments": {"q": "texte", "limit": 1, "status": "draft", "clientId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_secrets≈ 145 tokens
List secret names (values not returned) for a site's deployed function.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug whose secret names to list
Exemple d'appel{"name": "list_secrets", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_sending_domains≈ 152 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_sending_domains", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_site_inbox≈ 154 tokens
Read the email threads (received, sent, web captures) for the agent's sites. Optionally scoped to one site by slug.
Paramètres, retour & exemple (1)
Paramètresslug· string · optionnel
limit to one site by slug; omit for all sites
Exemple d'appel{"name": "list_site_inbox", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_site_variables≈ 147 tokens
Names of the variables attached to an owned site's Worker env (values never shown here).
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
owned site slug
Exemple d'appel{"name": "list_site_variables", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_sites≈ 187 tokens
List the sites owned by this API key. Optional clientId filters to one client.
Paramètres, retour & exemple (1)
ParamètresclientId· string · optionnel
only sites filed under this client
Exemple d'appel{"name": "list_sites", "arguments": {"clientId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_suppressions≈ 148 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_suppressions", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_test_inbox_addresses≈ 172 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_test_inbox_addresses", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_tests≈ 112 tokens
List your demand tests with signups + confirmed counts.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_tests", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_unsubscribes≈ 150 tokens
Shortcut for list_inbox with filter=unsubscribes — shows every thread tagged as an opt-out request.
Paramètres, retour & exemple (1)
Paramètreslimit· integer · optionnel
max threads to return, ≤200
Exemple d'appel{"name": "list_unsubscribes", "arguments": {"limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_variables≈ 137 tokens
List the encrypted variables. Values are masked unless reveal=true.
Paramètres, retour & exemple (1)
Paramètresreveal· boolean · optionnel
return plaintext values instead of masked
Exemple d'appel{"name": "list_variables", "arguments": {"reveal": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_versions≈ 170 tokens
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.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug to list deploys for
Exemple d'appel{"name": "list_versions", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - mark_thread_read≈ 182 tokens
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.
Paramètres, retour & exemple (1)
ParamètresthreadId· string · requis
thread id from list_inbox to mark read
Exemple d'appel{"name": "mark_thread_read", "arguments": {"threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - promote_site≈ 188 tokens
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.
Paramètres, retour & exemple (2)
ParamètressrcSlug· string · requisdestSlug· string · requis
Exemple d'appel{"name": "promote_site", "arguments": {"srcSlug": "texte", "destSlug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - publish_from_drive≈ 197 tokens
Snapshot a Drive (or a prefix of it) into a new live site at <slug>.shiply.now. Files copied server-side.
Paramètres, retour & exemple (3)
Paramètrestitle· string · optionnel
display title for the new siteprefix· string · optionnel
only snapshot files under this path prefixdriveId· string · requis
drive id (drv_…) or "default"
Exemple d'appel{"name": "publish_from_drive", "arguments": {"driveId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - publish_site≈ 724 tokens
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.
Paramètres, retour & exemple (7)
Paramètresslug· string · optionnel
UPDATE an existing site you own (requires Bearer key)files· array · requis
site files; index.html required for a homepagetitle· string · optionnel
display title for the siteclient· object · optionnel
optional: file this under a client (the publish/site is grouped in their customer view)spaMode· boolean · optionnel
serve index.html for unknown paths (client-side routing)agentName· string · optionnel
label shown during the automatic account re-auth flowclaimToken· string · optionnel
UPDATE an existing anonymous site (from the original publish result)
Exemple d'appel{"name": "publish_site", "arguments": {"files": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - pull_site≈ 192 tokens
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.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug to pull files for
Exemple d'appel{"name": "pull_site", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - read_thread≈ 150 tokens
Return the thread metadata + all messages in chronological order. Use list_inbox first to get a threadId.
Paramètres, retour & exemple (1)
ParamètresthreadId· string · requis
thread id from list_inbox
Exemple d'appel{"name": "read_thread", "arguments": {"threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - refund_order≈ 274 tokens
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.
Paramètres, retour & exemple (2)
Paramètresreason· string · optionnel
optional refund reasonorderId· string · requis
id of the paid order to refund (from list_my_sales)
Exemple d'appel{"name": "refund_order", "arguments": {"orderId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - regenerate_brief≈ 248 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
project id to re-run the brief for
Exemple d'appel{"name": "regenerate_brief", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_cron≈ 168 tokens
Remove a cron trigger from a site's deployed function.
Paramètres, retour & exemple (2)
Paramètrespath· string · requis
URL path of the cron to removeslug· string · requis
site slug whose cron to remove
Exemple d'appel{"name": "remove_cron", "arguments": {"path": "texte", "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_custom_domain≈ 155 tokens
Remove a registered custom domain and all its subdomains; they stop serving immediately.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
registered custom domain to remove, e.g. example.com
Exemple d'appel{"name": "remove_custom_domain", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_domain≈ 143 tokens
Remove a connected domain (by id). It stops serving immediately.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
connected domain id from list_domains
Exemple d'appel{"name": "remove_domain", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_function≈ 169 tokens
Remove the deployed Worker function from a site (and all its routes, secrets, and cron triggers). Site falls back to static-only serving. Irreversible.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
site slug whose function to remove
Exemple d'appel{"name": "remove_function", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_secret≈ 174 tokens
Remove a secret from a site's deployed function. The binding disappears on next request.
Paramètres, retour & exemple (2)
Paramètresname· string · requis
secret name to removeslug· string · requis
site slug whose function holds the secret
Exemple d'appel{"name": "remove_secret", "arguments": {"name": "texte", "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_sending_domain≈ 226 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
sending domain id from list_sending_domains
Exemple d'appel{"name": "remove_sending_domain", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - remove_suppression≈ 152 tokens
Delete one suppression by id. Use list_suppressions first to find the id.
Paramètres, retour & exemple (1)
ParamètressuppressionId· string · requis
suppression id from list_suppressions
Exemple d'appel{"name": "remove_suppression", "arguments": {"suppressionId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - reply_to_thread≈ 287 tokens
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.
Paramètres, retour & exemple (3)
Paramètresbody· string · requis
reply body, ≤20,000 charssubject· string · optionnel
subject; defaults to 'Re: <original>'threadId· string · requis
thread id from list_inbox to reply on
Exemple d'appel{"name": "reply_to_thread", "arguments": {"body": "texte", "threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - resend_confirmation≈ 180 tokens
Re-send the double-opt-in confirmation to a signup that has not confirmed yet.
Paramètres, retour & exemple (2)
Paramètresemail· string · requis
the unconfirmed signup email to re-send totestId· string · requis
demand test id the signup belongs to
Exemple d'appel{"name": "resend_confirmation", "arguments": {"email": "texte", "testId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - resend_intake_invite≈ 262 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
project id to re-send the intake invite for
Exemple d'appel{"name": "resend_intake_invite", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - restore_project≈ 224 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
archived project id to restore
Exemple d'appel{"name": "restore_project", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - rollback_site≈ 178 tokens
Re-point a site to any finalized version (rollback or roll-forward). Get version ids from get_site. Serving updates immediately.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
site slug to re-pointversionId· string · requis
finalized version id from get_site
Exemple d'appel{"name": "rollback_site", "arguments": {"slug": "texte", "versionId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - send_broadcast≈ 252 tokens
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.
Paramètres, retour & exemple (4)
Paramètreshtml· string · requis
email HTML body (unsubscribe link added automatically)text· string · optionnel
plain-text fallback bodytestId· string · requis
demand test id whose confirmed subscribers to emailsubject· string · requis
email subject line
Exemple d'appel{"name": "send_broadcast", "arguments": {"html": "texte", "testId": "texte", "subject": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - send_email≈ 291 tokens
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.
Paramètres, retour & exemple (5)
Paramètresto· string · requis
recipient email addresshtml· string · requis
email HTML bodyslug· string · requis
site slug to send from (<slug>.shiply.now sender)text· string · optionnel
plain-text fallback bodysubject· string · requis
email subject line
Exemple d'appel{"name": "send_email", "arguments": {"to": "texte", "html": "texte", "slug": "texte", "subject": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - send_mailbox_broadcast≈ 282 tokens
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.
Paramètres, retour & exemple (5)
Paramètreshtml· string · requis
email HTML body (unsubscribe footer added automatically)slug· string · requis
site slug the mailbox belongs totext· string · optionnel
plain-text fallback bodysubject· string · requis
email subject linecollection· string · requis
mailbox collection whose confirmed audience to email
Exemple d'appel{"name": "send_mailbox_broadcast", "arguments": {"html": "texte", "slug": "texte", "subject": "texte", "collection": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_cron≈ 240 tokens
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).
Paramètres, retour & exemple (3)
Paramètrespath· string · requis
URL path the cron handler fires onslug· string · requis
site slug whose function gets the cronschedule· string · requis
crontab schedule in UTC, e.g. "0 * * * *"
Exemple d'appel{"name": "set_cron", "arguments": {"path": "texte", "slug": "texte", "schedule": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_handle≈ 204 tokens
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>.)
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
current site slughandle· string · requis
new vanity handle, 3-30 chars a-z 0-9 -
Exemple d'appel{"name": "set_handle", "arguments": {"slug": "texte", "handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_link≈ 263 tokens
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.
Paramètres, retour & exemple (4)
Paramètresremove· boolean · optionnel
unmount instead of mountinghostSlug· string · requis
slug of the owned host sitelocation· string · requis
path to mount at, e.g. "docs", or "__root__" for the host roottargetSlug· string · optionnel
slug of the owned site to serve there (required unless remove=true)
Exemple d'appel{"name": "set_link", "arguments": {"hostSlug": "texte", "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_mailbox≈ 468 tokens
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.
Paramètres, retour & exemple (7)
Paramètresslug· string · requis
site slug the collection belongs tobranding· object · optionnel
branding applied to mailbox emailsnotifyTo· string · optionnel
address to send owner notifications tocollection· string · requis
Site Data collection to turn into a mailboxdoubleOptIn· boolean · optionnel
require email confirmation before a contact is activenotifyOwner· boolean · optionnel
email the owner on each new capturesendingDomainId· string · optionnel
BYO sending domain id to send from
Exemple d'appel{"name": "set_mailbox", "arguments": {"slug": "texte", "collection": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_primary_subdomain≈ 248 tokens
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.
Paramètres, retour & exemple (2)
Paramètresdomain· string · requis
registered custom domain, e.g. example.comhostname· string · requis
full hostname to make primary, e.g. www.example.com
Exemple d'appel{"name": "set_primary_subdomain", "arguments": {"domain": "texte", "hostname": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_profile≈ 295 tokens
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 give one site a vanity URL like <handle>.shiply.now, use set_handle instead. enable shows the profile; autoAdd auto-lists new sites. Use after publishing to give the user a shareable portfolio.
Paramètres, retour & exemple (3)
Paramètresenable· boolean · optionnel
show (true) or hide (false) the public profilehandle· string · optionnel
public portfolio handle, 3-30 chars a-z 0-9 -; portfolio lives at shiply.now/@<handle> (a page listing your sites — not a site URL; for a site vanity URL use set_handle)autoAdd· boolean · optionnel
auto-list newly published sites on the profile
Exemple d'appel{"name": "set_profile", "arguments": {"enable": true, "handle": "texte", "autoAdd": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_secret≈ 244 tokens
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.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
secret name, UPPER_SNAKE_CASE; available as env.<NAME>slug· string · requis
site slug whose function gets the secretvalue· string · requis
secret value (encrypted at rest), ≤8 KiB
Exemple d'appel{"name": "set_secret", "arguments": {"name": "texte", "slug": "texte", "value": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_site_access≈ 317 tokens
Protect an owned site (paid plans). mode 'public' (anyone), 'password' (supply password), or 'restricted' (supply allowedEmails and/or allowedDomains — only those can request a login code). Changing any setting signs out existing visitors.
Paramètres, retour & exemple (5)
Paramètresmode· string · requis · public | password | restricted
public = anyone; password = supply password; restricted = supply allowedEmails/allowedDomainsslug· string · requis
owned site slug to protectpassword· string · optionnel
required when mode='password'allowedEmails· array · optionnel
allowlisted emails when mode='restricted'allowedDomains· array · optionnel
allowlisted email domains when mode='restricted'
Exemple d'appel{"name": "set_site_access", "arguments": {"mode": "public", "slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_variable≈ 234 tokens
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 does NOT expose it to any site Worker's env — attach it to a specific site with attach_variable (takes effect on that site's next function deploy).
Paramètres, retour & exemple (2)
Paramètresname· string · requis
variable name, UPPER_SNAKE_CASE, e.g. SUPABASE_URLvalue· string · requis
value to store (encrypted, ≤8 KiB)
Exemple d'appel{"name": "set_variable", "arguments": {"name": "texte", "value": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - site_status≈ 162 tokens
Check any shiply slug or custom hostname: TLS certificate (issuer, days left) + HTTPS probe. ready=true means live.
Paramètres, retour & exemple (1)
Paramètrestarget· string · requis
slug (my-site) or hostname (www.example.com)
Exemple d'appel{"name": "site_status", "arguments": {"target": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - summarize_thread≈ 163 tokens
One-paragraph summary of the thread, oriented to the most actionable signal (interest, complaint, question, unsubscribe).
Paramètres, retour & exemple (1)
ParamètresthreadId· string · requis
thread id from list_inbox
Exemple d'appel{"name": "summarize_thread", "arguments": {"threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - sync_dns≈ 179 tokens
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 manually.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
registered custom domain to sync, e.g. example.com
Exemple d'appel{"name": "sync_dns", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - unarchive_thread≈ 166 tokens
Restore an archived thread (clears archivedAt). It reappears in the default inbox list. Pair with list_inbox filter=archived to find archived threadIds first.
Paramètres, retour & exemple (1)
ParamètresthreadId· string · requis
archived thread id to restore
Exemple d'appel{"name": "unarchive_thread", "arguments": {"threadId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - update_brief≈ 270 tokens
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 briefAiOriginal so you can always compare. Does not change status.
Paramètres, retour & exemple (2)
Paramètresid· string · requis
project idbrief· object · requis
the full replacement brief object (jsonb, ≤500 KB)
Exemple d'appel{"name": "update_brief", "arguments": {"id": "texte", "brief": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - update_listing≈ 372 tokens
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 to pause sales or drop the price.
Paramètres, retour & exemple (7)
Paramètrespitch· ? · optionnel
new sales pitch (null to clear)status· string · optionnel · draft | live | paused
new listing statussiteSlug· string · requis
slug of the listed site to patchtermsMode· string · optionnel · standard | custom
'standard' template or 'custom' termspriceCents· integer · optionnel
new whole-dollar price in cents, 100–999900termsCustom· ? · optionnel
new custom terms text (null to clear)jurisdiction· string · optionnel
governing jurisdiction, e.g. 'California, USA'
Exemple d'appel{"name": "update_listing", "arguments": {"siteSlug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - verify_claim≈ 243 tokens
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 claimToken from .shiply.json in the current working directory and proves to Shiply that this agent session is authorised to claim the site. After verification the user is auto-redirected to /welcome and the site binds to their account.
Paramètres, retour & exemple (1)
Paramètrescode· string · requis
the SHIPLY-XXXXXXXX code in the user's browser
Exemple d'appel{"name": "verify_claim", "arguments": {"code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - verify_sending_domain≈ 238 tokens
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 + DKIM + MX all check out.
Paramètres, retour & exemple (1)
Paramètresid· string · requis
sending domain id from list_sending_domains
Exemple d'appel{"name": "verify_sending_domain", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - verify_site≈ 200 tokens
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 thumbnail URL when available. Use this after publishing to confirm the site is reachable.
Paramètres, retour & exemple (1)
Paramètrestarget· string · requis
slug (my-site) or hostname (www.example.com)
Exemple d'appel{"name": "verify_site", "arguments": {"target": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - whoami≈ 145 tokens
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 or domains.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "whoami", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».