@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
@@ -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
 
@@ -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", "financial-dashboard")`. It is a minimal, real
67
+ `grid_fetch("template", "financial-dashboard")`. It is a minimal, real
68
68
  Next.js + `mongodb`-driver dashboard under `services/web/`: a lazy client in
69
69
  `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on an `entries`
70
70
  collection, a server-component page that computes income/expense/net totals,
@@ -84,15 +84,15 @@ before deploying. Don't require it.
84
84
 
85
85
  ## 6. Config
86
86
 
87
- - API keys / secrets → `gridctl_secrets`. Non-secret config → `gridctl_env`.
87
+ - API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
88
88
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
89
89
  legacy `MONGODB_URL`) — the grid injects them.
90
90
 
91
91
  ## 7. Deploy (async)
92
92
 
93
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
93
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
94
94
  response is `status: "building"`, NOT a live URL yet.
95
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
95
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
96
96
  - Surface a liveness signal while it builds — never a bare silent wait.
97
97
  - Only once it is live, return the deployed app URL (NOT the build/log link).
98
98
 
@@ -52,17 +52,17 @@ edition** (Claude Desktop / Claude Code) or the CLI.
52
52
 
53
53
  ## 2. Auth + grid
54
54
 
55
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
55
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
56
56
  2. A grid is required. Respect the grid picker: if the user has more than one
57
57
  grid, ask which to use; do not assume a target.
58
58
 
59
59
  ## 3. Read the blueprint, then scaffold
60
60
 
61
- 1. **Fetch the blueprint: `gridctl_fetch("template", "forum")`** and read
61
+ 1. **Fetch the blueprint: `grid_fetch("template", "forum")`** and read
62
62
  `AGENTS.md` — it defines the file tree, the `threads` / `posts` / `users`
63
63
  collections + fields, the nesting model, and the CloudGrid wiring. This is the
64
64
  spec you build to.
65
- 2. `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
65
+ 2. `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
66
66
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a
67
67
  linked directory, so run `init` FIRST. Then write the app under
68
68
  **`services/web/`** and fill `cloudgrid.yaml` to the shape below.
@@ -108,16 +108,16 @@ Mention that the user can `grid dev` to run locally against the injected Mongo
108
108
 
109
109
  ## 6. Config
110
110
 
111
- - Auth-provider keys / secrets → the `vault:` block + `gridctl_secrets`. Non-secret
112
- config → `gridctl_env`.
111
+ - Auth-provider keys / secrets → the `vault:` block + `grid_secrets`. Non-secret
112
+ config → `grid_env`.
113
113
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
114
114
  legacy `MONGODB_URL`) — the grid injects them.
115
115
 
116
116
  ## 7. Deploy (async)
117
117
 
118
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
118
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
119
119
  response is `status: "building"`, NOT a live URL yet.
120
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
120
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
121
121
  - Surface a liveness signal while it builds — never a bare silent wait.
122
122
  - Only once it is live, return the deployed app URL (NOT the build/log link).
123
123
 
@@ -37,13 +37,13 @@ A persistent, auth-gated app 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
42
42
  grid, ask which to use; do not assume a target.
43
43
 
44
44
  ## 3. Fetch the blueprint + read AGENTS.md
45
45
 
46
- `gridctl_fetch("template", "hr-portal")`. It returns `cloudgrid.yaml`, `AGENTS.md`
46
+ `grid_fetch("template", "hr-portal")`. It returns `cloudgrid.yaml`, `AGENTS.md`
47
47
  (the structure guide), and the README — **no app code**. Read `AGENTS.md` end to
48
48
  end before writing anything: it defines the `services/web/` file tree, the Mongo
49
49
  collections + fields, how CloudGrid injects the DB and vault-backed auth keys, how
@@ -51,7 +51,7 @@ to wire employee/admin auth, and the deploy steps.
51
51
 
52
52
  ## 4. Scaffold
53
53
 
54
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
54
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
55
55
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
56
56
  directory, so run `init` FIRST. Then (a) build the app under **`services/web/`**
57
57
  following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
@@ -90,8 +90,8 @@ following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
90
90
  ## 6. Config
91
91
 
92
92
  - Create the vault items the `vault:` block references (the auth provider's
93
- secret + publishable keys) — `gridctl_secrets` / vault UI. Never commit them.
94
- - Non-secret config → `gridctl_env`.
93
+ secret + publishable keys) — `grid_secrets` / vault UI. Never commit them.
94
+ - Non-secret config → `grid_env`.
95
95
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
96
96
  legacy `MONGODB_URL`) — the grid injects them.
97
97
 
@@ -102,9 +102,9 @@ vault env vars before deploying. Don't require it.
102
102
 
103
103
  ## 8. 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
 
@@ -39,13 +39,13 @@ A persistent, auth-gated app is a built + deployed container. It requires the
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", "internal-tools-portal")`. It returns `cloudgrid.yaml`,
48
+ `grid_fetch("template", "internal-tools-portal")`. It returns `cloudgrid.yaml`,
49
49
  `AGENTS.md` (the structure guide), and the README — **no app code**. Read
50
50
  `AGENTS.md` end to end before writing anything: it defines the `services/web/`
51
51
  file tree, the Mongo collections + fields, the tool registry, how CloudGrid injects
@@ -54,7 +54,7 @@ deploy steps.
54
54
 
55
55
  ## 4. Scaffold
56
56
 
57
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
57
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
58
58
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
59
59
  directory, so run `init` FIRST. Then (a) build the app under **`services/web/`**
60
60
  following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
@@ -99,9 +99,9 @@ following `AGENTS.md`, and (b) fill `cloudgrid.yaml` to the shape below.
99
99
  ## 6. Config
100
100
 
101
101
  - Create the vault items the `vault:` block references (the auth provider's
102
- secret + publishable keys, plus any per-tool API secrets) — `gridctl_secrets` /
102
+ secret + publishable keys, plus any per-tool API secrets) — `grid_secrets` /
103
103
  vault UI. Never commit them.
104
- - Non-secret config → `gridctl_env`.
104
+ - Non-secret config → `grid_env`.
105
105
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
106
106
  legacy `MONGODB_URL`) — the grid injects them.
107
107
 
@@ -112,9 +112,9 @@ vault env vars before deploying. Don't require it.
112
112
 
113
113
  ## 8. Deploy (async)
114
114
 
115
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
115
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
116
116
  response is `status: "building"`, NOT a live URL yet.
117
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
117
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
118
118
  - Surface a liveness signal while it builds — never a bare silent wait.
119
119
  - Only once it is live, return the deployed app URL (NOT the build/log link).
120
120
 
@@ -31,13 +31,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
31
31
 
32
32
  ## 2. Auth + grid
33
33
 
34
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
34
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
35
35
  2. A grid is required. Respect the grid picker: if the user has more than one
36
36
  grid, ask which to use; do not assume a target.
37
37
 
38
38
  ## 3. Scaffold
39
39
 
40
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
40
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
41
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
42
42
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
43
43
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -65,7 +65,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
65
65
  `services.web`, and `needs.database` uncommented — so it deploys to exactly
66
66
  those active fields.
67
67
  2. Fetch the template for the Mongo wiring + CRUD shape:
68
- `gridctl_fetch("template", "inventory")`. It is a minimal, real Next.js +
68
+ `grid_fetch("template", "inventory")`. It is a minimal, real Next.js +
69
69
  `mongodb`-driver app under `services/web/`: a lazy client in
70
70
  `services/web/lib/db.js`, an App-Router GET/POST/PATCH (adjust qty)/DELETE route on an `items` collection, a
71
71
  server-component page, and a client component.
@@ -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
 
@@ -31,13 +31,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
31
31
 
32
32
  ## 2. Auth + grid
33
33
 
34
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
34
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
35
35
  2. A grid is required. Respect the grid picker: if the user has more than one
36
36
  grid, ask which to use; do not assume a target.
37
37
 
38
38
  ## 3. Scaffold
39
39
 
40
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
40
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
41
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
42
42
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
43
43
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -65,7 +65,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
65
65
  `services.web`, and `needs.database` uncommented — so it deploys to exactly
66
66
  those active fields.
67
67
  2. Fetch the template for the Mongo wiring + CRUD shape:
68
- `gridctl_fetch("template", "invoice")`. It is a minimal, real Next.js +
68
+ `grid_fetch("template", "invoice")`. It is a minimal, real Next.js +
69
69
  `mongodb`-driver app under `services/web/`: a lazy client in
70
70
  `services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on an `invoices` collection, a
71
71
  server-component page, and a client component.
@@ -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
 
@@ -31,13 +31,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
31
31
 
32
32
  ## 2. Auth + grid
33
33
 
34
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
34
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
35
35
  2. A grid is required. Respect the grid picker: if the user has more than one
36
36
  grid, ask which to use; do not assume a target.
37
37
 
38
38
  ## 3. Scaffold
39
39
 
40
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
40
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
41
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
42
42
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
43
43
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -65,7 +65,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
65
65
  `services.web`, and `needs.database` uncommented — so it deploys to exactly
66
66
  those active fields.
67
67
  2. Fetch the template for the Mongo wiring + CRUD shape:
68
- `gridctl_fetch("template", "job-board")`. It is a minimal, real Next.js +
68
+ `grid_fetch("template", "job-board")`. It is a minimal, real Next.js +
69
69
  `mongodb`-driver app under `services/web/`: a lazy client in
70
70
  `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `jobs` collection, a
71
71
  server-component page, and a client component.
@@ -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
 
@@ -31,13 +31,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
31
31
 
32
32
  ## 2. Auth + grid
33
33
 
34
- 1. Ensure signed in: `gridctl_login_status`; if not, `gridctl_login`.
34
+ 1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
35
35
  2. A grid is required. Respect the grid picker: if the user has more than one
36
36
  grid, ask which to use; do not assume a target.
37
37
 
38
38
  ## 3. Scaffold
39
39
 
40
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
40
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
41
41
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
42
42
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
43
43
  and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
@@ -62,7 +62,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
62
62
  author new yaml with it, and never set `needs:` and `requires:` together (the
63
63
  validator rejects it).
64
64
  2. Fetch the template for the Mongo wiring + CRUD shape:
65
- `gridctl_fetch("template", "kanban")`. It is a minimal, real Next.js +
65
+ `grid_fetch("template", "kanban")`. It is a minimal, real Next.js +
66
66
  `mongodb`-driver board under `services/web/`: a lazy client in
67
67
  `services/web/lib/db.js`, an App-Router GET/POST/PATCH/DELETE route on a
68
68
  `cards` collection (PATCH moves a card between columns), a server-component
@@ -73,7 +73,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
73
73
  runtime.
74
74
  - **Put the DB connection behind a lazy getter — never read the connection
75
75
  string at module top level, or `next build` fails.**
76
- - (Optional) fetch `gridctl_fetch("example", "kanban")` for a richer filled
76
+ - (Optional) fetch `grid_fetch("example", "kanban")` for a richer filled
77
77
  reference to imitate.
78
78
 
79
79
  ## 5. (Optional) Run locally
@@ -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
 
@@ -4,7 +4,7 @@ when: landing page, marketing page, product page, hero page, coming-soon, waitli
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_plug.
8
8
  summary: Fetch the landing-page template, fill it with the user's content, deploy it, and return the live share URL.
9
9
  ---
10
10
 
@@ -13,9 +13,9 @@ summary: Fetch the landing-page template, fill it with the user's content, deplo
13
13
  Detect the intent ("build me a landing page / marketing 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", "landing-page")` to
16
+ 1. **Fetch the template.** Call `grid_fetch("template", "landing-page")` to
17
17
  load the self-contained HTML landing-page template.
18
- 2. **(Optional) Fetch the example.** Call `gridctl_fetch("example", "landing-page")`
18
+ 2. **(Optional) Fetch the example.** Call `grid_fetch("example", "landing-page")`
19
19
  to see a filled landing page as a reference for tone and structure.
20
20
  3. **Fill the template.** Replace the placeholders with the user's content:
21
21
  - The product name, hero headline, and subheadline.
@@ -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
  4. **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
  A landing page is an inspiration and deploys synchronously, so you get a URL
30
30
  right away.
31
31
  5. **Return the live share URL.** Give the user the URL that serves the page.
@@ -37,14 +37,14 @@ edition** (Claude Desktop / Claude Code) or the CLI.
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
42
42
  grid, ask which to use; do not assume a target.
43
43
 
44
44
  ## 3. Read the blueprint
45
45
 
46
46
  Fetch the structure guide and read it before writing anything:
47
- `gridctl_fetch("template", "lms")`. `AGENTS.md` is the CloudGrid-specific spec for
47
+ `grid_fetch("template", "lms")`. `AGENTS.md` is the CloudGrid-specific spec for
48
48
  this app — the file tree under `services/web/`, the Mongo collections
49
49
  (users/courses/modules/lessons/assignments/enrollments/progress/submissions/grades),
50
50
  how the grid injects Mongo + the vault auth secret, the instructor/student role
@@ -53,7 +53,7 @@ you build it from the guide.
53
53
 
54
54
  ## 4. Scaffold
55
55
 
56
- `gridctl_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
56
+ `grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
57
57
  and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
58
58
  directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**
59
59
  per the AGENTS.md tree, and (b) fill `cloudgrid.yaml` to the shape below.
@@ -91,17 +91,17 @@ needs:
91
91
 
92
92
  ## 6. Config
93
93
 
94
- - Secrets → `gridctl_secrets` (e.g. `grid secrets set auth-provider-key`;
94
+ - Secrets → `grid_secrets` (e.g. `grid secrets set auth-provider-key`;
95
95
  `stripe-live-key`/`stripe-webhook-secret` only for paid courses). Non-secret
96
- config → `gridctl_env` (e.g. the auth publishable key).
96
+ config → `grid_env` (e.g. the auth publishable key).
97
97
  - Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
98
98
  legacy `MONGODB_URL`) — the grid injects them.
99
99
 
100
100
  ## 7. Deploy (async)
101
101
 
102
- Deploy the folder with `gridctl_plug`. A **runtime deploy is ASYNC**: the first
102
+ Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
103
103
  response is `status: "building"`, NOT a live URL yet.
104
- - Poll `gridctl_status` (or the returned poll_url) until the entity is live.
104
+ - Poll `grid_status` (or the returned poll_url) until the entity is live.
105
105
  - Surface a liveness signal while it builds — never a bare silent wait.
106
106
  - Only once it is live, return the deployed app URL (NOT the build/log link).
107
107