@cloudgrid-io/mcp 0.20.53 → 0.20.55
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.
- package/README.md +75 -0
- package/package.json +5 -3
- package/src/corpus/playbook.md +2 -2
- package/src/corpus/templates/_cloudgrid.yaml.reference +1 -1
- package/src/corpus/templates/admin-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/ai-app/cloudgrid.yaml +1 -1
- package/src/corpus/templates/ai-knowledge-base/cloudgrid.yaml +1 -1
- package/src/corpus/templates/analytics-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/api-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/api-docs/cloudgrid.yaml +1 -1
- package/src/corpus/templates/api-service/cloudgrid.yaml +1 -1
- package/src/corpus/templates/app-with-data/cloudgrid.yaml +1 -1
- package/src/corpus/templates/appointment-booking/cloudgrid.yaml +1 -1
- package/src/corpus/templates/approval-workflow/cloudgrid.yaml +1 -1
- package/src/corpus/templates/billing-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/blog-cms/cloudgrid.yaml +1 -1
- package/src/corpus/templates/booking-system/cloudgrid.yaml +1 -1
- package/src/corpus/templates/calendar-scheduler/cloudgrid.yaml +1 -1
- package/src/corpus/templates/changelog/cloudgrid.yaml +1 -1
- package/src/corpus/templates/company-website/cloudgrid.yaml +1 -1
- package/src/corpus/templates/course-platform/cloudgrid.yaml +1 -1
- package/src/corpus/templates/crm/cloudgrid.yaml +1 -1
- package/src/corpus/templates/dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/deck/cloudgrid.yaml +1 -1
- package/src/corpus/templates/directory/cloudgrid.yaml +1 -1
- package/src/corpus/templates/docs-app/package.json +1 -1
- package/src/corpus/templates/docs-site/cloudgrid.yaml +1 -1
- package/src/corpus/templates/erp/cloudgrid.yaml +1 -1
- package/src/corpus/templates/event-board/cloudgrid.yaml +1 -1
- package/src/corpus/templates/expense-tracker/cloudgrid.yaml +1 -1
- package/src/corpus/templates/feature-request-board/cloudgrid.yaml +1 -1
- package/src/corpus/templates/financial-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/forum/cloudgrid.yaml +1 -1
- package/src/corpus/templates/hr-portal/cloudgrid.yaml +1 -1
- package/src/corpus/templates/internal-tools-portal/cloudgrid.yaml +1 -1
- package/src/corpus/templates/inventory/cloudgrid.yaml +1 -1
- package/src/corpus/templates/invoice/cloudgrid.yaml +1 -1
- package/src/corpus/templates/job-board/cloudgrid.yaml +1 -1
- package/src/corpus/templates/kanban/cloudgrid.yaml +1 -1
- package/src/corpus/templates/landing-page/cloudgrid.yaml +1 -1
- package/src/corpus/templates/lms/cloudgrid.yaml +1 -1
- package/src/corpus/templates/marketplace/cloudgrid.yaml +1 -1
- package/src/corpus/templates/membership-site/cloudgrid.yaml +1 -1
- package/src/corpus/templates/monitoring-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/multi-service/cloudgrid.yaml +1 -1
- package/src/corpus/templates/online-store/cloudgrid.yaml +1 -1
- package/src/corpus/templates/portfolio/cloudgrid.yaml +1 -1
- package/src/corpus/templates/product-catalog/cloudgrid.yaml +1 -1
- package/src/corpus/templates/product-launch/cloudgrid.yaml +1 -1
- package/src/corpus/templates/project-management/cloudgrid.yaml +1 -1
- package/src/corpus/templates/property-listings/cloudgrid.yaml +1 -1
- package/src/corpus/templates/quiz-platform/cloudgrid.yaml +1 -1
- package/src/corpus/templates/report/cloudgrid.yaml +1 -1
- package/src/corpus/templates/restaurant-reservations/cloudgrid.yaml +1 -1
- package/src/corpus/templates/revenue-dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/saas-marketing/cloudgrid.yaml +1 -1
- package/src/corpus/templates/semantic-search/cloudgrid.yaml +1 -1
- package/src/corpus/templates/simple-semantic-search/cloudgrid.yaml +1 -1
- package/src/corpus/templates/status-page/cloudgrid.yaml +1 -1
- package/src/corpus/templates/subscription-management/cloudgrid.yaml +1 -1
- package/src/corpus/templates/task-manager/cloudgrid.yaml +1 -1
- package/src/corpus/templates/ticket-system/cloudgrid.yaml +1 -1
- package/src/corpus/templates/time-tracking/cloudgrid.yaml +1 -1
- package/src/corpus/templates/travel-booking/cloudgrid.yaml +1 -1
- package/src/corpus/templates/waitlist/cloudgrid.yaml +1 -1
- package/src/corpus/templates/web-app/cloudgrid.yaml +1 -1
- package/src/session-logger.js +4 -1
- package/src/tools/deploy.js +205 -44
- package/src/tools/register.js +11 -8
package/src/tools/register.js
CHANGED
|
@@ -132,7 +132,7 @@ export function registerTools(server, ctx) {
|
|
|
132
132
|
"grid_pickup",
|
|
133
133
|
{
|
|
134
134
|
title: "Copy an app into your grid",
|
|
135
|
-
description: "Pick up an app: make your OWN COPY of any app you can see (like a git fork) into a grid you can build in. It mints a NEW entity with lineage back to the source and WITHOUT the source's secrets (set your own before you plug). Plugging your copy creates/updates YOUR entity — the original is never touched. Requires sign-in. To edit the ORIGINAL entity in place (as its owner or a collaborator), use grid_pull instead.",
|
|
135
|
+
description: "Pick up an app: make your OWN COPY of any app you can see (like a git fork) into a grid you can build in. It mints a NEW entity with lineage back to the source and WITHOUT the source's secrets (set your own before you plug). Plugging your copy creates/updates YOUR entity — the original is never touched. Requires sign-in. This is a FORK, not a \"collab\": it never grants you access to anyone else's live entity. Getting PUSH ACCESS to the SAME entity is a different operation — the CLI command `grid collab <entity>` — so do NOT reach for grid_pickup when the user asks to collab. To edit the ORIGINAL entity in place (as its owner or a collaborator), use grid_pull instead.",
|
|
136
136
|
inputSchema: {
|
|
137
137
|
entity_id: z.string().describe("The source app to copy: a canonical UUID or <grid-slug>/<entity-slug>."),
|
|
138
138
|
grid: z.string().optional().describe("Grid to create your copy in. Required only when you belong to more than one grid."),
|
|
@@ -172,7 +172,7 @@ export function registerTools(server, ctx) {
|
|
|
172
172
|
"grid_pull",
|
|
173
173
|
{
|
|
174
174
|
title: "Pull an app to edit in place",
|
|
175
|
-
description: "Pull an app to continue/edit it IN PLACE — like `git clone` of the SAME entity: your next grid_plug (with its target_entity_id) updates that entity, and the team sees the new version. Requires PUSH ACCESS: you must own it or be a collaborator. If you can only view it, you CANNOT edit or plug it — say so and
|
|
175
|
+
description: "Pull an app to continue/edit it IN PLACE — like `git clone` of the SAME entity: your next grid_plug (with its target_entity_id) updates that entity, and the team sees the new version. Requires PUSH ACCESS: you must own it or be a collaborator. If you can only view it, you CANNOT edit or plug it — say so, and offer the two real options: (1) make your own separate copy (a fork) with grid_pickup, or (2) GET push access to the SAME entity with the CLI command `grid collab <entity>` — \"collab\" is a distinct access-control operation that grants permission only and fetches nothing, so once it is granted you run grid_pull again to get the code (and if the owner gates access, `grid collab` becomes a request they approve). Passing an anonymous drop's `claim_token` claims it into your account. Requires sign-in. Calls the API directly (both editions).",
|
|
176
176
|
inputSchema: {
|
|
177
177
|
entity_id: z.string().optional().describe("The entity id to pull. Defaults to this session's last anonymous drop."),
|
|
178
178
|
claim_token: z.string().optional().describe("Anonymous drop only: its owner token — claims that drop into your account (ownership transfer)."),
|
|
@@ -205,13 +205,14 @@ export function registerTools(server, ctx) {
|
|
|
205
205
|
"grid_create_grid",
|
|
206
206
|
{
|
|
207
207
|
title: "Create a new grid",
|
|
208
|
-
description: "Create a new grid (workspace) for the signed-in user — they become its admin. Use when the account has no grid yet (grid_plug returns needs_grid_create, or a plug fails with NO_ACTIVE_ORG): suggest a short slug from the user's name or app, CONFIRM it with the user (the slug is permanent and appears in URLs), create, then
|
|
208
|
+
description: "Create a new grid (workspace) for the signed-in user — they become its admin. Use when the account has no grid yet (grid_plug returns needs_grid_create, or a plug fails with NO_ACTIVE_ORG): suggest a short slug from the user's name or app, CONFIRM it with the user (the slug is permanent and appears in URLs), create, then call grid_plug with grid: <slug>. A brand-new grid provisions in the background (~30s); grid_plug waits for readiness before deploying, so call it right away — no manual delay or polling needed. Never send the user to the console to create a grid by hand. Requires sign-in. Calls the API directly (both editions).",
|
|
209
209
|
inputSchema: {
|
|
210
210
|
slug: z.string().describe("The grid slug: 3-40 lowercase letters, digits, or hyphens, starting with a letter. Permanent — confirm with the user before creating."),
|
|
211
211
|
name: z.string().optional().describe("Display name (defaults to the slug)."),
|
|
212
212
|
},
|
|
213
213
|
outputSchema: {
|
|
214
214
|
created: z.boolean().optional().describe("True when the grid was created."),
|
|
215
|
+
provisioning: z.boolean().optional().describe("True when the grid is still finishing setup in the background. grid_plug waits for readiness before deploying, so call it right away — no manual polling needed."),
|
|
215
216
|
grid: z.object({
|
|
216
217
|
slug: z.string().describe("The new grid's slug — pass it to grid_plug as `grid`."),
|
|
217
218
|
name: z.string().optional().describe("Its display name."),
|
|
@@ -956,7 +957,7 @@ export function registerTools(server, ctx) {
|
|
|
956
957
|
{
|
|
957
958
|
title: "Report a failure",
|
|
958
959
|
description:
|
|
959
|
-
"Report a genuine CloudGrid failure to the CloudGrid team — ONLY with the user's explicit consent. When a build/deploy or platform call fails unexpectedly, ASK the user first; call this only after they say yes. Send a short `message` (what failed) plus `context` (the tool, inputs, grid, original request, error code/detail). By default it does NOT include the conversation — set include_conversation:true ONLY if the user explicitly agreed to send the chat.
|
|
960
|
+
"Report a genuine CloudGrid failure to the CloudGrid team — ONLY with the user's explicit consent. When a build/deploy or platform call fails unexpectedly, ASK the user first; call this only after they say yes. Send a short `message` (what failed) plus `context` (the tool, inputs, grid, original request, error code/detail). By default it does NOT include the conversation — set include_conversation:true ONLY if the user explicitly agreed to send the chat. Redaction is key-name-only: a value is dropped only when its KEY looks secret, so a secret embedded in a value (e.g. inside HTML) is NOT redacted — do not put secrets in `message` or `context`. Never sends anything the user didn't agree to.",
|
|
960
961
|
inputSchema: {
|
|
961
962
|
message: z
|
|
962
963
|
.string()
|
|
@@ -964,7 +965,7 @@ export function registerTools(server, ctx) {
|
|
|
964
965
|
context: z
|
|
965
966
|
.object({
|
|
966
967
|
tool: z.string().optional().describe("The CloudGrid tool that failed, e.g. grid_plug."),
|
|
967
|
-
inputs: z.any().optional().describe("The failing inputs (e.g. the HTML/args). Keep it minimal
|
|
968
|
+
inputs: z.any().optional().describe("The failing inputs (e.g. the HTML/args). Keep it minimal and do NOT include secrets — a secret embedded in a value here is not redacted."),
|
|
968
969
|
grid: z.string().optional().describe("The grid/org slug involved, if any."),
|
|
969
970
|
original_request: z.string().optional().describe("What the user asked for, in one line."),
|
|
970
971
|
error_code: z.string().optional().describe("The server error code, e.g. INTERNAL_ERROR."),
|
|
@@ -972,7 +973,7 @@ export function registerTools(server, ctx) {
|
|
|
972
973
|
})
|
|
973
974
|
.partial()
|
|
974
975
|
.optional()
|
|
975
|
-
.describe("The failed-request context.
|
|
976
|
+
.describe("The failed-request context. Redaction is key-name-only (a value is dropped only when its KEY looks secret) client-side, and the server applies the same key-name filter — a secret embedded in a value is not redacted by either."),
|
|
976
977
|
include_conversation: z
|
|
977
978
|
.boolean()
|
|
978
979
|
.optional()
|
|
@@ -1205,11 +1206,13 @@ export function registerTools(server, ctx) {
|
|
|
1205
1206
|
// source + cloudgrid.yaml and links the folder, so the next `grid plug` updates
|
|
1206
1207
|
// the SAME entity in place. Wraps `grid pull` (NOT `grid pickup` — pickup now
|
|
1207
1208
|
// makes a separate copy). Push access required; a view-only entity can't be
|
|
1208
|
-
// pulled — use grid_pickup to copy
|
|
1209
|
+
// pulled — use grid_pickup to fork a copy, or the CLI `grid collab` to GET
|
|
1210
|
+
// push access to the same entity (grants permission only — pull again once
|
|
1211
|
+
// granted). `grid collab` is CLI-only; there is no grid_collab MCP tool.
|
|
1209
1212
|
regTool(
|
|
1210
1213
|
"grid_edit_existing_app",
|
|
1211
1214
|
"Pull app source to edit locally",
|
|
1212
|
-
"Continue/edit an EXISTING entity locally: download its source + cloudgrid.yaml and link the folder so your next `grid plug` updates it IN PLACE. Requires push access (owner or collaborator). Wraps `grid pull`. To make your own separate copy instead, use grid_pickup.",
|
|
1215
|
+
"Continue/edit an EXISTING entity locally: download its source + cloudgrid.yaml and link the folder so your next `grid plug` updates it IN PLACE. Requires push access (owner or collaborator). Wraps `grid pull`. To make your own separate copy (a fork) instead, use grid_pickup. To GET push access to an entity you can currently only view, that is a different operation — the CLI `grid collab <entity>`, which grants permission only; run the pull again once it is granted.",
|
|
1213
1216
|
{
|
|
1214
1217
|
name: z.string().describe("Entity slug or id to pull."),
|
|
1215
1218
|
target_dir: z.string().optional().describe("Directory to pull into (relative to cwd). Defaults to the entity name."),
|