Servidor MCP

shiply

now.shiply/shiply

Qué hace este MCP

Publishes and manages web applications with SQL databases, serverless functions, domains, email tests, client intake, contracts, data collections, and deployment configuration.

add_custom_domain
Register a custom domain
Register a registrable domain (e.g. example.com) the user owns and detect its DNS provider. Returns the provider and whether one-click connect is available. Then attach sites with add_subdomain.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'registrable domain you own, e.g. example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
add_domain
Connect a custom domain
Serve a site on a domain the user owns. Returns the CNAME to add (hostname → cname.shiply.now); the certificate issues automatically once DNS resolves. Poll with check_domain.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hostname', 'slug'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug to serve there'}, 'hostname': {'type': 'string', 'description': 'full hostname to serve, e.g. www.example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
add_sending_domain
Add a sending domain
Register a domain the user owns for outbound demand-test sends. Returns DNS records (SPF, DKIM, MX) to add at the DNS provider. After DNS propagates, call verify_sending_domain. Cannot be a shiply.now subdomain.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'e.g. mail.yourbrand.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
add_subdomain
Point a subdomain at a site
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.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'subdomain', 'slug'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug to serve there'}, 'domain': {'type': 'string', 'description': 'registrable parent domain, e.g. example.com'}, 'subdomain': {'type': 'string', 'description': 'subdomain label, or "@"/"" for the apex'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
add_suppression
Suppress an email or domain
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind', 'value'], 'properties': {'kind': {'enum': ['email', 'domain'], 'type': 'string', 'description': "'email' for one address, 'domain' for everyone @example.com"}, 'notes': {'type': 'string', 'description': 'optional reason / note for the suppression'}, 'value': {'type': 'string', 'description': "e.g. 'spammy@example.com' or 'competitor.com'"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
archive_project
Archive a project
Move a project to status='archived'. Hidden from the default dashboard list. Optional reason is shown on the project page. Restore later with restore_project.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'project id to archive'}, 'reason': {'type': 'string', 'maxLength': 500, 'description': 'optional reason shown on the project page'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
archive_thread
Archive a thread
Soft-archive the thread (sets archivedAt). Hidden from the default inbox view; surface again with list_inbox filter=archived. Reverse with unarchive_thread.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId'], 'properties': {'threadId': {'type': 'string', 'description': 'thread id from list_inbox to archive'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
attach_database
Attach a database to a site
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'siteSlug'], 'properties': {'id': {'type': 'string', 'description': 'database id (from list_databases)'}, 'siteSlug': {'type': 'string', 'description': 'owned site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
attach_variable
Attach a variable to a site
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string', 'description': 'variable name to attach, e.g. SUPABASE_URL'}, 'slug': {'type': 'string', 'description': 'owned site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
check_custom_domain
Check a custom domain
Check whether a custom domain's subdomains are live: re-polls Cloudflare cert status + probes DNS/TLS/HTTPS on each subdomain. Poll this after connect_provider / add_subdomain to confirm the domain is serving. Returns per-subdomain status + tls + http + ready.
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'registered custom domain to check, e.g. example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
check_domain
Check a custom domain
Refresh certificate status + live TLS/HTTPS probe for a connected domain (by id from list_domains).
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'connected domain id from list_domains'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
connect_provider
Connect the domain's DNS provider
Start one-click DNS connect for a registered custom domain. For Cloudflare-hosted domains this returns an authorize URL — SHOW THE USER the url as a clickable link; after they authorize, records are written automatically. For other providers, add the records manually.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'registered custom domain to connect, e.g. example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
contract_amend
Create an amendment to a signed contract
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).
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['parentContractId', 'scopeDelta'], 'properties': {'scopeDelta': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': "What's changing â\x80\x94 visible to customer."}, 'feeDeltaCents': {'type': 'integer', 'maximum': 1000000000, 'minimum': -1000000000, 'description': 'Optional fee adjustment in cents. Can be negative for descope.'}, 'parentContractId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'id of the SIGNED parent contract to amend'}, 'targetCompletionDate': {'type': 'string', 'description': 'Optional ISO date (YYYY-MM-DD) for revised completion.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
contract_draft
Draft a contract from a brief_ready project
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project to draft a contract for'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
contract_pdf
Get the signed contract PDF (base64)
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contractId'], 'properties': {'contractId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'signed contract id (parent or amendment) to render as PDF'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
contract_send
Send a draft contract to the customer
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contractId'], 'properties': {'contractId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'draft contract id to send (from contract_draft)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
contract_status
Read contract state + amendments
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}.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contractId'], 'properties': {'contractId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'contract id to read state for'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_database
Create a database
Provision a SQL database — D1 (default, free) or Neon Postgres (--postgres, developer plan). Optionally attach it to an owned site's Worker env in the same call (siteSlug); otherwise attach it later with attach_database.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'database name, a-z 0-9 -, 2-63 chars'}, 'binding': {'type': 'string', 'description': 'Worker binding name, UPPER_SNAKE (defaults to a name derived from `name`)'}, 'provider': {'enum': ['d1', 'neon'], 'type': 'string', 'description': 'defaults to d1'}, 'siteSlug': {'type': 'string', 'description': 'owned site slug to attach immediately'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_drive
Create a drive
Create a private cloud Drive (plan-limited). Pass client to file it under a client.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'display name for the new drive'}, 'client': {'type': 'object', 'properties': {'clientId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'an existing client id (skips lookup)'}, 'clientName': {'type': 'string', 'description': "client's name (used when creating)"}, 'clientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'client email â\x80\x94 create-or-find by this'}, 'clientCompany': {'type': 'string', 'description': "client's company (used when creating)"}}, 'description': 'optional: file this under a client (the publish/site is grouped in their customer view)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_listing
List one of my sites for sale
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').
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['siteSlug', 'priceCents', 'termsMode', 'jurisdiction'], 'properties': {'pitch': {'type': 'string', 'maxLength': 280, 'description': 'short sales pitch, â\x89¤280 chars'}, 'status': {'enum': ['draft', 'live'], 'type': 'string', 'description': 'publish state (default draft)'}, 'siteSlug': {'type': 'string', 'description': 'slug of the owned site to list'}, 'termsMode': {'enum': ['standard', 'custom'], 'type': 'string', 'description': "'standard' uses shiply's template; 'custom' requires termsCustom"}, 'priceCents': {'type': 'integer', 'maximum': 999900, 'minimum': 100, 'description': 'whole-dollar price in cents, 100â\x80\x93999900'}, 'termsCustom': {'type': 'string', 'maxLength': 20000, 'description': "custom terms text, â\x89¥50 chars, required when termsMode='custom'"}, 'jurisdiction': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': "governing jurisdiction, e.g. 'California, USA'"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_project
Create a client-intake project
Spin up a new customer-intake project on the dev's account. Returns the project row plus intakeUrl — the public link the customer fills out (10-step wizard). If customerEmail is provided, shiply also emails them the intake invite. Use originatedFromSiteId to link a project to an existing site (e.g. 'redesign this site').
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['label'], 'properties': {'label': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'project name shown in the dev dashboard'}, 'customerName': {'type': 'string', 'maxLength': 200, 'description': "the customer's name"}, 'customerEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 320, 'description': 'customer email; if set, shiply emails them the intake invite'}, 'originatedFromSiteId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'link this project to an existing site (e.g. a redesign)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_test
Create an email demand test
Provision a demand test in one call: deploys a landing page with a native email-capture form and creates a confirmed-subscriber segment. Returns testId + live siteUrl. Share the siteUrl to collect signups; each signup gets a double-opt-in confirmation. Read progress with get_test_status.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['idea', 'headline'], 'properties': {'cta': {'type': 'string', 'description': 'call-to-action button label'}, 'sub': {'type': 'string', 'description': 'subheadline / supporting line'}, 'idea': {'type': 'string', 'description': 'the product/idea name'}, 'price': {'type': 'string', 'description': 'price to display, e.g. "$29/mo"'}, 'headline': {'type': 'string', 'description': 'landing-page headline'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
data_export_collection
Export records (capped)
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>`.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'collection'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug'}, 'limit': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'description': 'max records to return (default 1000, max 5000)'}, 'collection': {'type': 'string', 'description': 'collection name to export'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
data_insert
Insert a record into a collection
Insert one record into a collection. Goes through the same public visitor endpoint a browser would use — manifest access.insert decides whether it is allowed. Use to seed waitlist data, test forms end-to-end, etc.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'collection', 'record'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug'}, 'record': {'type': 'object', 'description': 'the record fields to insert as key/value pairs', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'collection': {'type': 'string', 'description': 'collection name to insert into'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
data_list_collections
List Site Data collections
List collections declared in an owned site's .shiply/data.json with current record counts. Empty list means the site has no manifest yet — scaffold one with `shiply data init`.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
data_query
Query records from a collection
Page records from an owned site's collection, newest-first. limit ≤ 200 (default 50). cursor from a previous response's nextCursor.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'collection'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'max records to return, â\x89¤200 (default 50)'}, 'cursor': {'type': 'string', 'description': "nextCursor from a previous response's page"}, 'collection': {'type': 'string', 'description': 'collection name from data_list_collections'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_database
Delete a database
PERMANENTLY delete a database and all its data. Irreversible — confirm with the user first.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'database id (from list_databases)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_listing
Unpublish a listing (set to draft)
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.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['siteSlug'], 'properties': {'siteSlug': {'type': 'string', 'description': 'slug of the listed site to unpublish'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_site
Delete a site
PERMANENTLY delete a site and all stored files. Irreversible — confirm with the user first.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug to delete'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_variable
Delete a variable
Remove one variable by name.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'variable name to delete'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
deploy_function
Deploy a Worker function to a site
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'source'], 'properties': {'lang': {'enum': ['js', 'ts'], 'type': 'string', 'description': 'source language (default js)'}, 'slug': {'type': 'string', 'description': 'site slug to deploy the function to'}, 'crons': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'schedule'], 'properties': {'path': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'URL path the cron handler fires on'}, 'schedule': {'type': 'string', 'maxLength': 60, 'minLength': 9, 'description': 'crontab schedule in UTC, e.g. "0 * * * *"'}}}, 'maxItems': 20, 'description': 'cron triggers to register, â\x89¤20'}, 'source': {'type': 'string', 'maxLength': 1500000, 'minLength': 1, 'description': 'the Worker source code'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
detach_variable
Detach a variable from a site
Stop exposing a variable to a site's Worker env. Takes effect on the site's next function deploy.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string', 'description': 'variable name to detach'}, 'slug': {'type': 'string', 'description': 'owned site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
drive_delete_file
Delete a drive file
Delete a file from a Drive.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['driveId', 'path'], 'properties': {'path': {'type': 'string', 'description': 'path of the file to delete'}, 'driveId': {'type': 'string', 'description': 'drive id (drv_â\x80¦) or "default"'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
drive_list_files
List drive files
List files in a Drive (driveId = drv_…, or "default"). Optional prefix filter.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['driveId'], 'properties': {'prefix': {'type': 'string', 'description': 'only list files under this path prefix'}, 'driveId': {'type': 'string', 'description': 'drive id (drv_â\x80¦) or "default"'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
drive_put_file
Write a drive file
Write a file into a Drive (driveId = drv_… or "default"). content is utf8 or base64. Use for agent memory, notes, context, assets.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['driveId', 'path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'destination path inside the drive, e.g. notes/context.md'}, 'content': {'type': 'string', 'description': 'file contents (utf8 text, or base64 when encoding=base64)'}, 'driveId': {'type': 'string', 'description': 'drive id (drv_â\x80¦) or "default"'}, 'encoding': {'enum': ['utf8', 'base64'], 'type': 'string', 'description': 'default utf8; base64 for binary'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
duplicate_site
Duplicate a site
Server-side copy of an owned site under a new slug — instantly live. Copies files + title; does NOT copy access settings, domains, or data. Great for iterating on variants.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug to copy'}, 'title': {'type': 'string', 'description': 'display title for the new copy (defaults to source title)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
export_account
Export account data
Return a JSON bundle of the user's profile, sites, Site Data, drives, and metadata (secrets excluded). Data portability.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
feature_site
Feature a site on Explore
Toggle whether an owned, public site appears in the public shiply Explore gallery (https://shiply.now/explore). Only public-access sites are eligible.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'show'], 'properties': {'show': {'type': 'boolean', 'description': 'true to feature on Explore, false to remove'}, 'slug': {'type': 'string', 'description': 'owned, public site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
forward_thread
Forward an inbox message to a new recipient
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>'.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId', 'to'], 'properties': {'to': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'new recipient email address'}, 'note': {'type': 'string', 'maxLength': 5000, 'description': 'intro note prepended above the forwarded quote'}, 'subject': {'type': 'string', 'maxLength': 200, 'description': "subject; defaults to 'Fwd: <original>'"}, 'threadId': {'type': 'string', 'description': 'thread id from list_inbox to forward from'}, 'messageId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'specific message to forward (default: most recent)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_account_status
Account plan + capability matrix
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_analytics
Site analytics
Daily page views per site for the last 30 days.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_connect_status
Stripe Connect onboarding status
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_function
Get the deployed function for a site
Return the deployed function source + metadata for a site, or null if no function deployed.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug whose function to fetch'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_function_logs
Read recent function logs
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug whose function logs to read'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'max events to return (default 50)'}, 'since': {'type': 'integer', 'maximum': 10080, 'minimum': 1, 'description': 'look back this many minutes (default 60, max 10080 = 7 days)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_project
Get one project (full row)
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'project id'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_site
Site detail
Site settings + version history for one of my sites.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug, e.g. my-site'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_site_access
Read site access control
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_test_status
Demand test status (the verdict)
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId'], 'properties': {'testId': {'type': 'string', 'description': 'demand test id from create_test / list_tests'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_complaints
List complaints + bounces
Return threads tagged as complaints (spam reports) OR bounces (recipient rejected). Read these before any further sending.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_crons
List cron triggers for a site
List cron triggers for a site's deployed function. Each cron is (path, schedule, lastRunAt).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug whose cron triggers to list'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_custom_domains
List custom domains
List registered custom domains grouped with their subdomains, each subdomain's site and status, and the detected provider.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_databases
List my databases
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_domains
List custom domains
List connected custom domains with status.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_drives
List drives
List the user's private cloud Drives (id, name). Optional clientId filters to one client.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'clientId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'only drives filed under this client'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_inbox
List inbox threads
List the user's email inbox threads (outbound demand-test sends + inbound replies / unsubscribes / complaints / bounces). Filter by tag.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'max threads to return, â\x89¤200'}, 'filter': {'enum': ['all', 'unread', 'replies', 'unsubscribes', 'complaints', 'bounces'], 'type': 'string', 'description': 'default all'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'number of threads to skip (pagination)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_listings
List my marketplace listings
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_mailbox_contacts
List a mailbox's contacts
List captured contacts for a (site, collection) mailbox, optionally filtered by status (signed_up/confirmed/unsubscribed). Returns email, status, confirmedAt, createdAt, and captured fields.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'collection'], 'properties': {'slug': {'type': 'string', 'description': 'site slug the mailbox belongs to'}, 'status': {'enum': ['signed_up', 'confirmed', 'unsubscribed'], 'type': 'string', 'description': 'filter contacts by status'}, 'collection': {'type': 'string', 'description': 'mailbox collection name'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_my_orders
List orders where I am the buyer
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'max orders to return (default 100, max 500)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_my_sales
List orders where I am the seller
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).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'max orders to return (default 100, max 500)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_project_files
List files uploaded to a project
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'project id whose uploaded files to list'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_projects
List my client-intake projects
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'q': {'type': 'string', 'description': 'case-insensitive match on label or customer email'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'max projects to return (default 100)'}, 'status': {'enum': ['draft', 'intake_open', 'brief_ready', 'brief_failed', 'archived'], 'type': 'string', 'description': 'filter by project status'}, 'clientId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'only projects filed under this client'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_secrets
List secret names for a site
List secret names (values not returned) for a site's deployed function.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug whose secret names to list'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_sending_domains
List my sending domains
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_site_inbox
List a site's email inbox threads
Read the email threads (received, sent, web captures) for the agent's sites. Optionally scoped to one site by slug.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'slug': {'type': 'string', 'description': 'limit to one site by slug; omit for all sites'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_sites
List my sites
List the sites owned by this API key. Optional clientId filters to one client.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'clientId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'only sites filed under this client'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_site_variables
List variables attached to a site
Names of the variables attached to an owned site's Worker env (values never shown here).
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'owned site slug'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_suppressions
List suppressed emails / domains
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_test_inbox_addresses
List per-test inbox addresses
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_tests
List demand tests
List your demand tests with signups + confirmed counts.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_unsubscribes
List unsubscribes
Shortcut for list_inbox with filter=unsubscribes — shows every thread tagged as an opt-out request.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'max threads to return, â\x89¤200'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_variables
List variables
List the encrypted variables. Values are masked unless reveal=true.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'reveal': {'type': 'boolean', 'description': 'return plaintext values instead of masked'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_versions
List a site's deploys
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug to list deploys for'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
mark_thread_read
Mark a thread read
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId'], 'properties': {'threadId': {'type': 'string', 'description': 'thread id from list_inbox to mark read'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
promote_site
Promote a preview to a production site
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['srcSlug', 'destSlug'], 'properties': {'srcSlug': {'type': 'string'}, 'destSlug': {'type': 'string'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
publish_from_drive
Publish a drive as a site
Snapshot a Drive (or a prefix of it) into a new live site at <slug>.shiply.now. Files copied server-side.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['driveId'], 'properties': {'title': {'type': 'string', 'description': 'display title for the new site'}, 'prefix': {'type': 'string', 'description': 'only snapshot files under this path prefix'}, 'driveId': {'type': 'string', 'description': 'drive id (drv_â\x80¦) or "default"'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
publish_site
Publish a site
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['files'], 'properties': {'slug': {'type': 'string', 'description': 'UPDATE an existing site you own (requires Bearer key)'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'relative path, e.g. index.html'}, 'content': {'type': 'string', 'description': 'file contents (utf8 text, or base64 when encoding=base64)'}, 'encoding': {'enum': ['utf8', 'base64'], 'type': 'string', 'description': 'default utf8; base64 for binary'}}}, 'description': 'site files; index.html required for a homepage'}, 'title': {'type': 'string', 'description': 'display title for the site'}, 'client': {'type': 'object', 'properties': {'clientId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'an existing client id (skips lookup)'}, 'clientName': {'type': 'string', 'description': "client's name (used when creating)"}, 'clientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'client email â\x80\x94 create-or-find by this'}, 'clientCompany': {'type': 'string', 'description': "client's company (used when creating)"}}, 'description': 'optional: file this under a client (the publish/site is grouped in their customer view)'}, 'spaMode': {'type': 'boolean', 'description': 'serve index.html for unknown paths (client-side routing)'}, 'agentName': {'type': 'string', 'description': 'label shown during the automatic account re-auth flow'}, 'claimToken': {'type': 'string', 'description': 'UPDATE an existing anonymous site (from the original publish result)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
pull_site
Pull a site's current files
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug to pull files for'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
read_thread
Read an inbox thread
Return the thread metadata + all messages in chronological order. Use list_inbox first to get a threadId.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId'], 'properties': {'threadId': {'type': 'string', 'description': 'thread id from list_inbox'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
refund_order
Refund one of my sales
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.
Destructivo Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orderId'], 'properties': {'reason': {'type': 'string', 'maxLength': 500, 'description': 'optional refund reason'}, 'orderId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'id of the paid order to refund (from list_my_sales)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
regenerate_brief
Re-run AI brief generation
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'project id to re-run the brief for'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_cron
Remove a cron trigger
Remove a cron trigger from a site's deployed function.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'path'], 'properties': {'path': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'URL path of the cron to remove'}, 'slug': {'type': 'string', 'description': 'site slug whose cron to remove'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_custom_domain
Remove a custom domain
Remove a registered custom domain and all its subdomains; they stop serving immediately.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'registered custom domain to remove, e.g. example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_domain
Disconnect a custom domain
Remove a connected domain (by id). It stops serving immediately.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'connected domain id from list_domains'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_function
Remove the deployed function from a site
Remove the deployed Worker function from a site (and all its routes, secrets, and cron triggers). Site falls back to static-only serving. Irreversible.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'site slug whose function to remove'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_secret
Remove a secret from a site
Remove a secret from a site's deployed function. The binding disappears on next request.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 80, 'description': 'secret name to remove'}, 'slug': {'type': 'string', 'description': 'site slug whose function holds the secret'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_sending_domain
Remove a sending domain
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.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'sending domain id from list_sending_domains'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
remove_suppression
Remove from suppression list
Delete one suppression by id. Use list_suppressions first to find the id.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['suppressionId'], 'properties': {'suppressionId': {'type': 'string', 'description': 'suppression id from list_suppressions'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
reply_to_thread
Reply to an inbox thread
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'reply body, â\x89¤20,000 chars'}, 'subject': {'type': 'string', 'maxLength': 200, 'description': "subject; defaults to 'Re: <original>'"}, 'threadId': {'type': 'string', 'description': 'thread id from list_inbox to reply on'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
resend_confirmation
Resend a confirmation email
Re-send the double-opt-in confirmation to a signup that has not confirmed yet.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'email'], 'properties': {'email': {'type': 'string', 'description': 'the unconfirmed signup email to re-send to'}, 'testId': {'type': 'string', 'description': 'demand test id the signup belongs to'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
resend_intake_invite
Re-send the customer intake invite email
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'project id to re-send the intake invite for'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
restore_project
Restore an archived project
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'archived project id to restore'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
rollback_site
Roll back a site
Re-point a site to any finalized version (rollback or roll-forward). Get version ids from get_site. Serving updates immediately.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'versionId'], 'properties': {'slug': {'type': 'string', 'description': 'site slug to re-point'}, 'versionId': {'type': 'string', 'description': 'finalized version id from get_site'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
send_broadcast
Broadcast to confirmed subscribers
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['testId', 'subject', 'html'], 'properties': {'html': {'type': 'string', 'description': 'email HTML body (unsubscribe link added automatically)'}, 'text': {'type': 'string', 'description': 'plain-text fallback body'}, 'testId': {'type': 'string', 'description': 'demand test id whose confirmed subscribers to email'}, 'subject': {'type': 'string', 'description': 'email subject line'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
send_email
Send an email from a site
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'to', 'subject', 'html'], 'properties': {'to': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'recipient email address'}, 'html': {'type': 'string', 'description': 'email HTML body'}, 'slug': {'type': 'string', 'description': 'site slug to send from (<slug>.shiply.now sender)'}, 'text': {'type': 'string', 'description': 'plain-text fallback body'}, 'subject': {'type': 'string', 'description': 'email subject line'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
send_mailbox_broadcast
Broadcast to a mailbox's confirmed audience
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'collection', 'subject', 'html'], 'properties': {'html': {'type': 'string', 'description': 'email HTML body (unsubscribe footer added automatically)'}, 'slug': {'type': 'string', 'description': 'site slug the mailbox belongs to'}, 'text': {'type': 'string', 'description': 'plain-text fallback body'}, 'subject': {'type': 'string', 'description': 'email subject line'}, 'collection': {'type': 'string', 'description': 'mailbox collection whose confirmed audience to email'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_cron
Set or update a cron trigger
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).
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'path', 'schedule'], 'properties': {'path': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'URL path the cron handler fires on'}, 'slug': {'type': 'string', 'description': 'site slug whose function gets the cron'}, 'schedule': {'type': 'string', 'maxLength': 60, 'minLength': 9, 'description': 'crontab schedule in UTC, e.g. "0 * * * *"'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_handle
Set a vanity handle
Give ONE site a vanity URL: rename it to <handle>.shiply.now (3-30 chars, a-z 0-9 -). The old address 301-redirects for 30 days. (For a portfolio page listing all your sites, use set_profile instead — that lives at shiply.now/@<handle>.)
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'handle'], 'properties': {'slug': {'type': 'string', 'description': 'current site slug'}, 'handle': {'type': 'string', 'description': 'new vanity handle, 3-30 chars a-z 0-9 -'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_link
Mount a site at a path
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hostSlug', 'location'], 'properties': {'remove': {'type': 'boolean', 'description': 'unmount instead of mounting'}, 'hostSlug': {'type': 'string', 'description': 'slug of the owned host site'}, 'location': {'type': 'string', 'description': 'path to mount at, e.g. "docs", or "__root__" for the host root'}, 'targetSlug': {'type': 'string', 'description': 'slug of the owned site to serve there (required unless remove=true)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_mailbox
Configure a site collection's email behavior
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'collection'], 'properties': {'slug': {'type': 'string', 'description': 'site slug the collection belongs to'}, 'branding': {'type': 'object', 'properties': {'logoUrl': {'type': 'string', 'description': 'logo image URL shown in emails'}, 'brandName': {'type': 'string', 'description': 'brand name shown in emails'}, 'brandColor': {'type': 'string', 'description': 'accent color hex, e.g. #2563eb'}}, 'description': 'branding applied to mailbox emails'}, 'notifyTo': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'address to send owner notifications to'}, 'collection': {'type': 'string', 'description': 'Site Data collection to turn into a mailbox'}, 'doubleOptIn': {'type': 'boolean', 'description': 'require email confirmation before a contact is active'}, 'notifyOwner': {'type': 'boolean', 'description': 'email the owner on each new capture'}, 'sendingDomainId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'BYO sending domain id to send from'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_primary_subdomain
Pick the canonical URL for a custom domain
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'hostname'], 'properties': {'domain': {'type': 'string', 'description': 'registered custom domain, e.g. example.com'}, 'hostname': {'type': 'string', 'description': 'full hostname to make primary, e.g. www.example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_profile
Set up a public profile
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'enable': {'type': 'boolean', 'description': 'show (true) or hide (false) the public profile'}, 'handle': {'type': 'string', 'description': 'public portfolio handle, 3-30 chars a-z 0-9 -; portfolio lives at shiply.now/@<handle> (a page listing your sites â\x80\x94 not a site URL; for a site vanity URL use set_handle)'}, 'autoAdd': {'type': 'boolean', 'description': 'auto-list newly published sites on the profile'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_secret
Set a Worker secret on a site
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name', 'value'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 80, 'description': 'secret name, UPPER_SNAKE_CASE; available as env.<NAME>'}, 'slug': {'type': 'string', 'description': 'site slug whose function gets the secret'}, 'value': {'type': 'string', 'maxLength': 8192, 'minLength': 1, 'description': 'secret value (encrypted at rest), â\x89¤8 KiB'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_site_access
Set site access control
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'mode'], 'properties': {'mode': {'enum': ['public', 'password', 'restricted'], 'type': 'string', 'description': 'public = anyone; password = supply password; restricted = supply allowedEmails/allowedDomains'}, 'slug': {'type': 'string', 'description': 'owned site slug to protect'}, 'password': {'type': 'string', 'description': "required when mode='password'"}, 'allowedEmails': {'type': 'array', 'items': {'type': 'string'}, 'description': "allowlisted emails when mode='restricted'"}, 'allowedDomains': {'type': 'array', 'items': {'type': 'string'}, 'description': "allowlisted email domains when mode='restricted'"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
set_variable
Save an encrypted variable
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).
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'value'], 'properties': {'name': {'type': 'string', 'description': 'variable name, UPPER_SNAKE_CASE, e.g. SUPABASE_URL'}, 'value': {'type': 'string', 'description': 'value to store (encrypted, â\x89¤8 KiB)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
site_status
SSL + readiness check
Check any shiply slug or custom hostname: TLS certificate (issuer, days left) + HTTPS probe. ready=true means live.
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['target'], 'properties': {'target': {'type': 'string', 'description': 'slug (my-site) or hostname (www.example.com)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
summarize_thread
AI-summarize an inbox thread
One-paragraph summary of the thread, oriented to the most actionable signal (interest, complaint, question, unsubscribe).
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId'], 'properties': {'threadId': {'type': 'string', 'description': 'thread id from list_inbox'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
sync_dns
Sync DNS records
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.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'registered custom domain to sync, e.g. example.com'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
unarchive_thread
Unarchive a thread
Restore an archived thread (clears archivedAt). It reappears in the default inbox list. Pair with list_inbox filter=archived to find archived threadIds first.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['threadId'], 'properties': {'threadId': {'type': 'string', 'description': 'archived thread id to restore'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_brief
Patch the project brief
Overwrite the project's working brief (jsonb). Hard-capped at 500 KB. Use to revise the AI-generated brief by hand; the original AI output is preserved separately in briefAiOriginal so you can always compare. Does not change status.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'brief'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'project id'}, 'brief': {'type': 'object', 'description': 'the full replacement brief object (jsonb, â\x89¤500 KB)', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_listing
Update one of my listings
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.
Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['siteSlug'], 'properties': {'pitch': {'anyOf': [{'type': 'string', 'maxLength': 280}, {'type': 'null'}], 'description': 'new sales pitch (null to clear)'}, 'status': {'enum': ['draft', 'live', 'paused'], 'type': 'string', 'description': 'new listing status'}, 'siteSlug': {'type': 'string', 'description': 'slug of the listed site to patch'}, 'termsMode': {'enum': ['standard', 'custom'], 'type': 'string', 'description': "'standard' template or 'custom' terms"}, 'priceCents': {'type': 'integer', 'maximum': 999900, 'minimum': 100, 'description': 'new whole-dollar price in cents, 100â\x80\x93999900'}, 'termsCustom': {'anyOf': [{'type': 'string', 'maxLength': 20000}, {'type': 'null'}], 'description': 'new custom terms text (null to clear)'}, 'jurisdiction': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': "governing jurisdiction, e.g. 'California, USA'"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
verify_claim
Verify a Shiply claim pairing code
Confirm a pairing code shown in the user's browser at https://shiply.now/claim/<slug>?pair=1. Use ONLY in the agent session that originally published the site — it reads the 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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['code'], 'properties': {'code': {'type': 'string', 'pattern': '^SHIPLY-[A-Z2-7]{8}$', 'description': "the SHIPLY-XXXXXXXX code in the user's browser"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
verify_sending_domain
Re-check DNS for a sending domain
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.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'sending domain id from list_sending_domains'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
verify_site
Verify a live deploy
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.
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['target'], 'properties': {'target': {'type': 'string', 'description': 'slug (my-site) or hostname (www.example.com)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
whoami
Account overview
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
Añadido
send_mailbox_broadcast
17 de September de 2026 a las 12:54
Añadido
list_mailbox_contacts
17 de September de 2026 a las 12:54
Añadido
set_mailbox
17 de September de 2026 a las 12:54
Añadido
list_site_inbox
17 de September de 2026 a las 12:54
Añadido
send_email
17 de September de 2026 a las 12:54
Añadido
get_function_logs
17 de September de 2026 a las 12:54
Añadido
remove_cron
17 de September de 2026 a las 12:54
Añadido
set_cron
17 de September de 2026 a las 12:54
Añadido
list_crons
17 de September de 2026 a las 12:54
Añadido
remove_secret
17 de September de 2026 a las 12:54
Añadido
list_secrets
17 de September de 2026 a las 12:54
Añadido
set_secret
17 de September de 2026 a las 12:54
Añadido
remove_function
17 de September de 2026 a las 12:54
Añadido
get_function
17 de September de 2026 a las 12:54
Añadido
deploy_function
17 de September de 2026 a las 12:54
Añadido
contract_status
17 de September de 2026 a las 12:54
Añadido
contract_pdf
17 de September de 2026 a las 12:54
Añadido
contract_amend
17 de September de 2026 a las 12:54
Añadido
contract_send
17 de September de 2026 a las 12:54
Añadido
contract_draft
17 de September de 2026 a las 12:54
Añadido
remove_sending_domain
17 de September de 2026 a las 12:54
Añadido
verify_sending_domain
17 de September de 2026 a las 12:54
Añadido
add_sending_domain
17 de September de 2026 a las 12:54
Añadido
list_sending_domains
17 de September de 2026 a las 12:54
Añadido
get_connect_status
17 de September de 2026 a las 12:54
Añadido
refund_order
17 de September de 2026 a las 12:54
Añadido
list_my_orders
17 de September de 2026 a las 12:54
Añadido
list_my_sales
17 de September de 2026 a las 12:54
Añadido
delete_listing
17 de September de 2026 a las 12:54
Añadido
update_listing
17 de September de 2026 a las 12:54