@cloudgrid-io/mcp 0.16.2 → 0.18.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 (135) hide show
  1. package/README.md +39 -39
  2. package/package.json +1 -1
  3. package/src/corpus/capability-map.md +15 -9
  4. package/src/corpus/cloudgrid-yaml.md +10 -8
  5. package/src/corpus/cookbook.md +4 -4
  6. package/src/corpus/install-for-agents.md +1 -2
  7. package/src/corpus/install.md +1 -1
  8. package/src/corpus/rules/publish-fallbacks.md +1 -1
  9. package/src/corpus/skill-claim.md +1 -1
  10. package/src/corpus/skill-login.md +2 -2
  11. package/src/corpus/skill-plug.md +69 -6
  12. package/src/corpus/skills-readme.md +10 -10
  13. package/src/corpus/templates/ai-knowledge-base/AGENTS.md +1 -1
  14. package/src/corpus/templates/ai-knowledge-base/index.md +1 -1
  15. package/src/corpus/templates/api-docs/README.md +3 -3
  16. package/src/corpus/templates/api-docs/index.md +3 -4
  17. package/src/corpus/templates/appointment-booking/AGENTS.md +9 -9
  18. package/src/corpus/templates/appointment-booking/index.md +6 -6
  19. package/src/corpus/templates/approval-workflow/AGENTS.md +2 -2
  20. package/src/corpus/templates/approval-workflow/index.md +2 -2
  21. package/src/corpus/templates/billing-dashboard/index.md +1 -1
  22. package/src/corpus/templates/calendar-scheduler/AGENTS.md +1 -1
  23. package/src/corpus/templates/calendar-scheduler/index.md +1 -1
  24. package/src/corpus/templates/changelog/README.md +3 -3
  25. package/src/corpus/templates/changelog/index.md +3 -4
  26. package/src/corpus/templates/company-website/README.md +3 -4
  27. package/src/corpus/templates/company-website/cloudgrid.yaml +1 -1
  28. package/src/corpus/templates/company-website/index.md +3 -4
  29. package/src/corpus/templates/course-platform/index.md +1 -1
  30. package/src/corpus/templates/dashboard/cloudgrid.yaml +1 -1
  31. package/src/corpus/templates/dashboard/index.md +3 -4
  32. package/src/corpus/templates/deck/cloudgrid.yaml +1 -1
  33. package/src/corpus/templates/deck/index.md +3 -4
  34. package/src/corpus/templates/docs-site/README.md +3 -3
  35. package/src/corpus/templates/docs-site/index.md +3 -4
  36. package/src/corpus/templates/forum/AGENTS.md +6 -6
  37. package/src/corpus/templates/forum/index.md +1 -1
  38. package/src/corpus/templates/hr-portal/index.md +1 -1
  39. package/src/corpus/templates/internal-tools-portal/index.md +1 -1
  40. package/src/corpus/templates/landing-page/cloudgrid.yaml +1 -1
  41. package/src/corpus/templates/landing-page/index.md +3 -4
  42. package/src/corpus/templates/lms/index.md +1 -1
  43. package/src/corpus/templates/marketplace/AGENTS.md +1 -1
  44. package/src/corpus/templates/marketplace/index.md +1 -1
  45. package/src/corpus/templates/membership-site/AGENTS.md +9 -9
  46. package/src/corpus/templates/membership-site/index.md +6 -6
  47. package/src/corpus/templates/online-store/index.md +1 -1
  48. package/src/corpus/templates/portfolio/README.md +3 -3
  49. package/src/corpus/templates/portfolio/index.md +3 -4
  50. package/src/corpus/templates/product-launch/README.md +3 -4
  51. package/src/corpus/templates/product-launch/cloudgrid.yaml +1 -1
  52. package/src/corpus/templates/product-launch/index.md +3 -4
  53. package/src/corpus/templates/report/cloudgrid.yaml +1 -1
  54. package/src/corpus/templates/report/index.md +3 -4
  55. package/src/corpus/templates/restaurant-reservations/AGENTS.md +9 -9
  56. package/src/corpus/templates/restaurant-reservations/index.md +2 -2
  57. package/src/corpus/templates/saas-marketing/README.md +3 -3
  58. package/src/corpus/templates/saas-marketing/index.md +3 -4
  59. package/src/corpus/templates/status-page/README.md +3 -3
  60. package/src/corpus/templates/status-page/index.md +3 -4
  61. package/src/corpus/templates/subscription-management/AGENTS.md +9 -9
  62. package/src/corpus/templates/subscription-management/index.md +6 -6
  63. package/src/corpus/templates/waitlist/README.md +3 -3
  64. package/src/corpus/templates/waitlist/index.md +3 -4
  65. package/src/corpus/templates/web-app/cloudgrid.yaml +1 -1
  66. package/src/corpus/templates/web-app/index.md +3 -4
  67. package/src/corpus/troubleshooting/deploy-errors.md +1 -1
  68. package/src/corpus/troubleshooting/persistent-apps.md +1 -1
  69. package/src/corpus/usage.md +3 -3
  70. package/src/corpus/workflows/admin-dashboard.md +6 -6
  71. package/src/corpus/workflows/ai-app.md +8 -8
  72. package/src/corpus/workflows/ai-knowledge-base.md +6 -6
  73. package/src/corpus/workflows/analytics-dashboard.md +6 -6
  74. package/src/corpus/workflows/api-dashboard.md +6 -6
  75. package/src/corpus/workflows/api-docs.md +3 -3
  76. package/src/corpus/workflows/api-service.md +8 -8
  77. package/src/corpus/workflows/app-with-data.md +8 -8
  78. package/src/corpus/workflows/appointment-booking.md +8 -8
  79. package/src/corpus/workflows/approval-workflow.md +6 -6
  80. package/src/corpus/workflows/billing-dashboard.md +8 -8
  81. package/src/corpus/workflows/blog-cms.md +6 -6
  82. package/src/corpus/workflows/booking-system.md +7 -7
  83. package/src/corpus/workflows/calendar-scheduler.md +6 -6
  84. package/src/corpus/workflows/changelog.md +3 -3
  85. package/src/corpus/workflows/company-website.md +4 -4
  86. package/src/corpus/workflows/course-platform.md +7 -7
  87. package/src/corpus/workflows/crm.md +7 -7
  88. package/src/corpus/workflows/dashboard.md +4 -4
  89. package/src/corpus/workflows/directory.md +6 -6
  90. package/src/corpus/workflows/docs-site.md +3 -3
  91. package/src/corpus/workflows/erp.md +7 -7
  92. package/src/corpus/workflows/event-board.md +6 -6
  93. package/src/corpus/workflows/expense-tracker.md +6 -6
  94. package/src/corpus/workflows/feature-request-board.md +6 -6
  95. package/src/corpus/workflows/financial-dashboard.md +6 -6
  96. package/src/corpus/workflows/forum.md +7 -7
  97. package/src/corpus/workflows/hr-portal.md +7 -7
  98. package/src/corpus/workflows/internal-tools-portal.md +7 -7
  99. package/src/corpus/workflows/inventory.md +6 -6
  100. package/src/corpus/workflows/invoice.md +6 -6
  101. package/src/corpus/workflows/job-board.md +6 -6
  102. package/src/corpus/workflows/kanban.md +7 -7
  103. package/src/corpus/workflows/landing-page.md +4 -4
  104. package/src/corpus/workflows/lms.md +7 -7
  105. package/src/corpus/workflows/marketplace.md +6 -6
  106. package/src/corpus/workflows/membership-site.md +8 -8
  107. package/src/corpus/workflows/monitoring-dashboard.md +6 -6
  108. package/src/corpus/workflows/online-store.md +8 -8
  109. package/src/corpus/workflows/portfolio.md +3 -3
  110. package/src/corpus/workflows/presentation.md +4 -4
  111. package/src/corpus/workflows/product-catalog.md +6 -6
  112. package/src/corpus/workflows/product-launch.md +4 -4
  113. package/src/corpus/workflows/project-management.md +6 -6
  114. package/src/corpus/workflows/property-listings.md +6 -6
  115. package/src/corpus/workflows/quiz-platform.md +6 -6
  116. package/src/corpus/workflows/report.md +4 -4
  117. package/src/corpus/workflows/restaurant-reservations.md +7 -7
  118. package/src/corpus/workflows/revenue-dashboard.md +6 -6
  119. package/src/corpus/workflows/saas-marketing.md +3 -3
  120. package/src/corpus/workflows/semantic-search.md +7 -7
  121. package/src/corpus/workflows/status-page.md +3 -3
  122. package/src/corpus/workflows/subscription-management.md +8 -8
  123. package/src/corpus/workflows/task-manager.md +6 -6
  124. package/src/corpus/workflows/ticket-system.md +6 -6
  125. package/src/corpus/workflows/time-tracking.md +6 -6
  126. package/src/corpus/workflows/travel-booking.md +7 -7
  127. package/src/corpus/workflows/waitlist.md +3 -3
  128. package/src/corpus/workflows/web-app.md +4 -4
  129. package/src/docs.js +5 -5
  130. package/src/index.js +1 -1
  131. package/src/tools.js +329 -734
  132. package/src/web.js +2 -2
  133. package/src/widgets/live-result.html +1 -1
  134. package/src/widgets/org-picker.html +3 -3
  135. package/src/corpus/skill-drop.md +0 -140
@@ -200,7 +200,7 @@ Runtime app → **local edition** only (Claude Desktop / Claude Code / CLI); the
200
200
  hosted edition cannot build a runtime container. Order matters — `plug` needs a
201
201
  linked directory, so `init` first.
202
202
 
203
- 1. `grid init` (or `gridctl_init`) an app `<name>` — creates the entity +
203
+ 1. `grid init` (or `grid_init`) an app `<name>` — creates the entity +
204
204
  `.cloudgrid/link.json` and a starter `cloudgrid.yaml` with empty `services:{}`.
205
205
  2. Fill: put the app under `services/web/` and set `cloudgrid.yaml` to this
206
206
  blueprint's active fields (`services.web` nextjs `/`, `needs:{database:true}`).
@@ -11,7 +11,7 @@ following it.
11
11
  `AGENTS.md`. Fetch the bundle, read `AGENTS.md`, then generate the files under
12
12
  `services/web/` and deploy.
13
13
 
14
- - **Structure guide:** `gridctl_fetch("template", "calendar-scheduler")` → read
14
+ - **Structure guide:** `grid_fetch("template", "calendar-scheduler")` → read
15
15
  **`AGENTS.md`** (file tree, Mongo collections, CloudGrid injection table,
16
16
  optional auth/payments layers, the cron reminder shape blocked on #1543, deploy
17
17
  steps, edition note).
@@ -3,12 +3,12 @@
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 `gridctl_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
10
10
 
11
- Fetch the template with `gridctl_fetch("template", "changelog")`, then replace the
11
+ Fetch the template with `grid_fetch("template", "changelog")`, then replace the
12
12
  placeholders:
13
13
 
14
14
  - The product name and page intro.
@@ -21,7 +21,7 @@ stylesheets, fonts, or large embedded media.
21
21
  ## Deploy
22
22
 
23
23
  - Hosted MCP edition: call the drop tool with the HTML.
24
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
24
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
25
25
 
26
26
  It deploys as an inspiration and returns a live share URL right away. Re-deploy
27
27
  with the same entity id to update the same URL.
@@ -5,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "changelog")` and fill in the user's content.
14
+ `grid_fetch("template", "changelog")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -10,14 +10,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "company-website")` and fill in the user's content.
19
+ `grid_fetch("template", "company-website")` and fill in the user's content.
21
20
 
22
21
  ## How to adapt
23
22
 
@@ -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 gridctl_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,14 +6,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "company-website")` and fill in the user's content.
15
+ `grid_fetch("template", "company-website")` and fill in the user's content.
17
16
 
18
17
  ## cloudgrid.yaml (reference only)
19
18
 
@@ -7,7 +7,7 @@ Next.js + Mongo app with auth and payments.
7
7
  **This is a blueprint, not app code.** It ships the correct `cloudgrid.yaml` and
8
8
  an `AGENTS.md` structure guide. Read `AGENTS.md`, then build the app under
9
9
  `services/web/` following it. Fetch the guide with
10
- `gridctl_fetch("template", "course-platform")`.
10
+ `grid_fetch("template", "course-platform")`.
11
11
 
12
12
  **Key rules:**
13
13
 
@@ -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 gridctl_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,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "dashboard")` and fill in the user's content.
14
+ `grid_fetch("template", "dashboard")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -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 gridctl_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,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "deck")` and fill in the user's content.
14
+ `grid_fetch("template", "deck")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -3,12 +3,12 @@
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 `gridctl_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
10
10
 
11
- Fetch the template with `gridctl_fetch("template", "docs-site")`, then replace the
11
+ Fetch the template with `grid_fetch("template", "docs-site")`, then replace the
12
12
  placeholders:
13
13
 
14
14
  - The project/doc name and the sidebar section links.
@@ -22,7 +22,7 @@ stylesheets, fonts, or large embedded media.
22
22
  ## Deploy
23
23
 
24
24
  - Hosted MCP edition: call the drop tool with the HTML.
25
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
25
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
26
26
 
27
27
  It deploys as an inspiration and returns a live share URL right away. Re-deploy
28
28
  with the same entity id to update the same URL.
@@ -5,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "docs-site")` and fill in the user's content.
14
+ `grid_fetch("template", "docs-site")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -104,7 +104,7 @@ dev` and runtime.
104
104
  injects that vault item as `process.env.ENV_VAR`. This blueprint maps
105
105
  `AUTH_PROVIDER_SECRET_KEY` and `AUTH_PROVIDER_PUBLISHABLE_KEY`. Rename the env
106
106
  keys to whatever the provider SDK expects (see §4) and set the vault items with
107
- `gridctl_secrets` / the org vault — do not commit keys.
107
+ `grid_secrets` / the org vault — do not commit keys.
108
108
  - **AI (optional)** — if you add `needs: { ai: true }` (e.g. auto-moderation or
109
109
  summarize-thread), the grid injects **`AI_GATEWAY_URL`**; call it via
110
110
  `@cloudgrid-io/ai`. Not required for the base forum.
@@ -167,19 +167,19 @@ inline a key in code or `env:`.
167
167
  A forum is a runtime (built + deployed container) app — **local edition**
168
168
  (Claude Desktop / Claude Code / CLI), async build.
169
169
 
170
- 1. `gridctl_login_status` → `gridctl_login` if needed. Respect the grid picker
170
+ 1. `grid_login_status` → `grid_login` if needed. Respect the grid picker
171
171
  (ask which grid if the user has more than one).
172
- 2. `gridctl_init` an app `<name>` — creates the entity + `.cloudgrid/link.json`
172
+ 2. `grid_init` an app `<name>` — creates the entity + `.cloudgrid/link.json`
173
173
  and a `cloudgrid.yaml` with empty `services: {}`. Run `init` FIRST (`plug`
174
174
  needs a linked dir).
175
175
  3. Write the app under `services/web/` per §1, then fill `cloudgrid.yaml` to the
176
176
  active shape: `name`, `services.web { type: nextjs, path: / }`, `needs:
177
177
  { database: true }`, and the `vault:` mappings for the auth keys.
178
- 4. Set the auth secrets: `gridctl_secrets` (or the org vault) for the provider
178
+ 4. Set the auth secrets: `grid_secrets` (or the org vault) for the provider
179
179
  keys. Do NOT set `DATABASE_MONGODB_URL` — the grid injects it.
180
180
  5. (Optional) `grid dev` to run locally against injected Mongo before shipping.
181
- 6. `gridctl_plug` to deploy. A runtime deploy is **ASYNC** — the first response
182
- is `status: building`, not a live URL. Poll `gridctl_status` (or the returned
181
+ 6. `grid_plug` to deploy. A runtime deploy is **ASYNC** — the first response
182
+ is `status: building`, not a live URL. Poll `grid_status` (or the returned
183
183
  poll_url) until live; surface a liveness signal while it builds, never a bare
184
184
  spinner.
185
185
  7. Only once live, return the deployed app URL. Re-plug the SAME entity to update
@@ -7,7 +7,7 @@ moderation, on Next.js + grid-shared MongoDB, auth via a hosted provider
7
7
  under `services/web/` following it. The shape mirrors the proven `app-with-data`
8
8
  template (lazy Mongo getter, App-Router routes, `needs: { database: true }`).
9
9
 
10
- **Fetch the bundle:** `gridctl_fetch("template", "forum")` returns this
10
+ **Fetch the bundle:** `grid_fetch("template", "forum")` returns this
11
11
  directory — `cloudgrid.yaml`, `AGENTS.md` (the structure guide), and this file.
12
12
 
13
13
  **Key rules:**
@@ -28,7 +28,7 @@ Runtime app → **local edition only**, async deploy (poll to a live URL).
28
28
 
29
29
  ## Fetch bundle
30
30
 
31
- Fetch this blueprint with `gridctl_fetch("template", "hr-portal")`. It returns
31
+ Fetch this blueprint with `grid_fetch("template", "hr-portal")`. It returns
32
32
  `cloudgrid.yaml`, `AGENTS.md` (the structure guide), and this README — no app
33
33
  code. Follow `AGENTS.md` to build, then `grid init → fill → grid plug → poll`.
34
34
 
@@ -34,7 +34,7 @@ Runtime app → **local edition only**, async deploy (poll to a live URL).
34
34
 
35
35
  ## Fetch bundle
36
36
 
37
- Fetch this blueprint with `gridctl_fetch("template", "internal-tools-portal")`. It
37
+ Fetch this blueprint with `grid_fetch("template", "internal-tools-portal")`. It
38
38
  returns `cloudgrid.yaml`, `AGENTS.md` (the structure guide), and this README — no
39
39
  app code. Follow `AGENTS.md` to build, then `grid init → fill → grid plug → poll`.
40
40
 
@@ -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 gridctl_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,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "landing-page")` and fill in the user's content.
14
+ `grid_fetch("template", "landing-page")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -8,7 +8,7 @@ Next.js + Mongo app with role-based (instructor/student) auth.
8
8
  **This is a blueprint, not app code.** It ships the correct `cloudgrid.yaml` and
9
9
  an `AGENTS.md` structure guide. Read `AGENTS.md`, then build the app under
10
10
  `services/web/` following it. Fetch the guide with
11
- `gridctl_fetch("template", "lms")`.
11
+ `grid_fetch("template", "lms")`.
12
12
 
13
13
  **Key rules:**
14
14
 
@@ -181,7 +181,7 @@ Runtime app → **local edition** only (Claude Desktop / Claude Code / CLI); the
181
181
  hosted edition cannot build a runtime container. Order matters — `plug` needs a
182
182
  linked directory, so `init` first.
183
183
 
184
- 1. `grid init` (or `gridctl_init`) an app `<name>` — creates the entity +
184
+ 1. `grid init` (or `grid_init`) an app `<name>` — creates the entity +
185
185
  `.cloudgrid/link.json` and a starter `cloudgrid.yaml` with empty `services:{}`.
186
186
  2. Fill: put the app under `services/web/` and set `cloudgrid.yaml` to this
187
187
  blueprint's active fields (`services.web` nextjs `/`, `needs:{database:true}`,
@@ -10,7 +10,7 @@ code** — read the structure guide, then build the app following it.
10
10
  `AGENTS.md`. Fetch the bundle, read `AGENTS.md`, then generate the files under
11
11
  `services/web/` and deploy.
12
12
 
13
- - **Structure guide:** `gridctl_fetch("template", "marketplace")` → read
13
+ - **Structure guide:** `grid_fetch("template", "marketplace")` → read
14
14
  **`AGENTS.md`** (file tree, Mongo collections, CloudGrid injection table, auth +
15
15
  Stripe Connect wiring, deploy steps, edition note).
16
16
 
@@ -9,7 +9,7 @@ rules — they are what make it deploy.
9
9
 
10
10
  The proven persistent shape is `app-with-data` (Next.js + Mongo). This blueprint
11
11
  extends it with auth + Stripe. Fetch that template for the Mongo lazy-client and
12
- App-Router API pattern: `gridctl_fetch("template", "app-with-data")`.
12
+ App-Router API pattern: `grid_fetch("template", "app-with-data")`.
13
13
 
14
14
  ## 1. File tree
15
15
 
@@ -78,7 +78,7 @@ A user is a member when a `memberships` doc for their `authId` has
78
78
  STRIPE_WEBHOOK_SECRET: stripe-webhook-secret
79
79
  AUTH_PROVIDER_KEY: auth-provider-key
80
80
  ```
81
- Set the vault items ONCE with `gridctl_secrets` (or `grid secrets set`), then
81
+ Set the vault items ONCE with `grid_secrets` (or `grid secrets set`), then
82
82
  the deployer injects each as the named env var (`process.env.STRIPE_KEY`, etc.)
83
83
  at runtime and under `grid dev`. Do NOT commit keys; do NOT set them in
84
84
  `services.web.env` (that block is for non-secret config only). Read them
@@ -130,21 +130,21 @@ A user is a member when a `memberships` doc for their `authId` has
130
130
 
131
131
  ## 5. Deploy steps
132
132
 
133
- 1. `gridctl_login_status` → `gridctl_login` if needed. Respect the grid picker
133
+ 1. `grid_login_status` → `grid_login` if needed. Respect the grid picker
134
134
  (ask which grid if the user has more than one).
135
- 2. `gridctl_init` an app `<name>` FIRST — it creates the entity, writes
135
+ 2. `grid_init` an app `<name>` FIRST — it creates the entity, writes
136
136
  `.cloudgrid/link.json`, and a `cloudgrid.yaml` with empty `services: {}`.
137
137
  `plug` needs a linked directory.
138
138
  3. Write the app under `services/web/` and set `cloudgrid.yaml` to the active
139
139
  shape: `name` + `services.web{type: nextjs, path: /}` + `needs:{database:true}`
140
140
  + the `vault:` block.
141
- 4. Set the secrets: `gridctl_secrets` for `stripe-live-key`,
141
+ 4. Set the secrets: `grid_secrets` for `stripe-live-key`,
142
142
  `stripe-webhook-secret`, `auth-provider-key` (the vault item keys the
143
143
  `vault:` block maps from). Non-secret config (publishable auth key, price id)
144
- → `gridctl_env` / `services.web.env`. Do NOT set `DATABASE_MONGODB_URL`
144
+ → `grid_env` / `services.web.env`. Do NOT set `DATABASE_MONGODB_URL`
145
145
  yourself — the grid injects it.
146
- 5. `gridctl_plug` to deploy. A runtime deploy is **ASYNC** — the first response
147
- is `status: building`, not a live URL. Poll `gridctl_status` (or the returned
146
+ 5. `grid_plug` to deploy. A runtime deploy is **ASYNC** — the first response
147
+ is `status: building`, not a live URL. Poll `grid_status` (or the returned
148
148
  poll_url) until live; surface a liveness signal while it builds, never a bare
149
149
  silent wait.
150
150
  6. Once live, add the `/api/webhook` URL as the Stripe webhook endpoint and copy
@@ -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 `gridctl_drop`) instead, then stop the runtime path.
160
+ paywall-landing page (via `grid_plug`) instead, then stop the runtime path.
@@ -9,8 +9,8 @@ adapt plans/content/fields, then deploy (async — poll to a live URL). Local
9
9
  edition only.
10
10
 
11
11
  **Fetch the bundle:**
12
- - `gridctl_fetch("template", "membership-site")` — this blueprint (`cloudgrid.yaml` + `AGENTS.md`).
13
- - `gridctl_fetch("template", "app-with-data")` — the proven Next.js + Mongo shape to extend (lazy db client, App-Router API).
12
+ - `grid_fetch("template", "membership-site")` — this blueprint (`cloudgrid.yaml` + `AGENTS.md`).
13
+ - `grid_fetch("template", "app-with-data")` — the proven Next.js + Mongo shape to extend (lazy db client, App-Router API).
14
14
 
15
15
  **Key rules:**
16
16
 
@@ -24,7 +24,7 @@ edition only.
24
24
  the getter, never at module top level (top-level read fails `next build`).
25
25
  4. **Secrets via the `vault:` block** → env vars. `STRIPE_KEY`,
26
26
  `STRIPE_WEBHOOK_SECRET`, `AUTH_PROVIDER_KEY` map to vault items; set them with
27
- `gridctl_secrets`, and the deployer injects them at runtime. Read lazily; do
27
+ `grid_secrets`, and the deployer injects them at runtime. Read lazily; do
28
28
  not commit keys or put secrets in `services.web.env`.
29
29
  5. **Gate server-side.** Auth answers "who are you"; the `memberships`
30
30
  collection answers "have you paid". `app/members/layout.js` checks membership
@@ -60,7 +60,7 @@ vault:
60
60
 
61
61
  ## Deploy (async, local edition)
62
62
 
63
- `gridctl_init` first (creates the entity + link.json), write the app under
64
- `services/web/`, set the vault secrets with `gridctl_secrets`, `gridctl_plug`
65
- (async — poll `gridctl_status` to a live URL), then register the `/api/webhook`
63
+ `grid_init` first (creates the entity + link.json), write the app under
64
+ `services/web/`, set the vault secrets with `grid_secrets`, `grid_plug`
65
+ (async — poll `grid_status` to a live URL), then register the `/api/webhook`
66
66
  URL in Stripe and re-plug. Re-plug the same entity to update the same URL.
@@ -74,7 +74,7 @@ needs:
74
74
 
75
75
  ## Build it
76
76
 
77
- Fetch `gridctl_fetch("template", "online-store")` and read **`AGENTS.md`** — it
77
+ Fetch `grid_fetch("template", "online-store")` and read **`AGENTS.md`** — it
78
78
  has the checkout + webhook wiring, the vault/secret setup, and the deploy steps
79
79
  (`grid init` → write under `services/web/` → `grid secrets set` → `grid plug`,
80
80
  async → poll to a live URL → register the webhook endpoint in Stripe). Adapt the
@@ -3,12 +3,12 @@
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 `gridctl_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
10
10
 
11
- Fetch the template with `gridctl_fetch("template", "portfolio")`, then replace the
11
+ Fetch the template with `grid_fetch("template", "portfolio")`, then replace the
12
12
  placeholders:
13
13
 
14
14
  - The person's name, role/title, and short intro.
@@ -23,7 +23,7 @@ stylesheets, fonts, or large embedded media.
23
23
  ## Deploy
24
24
 
25
25
  - Hosted MCP edition: call the drop tool with the HTML.
26
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
26
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
27
27
 
28
28
  It deploys as an inspiration and returns a live share URL right away. Re-deploy
29
29
  with the same entity id to update the same URL.
@@ -5,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "portfolio")` and fill in the user's content.
14
+ `grid_fetch("template", "portfolio")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -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 **`gridctl_drop`** (or `gridctl_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 `gridctl_drop`.
42
+ fast path is `grid_plug`.
44
43
 
45
44
  The fillable HTML is the real template — fetch it with
46
- `gridctl_fetch("template", "product-launch")` and fill in the user's content.
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
- # gridctl_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,14 +8,13 @@ client-side.
8
8
 
9
9
  ## How it deploys
10
10
 
11
- To publish this page, use **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "product-launch")` and fill in the user's content
17
+ `grid_fetch("template", "product-launch")` and fill in the user's content
19
18
  (product name, hero copy, countdown target, features, offer, quotes). Keep it a
20
19
  single self-contained file: inline SVG / `data:` URIs only, no external scripts,
21
20
  stylesheets, fonts, or CDNs.
@@ -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 gridctl_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,14 +5,13 @@ 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 **`gridctl_drop`** (or `gridctl_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 `gridctl_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
- `gridctl_fetch("template", "report")` and fill in the user's content.
14
+ `grid_fetch("template", "report")` and fill in the user's content.
16
15
 
17
16
  ## cloudgrid.yaml (reference only)
18
17
 
@@ -115,9 +115,9 @@ You never provision infra or set connection strings by hand. Declare intent in
115
115
  `STRIPE_KEY: stripe-live-key`, `SENDGRID_API_KEY: sendgrid-key`,
116
116
  `AUTH_PROVIDER_KEY: auth-provider-secret`. The platform reads the named item
117
117
  from the org vault and injects it as that env var at runtime. Store the actual
118
- secret value with `gridctl_secrets` (or the org vault UI) — never commit it. In
118
+ secret value with `grid_secrets` (or the org vault UI) — never commit it. In
119
119
  code read `process.env.STRIPE_KEY`, `process.env.SENDGRID_API_KEY`, etc. Vault
120
- is the CloudGrid-correct path for third-party keys; `gridctl_env` is for
120
+ is the CloudGrid-correct path for third-party keys; `grid_env` is for
121
121
  non-secret config only.
122
122
 
123
123
  - **AI (optional).** If you add AI (e.g. menu-copy generation, natural-language
@@ -154,7 +154,7 @@ Reserved env var names you must NOT set: `PORT`, `APP_NAME`, `SERVICE_NAME`,
154
154
  provider; leave `/`, `/reserve`, `/api/menu`, `/api/reservations` (POST),
155
155
  `/api/webhooks/stripe` public.
156
156
  3. Initialize the SDK from `process.env.AUTH_PROVIDER_KEY` (+ any public
157
- publishable key via `gridctl_env`). The public booking flow needs no login.
157
+ publishable key via `grid_env`). The public booking flow needs no login.
158
158
 
159
159
  Keep the public reservation POST open; only staff read/mutate endpoints
160
160
  (`GET /api/reservations`, `PATCH/DELETE /api/reservations/[id]`, `/staff/*`) sit
@@ -167,20 +167,20 @@ behind auth.
167
167
  Runtime app → **local edition** only (Claude Desktop / Claude Code / CLI); the
168
168
  build is **asynchronous**.
169
169
 
170
- 1. `gridctl_login_status` (→ `gridctl_login` if needed). Pick the grid if the
170
+ 1. `grid_login_status` (→ `grid_login` if needed). Pick the grid if the
171
171
  user has more than one.
172
- 2. `gridctl_init` an app `<name>` — creates the entity + `.cloudgrid/link.json`
172
+ 2. `grid_init` an app `<name>` — creates the entity + `.cloudgrid/link.json`
173
173
  and a `cloudgrid.yaml` with empty `services: {}`. Run `init` FIRST (plug needs
174
174
  a linked dir).
175
175
  3. **Fill** — write the app under `services/web/`, then set `cloudgrid.yaml` to
176
176
  this blueprint's active fields: `name`, `services.web { type: nextjs, path: / }`,
177
177
  `needs: { database: true }`, and the `vault:` mappings you actually use.
178
- 4. Store secrets: `gridctl_secrets` for the vault item values (Stripe/SendGrid/
179
- auth). Non-secret config (publishable keys, feature flags) → `gridctl_env`.
178
+ 4. Store secrets: `grid_secrets` for the vault item values (Stripe/SendGrid/
179
+ auth). Non-secret config (publishable keys, feature flags) → `grid_env`.
180
180
  5. (Optional) `grid dev` — runs Next.js locally with `DATABASE_MONGODB_URL` and
181
181
  vault vars injected against dev Mongo. Seed `menu`, test a booking.
182
- 6. `gridctl_plug` — builds + deploys `services/web/`. **Async**: the first
183
- response is `status: building`, not a URL. Poll `gridctl_status` (or the
182
+ 6. `grid_plug` — builds + deploys `services/web/`. **Async**: the first
183
+ response is `status: building`, not a URL. Poll `grid_status` (or the
184
184
  returned poll URL) until live; surface a liveness signal while it builds
185
185
  (never a bare silent wait). Only then return the **live app URL** (not the
186
186
  build/log link).