@cloudgrid-io/mcp 0.4.7 → 0.5.1

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.
@@ -0,0 +1,49 @@
1
+ ---
2
+ version: 0.2.0
3
+ name: feedback
4
+ description: |
5
+ Read the CloudGrid feedback feed. Use when the user wants to see feedback, check
6
+ what people said, review reactions, or read recent feedback events for their org.
7
+ Wraps cloudgrid feedback list.
8
+ argument-hint: "[--since 7d]"
9
+ allowed-tools: Bash
10
+ ---
11
+
12
+ # CloudGrid Feedback
13
+
14
+ List recent feedback events for the active org. Wraps `cloudgrid feedback list`.
15
+
16
+ ## Step 0 — Bootstrap
17
+
18
+ 1. If `cloudgrid` is not on `$PATH`: `npm install -g @cloudgrid-io/cli`
19
+ 2. If `cloudgrid whoami` fails: ask the user to run `cloudgrid login`. Wait for
20
+ confirmation.
21
+
22
+ ## UX rules
23
+
24
+ - Be concise. Summarize the feed; do not paste every event verbatim.
25
+ - Detect the user's language from their first message and reply in it. Keep
26
+ technical flags in English.
27
+
28
+ ## How to run it
29
+
30
+ ```
31
+ cloudgrid feedback list
32
+ ```
33
+
34
+ The feed is scoped to the active org. It is not filtered by entity. Useful flags:
35
+
36
+ - `--since <duration>` — only events newer than this, for example `24h`, `7d`.
37
+ - `--limit <n>` — number of events. Default 50, max 200.
38
+ - `--org <slug>` — read another org's feed (where you have access).
39
+
40
+ ## Reading the output
41
+
42
+ Each event has a time, an id, an org, and a message. Group or summarize by theme
43
+ when there are many. Surface the ones that look like bugs or blockers first.
44
+
45
+ ## Note: reading vs sending
46
+
47
+ This skill reads the feed. `cloudgrid feedback "<message>"` does the opposite: it
48
+ sends feedback to the CloudGrid team. Do not send feedback unless the user clearly
49
+ asks to report something.
@@ -0,0 +1,72 @@
1
+ ---
2
+ version: 0.2.0
3
+ name: init
4
+ description: |
5
+ Scaffold a new CloudGrid app or agent. Use when the user wants to start a new
6
+ project, create a new entity, set up a new app or agent, or seed a web service
7
+ (node, nextjs, python, or static) before deploying. Wraps cloudgrid init.
8
+ argument-hint: "[app|agent] [name]"
9
+ allowed-tools: Bash
10
+ ---
11
+
12
+ # CloudGrid Init
13
+
14
+ Register a new app or agent in the active org and, optionally, seed a web service
15
+ to deploy. Wraps `cloudgrid init`. After this, `cloudgrid:plug` deploys it.
16
+
17
+ ## Step 0 — Bootstrap
18
+
19
+ 1. If `cloudgrid` is not on `$PATH`: `npm install -g @cloudgrid-io/cli`
20
+ 2. If `cloudgrid whoami` fails: ask the user to run `cloudgrid login`. Wait for
21
+ confirmation.
22
+
23
+ ## UX rules
24
+
25
+ - Be concise. No raw IDs, no JSON dumps in chat.
26
+ - Detect the user's language from their first message and reply in it. Keep
27
+ technical flags in English.
28
+ - Pick sane defaults. Ask one thing at a time, only when something is missing.
29
+
30
+ ## What to ask
31
+
32
+ You need two things: the kind and the name.
33
+
34
+ - **Kind:** `app` or `agent`. Default to `app` unless the user describes an agent
35
+ (something that acts on its own, calls tools, or runs on a schedule).
36
+ - **Name:** a slug, 3 to 40 lowercase letters, numbers, or hyphens. If the user
37
+ gives a title, derive a slug from it. Confirm the slug before running.
38
+
39
+ Optional, only if the user implies them:
40
+
41
+ - `--type` to seed a web service: `node`, `nextjs`, `python`, or `static`.
42
+ - `--dir` to scaffold somewhere other than `./<name>`.
43
+ - `--description` for a one-line description.
44
+
45
+ ## Usage
46
+
47
+ Register an app and seed a static site:
48
+
49
+ ```
50
+ cloudgrid init app my-thing --type static
51
+ ```
52
+
53
+ Register an agent:
54
+
55
+ ```
56
+ cloudgrid init agent my-helper
57
+ ```
58
+
59
+ Register without seeding any files (you will add your own):
60
+
61
+ ```
62
+ cloudgrid init app my-thing
63
+ ```
64
+
65
+ ## After init
66
+
67
+ Tell the user the entity is registered and what is next: `cd` into the directory
68
+ (if seeded) and run `cloudgrid plug` to deploy. Hand off to `cloudgrid:plug`.
69
+
70
+ ## References
71
+
72
+ - [./references/options.md](./references/options.md) — full flag list and the four service types.
@@ -0,0 +1,86 @@
1
+ ---
2
+ version: 0.2.0
3
+ name: login
4
+ description: |
5
+ Sign in to CloudGrid, with or without the CLI. Use when the user wants to log in,
6
+ sign in, authenticate, connect their account, or claim an anonymous drop they made
7
+ earlier. Uses CloudGrid's existing OAuth. No new account needed.
8
+ argument-hint: ""
9
+ allowed-tools: Bash
10
+ ---
11
+
12
+ # CloudGrid Login
13
+
14
+ Get the user a CloudGrid identity token. This is the step that turns an anonymous
15
+ user into an owned one — and the step that lets them claim earlier anonymous drops.
16
+
17
+ There are two paths. Pick the first that fits.
18
+
19
+ ## Path 1 — the CLI is installed
20
+
21
+ If `cloudgrid` is on `$PATH`, this is the simplest and safest:
22
+
23
+ ```
24
+ cloudgrid login
25
+ ```
26
+
27
+ It opens the browser, handles the OAuth flow, and stores the token. Stop here.
28
+
29
+ ## Path 2 — no CLI (the CLI-free flow)
30
+
31
+ Reproduce the same OAuth flow by hand. It writes the same credentials file the CLI
32
+ uses (`~/.cloudgrid/credentials`), so the two share one identity.
33
+
34
+ 1. Make a session code and give the user the sign-in URL:
35
+
36
+ ```
37
+ CODE=$(uuidgen | tr 'A-Z' 'a-z')
38
+ echo "Open this and sign in with Google: https://api.cloudgrid.io/auth/login?code=$CODE"
39
+ ```
40
+
41
+ Show the user the URL. Wait for them to say they finished.
42
+
43
+ 2. Poll for the token (the window is 5 minutes; it is single-use):
44
+
45
+ ```
46
+ curl -sS "https://api.cloudgrid.io/auth/status?code=$CODE"
47
+ ```
48
+
49
+ - `{"status":"pending"}` or `404` — not done yet. Ask the user to finish, retry.
50
+ - `{"status":"authenticated","jwt":"..."}` — capture the `jwt`. Continue.
51
+ - `{"status":"expired"}` — the window closed. Start over from step 1.
52
+
53
+ 3. Save the token in the CLI's format, readable only by the user:
54
+
55
+ ```
56
+ umask 077 && mkdir -p ~/.cloudgrid
57
+ # JWT holds the token captured above
58
+ PAYLOAD=$(printf '%s' "$JWT" | cut -d. -f2 | tr '_-' '/+')
59
+ EMAIL=$(printf '%s==' "$PAYLOAD" | base64 -d 2>/dev/null | (jq -r .email 2>/dev/null || true))
60
+ UID=$(printf '%s==' "$PAYLOAD" | base64 -d 2>/dev/null | (jq -r .sub 2>/dev/null || true))
61
+ printf '{"jwt":"%s","issued_at":"%s","email":"%s","user_id":"%s"}\n' \
62
+ "$JWT" "$(date -u +%FT%TZ)" "$EMAIL" "$UID" > ~/.cloudgrid/credentials
63
+ chmod 600 ~/.cloudgrid/credentials
64
+ ```
65
+
66
+ If `jq` is not available, leave `email` and `user_id` empty — only the `jwt`
67
+ matters; the server reads identity from the token itself.
68
+
69
+ ## UX rules
70
+
71
+ - Be concise. The user does one thing: open a link and sign in.
72
+ - Detect the user's language from their first message and reply in it.
73
+ - Never write the token anywhere except `~/.cloudgrid/credentials`. Never print it.
74
+
75
+ ## After login
76
+
77
+ Confirm the user is signed in (`cloudgrid whoami` if the CLI is present). If they
78
+ made an anonymous drop earlier, this is the moment to offer to claim it.
79
+
80
+ ## Notes
81
+
82
+ - Enterprise single sign-on is not supported in this flow yet; those users sign in
83
+ through the Console for now.
84
+ - The MCP server exposes the same flow as `cloudgrid_login` and
85
+ `cloudgrid_login_status`, which handle the polling and the credentials write for
86
+ you.
@@ -0,0 +1,52 @@
1
+ ---
2
+ version: 0.2.0
3
+ name: logs
4
+ description: |
5
+ Tail logs for a CloudGrid entity. Use when the user wants to see logs, watch
6
+ output, follow a running app, debug a deploy, or check why something is failing.
7
+ Wraps cloudgrid logs.
8
+ argument-hint: "[name]"
9
+ allowed-tools: Bash
10
+ ---
11
+
12
+ # CloudGrid Logs
13
+
14
+ Stream or tail logs from an entity's pods. Wraps `cloudgrid logs`.
15
+
16
+ ## Step 0 — Bootstrap
17
+
18
+ 1. If `cloudgrid` is not on `$PATH`: `npm install -g @cloudgrid-io/cli`
19
+ 2. If `cloudgrid whoami` fails: ask the user to run `cloudgrid login`. Wait for
20
+ confirmation.
21
+
22
+ ## UX rules
23
+
24
+ - Be concise. Show the relevant lines, not the whole buffer.
25
+ - Detect the user's language from their first message and reply in it. Keep
26
+ technical flags and log output in their original form.
27
+
28
+ ## How to run it
29
+
30
+ Tail the recent logs for an entity by name:
31
+
32
+ ```
33
+ cloudgrid logs my-thing
34
+ ```
35
+
36
+ With no name, it uses the entity linked to the current directory.
37
+
38
+ Useful flags:
39
+
40
+ - `--tail <n>` — number of recent lines. Default 100.
41
+ - `--since <duration>` — only logs newer than this, for example `5m`, `1h`, `2d`.
42
+ - `--follow` — stream continuously.
43
+
44
+ Use `--follow` only when the user asks to watch live. It does not return on its
45
+ own, so do not use it for a one-time check. For a quick look, use `--tail` or
46
+ `--since` instead.
47
+
48
+ ## Reading the output
49
+
50
+ If the user is debugging, summarize what the logs show: the error, the failing
51
+ request, or that the service is healthy. Quote the key lines. Do not paste pages
52
+ of output into chat.
@@ -0,0 +1,57 @@
1
+ ---
2
+ version: 0.2.0
3
+ name: plug
4
+ description: |
5
+ Deploy a directory or URL to CloudGrid. Use when the user wants to ship, deploy,
6
+ publish, or go live with the current project, or turn a URL into a hosted entity.
7
+ Live in about 30 seconds. Wraps cloudgrid plug.
8
+ argument-hint: "[path-or-url]"
9
+ allowed-tools: Bash
10
+ ---
11
+
12
+ # CloudGrid Plug
13
+
14
+ Build and deploy a directory, a path, or a URL. Prints the live URL when it is
15
+ done. This is the center of the build-and-ship loop. Wraps `cloudgrid plug`.
16
+
17
+ ## Step 0 — Bootstrap
18
+
19
+ 1. If `cloudgrid` is not on `$PATH`: `npm install -g @cloudgrid-io/cli`
20
+ 2. If `cloudgrid whoami` fails: ask the user to run `cloudgrid login`. Wait for
21
+ confirmation.
22
+
23
+ ## UX rules
24
+
25
+ - Be concise. No raw IDs, no JSON dumps in chat.
26
+ - Detect the user's language from their first message and reply in it. Keep
27
+ technical flags in English.
28
+ - The deploy streams build progress. Let it run. Do not interrupt it.
29
+
30
+ ## How to run it
31
+
32
+ Most of the time, run it from the project directory with no arguments:
33
+
34
+ ```
35
+ cloudgrid plug
36
+ ```
37
+
38
+ It uses the entity linked to the directory, builds, deploys, and prints the URL.
39
+ A first deploy usually takes about 30 seconds; larger builds take longer.
40
+
41
+ Other shapes:
42
+
43
+ - **A specific path:** `cloudgrid plug ./site`
44
+ - **A URL as an inspiration:** `cloudgrid plug https://example.com`
45
+ - **Bind to an existing entity first:** `cloudgrid plug --existing <entity-id>`
46
+
47
+ If this is the user's first deploy in the org, the CLI may ask which org to use.
48
+ Pass `--org <slug>` to skip that prompt.
49
+
50
+ ## After plug
51
+
52
+ Print the live URL plainly. Then offer the next steps: `cloudgrid:logs` to watch
53
+ it, or `cloudgrid:share` to make it reachable by others.
54
+
55
+ ## References
56
+
57
+ - [./references/options.md](./references/options.md) — flags, URL inspirations, and first-deploy behavior.
@@ -0,0 +1,55 @@
1
+ ---
2
+ version: 0.2.0
3
+ name: share
4
+ description: |
5
+ Make a CloudGrid entity shareable and print its URL. Use when the user wants to
6
+ share a link, make something public, send an app to someone, or get a shareable
7
+ URL. Wraps cloudgrid visibility.
8
+ argument-hint: "[name]"
9
+ allowed-tools: Bash
10
+ ---
11
+
12
+ # CloudGrid Share
13
+
14
+ Set an entity's visibility so others can reach it, then print the URL. Wraps
15
+ `cloudgrid visibility set`.
16
+
17
+ ## Step 0 — Bootstrap
18
+
19
+ 1. If `cloudgrid` is not on `$PATH`: `npm install -g @cloudgrid-io/cli`
20
+ 2. If `cloudgrid whoami` fails: ask the user to run `cloudgrid login`. Wait for
21
+ confirmation.
22
+
23
+ ## UX rules
24
+
25
+ - Be concise. The result the user wants is the URL. Print it plainly.
26
+ - Detect the user's language from their first message and reply in it. Keep
27
+ technical flags in English.
28
+
29
+ ## How to run it
30
+
31
+ To make an entity reachable by anyone with the link:
32
+
33
+ ```
34
+ cloudgrid visibility set my-thing link
35
+ ```
36
+
37
+ The command prints the outlet URL. Hand that URL to the user.
38
+
39
+ ## Visibility modes
40
+
41
+ `cloudgrid visibility set <slug> <mode>` accepts:
42
+
43
+ - `link` — anyone with the URL can open it. Use this for sharing.
44
+ - `private` — only the owner.
45
+ - `authenticated` — any logged-in user.
46
+ - `org` — members of the org.
47
+ - `space` — members of the entity's space.
48
+
49
+ Default to `link` when the user says "share" or "make it public". Confirm before
50
+ using a wider mode than they asked for.
51
+
52
+ ## After share
53
+
54
+ Print the outlet URL on its own line, by itself, so it can be copied in one go.
55
+ Then, if it fits, offer the `feedback` skill to see what people say about it.
@@ -0,0 +1,92 @@
1
+ # CloudGrid Skills
2
+
3
+ Multi-agent skills for CloudGrid. Install them in Claude Code, Codex, or Cursor,
4
+ and your agent can build, ship, and run things on CloudGrid through the
5
+ `cloudgrid` CLI.
6
+
7
+ ## Why CloudGrid
8
+
9
+ Claude Code and Codex removed the wall around writing code. CloudGrid removes the
10
+ wall around shipping it. A directory or a URL becomes a live, addressable thing in
11
+ about 30 seconds. These skills are how your agent crosses that second wall on your
12
+ behalf: scaffold, deploy, tail logs, share, read feedback. Everything here is free.
13
+
14
+ ## Install in 3 steps
15
+
16
+ 1. Install the CLI:
17
+
18
+ ```
19
+ npm install -g @cloudgrid-io/cli
20
+ ```
21
+
22
+ 2. Log in:
23
+
24
+ ```
25
+ cloudgrid login
26
+ ```
27
+
28
+ 3. Add the skills. In Claude Code (recommended):
29
+
30
+ ```
31
+ /plugin marketplace add cloudgrid-io/skills
32
+ /plugin install cloudgrid
33
+ ```
34
+
35
+ They show under `/plugin` and `/skills` as `cloudgrid:drop`, `cloudgrid:login`,
36
+ … — or just say what you want ("drop this HTML to CloudGrid") and the right one
37
+ triggers.
38
+
39
+ Or install with the `gh skill` extension:
40
+
41
+ ```
42
+ gh skill install cloudgrid-io/skills
43
+ ```
44
+
45
+ Other agents (Cursor, Cline, Gemini CLI): `npx skills add cloudgrid-io/skills`.
46
+ They install as `drop`, `plug`, … — the CloudGrid brand comes from the plugin
47
+ namespace, which those agents don't have.
48
+
49
+ Claude Desktop, claude.ai, ChatGPT, and every route in one place: [USAGE.md](USAGE.md).
50
+
51
+ ## Share something in one step, no login
52
+
53
+ ```
54
+ /cloudgrid:drop index.html
55
+ ```
56
+
57
+ `cloudgrid:drop` publishes an HTML page or file and hands back a public URL. No
58
+ account, no CLI. The link lasts 7 days, and you can sign in later to keep it.
59
+
60
+ ## Skills
61
+
62
+ | Skill | Invoke | What it does |
63
+ |---|---|---|
64
+ | `drop` | `/cloudgrid:drop` | Share an HTML page or file, get a public URL. Login optional. |
65
+ | `login` | `/cloudgrid:login` | Sign in to CloudGrid, with or without the CLI. |
66
+ | `claim` | `/cloudgrid:claim` | Claim an anonymous drop into your account after signing in. |
67
+ | `init` | `/cloudgrid:init` | Scaffold a new app or agent. |
68
+ | `plug` | `/cloudgrid:plug` | Deploy a directory or URL. Live in about 30 seconds. |
69
+ | `logs` | `/cloudgrid:logs` | Tail logs for an entity. |
70
+ | `share` | `/cloudgrid:share` | Make an entity shareable and print its URL. |
71
+ | `feedback` | `/cloudgrid:feedback` | Read the feedback feed. |
72
+ | `brain` | `/cloudgrid:brain` | Refresh an entity's Grid Brain metadata. |
73
+
74
+ ## The canonical chain
75
+
76
+ ```
77
+ init -> plug -> logs -> share -> feedback
78
+ ```
79
+
80
+ That is the full "I built a thing and shipped it" loop. [COOKBOOK.md](COOKBOOK.md)
81
+ walks through it end to end.
82
+
83
+ ## MCP server
84
+
85
+ The `@cloudgrid-io/mcp` package exposes the same nine actions as MCP tools, for
86
+ agents that speak the Model Context Protocol. It wraps the same `cloudgrid` CLI.
87
+ Install it with `npx -y @cloudgrid-io/mcp`, or point a remote-capable client at
88
+ `https://mcp.cloudgrid.io/mcp`. See [USAGE.md](USAGE.md) for per-client setup.
89
+
90
+ ## License
91
+
92
+ Apache 2.0. See [LICENSE](LICENSE).
@@ -0,0 +1,138 @@
1
+ # Using CloudGrid skills and MCP
2
+
3
+ This repo ships two things that expose the **same** CloudGrid actions — drop, login,
4
+ claim, init, plug, logs, share, feedback, brain:
5
+
6
+ - **Skills** — `SKILL.md` files an agent loads. They trigger from natural language
7
+ (their `description`) or a slash command.
8
+ - **MCP server** — the same actions as MCP tools, for clients that speak the Model
9
+ Context Protocol.
10
+
11
+ Which one you use depends on the client. Pick your client below.
12
+
13
+ ## Prerequisites
14
+
15
+ - **Node 18+** (for `npx`).
16
+ - **No login needed to try it** — anonymous drop works out of the box. For owned
17
+ drops (into your org), run `cloudgrid login` once, or use the `login` skill / the
18
+ `cloudgrid_login` MCP tool.
19
+
20
+ ---
21
+
22
+ ## Claude Code (terminal, VS Code, JetBrains)
23
+
24
+ Three install routes. They land in **different menus** — this is the most common
25
+ point of confusion.
26
+
27
+ ### Route 1 — skills via the skills CLI
28
+ ```
29
+ npx skills add cloudgrid-io/skills
30
+ ```
31
+ - Installs into `~/.claude/skills/` (personal). Auto-loads, no restart.
32
+ - **Find them under `/skills`** (labeled Personal). **Not** under `/plugin`.
33
+ - Invoke as **`/drop`**, `/login`, … (bare — the personal route has no namespace), or describe the task.
34
+
35
+ ### Route 2 — skills as a plugin
36
+ ```
37
+ /plugin marketplace add cloudgrid-io/skills
38
+ /plugin install cloudgrid
39
+ ```
40
+ - **Find it under `/plugin`**; the skills also show under `/skills` (labeled Plugin).
41
+ - Invoke as **`/cloudgrid:drop`** (plugin namespace + short skill name, like `superpowers:brainstorming`), or describe the task.
42
+
43
+ ### Route 3 — the MCP server
44
+ ```
45
+ claude mcp add cloudgrid -- npx -y @cloudgrid-io/mcp
46
+ ```
47
+ - **Find it under `/mcp`.** Exposes tools `cloudgrid_drop`, `cloudgrid_login`, …
48
+ - Invoke by describing the task; the model calls the tool.
49
+
50
+ > Where did my install go? `/skills` (skills), `/plugin` (plugin), `/mcp` (MCP).
51
+ > If you don't see something, you're probably looking in the wrong menu, or you
52
+ > installed a different route than you're checking. `/doctor` flags real problems.
53
+
54
+ ### Sharing with a team (Claude Code)
55
+ Commit a project-scoped MCP so teammates get it on clone:
56
+ ```
57
+ cd your-shared-repo
58
+ claude mcp add cloudgrid -s project -- npx -y @cloudgrid-io/mcp
59
+ git add .mcp.json && git commit -m "add CloudGrid MCP"
60
+ ```
61
+ Or each person runs Route 1 or `claude mcp add ... -s user` once.
62
+
63
+ ---
64
+
65
+ ## Claude Desktop (chat)
66
+
67
+ Desktop chat extends via **MCP only** — it does not read a skills folder. Add to
68
+ `~/Library/Application Support/Claude/claude_desktop_config.json`:
69
+ ```json
70
+ { "mcpServers": { "cloudgrid": { "command": "npx", "args": ["-y", "@cloudgrid-io/mcp"] } } }
71
+ ```
72
+ Then **fully quit and reopen** Claude Desktop. The CloudGrid tools appear under the
73
+ tools icon. Invoke by describing the task: "drop this HTML to CloudGrid."
74
+
75
+ ---
76
+
77
+ ## Codex, Cursor, Cline, Gemini CLI, and other coding agents
78
+
79
+ ```
80
+ npx skills add cloudgrid-io/skills
81
+ ```
82
+ Installs into the universal `.agents/skills/` location these agents read (Cursor
83
+ also reads `~/.cursor/skills`; target one agent with `-a codex` / `-a cursor`).
84
+ Codex and Cursor also take the plugin route (`codex plugin marketplace add
85
+ cloudgrid-io/skills`; Cursor's in-app marketplace) and the MCP server — local
86
+ (`npx -y @cloudgrid-io/mcp` in their MCP config) or remote with nothing installed
87
+ (`https://mcp.cloudgrid.io/mcp` as a `url` entry in `~/.codex/config.toml` or
88
+ `~/.cursor/mcp.json`). See INSTALL.md for exact snippets.
89
+
90
+ ---
91
+
92
+ ## claude.ai web and the ChatGPT app
93
+
94
+ These connect to **remote** MCP servers (by URL), not local ones. The hosted web
95
+ edition is live — add it as a custom connector:
96
+
97
+ Two endpoints, two postures:
98
+
99
+ ```
100
+ https://mcp.cloudgrid.io/mcp anonymous-first: drop with no sign-in
101
+ https://mcp-connected.cloudgrid.io/mcp connected: native sign-in when you add it
102
+ ```
103
+
104
+ The connected endpoint runs the client's own OAuth connect at add-time (sign in
105
+ with CloudGrid right in the flow); every drop is owned from the first one. The
106
+ anonymous endpoint needs no account; sign in later from inside the conversation.
107
+
108
+ - **claude.ai web** — Settings → Connectors → add custom connector.
109
+ - **ChatGPT** — add it as a custom connector (Developer Mode; availability depends
110
+ on plan / rollout).
111
+ - **Codex and Cursor** accept the same URL — see the section above.
112
+
113
+ ---
114
+
115
+ ## Skill vs MCP — which should I use?
116
+
117
+ Same capabilities; different surface.
118
+
119
+ - **Skills** carry guidance (when to use, how to phrase results) and auto-trigger
120
+ from natural language. Best in agents that read skills (Claude Code, Cursor, …).
121
+ - **MCP** exposes the actions as tools. Best where skills are not read (Claude
122
+ Desktop, claude.ai web, ChatGPT) or when you want explicit tools.
123
+
124
+ You can install both; they do not conflict.
125
+
126
+ ## Capabilities (both surfaces)
127
+
128
+ | Action | What it does |
129
+ |---|---|
130
+ | drop | Share an artifact, get a public URL. No login needed (anonymous, 7-day) or owned if signed in (30-day). |
131
+ | login | Sign in to CloudGrid, with or without the CLI. |
132
+ | claim | Claim an anonymous drop into your account; the URL stays the same. |
133
+ | init | Scaffold a new app or agent. |
134
+ | plug | Deploy a directory or URL. |
135
+ | logs | Tail an entity's logs. |
136
+ | share | Set visibility and print the URL. |
137
+ | feedback | Read the feedback feed. |
138
+ | brain | Refresh Grid Brain metadata. |