@cloudgrid-io/mcp 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/package.json +1 -1
  2. package/src/corpus/capability-map.md +12 -6
  3. package/src/corpus/cloudgrid-yaml.md +7 -5
  4. package/src/corpus/cookbook.md +4 -4
  5. package/src/corpus/install-for-agents.md +1 -2
  6. package/src/corpus/skill-plug.md +69 -6
  7. package/src/corpus/skills-readme.md +9 -9
  8. package/src/corpus/templates/api-docs/README.md +1 -1
  9. package/src/corpus/templates/api-docs/index.md +2 -3
  10. package/src/corpus/templates/appointment-booking/AGENTS.md +1 -1
  11. package/src/corpus/templates/changelog/README.md +1 -1
  12. package/src/corpus/templates/changelog/index.md +2 -3
  13. package/src/corpus/templates/company-website/README.md +2 -3
  14. package/src/corpus/templates/company-website/cloudgrid.yaml +1 -1
  15. package/src/corpus/templates/company-website/index.md +2 -3
  16. package/src/corpus/templates/dashboard/cloudgrid.yaml +1 -1
  17. package/src/corpus/templates/dashboard/index.md +2 -3
  18. package/src/corpus/templates/deck/cloudgrid.yaml +1 -1
  19. package/src/corpus/templates/deck/index.md +2 -3
  20. package/src/corpus/templates/docs-site/README.md +1 -1
  21. package/src/corpus/templates/docs-site/index.md +2 -3
  22. package/src/corpus/templates/landing-page/cloudgrid.yaml +1 -1
  23. package/src/corpus/templates/landing-page/index.md +2 -3
  24. package/src/corpus/templates/membership-site/AGENTS.md +1 -1
  25. package/src/corpus/templates/portfolio/README.md +1 -1
  26. package/src/corpus/templates/portfolio/index.md +2 -3
  27. package/src/corpus/templates/product-launch/README.md +2 -3
  28. package/src/corpus/templates/product-launch/cloudgrid.yaml +1 -1
  29. package/src/corpus/templates/product-launch/index.md +2 -3
  30. package/src/corpus/templates/report/cloudgrid.yaml +1 -1
  31. package/src/corpus/templates/report/index.md +2 -3
  32. package/src/corpus/templates/saas-marketing/README.md +1 -1
  33. package/src/corpus/templates/saas-marketing/index.md +2 -3
  34. package/src/corpus/templates/status-page/README.md +1 -1
  35. package/src/corpus/templates/status-page/index.md +2 -3
  36. package/src/corpus/templates/subscription-management/AGENTS.md +1 -1
  37. package/src/corpus/templates/waitlist/README.md +1 -1
  38. package/src/corpus/templates/waitlist/index.md +2 -3
  39. package/src/corpus/templates/web-app/cloudgrid.yaml +1 -1
  40. package/src/corpus/templates/web-app/index.md +2 -3
  41. package/src/corpus/usage.md +2 -2
  42. package/src/corpus/workflows/api-docs.md +1 -1
  43. package/src/corpus/workflows/changelog.md +1 -1
  44. package/src/corpus/workflows/company-website.md +1 -1
  45. package/src/corpus/workflows/dashboard.md +1 -1
  46. package/src/corpus/workflows/docs-site.md +1 -1
  47. package/src/corpus/workflows/landing-page.md +1 -1
  48. package/src/corpus/workflows/portfolio.md +1 -1
  49. package/src/corpus/workflows/presentation.md +1 -1
  50. package/src/corpus/workflows/product-launch.md +1 -1
  51. package/src/corpus/workflows/report.md +1 -1
  52. package/src/corpus/workflows/saas-marketing.md +1 -1
  53. package/src/corpus/workflows/status-page.md +1 -1
  54. package/src/corpus/workflows/waitlist.md +1 -1
  55. package/src/corpus/workflows/web-app.md +1 -1
  56. package/src/tools.js +353 -650
  57. package/src/web.js +1 -1
  58. package/src/widgets/org-picker.html +3 -3
  59. package/src/corpus/skill-drop.md +0 -140
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudgrid-io/mcp",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "MCP server for CloudGrid. Three editions: a local stdio server (full toolset), a hosted web server (light, CLI-free toolset), and a public docs server (search_cloudgrid_documentation) over MCP Streamable HTTP.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -4,9 +4,14 @@ This is the index an LLM uses to turn a user request into the right CloudGrid
4
4
  template, the way Superpowers matches a skill's `when:`. Match the request to a
5
5
  template by its `when:` triggers, adopt that template's `needs:`, then deploy:
6
6
 
7
- - **static → inspiration** (instant, any client / any edition) via `grid_drop`.
8
- - **anything needing `needs:` → runtime** (async build, **local edition** only)
9
- via `grid_plug` on a linked folder.
7
+ > **One deploy verb: `grid_plug`.** Classify the artifact to pick the shape —
8
+ > ONE self-contained HTML page (CSS+JS inline, images/fonts as data: URIs) →
9
+ > **inspiration**; separate files/folders/assets or any `needs:` → **runtime app**.
10
+
11
+ - **single self-contained HTML page → inspiration** (instant, any client / any
12
+ edition) via `grid_plug` with the inline `html` param.
13
+ - **separate files/folders/assets, or anything needing `needs:` → runtime app**
14
+ (async build, **local edition** only) via `grid_plug` on a linked folder.
10
15
 
11
16
  Fetch this doc any time with `grid_fetch("doc", "capability-map")`. For the full
12
17
  cloudgrid.yaml schema (every field, the `needs:` injection table, the
@@ -173,9 +178,10 @@ engine hint. Cron is NOT a need — it is a **service type** (`type: cron` with
173
178
  `api-service`); talks to an LLM → `ai: true` + `database` (`ai-app`); scheduled
174
179
  work → a `type: cron` service (Python/Node, supported on 0.14.0). (Held for now:
175
180
  RAG's ideal `vector: pgvector`, #1545 — store embeddings in Mongo until it lands.)
176
- 3. Static (`needs: none`) → publish as an inspiration with `grid_drop`
177
- (instant, any edition). Anything with a `needs:` → runtime, local edition,
178
- `grid_plug` a linked folder, then poll to a live URL.
181
+ 3. One self-contained HTML page (`needs: none`, assets inlined) → publish as an
182
+ inspiration with `grid_plug` and the inline `html` param (instant, any
183
+ edition). Separate files/folders/assets, or anything with a `needs:` →
184
+ runtime, local edition, `grid_plug` a linked folder, then poll to a live URL.
179
185
 
180
186
  ## FAQ
181
187
 
@@ -25,10 +25,11 @@ new yaml with it.
25
25
 
26
26
  These are the shapes verified against live deploys. Copy one and adapt it.
27
27
 
28
- ### Static site → deploys as an inspiration (instant)
28
+ ### Single HTML page → deploys as an inspiration (instant)
29
29
 
30
- A single-file / static bundle. No `needs:`. Publishes instantly via
31
- `grid_drop`, works on any edition (hosted or local).
30
+ One self-contained HTML page (CSS+JS inline, images/fonts as data: URIs). No
31
+ `needs:`. Publishes instantly via `grid_plug` with the inline `html` param,
32
+ works on any edition (hosted or local).
32
33
 
33
34
  ```yaml
34
35
  name: landing-page
@@ -540,8 +541,9 @@ Bake these into any yaml you author:
540
541
  it**; use `needs:` instead.
541
542
  - **`needs:` and `requires:` together are HARD-REJECTED** by the validator ("use
542
543
  one or the other"). So author **`needs:`-only** — never set both.
543
- - **Static single-file pages deploy as inspirations** via `grid_drop` — instant,
544
- synchronous, works on the hosted edition and any client.
544
+ - **A single self-contained HTML page deploys as an inspiration** via `grid_plug`
545
+ with the inline `html` param — instant, synchronous, works on the hosted edition
546
+ and any client.
545
547
  - **A `cloudgrid.yaml` with `services:` makes it a runtime** — async build,
546
548
  **local edition only** (Claude Desktop/Code or the CLI, not hosted). `plug`
547
549
  returns `status: building`; poll status until live, then use the returned live
@@ -72,10 +72,10 @@ curl -sS -X POST https://api.cloudgrid.io/api/v2/plug \
72
72
  ```
73
73
 
74
74
  The response includes `url` (the live link — use it verbatim), `entity_id`,
75
- `owner_token` (keep both to update the drop later), and `claim_url` (sign in
76
- before it expires to keep it). This is what the `cloudgrid-drop` skill and the
77
- `grid_drop` MCP tool do for you. It is anonymous and serves inspirations
78
- only; a full app needs the signed-in `plug` flow above.
75
+ `owner_token` (keep both to update the page later), and `claim_url` (sign in
76
+ before it expires to keep it). This is what the `cloudgrid:plug` skill and the
77
+ `grid_plug` MCP tool (inline `html` param) do for you. It is anonymous and serves
78
+ inspirations only; a full app needs the signed-in `plug` flow above.
79
79
 
80
80
  ## Update your drop in place
81
81
 
@@ -31,11 +31,10 @@ Do not attempt to log in for them. Do not invent an auth flow.
31
31
  The skills live in this repo, one directory per skill, each with a `SKILL.md`.
32
32
  Load the `SKILL.md` for the action the user wants:
33
33
 
34
- - `skills/drop/SKILL.md` — share an artifact, get a URL (no login needed)
35
34
  - `skills/login/SKILL.md` — sign in, with or without the CLI
36
35
  - `skills/claim/SKILL.md` — claim an anonymous drop into the account
37
36
  - `skills/init/SKILL.md` — scaffold a new app or agent
38
- - `skills/plug/SKILL.md` — deploy a directory or URL
37
+ - `skills/plug/SKILL.md` — share a single HTML page or deploy a directory/URL, get a URL
39
38
  - `skills/logs/SKILL.md` — tail logs
40
39
  - `skills/share/SKILL.md` — make an entity shareable
41
40
  - `skills/feedback/SKILL.md` — read the feedback feed
@@ -1,18 +1,81 @@
1
1
  ---
2
- version: 0.2.0
2
+ version: 0.3.0
3
3
  name: plug
4
4
  description: |
5
- Deploy a directory or URL to CloudGrid. Use when the user wants to ship, deploy,
6
- publish, or go live with the current project, or turn a URL into a hosted entity.
7
- Live in about 30 seconds. Wraps cloudgrid plug.
5
+ Deploy or share a creation on CloudGrid and get a public URL. Use when the user
6
+ wants to ship, deploy, publish, share, send a friend a link, or go live — a
7
+ single HTML page or a full app. One self-contained HTML page publishes instantly
8
+ as an inspiration (any edition, no login needed); a multi-file app deploys from a
9
+ directory or URL. Wraps cloudgrid plug.
8
10
  argument-hint: "[path-or-url]"
9
11
  allowed-tools: Bash
10
12
  ---
11
13
 
12
14
  # CloudGrid Plug
13
15
 
14
- Build and deploy a directory, a path, or a URL. Prints the live URL when it is
15
- done. This is the center of the build-and-ship loop. Wraps `cloudgrid plug`.
16
+ Deploy or share a creation and get a public URL. This is the one deploy/share verb
17
+ — a single HTML page or a full app — and the center of the build-and-ship loop.
18
+
19
+ ## Classify the artifact first
20
+
21
+ - **ONE self-contained HTML page** (a single file — CSS+JS inline, images/fonts as
22
+ data: URIs; the normal hosted output) → an **inspiration**: instant, works on
23
+ **any edition**, no login required. See "Share a single HTML page" below.
24
+ - **Anything more** — separate files/folders, a real `assets/` dir, separate
25
+ `.css`/`.js`, multiple pages, a SPA build — **or** any data/server/LLM/cron need
26
+ → a **runtime app**: `cloudgrid plug` on a linked folder, **local edition only**,
27
+ async build. See "Deploy an app" below.
28
+
29
+ ## Share a single HTML page (the fast path)
30
+
31
+ No account and no CLI needed — that is the point: anyone can publish a page. Write
32
+ the page to a single self-contained HTML file (a full document starting with
33
+ `<!doctype html>` or `<html>`; wrap a fragment in a minimal document). HTML is
34
+ capped at 2 MB for anonymous publishes. Then POST it to the unified plug endpoint:
35
+
36
+ ```
37
+ curl -sS -X POST https://api.cloudgrid.io/api/v2/plug \
38
+ -F "artifact=@/path/to/index.html;type=text/html"
39
+ ```
40
+
41
+ The response is JSON (HTTP 201 anonymous). Read these fields:
42
+
43
+ - `url` — the live link, composed by the server. Use it verbatim; never compose a
44
+ URL from the slug yourself.
45
+ - `entity_id` — the durable handle for updating this page later (see re-plug below).
46
+ - `owner_token` — a JWT proving you made this page. It authorizes an anonymous
47
+ re-plug and doubles as the claim token; its lifetime matches the expiry (default
48
+ 7 days). Persist it with `entity_id` and `url`.
49
+ - `claim_url` / `claim_message` — the link + nudge to sign in and keep it past expiry.
50
+
51
+ Signed in, publish into your own grid instead (owned, no claim needed):
52
+
53
+ ```
54
+ JWT=$(jq -r .jwt ~/.cloudgrid/credentials 2>/dev/null)
55
+ ORG=$(grep -E '^\s*active_org_slug:' ~/.cloudgrid/config.yaml | awk '{print $2}')
56
+ curl -sS -X POST https://api.cloudgrid.io/api/v2/plug \
57
+ -H "Authorization: Bearer $JWT" -H "X-CloudGrid-Org: $ORG" \
58
+ -F "artifact=@/path/to/index.html;type=text/html"
59
+ ```
60
+
61
+ The MCP `grid_plug` tool does all of this for you: pass the page as its inline
62
+ `html` param (it materializes one `index.html` and handles anon/claim/re-plug).
63
+
64
+ ### Re-plug: update the same URL in place
65
+
66
+ `/api/v2/plug` is a unified create-or-update endpoint. The switch is the
67
+ `target_entity_id` form field: absent → create (new URL); present → update the
68
+ SAME entity (same slug, same URL, new content). Anonymously, prove ownership with
69
+ the `owner_token`; signed in, use your normal auth headers. Every anonymous edit
70
+ REFRESHES the `owner_token` (store the newest) and resets the expiry. Editing an
71
+ archived/expired page returns **409 `EDIT_REJECTED`** — it never silently creates.
72
+
73
+ Print the `url` on its own line so it can be copied in one go. A single page is an
74
+ **inspiration only** — a full app needs the deploy flow below.
75
+
76
+ ## Deploy an app
77
+
78
+ Wraps `cloudgrid plug`. Prints the live URL when it is done.
16
79
 
17
80
  ## Step 0 — Bootstrap
18
81
 
@@ -37,9 +37,9 @@ behalf: scaffold, deploy, tail logs, share, read feedback. Everything here is fr
37
37
  CLI-wrapping tools). The MCP auto-starts when the plugin is enabled — no
38
38
  separate `claude mcp add` needed.
39
39
 
40
- The skills show under `/plugin` and `/skills` as `cloudgrid:drop`,
41
- `cloudgrid:login`, … — or just say what you want ("drop this HTML to
42
- CloudGrid") and the right one triggers.
40
+ The skills show under `/plugin` and `/skills` as `cloudgrid:plug`,
41
+ `cloudgrid:login`, … — or just say what you want ("share this HTML page as a
42
+ link") and the right one triggers.
43
43
 
44
44
  Or install with the `gh skill` extension:
45
45
 
@@ -48,7 +48,7 @@ behalf: scaffold, deploy, tail logs, share, read feedback. Everything here is fr
48
48
  ```
49
49
 
50
50
  Other agents (Cursor, Cline, Gemini CLI): `npx skills add cloudgrid-io/skills`.
51
- They install as `drop`, `plug`, … — the CloudGrid brand comes from the plugin
51
+ They install as `plug`, `login`, … — the CloudGrid brand comes from the plugin
52
52
  namespace, which those agents don't have.
53
53
 
54
54
  Claude Desktop, claude.ai, ChatGPT, and every route in one place: [USAGE.md](USAGE.md).
@@ -56,21 +56,21 @@ behalf: scaffold, deploy, tail logs, share, read feedback. Everything here is fr
56
56
  ## Share something in one step, no login
57
57
 
58
58
  ```
59
- /cloudgrid:drop index.html
59
+ /cloudgrid:plug index.html
60
60
  ```
61
61
 
62
- `cloudgrid:drop` publishes an HTML page or file and hands back a public URL. No
63
- account, no CLI. The link lasts 7 days, and you can sign in later to keep it.
62
+ `cloudgrid:plug` publishes a single HTML page (or deploys a full app) and hands
63
+ back a public URL. For a single page: no account, no CLI — the link lasts 7 days,
64
+ and you can sign in later to keep it.
64
65
 
65
66
  ## Skills
66
67
 
67
68
  | Skill | Invoke | What it does |
68
69
  |---|---|---|
69
- | `drop` | `/cloudgrid:drop` | Share an HTML page or file, get a public URL. Login optional. |
70
70
  | `login` | `/cloudgrid:login` | Sign in to CloudGrid, with or without the CLI. |
71
71
  | `claim` | `/cloudgrid:claim` | Claim an anonymous drop into your account after signing in. |
72
72
  | `init` | `/cloudgrid:init` | Scaffold a new app or agent. |
73
- | `plug` | `/cloudgrid:plug` | Deploy a directory or URL. Live in about 30 seconds. |
73
+ | `plug` | `/cloudgrid:plug` | Share a single HTML page (login optional) or deploy a directory/URL. Get a public URL. |
74
74
  | `logs` | `/cloudgrid:logs` | Tail logs for an entity. |
75
75
  | `share` | `/cloudgrid:share` | Make an entity shareable and print its URL. |
76
76
  | `feedback` | `/cloudgrid:feedback` | Read the feedback feed. |
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML API reference: a sidebar endpoint list, per-endpoint method badges (GET / POST / PUT / DELETE), a params table, and request / response examples in code blocks.
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in
@@ -5,11 +5,10 @@ State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "api-docs")` and fill in the user's content.
@@ -188,7 +188,7 @@ An appointment-booking app is a built + deployed runtime container, so it
188
188
  requires the **local edition** (Claude Desktop / Claude Code) or the CLI. The
189
189
  **hosted** edition (Claude Web / hosted MCP) is inline-only and can only publish
190
190
  static pages — it CANNOT build this app. On hosted, say so plainly and offer a
191
- static "book us" landing page (via `grid_drop`) instead, then stop the runtime
191
+ static "book us" landing page (via `grid_plug`) instead, then stop the runtime
192
192
  path.
193
193
 
194
194
  ## 7. Reminders (cron — PENDING platform issue #1543)
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML changelog / release-notes page: reverse-chronological versioned entries, each with a date and tagged change items (added / fixed / changed / removed).
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in
@@ -5,11 +5,10 @@ State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "changelog")` and fill in the user's content.
@@ -10,11 +10,10 @@ wire it to your own email service or form endpoint if you want real submissions.
10
10
 
11
11
  ## How it deploys
12
12
 
13
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
14
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
13
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
15
14
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
16
15
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
17
- runtime (async, local edition only); the fast path is `grid_drop`.
16
+ runtime (async, local edition only); the fast path is `grid_plug`.
18
17
 
19
18
  The fillable HTML is the real template — fetch it with
20
19
  `grid_fetch("template", "company-website")` and fill in the user's content.
@@ -11,7 +11,7 @@
11
11
  # ignored by the parser, so the file deploys to exactly the active fields.
12
12
  #
13
13
  # company-website is a STATIC template (type: static, path: /) with no needs.
14
- # The fast path deploys the page as an INSPIRATION via grid_drop (instant,
14
+ # The fast path deploys the page as an INSPIRATION via grid_plug (instant,
15
15
  # works on hosted). This cloudgrid.yaml is the reference for plugging it as an
16
16
  # OWNED static runtime; the active fields are exactly: name + services.web.
17
17
  #
@@ -6,11 +6,10 @@ Inline CSS + inline JS only (no external scripts, stylesheets, fonts, or CDNs).
6
6
 
7
7
  ## How it deploys
8
8
 
9
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
10
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
9
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
11
10
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
12
11
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
13
- runtime (async, local edition only); the fast path is `grid_drop`.
12
+ runtime (async, local edition only); the fast path is `grid_plug`.
14
13
 
15
14
  The fillable HTML is the real template — fetch it with
16
15
  `grid_fetch("template", "company-website")` and fill in the user's content.
@@ -16,7 +16,7 @@
16
16
  # THIS TEMPLATE (dashboard): a single self-contained static page. The active fields
17
17
  # are exactly name + services.web{type: static, path: /}; there are no needs.
18
18
  # This cloudgrid.yaml is the reference for plugging it as an OWNED static
19
- # runtime; the fast path is to deploy it as an INSPIRATION via grid_drop
19
+ # runtime; the fast path is to deploy it as an INSPIRATION via grid_plug
20
20
  # (instant, and works on the hosted edition too).
21
21
  # ============================================================================
22
22
 
@@ -5,11 +5,10 @@ no `needs:`. State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "dashboard")` and fill in the user's content.
@@ -16,7 +16,7 @@
16
16
  # THIS TEMPLATE (deck): a single self-contained static page. The active fields
17
17
  # are exactly name + services.web{type: static, path: /}; there are no needs.
18
18
  # This cloudgrid.yaml is the reference for plugging it as an OWNED static
19
- # runtime; the fast path is to deploy it as an INSPIRATION via grid_drop
19
+ # runtime; the fast path is to deploy it as an INSPIRATION via grid_plug
20
20
  # (instant, and works on the hosted edition too).
21
21
  # ============================================================================
22
22
 
@@ -5,11 +5,10 @@ no `needs:`. State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "deck")` and fill in the user's content.
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML documentation site: a sidebar nav, a scrolling content column with headings and code blocks, and a client-side search box that filters the nav. No backend.
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in
@@ -5,11 +5,10 @@ State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "docs-site")` and fill in the user's content.
@@ -16,7 +16,7 @@
16
16
  # THIS TEMPLATE (landing-page): a single self-contained static page. The active fields
17
17
  # are exactly name + services.web{type: static, path: /}; there are no needs.
18
18
  # This cloudgrid.yaml is the reference for plugging it as an OWNED static
19
- # runtime; the fast path is to deploy it as an INSPIRATION via grid_drop
19
+ # runtime; the fast path is to deploy it as an INSPIRATION via grid_plug
20
20
  # (instant, and works on the hosted edition too).
21
21
  # ============================================================================
22
22
 
@@ -5,11 +5,10 @@ no `needs:`. State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "landing-page")` and fill in the user's content.
@@ -157,4 +157,4 @@ A membership site is a built + deployed runtime container, so it requires the
157
157
  **local edition** (Claude Desktop / Claude Code) or the CLI. The **hosted**
158
158
  edition (Claude Web / hosted MCP) is inline-only and can only publish static
159
159
  pages — it CANNOT build this app. On hosted, say so plainly and offer a static
160
- paywall-landing page (via `grid_drop`) instead, then stop the runtime path.
160
+ paywall-landing page (via `grid_plug`) instead, then stop the runtime path.
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML personal / freelancer portfolio: a hero intro, an about section, a skills list, a projects grid, and a contact section.
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in
@@ -5,11 +5,10 @@ State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "portfolio")` and fill in the user's content.
@@ -34,13 +34,12 @@ A one-page launch announcement with:
34
34
  ## How it deploys
35
35
 
36
36
  Deploys as an **inspiration** — instant, and works on the **hosted** edition
37
- (Claude Web) as well as local. Use **`grid_drop`** (or `grid_plug` with the
38
- inline HTML): you get a live share URL right away. Re-dropping the same entity
37
+ (Claude Web) as well as local. Use **`grid_plug`** with the inline `html`: you get a live share URL right away. Re-dropping the same entity
39
38
  updates the same URL, so the user iterates on one link.
40
39
 
41
40
  The reference `cloudgrid.yaml` in this directory (`type: static`) is ONLY for
42
41
  plugging the page as an OWNED static runtime (async, local edition only); the
43
- fast path is `grid_drop`.
42
+ fast path is `grid_plug`.
44
43
 
45
44
  The fillable HTML is the real template — fetch it with
46
45
  `grid_fetch("template", "product-launch")` and fill in the user's content.
@@ -17,7 +17,7 @@
17
17
  # active fields are exactly name + services.web{type: static, path: /}; there
18
18
  # are no needs. This cloudgrid.yaml is the reference for plugging the page as an
19
19
  # OWNED static runtime; the fast path is to deploy it as an INSPIRATION via
20
- # grid_drop (instant, and works on the hosted edition too).
20
+ # grid_plug (instant, and works on the hosted edition too).
21
21
  # ============================================================================
22
22
 
23
23
 
@@ -8,11 +8,10 @@ client-side.
8
8
 
9
9
  ## How it deploys
10
10
 
11
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
12
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
11
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
13
12
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
14
13
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
15
- runtime (async, local edition only); the fast path is `grid_drop`.
14
+ runtime (async, local edition only); the fast path is `grid_plug`.
16
15
 
17
16
  The fillable HTML is the real template — fetch it with
18
17
  `grid_fetch("template", "product-launch")` and fill in the user's content
@@ -16,7 +16,7 @@
16
16
  # THIS TEMPLATE (report): a single self-contained static page. The active fields
17
17
  # are exactly name + services.web{type: static, path: /}; there are no needs.
18
18
  # This cloudgrid.yaml is the reference for plugging it as an OWNED static
19
- # runtime; the fast path is to deploy it as an INSPIRATION via grid_drop
19
+ # runtime; the fast path is to deploy it as an INSPIRATION via grid_plug
20
20
  # (instant, and works on the hosted edition too).
21
21
  # ============================================================================
22
22
 
@@ -5,11 +5,10 @@ no `needs:`. State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "report")` and fill in the user's content.
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML SaaS marketing site (hero, features, pricing tiers, testimonials, FAQ, and a closing call to action). Richer than the landing-page template.
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in
@@ -5,11 +5,10 @@ State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "saas-marketing")` and fill in the user's content.
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML service status page: an overall banner, a component list with up / degraded / down pills, per-component uptime bars, and an incident history log. Status is baked into the page.
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in
@@ -5,11 +5,10 @@ State (if any) lives only in memory and is lost on refresh.
5
5
 
6
6
  ## How it deploys
7
7
 
8
- To publish this page, use **`grid_drop`** (or `grid_plug` with the inline
9
- HTML): it deploys as an **inspiration** — instant, and works on the **hosted**
8
+ To publish this page, use **`grid_plug`** with the inline `html`: it deploys as an **inspiration** — instant, and works on the **hosted**
10
9
  edition (Claude Web) as well as local. The reference `cloudgrid.yaml` in this
11
10
  directory (`type: static`) is ONLY for plugging the page as an OWNED static
12
- runtime (async, local edition only); the fast path is `grid_drop`.
11
+ runtime (async, local edition only); the fast path is `grid_plug`.
13
12
 
14
13
  The fillable HTML is the real template — fetch it with
15
14
  `grid_fetch("template", "status-page")` and fill in the user's content.
@@ -187,5 +187,5 @@ A subscription-management app is a built + deployed runtime container, so it
187
187
  requires the **local edition** (Claude Desktop / Claude Code) or the CLI. The
188
188
  **hosted** edition (Claude Web / hosted MCP) is inline-only and can only publish
189
189
  static pages — it CANNOT build this app. On hosted, say so plainly and offer a
190
- static pricing/plans page (via `grid_drop`) instead, then stop the runtime
190
+ static pricing/plans page (via `grid_plug`) instead, then stop the runtime
191
191
  path.
@@ -3,7 +3,7 @@
3
3
  A single self-contained HTML launch waitlist / coming-soon page: a hero, an email capture form, and a social-proof counter.
4
4
 
5
5
  Static inspiration — a single self-contained `index.html` (inline CSS and JS,
6
- no external CDNs). It deploys instantly via `grid_drop` and works on every
6
+ no external CDNs). It deploys instantly via `grid_plug` and works on every
7
7
  CloudGrid edition, including hosted.
8
8
 
9
9
  ## Fill it in