@cloudgrid-io/mcp 0.16.1 → 0.17.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 (133) hide show
  1. package/README.md +39 -39
  2. package/package.json +1 -1
  3. package/src/corpus/capability-map.md +7 -7
  4. package/src/corpus/cloudgrid-yaml.md +5 -5
  5. package/src/corpus/cookbook.md +1 -1
  6. package/src/corpus/install.md +1 -1
  7. package/src/corpus/rules/publish-fallbacks.md +1 -1
  8. package/src/corpus/skill-claim.md +1 -1
  9. package/src/corpus/skill-drop.md +2 -2
  10. package/src/corpus/skill-login.md +2 -2
  11. package/src/corpus/skills-readme.md +1 -1
  12. package/src/corpus/templates/ai-knowledge-base/AGENTS.md +1 -1
  13. package/src/corpus/templates/ai-knowledge-base/index.md +1 -1
  14. package/src/corpus/templates/api-docs/README.md +3 -3
  15. package/src/corpus/templates/api-docs/index.md +3 -3
  16. package/src/corpus/templates/appointment-booking/AGENTS.md +9 -9
  17. package/src/corpus/templates/appointment-booking/index.md +6 -6
  18. package/src/corpus/templates/approval-workflow/AGENTS.md +2 -2
  19. package/src/corpus/templates/approval-workflow/index.md +2 -2
  20. package/src/corpus/templates/billing-dashboard/index.md +1 -1
  21. package/src/corpus/templates/calendar-scheduler/AGENTS.md +1 -1
  22. package/src/corpus/templates/calendar-scheduler/index.md +1 -1
  23. package/src/corpus/templates/changelog/README.md +3 -3
  24. package/src/corpus/templates/changelog/index.md +3 -3
  25. package/src/corpus/templates/company-website/README.md +3 -3
  26. package/src/corpus/templates/company-website/cloudgrid.yaml +1 -1
  27. package/src/corpus/templates/company-website/index.md +3 -3
  28. package/src/corpus/templates/course-platform/index.md +1 -1
  29. package/src/corpus/templates/dashboard/cloudgrid.yaml +1 -1
  30. package/src/corpus/templates/dashboard/index.md +3 -3
  31. package/src/corpus/templates/deck/cloudgrid.yaml +1 -1
  32. package/src/corpus/templates/deck/index.md +3 -3
  33. package/src/corpus/templates/docs-site/README.md +3 -3
  34. package/src/corpus/templates/docs-site/index.md +3 -3
  35. package/src/corpus/templates/forum/AGENTS.md +6 -6
  36. package/src/corpus/templates/forum/index.md +1 -1
  37. package/src/corpus/templates/hr-portal/index.md +1 -1
  38. package/src/corpus/templates/internal-tools-portal/index.md +1 -1
  39. package/src/corpus/templates/landing-page/cloudgrid.yaml +1 -1
  40. package/src/corpus/templates/landing-page/index.md +3 -3
  41. package/src/corpus/templates/lms/index.md +1 -1
  42. package/src/corpus/templates/marketplace/AGENTS.md +1 -1
  43. package/src/corpus/templates/marketplace/index.md +1 -1
  44. package/src/corpus/templates/membership-site/AGENTS.md +9 -9
  45. package/src/corpus/templates/membership-site/index.md +6 -6
  46. package/src/corpus/templates/online-store/index.md +1 -1
  47. package/src/corpus/templates/portfolio/README.md +3 -3
  48. package/src/corpus/templates/portfolio/index.md +3 -3
  49. package/src/corpus/templates/product-launch/README.md +3 -3
  50. package/src/corpus/templates/product-launch/cloudgrid.yaml +1 -1
  51. package/src/corpus/templates/product-launch/index.md +3 -3
  52. package/src/corpus/templates/report/cloudgrid.yaml +1 -1
  53. package/src/corpus/templates/report/index.md +3 -3
  54. package/src/corpus/templates/restaurant-reservations/AGENTS.md +9 -9
  55. package/src/corpus/templates/restaurant-reservations/index.md +2 -2
  56. package/src/corpus/templates/saas-marketing/README.md +3 -3
  57. package/src/corpus/templates/saas-marketing/index.md +3 -3
  58. package/src/corpus/templates/status-page/README.md +3 -3
  59. package/src/corpus/templates/status-page/index.md +3 -3
  60. package/src/corpus/templates/subscription-management/AGENTS.md +9 -9
  61. package/src/corpus/templates/subscription-management/index.md +6 -6
  62. package/src/corpus/templates/waitlist/README.md +3 -3
  63. package/src/corpus/templates/waitlist/index.md +3 -3
  64. package/src/corpus/templates/web-app/cloudgrid.yaml +1 -1
  65. package/src/corpus/templates/web-app/index.md +3 -3
  66. package/src/corpus/troubleshooting/deploy-errors.md +1 -1
  67. package/src/corpus/troubleshooting/persistent-apps.md +1 -1
  68. package/src/corpus/usage.md +2 -2
  69. package/src/corpus/workflows/admin-dashboard.md +6 -6
  70. package/src/corpus/workflows/ai-app.md +8 -8
  71. package/src/corpus/workflows/ai-knowledge-base.md +6 -6
  72. package/src/corpus/workflows/analytics-dashboard.md +6 -6
  73. package/src/corpus/workflows/api-dashboard.md +6 -6
  74. package/src/corpus/workflows/api-docs.md +3 -3
  75. package/src/corpus/workflows/api-service.md +8 -8
  76. package/src/corpus/workflows/app-with-data.md +8 -8
  77. package/src/corpus/workflows/appointment-booking.md +8 -8
  78. package/src/corpus/workflows/approval-workflow.md +6 -6
  79. package/src/corpus/workflows/billing-dashboard.md +8 -8
  80. package/src/corpus/workflows/blog-cms.md +6 -6
  81. package/src/corpus/workflows/booking-system.md +7 -7
  82. package/src/corpus/workflows/calendar-scheduler.md +6 -6
  83. package/src/corpus/workflows/changelog.md +3 -3
  84. package/src/corpus/workflows/company-website.md +4 -4
  85. package/src/corpus/workflows/course-platform.md +7 -7
  86. package/src/corpus/workflows/crm.md +7 -7
  87. package/src/corpus/workflows/dashboard.md +4 -4
  88. package/src/corpus/workflows/directory.md +6 -6
  89. package/src/corpus/workflows/docs-site.md +3 -3
  90. package/src/corpus/workflows/erp.md +7 -7
  91. package/src/corpus/workflows/event-board.md +6 -6
  92. package/src/corpus/workflows/expense-tracker.md +6 -6
  93. package/src/corpus/workflows/feature-request-board.md +6 -6
  94. package/src/corpus/workflows/financial-dashboard.md +6 -6
  95. package/src/corpus/workflows/forum.md +7 -7
  96. package/src/corpus/workflows/hr-portal.md +7 -7
  97. package/src/corpus/workflows/internal-tools-portal.md +7 -7
  98. package/src/corpus/workflows/inventory.md +6 -6
  99. package/src/corpus/workflows/invoice.md +6 -6
  100. package/src/corpus/workflows/job-board.md +6 -6
  101. package/src/corpus/workflows/kanban.md +7 -7
  102. package/src/corpus/workflows/landing-page.md +4 -4
  103. package/src/corpus/workflows/lms.md +7 -7
  104. package/src/corpus/workflows/marketplace.md +6 -6
  105. package/src/corpus/workflows/membership-site.md +8 -8
  106. package/src/corpus/workflows/monitoring-dashboard.md +6 -6
  107. package/src/corpus/workflows/online-store.md +8 -8
  108. package/src/corpus/workflows/portfolio.md +3 -3
  109. package/src/corpus/workflows/presentation.md +4 -4
  110. package/src/corpus/workflows/product-catalog.md +6 -6
  111. package/src/corpus/workflows/product-launch.md +4 -4
  112. package/src/corpus/workflows/project-management.md +6 -6
  113. package/src/corpus/workflows/property-listings.md +6 -6
  114. package/src/corpus/workflows/quiz-platform.md +6 -6
  115. package/src/corpus/workflows/report.md +4 -4
  116. package/src/corpus/workflows/restaurant-reservations.md +7 -7
  117. package/src/corpus/workflows/revenue-dashboard.md +6 -6
  118. package/src/corpus/workflows/saas-marketing.md +3 -3
  119. package/src/corpus/workflows/semantic-search.md +7 -7
  120. package/src/corpus/workflows/status-page.md +3 -3
  121. package/src/corpus/workflows/subscription-management.md +8 -8
  122. package/src/corpus/workflows/task-manager.md +6 -6
  123. package/src/corpus/workflows/ticket-system.md +6 -6
  124. package/src/corpus/workflows/time-tracking.md +6 -6
  125. package/src/corpus/workflows/travel-booking.md +7 -7
  126. package/src/corpus/workflows/waitlist.md +3 -3
  127. package/src/corpus/workflows/web-app.md +4 -4
  128. package/src/docs.js +5 -5
  129. package/src/index.js +1 -1
  130. package/src/tools.js +191 -142
  131. package/src/web.js +1 -1
  132. package/src/widgets/live-result.html +1 -1
  133. package/src/widgets/org-picker.html +1 -1
@@ -37,13 +37,13 @@ A persistent billing dashboard is a built + deployed container. It requires the
37
37
 
38
38
  ## 2. Auth + grid
39
39
 
40
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
40
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
41
41
  2. A grid is required. Respect the grid picker: if the user has more than one grid,
42
42
  ask which to use; do not assume a target.
43
43
 
44
44
  ## 3. Scaffold
45
45
 
46
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
46
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
47
47
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
48
48
  directory, so run `init` FIRST.
49
49
 
@@ -51,7 +51,7 @@ directory, so run `init` FIRST.
51
51
 
52
52
  This is a blueprint — the structure guide is the deliverable, not copy-paste code.
53
53
 
54
- 1. `gridctl_fetch("template", "billing-dashboard")`.
54
+ 1. `grid_fetch("template", "billing-dashboard")`.
55
55
  2. **Read `AGENTS.md`** in the fetched template. It has: the file tree (app under
56
56
  `services/web/`), the Mongo collections (`customers`, `invoices`, `charges`,
57
57
  `usage_events`) and their fields, how the grid injects Mongo
@@ -94,24 +94,24 @@ This is a blueprint — the structure guide is the deliverable, not copy-paste c
94
94
 
95
95
  ## 6. Config
96
96
 
97
- - Stripe secrets → the vault: `gridctl_secrets` to set `stripe-live-key` (and a
97
+ - Stripe secrets → the vault: `grid_secrets` to set `stripe-live-key` (and a
98
98
  `stripe-webhook-secret` if you map one). The `vault:` block turns them into env
99
- vars. Non-secret config → `gridctl_env`.
99
+ vars. Non-secret config → `grid_env`.
100
100
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` /
101
101
  `MONGODB_URL`) — the grid injects them.
102
102
 
103
103
  ## 7. Deploy (async)
104
104
 
105
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
105
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
106
106
  response is `status: "building"`, NOT a live URL yet.
107
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
107
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
108
108
  - Surface a liveness signal while it builds — never a bare silent wait.
109
109
  - Only once it is live, return the deployed app URL (NOT the build/log link).
110
110
 
111
111
  ## 8. Wire the Stripe webhook + return the live URL
112
112
 
113
113
  1. Register `<live-url>/api/webhook` as a webhook endpoint in the Stripe dashboard,
114
- copy its `whsec_…` secret into the vault, and re-`gridctl_plug` the SAME entity
114
+ copy its `whsec_…` secret into the vault, and re-`grid_plug` the SAME entity
115
115
  if you changed the `vault:` mapping (same URL).
116
116
  2. Give the user the live dashboard URL — that is the deliverable. To iterate,
117
117
  re-plug the SAME entity so it updates the same URL.
@@ -33,13 +33,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
33
33
 
34
34
  ## 2. Auth + grid
35
35
 
36
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
36
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
37
37
  2. A grid is required. Respect the grid picker: if the user has more than one
38
38
  grid, ask which to use; do not assume a target.
39
39
 
40
40
  ## 3. Scaffold
41
41
 
42
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
42
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
43
43
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
44
44
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
45
45
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
64
64
  author new yaml with it, and never set `needs:` and `requires:` together (the
65
65
  validator rejects it).
66
66
  2. Fetch the template for the Mongo wiring + CRUD shape:
67
- `gridctl_fetch("template", "blog-cms")`. It is a minimal, real Next.js +
67
+ `grid_fetch("template", "blog-cms")`. It is a minimal, real Next.js +
68
68
  `mongodb`-driver blog under `services/web/`: a lazy client in
69
69
  `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `posts`
70
70
  collection, a server-component list page, a single-post page at
@@ -85,15 +85,15 @@ before deploying. Don't require it.
85
85
 
86
86
  ## 6. Config
87
87
 
88
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
88
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
89
89
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
90
90
  legacy `MONGODB_URL`) — the grid injects them.
91
91
 
92
92
  ## 7. Deploy (async)
93
93
 
94
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
94
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
95
95
  response is `status: "building"`, NOT a live URL yet.
96
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
96
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
97
97
  - Surface a liveness signal while it builds — never a bare silent wait.
98
98
  - Only once it is live, return the deployed app URL (NOT the build/log link).
99
99
 
@@ -41,18 +41,18 @@ edition** (Claude Desktop / Claude Code) or the CLI.
41
41
 
42
42
  ## 2. Auth + grid
43
43
 
44
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
44
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
45
45
  2. A grid is required. Respect the grid picker: if the user has more than one
46
46
  grid, ask which to use; do not assume a target.
47
47
 
48
48
  ## 3. Read the blueprint, then scaffold
49
49
 
50
- 1. Fetch the blueprint: `gridctl_fetch("template", "booking-system")`. **Read its
50
+ 1. Fetch the blueprint: `grid_fetch("template", "booking-system")`. **Read its
51
51
  `AGENTS.md`** — it is the structure guide (file tree under `services/web/`, the
52
52
  `services` / `availabilityRules` / `bookings` collections + the double-booking
53
53
  guard, how CloudGrid injects the DB and vault secrets, how to wire Stripe +
54
54
  auth, and the reminder-cron design).
55
- 2. `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
55
+ 2. `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
56
56
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a
57
57
  linked directory, so run `init` FIRST.
58
58
 
@@ -89,9 +89,9 @@ edition** (Claude Desktop / Claude Code) or the CLI.
89
89
 
90
90
  ## 5. Config (secrets)
91
91
 
92
- - Payment/auth secrets → add the vault items with `gridctl_secrets` (e.g.
92
+ - Payment/auth secrets → add the vault items with `grid_secrets` (e.g.
93
93
  `stripe-live-key`, `stripe-webhook-secret`, `auth-provider-key`) BEFORE plug so
94
- the `vault:` mappings resolve. Non-secret config → `gridctl_env`.
94
+ the `vault:` mappings resolve. Non-secret config → `grid_env`.
95
95
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` / legacy
96
96
  `MONGODB_URL`) — the grid injects them.
97
97
 
@@ -103,9 +103,9 @@ require it.
103
103
 
104
104
  ## 7. Deploy (async)
105
105
 
106
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
106
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
107
107
  response is `status: "building"`, NOT a live URL yet.
108
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
108
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
109
109
  - Surface a liveness signal while it builds — never a bare silent wait.
110
110
  - Only once it is live, return the deployed app URL (NOT the build/log link).
111
111
 
@@ -35,13 +35,13 @@ requires the **local edition** (Claude Desktop / Claude Code) or the CLI.
35
35
 
36
36
  ## 2. Auth + grid
37
37
 
38
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
38
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
39
39
  2. A grid is required. Respect the grid picker: if the user has more than one
40
40
  grid, ask which to use; do not assume a target.
41
41
 
42
42
  ## 3. Fetch the blueprint and READ AGENTS.md
43
43
 
44
- `gridctl_fetch("template", "calendar-scheduler")`. The deliverable is the
44
+ `grid_fetch("template", "calendar-scheduler")`. The deliverable is the
45
45
  **`AGENTS.md` structure guide** — read it before writing anything. It defines:
46
46
  - the `services/web/` file tree (calendar page, event + booking routes, `lib/`),
47
47
  - the Mongo collections (`events`, `availability`, optional `bookings`) + fields,
@@ -56,7 +56,7 @@ There is no app code to copy — you generate it from the guide.
56
56
 
57
57
  ## 4. Scaffold + fill cloudgrid.yaml
58
58
 
59
- `gridctl_init` an app `<name>` FIRST (creates the entity + `.cloudgrid/link.json`
59
+ `grid_init` an app `<name>` FIRST (creates the entity + `.cloudgrid/link.json`
60
60
  and a starter `cloudgrid.yaml` with empty `services:{}`; `plug` needs a linked
61
61
  directory). Then put the app under **`services/web/`** and set `cloudgrid.yaml` to
62
62
  the blueprint's active fields:
@@ -108,7 +108,7 @@ scheduler hitting an authenticated `POST /api/cron/reminders` route on `web`).
108
108
 
109
109
  - Map any secrets in the `vault:` block, then **store the values**:
110
110
  `grid secrets set auth-provider-key …`, `grid secrets set stripe-live-key sk_live_…`,
111
- `grid secrets set sendgrid-key SG.…`. Non-secret public config → `gridctl_env`.
111
+ `grid secrets set sendgrid-key SG.…`. Non-secret public config → `grid_env`.
112
112
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` / legacy
113
113
  `MONGODB_URL`) — the grid injects them.
114
114
 
@@ -119,9 +119,9 @@ secrets) before deploying. Don't require it.
119
119
 
120
120
  ## 9. Deploy (async)
121
121
 
122
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
122
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
123
123
  response is `status: "building"`, NOT a live URL yet.
124
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
124
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
125
125
  - Surface a liveness signal while it builds — never a bare silent wait.
126
126
  - Only once it is live, return the deployed app URL (NOT the build/log link).
127
127
 
@@ -4,7 +4,7 @@ when: changelog, release notes, what's new, product updates page, version histor
4
4
  needs: none
5
5
  deploy: inspiration
6
6
  editions: all
7
- capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via gridctl_drop.
7
+ capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_drop.
8
8
  summary: Fetch the changelog template, fill it with the user's release entries, deploy it, and return the live share URL.
9
9
  ---
10
10
 
@@ -13,7 +13,7 @@ summary: Fetch the changelog template, fill it with the user's release entries,
13
13
  Detect the intent ("build me a changelog / release notes page for X") and follow
14
14
  this recipe. Do not ask setup questions first; use sensible defaults and build.
15
15
 
16
- 1. **Fetch the template.** Call `gridctl_fetch("template", "changelog")` to load
16
+ 1. **Fetch the template.** Call `grid_fetch("template", "changelog")` to load
17
17
  the self-contained HTML changelog (reverse-chronological versioned entries with
18
18
  tagged change items).
19
19
  2. **Fill the template.** Replace the placeholders with the user's content:
@@ -25,7 +25,7 @@ this recipe. Do not ask setup questions first; use sensible defaults and build.
25
25
  stylesheets, fonts, or large embedded media.
26
26
  3. **Deploy.** Deploy the filled HTML:
27
27
  - Hosted MCP edition: call the drop tool with the HTML.
28
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
28
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
29
29
  It is an inspiration and deploys synchronously, so you get a URL right away.
30
30
  4. **Return the live share URL.** For revisions, re-deploy with the entity id
31
31
  from the first deploy — it updates the same share URL.
@@ -4,7 +4,7 @@ when: company website, business site, corporate site, about-us site, small-busin
4
4
  needs: none
5
5
  deploy: inspiration
6
6
  editions: all
7
- capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via gridctl_drop.
7
+ capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_drop.
8
8
  summary: Fetch the company-website template, fill it with the user's content across hero/about/services/team/contact, deploy it, and return the live share URL.
9
9
  ---
10
10
 
@@ -14,9 +14,9 @@ Detect the intent ("build me a company website / business site / about-us page
14
14
  for X") and follow this recipe. Do not ask setup questions first; use sensible
15
15
  defaults from what the user tells you and build.
16
16
 
17
- 1. **Fetch the template.** Call `gridctl_fetch("template", "company-website")` to
17
+ 1. **Fetch the template.** Call `grid_fetch("template", "company-website")` to
18
18
  load the self-contained multi-section HTML company site.
19
- 2. **(Optional) Fetch the example.** Call `gridctl_fetch("example", "company-website")`
19
+ 2. **(Optional) Fetch the example.** Call `grid_fetch("example", "company-website")`
20
20
  to see a filled site as a reference for tone and structure.
21
21
  3. **Fill the template.** Replace the `{{PLACEHOLDER}}` tokens with the user's
22
22
  content, section by section:
@@ -34,7 +34,7 @@ defaults from what the user tells you and build.
34
34
  variables (`--accent`, `--bg`, `--fg`) if the user has brand colors.
35
35
  4. **Deploy.** Deploy the filled HTML:
36
36
  - Hosted MCP edition: call the drop tool with the HTML.
37
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
37
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
38
38
  A company website is an inspiration and deploys synchronously, so you get a
39
39
  URL right away.
40
40
  5. **Return the live share URL.** Give the user the URL that serves the page.
@@ -35,13 +35,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
35
35
 
36
36
  ## 2. Auth + grid
37
37
 
38
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
38
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
39
39
  2. A grid is required. Respect the grid picker: if the user has more than one
40
40
  grid, ask which to use; do not assume a target.
41
41
 
42
42
  ## 3. Read the blueprint
43
43
 
44
- Fetch the structure guide: `gridctl_fetch("template", "course-platform")`. It
44
+ Fetch the structure guide: `grid_fetch("template", "course-platform")`. It
45
45
  contains AGENTS.md — the CloudGrid-specific spec you must follow:
46
46
 
47
47
  - the file tree under `services/web/` (catalog page, course detail, gated lesson
@@ -57,7 +57,7 @@ contains AGENTS.md — the CloudGrid-specific spec you must follow:
57
57
 
58
58
  ## 4. Scaffold + fill cloudgrid.yaml
59
59
 
60
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
60
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
61
61
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. Run `init` FIRST —
62
62
  `plug` needs a linked directory. Then set `cloudgrid.yaml` to the shape below and
63
63
  write the app under **`services/web/`** (`path: /` is the URL mount, NOT the
@@ -101,19 +101,19 @@ rules:
101
101
 
102
102
  ## 6. Config (secrets + env)
103
103
 
104
- - Secrets → `gridctl_secrets`: `grid secrets set stripe-live-key`,
104
+ - Secrets → `grid_secrets`: `grid secrets set stripe-live-key`,
105
105
  `grid secrets set stripe-webhook-secret`, `grid secrets set auth-provider-key`.
106
106
  The `vault:` block injects them as `STRIPE_KEY`, `STRIPE_WEBHOOK_SECRET`,
107
107
  `AUTH_PROVIDER_KEY`.
108
- - Non-secret config (e.g. the auth **publishable** key) → `gridctl_env`.
108
+ - Non-secret config (e.g. the auth **publishable** key) → `grid_env`.
109
109
  - Do **NOT** set the DB vars yourself (`DATABASE_MONGODB_URL` / legacy
110
110
  `MONGODB_URL`) — the grid injects them.
111
111
 
112
112
  ## 7. Deploy (async)
113
113
 
114
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
114
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
115
115
  response is `status: "building"`, NOT a live URL yet.
116
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
116
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
117
117
  - Surface a liveness signal while it builds — never a bare silent wait.
118
118
  - Only once it is live, return the deployed app URL (NOT the build/log link).
119
119
 
@@ -32,13 +32,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
32
32
 
33
33
  ## 2. Auth + grid
34
34
 
35
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
35
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
36
36
  2. A grid is required. Respect the grid picker: if the user has more than one
37
37
  grid, ask which to use; do not assume a target.
38
38
 
39
39
  ## 3. Scaffold
40
40
 
41
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
42
42
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
43
43
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
44
44
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
63
63
  author new yaml with it, and never set `needs:` and `requires:` together (the
64
64
  validator rejects it).
65
65
  2. Fetch the template for the Mongo wiring + CRUD shape:
66
- `gridctl_fetch("template", "crm")`. It is a minimal, real Next.js +
66
+ `grid_fetch("template", "crm")`. It is a minimal, real Next.js +
67
67
  `mongodb`-driver contact manager under `services/web/`: a lazy client in
68
68
  `services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on a
69
69
  `contacts` collection, a server-component page, and a client table.
@@ -72,7 +72,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
72
72
  fallback) — the grid injects it at dev-time and runtime.
73
73
  - **Put the DB connection behind a lazy getter — never read the connection
74
74
  string at module top level, or `next build` fails.**
75
- - (Optional) fetch `gridctl_fetch("example", "crm")` for a richer filled
75
+ - (Optional) fetch `grid_fetch("example", "crm")` for a richer filled
76
76
  reference to imitate.
77
77
 
78
78
  ## 5. (Optional) Run locally
@@ -82,15 +82,15 @@ before deploying. Don't require it.
82
82
 
83
83
  ## 6. Config
84
84
 
85
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
85
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
86
86
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
87
87
  legacy `MONGODB_URL`) — the grid injects them.
88
88
 
89
89
  ## 7. Deploy (async)
90
90
 
91
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
91
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
92
92
  response is `status: "building"`, NOT a live URL yet.
93
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
93
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
94
94
  - Surface a liveness signal while it builds — never a bare silent wait.
95
95
  - Only once it is live, return the deployed app URL (NOT the build/log link).
96
96
 
@@ -4,7 +4,7 @@ when: dashboard, metrics, KPIs, stats page, status board, charts, analytics view
4
4
  needs: none
5
5
  deploy: inspiration
6
6
  editions: all
7
- capabilities_note: static — no infrastructure, data is baked into the page. Publishes as an inspiration (instant, works on hosted) via gridctl_drop.
7
+ capabilities_note: static — no infrastructure, data is baked into the page. Publishes as an inspiration (instant, works on hosted) via grid_drop.
8
8
  summary: Fetch the dashboard template, fill it with the user's metrics and inline charts, deploy it, and return the live share URL.
9
9
  ---
10
10
 
@@ -13,9 +13,9 @@ summary: Fetch the dashboard template, fill it with the user's metrics and inlin
13
13
  Detect the intent ("build me a dashboard for X metrics / status") and follow
14
14
  this recipe. Do not ask setup questions first; use sensible defaults and build.
15
15
 
16
- 1. **Fetch the template.** Call `gridctl_fetch("template", "dashboard")` to load
16
+ 1. **Fetch the template.** Call `grid_fetch("template", "dashboard")` to load
17
17
  the self-contained HTML dashboard template.
18
- 2. **(Optional) Fetch the example.** Call `gridctl_fetch("example", "dashboard")`
18
+ 2. **(Optional) Fetch the example.** Call `grid_fetch("example", "dashboard")`
19
19
  to see a filled dashboard as a reference for structure and layout.
20
20
  3. **Fill the template.** Replace the placeholders with the user's content:
21
21
  - The dashboard title and (optional) status line.
@@ -27,7 +27,7 @@ this recipe. Do not ask setup questions first; use sensible defaults and build.
27
27
  stylesheets, fonts, or large embedded media.
28
28
  4. **Deploy.** Deploy the filled HTML:
29
29
  - Hosted MCP edition: call the drop tool with the HTML.
30
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
30
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
31
31
  A dashboard is an inspiration and deploys synchronously, so you get a URL
32
32
  right away.
33
33
  5. **Return the live share URL.** Give the user the URL that serves the dashboard.
@@ -33,13 +33,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
33
33
 
34
34
  ## 2. Auth + grid
35
35
 
36
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
36
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
37
37
  2. A grid is required. Respect the grid picker: if the user has more than one
38
38
  grid, ask which to use; do not assume a target.
39
39
 
40
40
  ## 3. Scaffold
41
41
 
42
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
42
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
43
43
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
44
44
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
45
45
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
64
64
  author new yaml with it, and never set `needs:` and `requires:` together (the
65
65
  validator rejects it).
66
66
  2. Fetch the template for the Mongo wiring + CRUD shape:
67
- `gridctl_fetch("template", "directory")`. It is a minimal, real Next.js +
67
+ `grid_fetch("template", "directory")`. It is a minimal, real Next.js +
68
68
  `mongodb`-driver directory under `services/web/`: a lazy client in
69
69
  `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an
70
70
  `entries` collection, a server-component page, and a client list with search +
@@ -82,15 +82,15 @@ before deploying. Don't require it.
82
82
 
83
83
  ## 6. Config
84
84
 
85
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
85
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
86
86
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
87
87
  legacy `MONGODB_URL`) — the grid injects them.
88
88
 
89
89
  ## 7. Deploy (async)
90
90
 
91
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
91
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
92
92
  response is `status: "building"`, NOT a live URL yet.
93
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
93
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
94
94
  - Surface a liveness signal while it builds — never a bare silent wait.
95
95
  - Only once it is live, return the deployed app URL (NOT the build/log link).
96
96
 
@@ -4,7 +4,7 @@ when: documentation site, docs, developer docs, guide, manual, knowledge base, h
4
4
  needs: none
5
5
  deploy: inspiration
6
6
  editions: all
7
- capabilities_note: static — no infrastructure, content baked into the page. Publishes as an inspiration (instant, works on hosted) via gridctl_drop.
7
+ capabilities_note: static — no infrastructure, content baked into the page. Publishes as an inspiration (instant, works on hosted) via grid_drop.
8
8
  summary: Fetch the docs-site template, fill it with the user's documentation, deploy it, and return the live share URL.
9
9
  ---
10
10
 
@@ -14,7 +14,7 @@ Detect the intent ("build me a docs site / documentation for X") and follow this
14
14
  recipe. For a REST API endpoint reference specifically, use `api-docs`. Do not
15
15
  ask setup questions first; use sensible defaults and build.
16
16
 
17
- 1. **Fetch the template.** Call `gridctl_fetch("template", "docs-site")` to load
17
+ 1. **Fetch the template.** Call `grid_fetch("template", "docs-site")` to load
18
18
  the self-contained HTML docs layout (sidebar nav, content column, code blocks,
19
19
  client-side search box).
20
20
  2. **Fill the template.** Replace the placeholders with the user's content:
@@ -27,7 +27,7 @@ ask setup questions first; use sensible defaults and build.
27
27
  stylesheets, fonts, or large embedded media.
28
28
  3. **Deploy.** Deploy the filled HTML:
29
29
  - Hosted MCP edition: call the drop tool with the HTML.
30
- - Local MCP / CLI edition: write the HTML to a file and run `gridctl plug`.
30
+ - Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
31
31
  It is an inspiration and deploys synchronously, so you get a URL right away.
32
32
  4. **Return the live share URL.** For revisions, re-deploy with the entity id
33
33
  from the first deploy — it updates the same share URL.
@@ -39,13 +39,13 @@ requires the **local edition** (Claude Desktop / Claude Code) or the CLI.
39
39
 
40
40
  ## 2. Auth + grid
41
41
 
42
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
42
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
43
43
  2. A grid is required. Respect the grid picker: if the user has more than one
44
44
  grid, ask which to use; do not assume a target.
45
45
 
46
46
  ## 3. Fetch the blueprint + read AGENTS.md
47
47
 
48
- `gridctl_fetch("template", "erp")`. It returns `cloudgrid.yaml`, `AGENTS.md` (the
48
+ `grid_fetch("template", "erp")`. It returns `cloudgrid.yaml`, `AGENTS.md` (the
49
49
  structure guide), and the README — **no app code**. Read `AGENTS.md` end to end
50
50
  before writing anything: it defines the `services/web/` file tree, the Mongo
51
51
  collections + fields per module, how CloudGrid injects the DB and the
@@ -56,7 +56,7 @@ all four at once.
56
56
 
57
57
  ## 4. Scaffold
58
58
 
59
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
59
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
60
60
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
61
61
  directory, so run `init` FIRST. Then (a) build the app under **`services/web/`**
62
62
  following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
@@ -97,8 +97,8 @@ following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
97
97
  ## 6. Config
98
98
 
99
99
  - Create the vault items the `vault:` block references (the auth provider's
100
- backend key and the Stripe secret key) — `gridctl_secrets` / vault UI. Never
101
- commit them. Publishable/front-end auth keys → `gridctl_env`.
100
+ backend key and the Stripe secret key) — `grid_secrets` / vault UI. Never
101
+ commit them. Publishable/front-end auth keys → `grid_env`.
102
102
  - Register the deployed `/api/finance/webhook` URL as the Stripe webhook endpoint
103
103
  once the app is live.
104
104
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
@@ -111,9 +111,9 @@ vault env vars before deploying. Don't require it.
111
111
 
112
112
  ## 8. Deploy (async)
113
113
 
114
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
114
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
115
115
  response is `status: "building"`, NOT a live URL yet.
116
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
116
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
117
117
  - Surface a liveness signal while it builds — never a bare silent wait.
118
118
  - Only once it is live, return the deployed app URL (NOT the build/log link).
119
119
 
@@ -32,13 +32,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
32
32
 
33
33
  ## 2. Auth + grid
34
34
 
35
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
35
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
36
36
  2. A grid is required. Respect the grid picker: if the user has more than one
37
37
  grid, ask which to use; do not assume a target.
38
38
 
39
39
  ## 3. Scaffold
40
40
 
41
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
42
42
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
43
43
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
44
44
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
63
63
  author new yaml with it, and never set `needs:` and `requires:` together (the
64
64
  validator rejects it).
65
65
  2. Fetch the template for the Mongo wiring + CRUD shape:
66
- `gridctl_fetch("template", "event-board")`. It is a minimal, real Next.js +
66
+ `grid_fetch("template", "event-board")`. It is a minimal, real Next.js +
67
67
  `mongodb`-driver event board under `services/web/`: a lazy client in
68
68
  `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an `events`
69
69
  collection, a server-component page that reads events sorted by date, and a
@@ -83,15 +83,15 @@ before deploying. Don't require it.
83
83
 
84
84
  ## 6. Config
85
85
 
86
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
86
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
87
87
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
88
88
  legacy `MONGODB_URL`) — the grid injects them.
89
89
 
90
90
  ## 7. Deploy (async)
91
91
 
92
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
92
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
93
93
  response is `status: "building"`, NOT a live URL yet.
94
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
94
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
95
95
  - Surface a liveness signal while it builds — never a bare silent wait.
96
96
  - Only once it is live, return the deployed app URL (NOT the build/log link).
97
97
 
@@ -32,13 +32,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
32
32
 
33
33
  ## 2. Auth + grid
34
34
 
35
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
35
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
36
36
  2. A grid is required. Respect the grid picker: if the user has more than one
37
37
  grid, ask which to use; do not assume a target.
38
38
 
39
39
  ## 3. Scaffold
40
40
 
41
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
42
42
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
43
43
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
44
44
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
63
63
  author new yaml with it, and never set `needs:` and `requires:` together (the
64
64
  validator rejects it).
65
65
  2. Fetch the template for the Mongo wiring + CRUD shape:
66
- `gridctl_fetch("template", "expense-tracker")`. It is a minimal, real Next.js +
66
+ `grid_fetch("template", "expense-tracker")`. It is a minimal, real Next.js +
67
67
  `mongodb`-driver expense tracker under `services/web/`: a lazy client in
68
68
  `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an `expenses`
69
69
  collection, a server-component page, and a client form with a table + totals
@@ -83,15 +83,15 @@ before deploying. Don't require it.
83
83
 
84
84
  ## 6. Config
85
85
 
86
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
86
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
87
87
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
88
88
  legacy `MONGODB_URL`) — the grid injects them.
89
89
 
90
90
  ## 7. Deploy (async)
91
91
 
92
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
92
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
93
93
  response is `status: "building"`, NOT a live URL yet.
94
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
94
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
95
95
  - Surface a liveness signal while it builds — never a bare silent wait.
96
96
  - Only once it is live, return the deployed app URL (NOT the build/log link).
97
97
 
@@ -33,13 +33,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
33
33
 
34
34
  ## 2. Auth + grid
35
35
 
36
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
36
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
37
37
  2. A grid is required. Respect the grid picker: if the user has more than one
38
38
  grid, ask which to use; do not assume a target.
39
39
 
40
40
  ## 3. Scaffold
41
41
 
42
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
42
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
43
43
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
44
44
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
45
45
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
64
64
  author new yaml with it, and never set `needs:` and `requires:` together (the
65
65
  validator rejects it).
66
66
  2. Fetch the template for the Mongo wiring + CRUD shape:
67
- `gridctl_fetch("template", "feature-request-board")`. It is a minimal, real
67
+ `grid_fetch("template", "feature-request-board")`. It is a minimal, real
68
68
  Next.js + `mongodb`-driver board under `services/web/`: a lazy client in
69
69
  `services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on a
70
70
  `requests` collection (PATCH does an atomic `$inc` upvote), a server-component
@@ -86,15 +86,15 @@ before deploying. Don't require it.
86
86
 
87
87
  ## 6. Config
88
88
 
89
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
89
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
90
90
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
91
91
  legacy `MONGODB_URL`) — the grid injects them.
92
92
 
93
93
  ## 7. Deploy (async)
94
94
 
95
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
95
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
96
96
  response is `status: "building"`, NOT a live URL yet.
97
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
97
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
98
98
  - Surface a liveness signal while it builds — never a bare silent wait.
99
99
  - Only once it is live, return the deployed app URL (NOT the build/log link).
100
100