Creates the site
Calls create_site with a subdomain name (checking list_sites first so it doesn't duplicate one you already have).
Documentation
PwaNow ships a skill that any AI coding assistant can follow end to end — create the site, upload the build, and verify it's actually live — using PwaNow's hosted MCP server. Nothing to install locally to make it work.
Most AI coding assistants — Claude Code, Claude, Cursor, and similar — can fetch a URL and follow it as instructions. Point yours at the skill and describe what to build:
Prompt
Build a PWA with a few games, including flappy bird. Deploy it on PwaNow using this skill: https://pwanow.com/skill.md
The skill is self-contained: it tells the agent the MCP endpoint to connect to, how to authenticate, how to zip and upload a build (the MCP server has no access to your local filesystem, so that step stays with your agent), and not to report success until the live site actually passes a check.
PwaNow hosts the static build — your PWA's own data (accounts, records, whatever it needs to store) lives wherever you point it. Tell your agent which one to wire up:
Prompt — Firebase
Build a PWA that [describe what it does]. Use Firebase for the
backend — Firestore to store data and Firebase Authentication for
sign-in. Create a new Firebase project, wire the client SDK into the
app, and add security rules that scope data per user. Deploy it on
PwaNow using this skill: https://pwanow.com/skill.md
Prompt — Supabase
Build a PWA that [describe what it does]. Use Supabase for the
backend — Postgres for data and Supabase Auth for sign-in, with Row
Level Security policies so each user only sees their own data. Deploy
it on PwaNow using this skill: https://pwanow.com/skill.md
PwaNow doesn't run server-side code — it only serves the static files you upload. Firebase and Supabase are built for that: their client SDKs talk to the backend directly, and security rules (not a server you host) keep data scoped per user.
Your agent needs two things from you: an account, and a key to act as you.
Free, no credit card required. Sign up to get a dashboard.
From API Keys
in the dashboard. Keys start with pwanow_live_… and authenticate MCP requests as you.
Paste the key into your prompt or MCP client config — whichever the skill asks for.
The same deploy-and-verify loop, whether it's run by a human or an agent.
Calls create_site with a subdomain name (checking list_sites first so it doesn't duplicate one you already have).
Requests a presigned URL via get_upload_url, then zips and uploads your build itself — the MCP server can't reach your local files.
Polls get_site_status until processing finishes, then calls test_site, which fetches the real URL and checks it back.
Only reports success once test_site returns passed: true — and explains which check failed if it didn't, instead of guessing.
Any MCP-capable client can connect directly, without going through the skill prompt.
.mcp.json — Claude Code
{
"mcpServers": {
"pwanow": {
"type": "http",
"url": "https://api.pwanow.com/mcp",
"headers": {
"Authorization": "Bearer <your pwanow_live_… API key>"
}
}
}
}
.claude/settings.local.json — skip the approval prompt
{
"enabledMcpjsonServers": ["pwanow"]
}
.vscode/mcp.json — VS Code
{
"servers": {
"pwanow": {
"type": "http",
"url": "https://api.pwanow.com/mcp",
"headers": {
"Authorization": "Bearer <your pwanow_live_… API key>"
}
}
}
}
.cursor/mcp.json — Cursor
{
"mcpServers": {
"pwanow": {
"url": "https://api.pwanow.com/mcp",
"headers": {
"Authorization": "Bearer <your pwanow_live_… API key>"
}
}
}
}
~/.codeium/windsurf/mcp_config.json — Devin Desktop (formerly Windsurf)
{
"mcpServers": {
"pwanow": {
"serverUrl": "https://api.pwanow.com/mcp",
"headers": {
"Authorization": "Bearer <your pwanow_live_… API key>"
}
}
}
}
~/.codex/config.toml — Codex CLI
[mcp_servers.pwanow]
url = "https://api.pwanow.com/mcp"
http_headers = { "Authorization" = "Bearer <your pwanow_live_… API key>" }
~/.gemini/config/mcp_config.json — Antigravity
{
"mcpServers": {
"pwanow": {
"serverUrl": "https://api.pwanow.com/mcp",
"headers": {
"Authorization": "Bearer <your pwanow_live_… API key>"
}
}
}
}
create_site — reserve a subdomain for a new sitelist_sites — see everything you own before creating a duplicateget_upload_url — get a presigned URL for uploading a zipped buildget_site_status — check a site's status and live URLtest_site — fetch the live site and report back what's actually workingdelete_site — permanent; agents following the skill confirm with you firstSave the skill locally instead of linking to it, if you'd rather it always be available.
Terminal — macOS / Linux
mkdir -p .claude/skills/pwanow
curl -o .claude/skills/pwanow/SKILL.md https://pwanow.com/skill.md
PowerShell — Windows
mkdir .claude\skills\pwanow -Force
Invoke-WebRequest -Uri https://pwanow.com/skill.md -OutFile .claude\skills\pwanow\SKILL.md
Then just ask Claude Code to deploy your project to PwaNow — it'll pick up the skill automatically and ask for your API key the first time it needs one.