Skip to main content
Glama
stevejford

shiply — Static Site Hosting & Deployment

by stevejford

shiply — MCP server

shiply is the production backend for anything an agent builds — not just static hosting. An agent can publish any app in a single call — no account, no config — and then give it a real backend over the same MCP server: a SQL database, server functions, SSR, email (send and receive), custom domains, SSL, environment variables, site data, lead capture, and a marketplace to sell the site it built. Flat price, no usage meter.

The recommended way to use shiply is the hosted, remote MCP endpoint — connect to the live URL, nothing to run. This repo also ships a small local stdio MCP server (npx shiply-mcp / node index.mjs) that wraps shiply's public REST API directly (it is a real local server, not a proxy), for clients or hosts that prefer a local process. Listed on the Official MCP Registry as now.shiply/shiply.

Connect

Remote MCP endpoint (Streamable HTTP):

https://shiply.now/mcp

Add it to an MCP client (Claude Desktop, Cursor, Claude Code, etc.):

{
  "mcpServers": {
    "shiply": {
      "url": "https://shiply.now/mcp"
    }
  }
}

Local (stdio)

Prefer a local process? Run the bundled server — it calls shiply's public REST API directly (no proxy to the hosted endpoint):

{
  "mcpServers": {
    "shiply": {
      "command": "npx",
      "args": ["-y", "shiply-mcp"]
    }
  }
}

Or clone this repo and run npm install && node index.mjs. Set SHIPLY_API_KEY (shp_…) for owned-site operations; publish_site works without it. Local tools: publish_site, site_status, rollback_site, add_custom_domain, check_custom_domain.

Related MCP server: Netlify MCP Server

Auth

Auth is optional. publish_site works anonymously — anonymous sites go live instantly and can be claimed into an account later. Pass a Bearer API key (Authorization: Bearer shp_…) to manage owned sites and unlock variables, custom domains, databases, and analytics. Mint a key from the email-code flow in llms.txt.

Tools

The live, authoritative tool list + JSON schemas are always at /.well-known/mcp.json. By area:

  • Publish & versionspublish_site (files → live *.shiply.now URL), update an existing site, rollback, delete_site

  • Status & verifysite_status, list_sites, verify_site (status + SSL + thumbnail in one call)

  • Domains & SSLadd_domain, check_domain, set_handle (vanity subdomain)

  • Configset_variable (encrypted per-user env), site access (password / invite-only)

  • Site Data — read/write/export visitor records and collections

  • Databases — per-site SQL: Cloudflare D1 and Neon Postgres (provision, query, branch)

  • Edge functions — deploy serverless functions alongside the static site

  • Email & inboxsend_email, list_site_inbox, set_mailbox, forward

  • Contracts — create, send, and track e-sign contracts

  • Analyticsget_analytics (views, referrers)

Examples

Publish a folder, get a live URL (anonymous, no account):

// tool: publish_site
{ "files": [ { "path": "index.html", "content": "<h1>Hi</h1>" } ] }
// → { "url": "https://merry-maple-3kf2.shiply.now", "claimUrl": "..." }

Confirm it's live (status + SSL + screenshot) before reporting done:

// tool: verify_site
{ "slug": "merry-maple-3kf2" }
// → { "status": "LIVE", "ssl": { "valid": true }, "thumbnailUrl": "..." }

Pricing

Flat $0 / $8 / $24 — no usage meter, no surprise overage bill. See https://shiply.now/pricing.

License

MIT — see LICENSE. (This repo is a metadata-only descriptor; the shiply product source is not included.)

Available Tools

5 tools
add_custom_domainAdd a custom domainA

Attach a custom domain to a site. Returns the domain record; point the hostname at cname.shiply.now and the certificate auto-issues. Poll readiness with check_custom_domain. Requires an API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesThe custom hostname, e.g. "www.example.com".
slugYesThe site slug to attach the domain to.
apiKeyNoshiply API key (shp_…). Falls back to SHIPLY_API_KEY.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by explaining the return value, required DNS pointing, auto-issuing certificate, and the need for polling with check_custom_domain. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no fluff, each providing essential information: action, follow-up, and requirement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 simple parameters and no output schema, the description covers the return value, next steps, and prerequisites adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description repeats the API key requirement already in the schema. No additional parameter details are provided beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Attach' and resource 'custom domain', distinguishing it from sibling tools like check_custom_domain which is mentioned for polling readiness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use (attaching a domain) and mentions a follow-up action (poll with check_custom_domain), but lacks explicit when-not or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_custom_domainCheck custom-domain readinessA
Read-onlyIdempotent

Check whether a custom domain has finished provisioning (DNS + SSL). Returns ready:true once the site is serving on the domain. Read-only. Requires an API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainIdYesThe domain id returned by add_custom_domain.
apiKeyNoshiply API key (shp_…). Falls back to SHIPLY_API_KEY.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by specifying the return condition (ready:true) and the need for authentication, without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences that are succinct and front-loaded. Every sentence provides essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple tool with 2 parameters, no output schema, and good annotations, the description covers the main purpose, return indicator, and authentication requirement. It could mention potential error conditions but is generally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed parameter descriptions. The description adds minimal extra meaning beyond the schema, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Check' and the resource 'custom domain provisioning', specifying the return condition 'ready:true once the site is serving'. It distinguishes itself from siblings like add_custom_domain and site_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the requirement for an API key and mentions fallback to environment variable, providing clear context for usage. Although no explicit exclusions are given, the purpose is specific enough to guide when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_sitePublish a siteA

Publish a website to shiply.now and get back a live URL — in one call, no account needed to start. Pass files (inline) or a local dir. Anonymous sites go live instantly and last 24 hours; the response includes a claimUrl to keep the site forever on a free account. NEVER create a new site to update an existing one — re-publish to the SAME site by passing its claimToken (anonymous) or slug (owned, requires an API key).

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoInline files to publish. Provide this OR `dir`.
dirNoPath to a local directory to publish (read recursively). Provide this OR `files`.
slugNoUpdate an existing OWNED site in place (requires an API key).
claimTokenNoUpdate an existing ANONYMOUS site in place (from a prior publish response).
ttlSecondsNoAnonymous-site lifetime in seconds (capped server-side, default 24h).
spaModeNoServe index.html for deep links (single-page apps).
apiKeyNoshiply API key (shp_…) for owned publishes. Falls back to SHIPLY_API_KEY.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only and non-idempotent; the description adds lifecycle details (24-hour lifetime, claimUrl for permanence) and update behavior, though it doesn't explicitly warn that repeated calls without identifiers create new anonymous sites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences deliver maximum information: purpose, anonymous workflow, and update rule—no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema, the description covers key workflows (publish, update, anonymous vs owned) and mentions the response includes a claimUrl, but could detail other response fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters (100% coverage), but the description adds logical grouping ('files or dir'), usage context for claimToken/slug, and environment fallback for apiKey, improving understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Publish a website to shiply.now') and the resource (website), with explicit differentiation from sibling tools via the publishing scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use (publishing a site) and when not to ('NEVER create a new site to update an existing one'), including how to update with claimToken or slug.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_siteRoll back a siteA
Idempotent

Flip a previously-published version of a site live again, instantly. Every publish is a version; pass the versionId to roll back to. Requires an API key (owned sites only).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe site slug to roll back.
versionIdYesThe version id to make live (from an earlier publish).
apiKeyNoshiply API key (shp_…). Falls back to SHIPLY_API_KEY.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations: it states the operation is instant, requires authentication via API key, and is limited to owned sites. Annotations include idempotentHint=true, and the description aligns with this by implying the result is a deterministic state. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences, no extraneous words. It front-loads the primary purpose and follows with key details. Every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the schema fully documents parameters and the output schema is absent, the description adequately covers the tool's behavior, prerequisites, and effects. It explains the version concept and the instant nature of the rollback.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage for all parameters. The description echoes the versionId parameter but does not add new semantic meaning beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('roll back'), the resource ('previously-published version of a site'), and the effect ('live again, instantly'). It distinguishes from sibling tools like publish_site by specifying it's a rollback operation, not a new publish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use this tool ('to roll back to a previously-published version') and mentions a prerequisite ('requires an API key (owned sites only)'). While it doesn't explicitly say when not to use, the sibling tools provide context for alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

site_statusGet site statusA
Read-onlyIdempotent

Look up a published shiply.now site by slug: whether it is live, anonymous vs owned, when it expires, and its public URL. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe site slug, e.g. "clever-aspen-6n6r" (the <slug>.shiply.now subdomain).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and destructiveHint false. The description adds context by specifying the exact status fields returned and repeating 'Read-only', which reinforces the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with the verb 'Look up' and immediately specifies the resource and input. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all key information for a simple status lookup: what it does, what it returns, and the input. Could mention error behavior if slug not found, but not a major gap given simplicity and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the slug parameter already has a detailed description with example. The tool description adds minimal extra meaning beyond explaining the context of the parameter in the tool's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it looks up a published site by slug and lists specific output fields (live, anonymous/owned, expiration, URL). It distinguishes from siblings like add_custom_domain and publish_site which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells when to use (to look up site status by slug) and notes the tool is read-only. However, it does not explicitly state when not to use or mention alternatives like the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedadd_custom_domain
    • First observedcheck_custom_domain
    • First observedpublish_site
    • First observedrollback_site
    • First observedsite_status

TDQS

A4.4/5.0
Disambiguation5/5

Each tool serves a unique function: adding/checking custom domains, publishing, rolling back, and checking site status. No two tools have overlapping purposes.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., publish_site, rollback_site), but 'site_status' is noun_noun, which is a minor inconsistency.

Tool Count5/5

Five tools cover the core deployment and domain management workflow without being excessive or insufficient.

Completeness4/5

The tools cover essential operations (publish, rollback, custom domain, status), but missing delete or list functionalities, which are minor gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    The Hostinger MCP server enables seamless integration of Hostinger’s API with AI tools. This server exposes Hostinger API endpoints as callable tools, allowing AI models to fetch live data or perform real-time actions on hosting infrastructure.
    382
    315
    150
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables code agents to interact with Netlify services through the Model Context Protocol, allowing them to create, build, deploy, and manage Netlify resources using natural language prompts.
    9
    17,669
    60
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    Turns any static website into an MCP-searchable knowledge base by deploying a Cloudflare Worker that provides full-text search tools, enabling AI assistants to search and retrieve content from your site.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stevejford/shiply-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server