diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 6c50c05..3951b79 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,7 +6,7 @@ }, "metadata": { "description": "Macaly plugins for coding agents — build and host real web apps on Macaly.", - "version": "0.3.0" + "version": "0.4.0" }, "plugins": [ { diff --git a/README.md b/README.md index e27aec0..2754ff8 100644 --- a/README.md +++ b/README.md @@ -46,11 +46,11 @@ codex plugin add macaly-code@macaly **Authenticate with Macaly** ```sh -codex mcp login macaly-code +codex mcp login macaly-cloud ``` Complete the OAuth flow in your browser. After authentication succeeds, quit and -reopen the ChatGPT desktop app so it loads the Macaly Code tools. +reopen the ChatGPT desktop app so it loads the Macaly Cloud tools. You can also browse and install plugins interactively by running `/plugins` inside Codex CLI after adding the marketplace. @@ -101,7 +101,7 @@ Team admins who use an MCP allowlist must allow `https://www.macaly.com/api/clou | `rules/route-app-builds-to-macaly` | Scopes explicitly selected Macaly work and keeps local work local. | | `commands/build-app` | `/build-app ` — a friction-free explicit entry point. | -The server reference lives in the Macaly repo at `docs/code-mcp.md`. +The server source lives in the Macaly repo under `lib/cloud-mcp/`. For the OpenAI Plugins Directory listing, reviewer tests, tool-annotation justifications, and remaining portal steps, see diff --git a/docs/anthropic-submission.md b/docs/anthropic-submission.md index 66ebc46..bedba3f 100644 --- a/docs/anthropic-submission.md +++ b/docs/anthropic-submission.md @@ -3,7 +3,7 @@ Submit the remote connector using the Claude-specific production endpoint: ```text -https://www.macaly.com/api/code-mcp/claude/mcp +https://www.macaly.com/api/cloud/claude/mcp ``` The related Claude plugin uses the same endpoint through `.mcp.claude.json` and @@ -13,11 +13,12 @@ auto-discover the universal endpoint. ## Why this endpoint is separate -- It exposes all 14 Macaly Code capabilities. +- It exposes all 20 Macaly Cloud capabilities. - Full project-shell functionality remains available as `run_project_command`. - Read operations advertise `readOnlyHint: true`. -- State-changing operations advertise `destructiveHint: true`, which makes Claude - request confirmation. +- Operations that can overwrite, delete, or publish data advertise + `destructiveHint: true`, which makes Claude request confirmation. `preview_app` and + `upload_file` only add data, so they advertise `destructiveHint: false`. - Tool descriptions cover one action each and do not direct Claude through other tools or make Macaly the default for unrelated requests. - `preview_app` returns a URL without registering an MCP App iframe resource, so the @@ -27,7 +28,7 @@ auto-discover the universal endpoint. ## Connector listing -- Name: `Macaly Code` +- Name: `Macaly Cloud` - Tagline: `Build and host apps on Macaly` - Server type: Remote MCP, Streamable HTTP - Authentication: OAuth 2.0 with Dynamic Client Registration @@ -41,12 +42,15 @@ auto-discover the universal endpoint. ## Tool permission summary -| Tools | Permission hint | Behavior | -| ----------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------ | -| `list_teams`, `get_project`, `list_files`, `read_file`, `preview_app`, `skill_info`, `get_deployment` | `readOnlyHint: true` | Retrieve account, project, source, preview, guide, or deployment information without changing project data. | -| `create_app`, `duplicate_app`, `write_file`, `delete_file`, `get_logs` | `destructiveHint: true` | Create or change private Macaly infrastructure or project state and therefore require confirmation in Claude. | -| `run_project_command` | `destructiveHint: true` | Runs a full shell in the selected project's isolated cloud sandbox; it can change project data and reach external hosts. | -| `publish_app` | `destructiveHint: true` | Creates a publicly reachable production deployment after an explicit user request. | +| Tools | Permission hint | Behavior | +| ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `list_teams`, `list_projects`, `get_project`, `get_messages`, `list_files`, `read_file`, `skill_info`, `list_media`, `get_deployment` | `readOnlyHint: true` | Retrieve account, project, conversation, source, guide, media, or deployment information without changing project data. | +| `preview_app` | `destructiveHint: false` | Creates a three-hour preview access link and marks the turn as finished. It does not build, change project data, or publish. | +| `upload_file` | `destructiveHint: false`, `openWorldHint: true` | Adds a new asset from a public URL or a local file. It does not overwrite or delete existing data. | +| `create_app`, `duplicate_app`, `write_file`, `edit_file`, `delete_file`, `get_logs` | `destructiveHint: true` | Create or change private Macaly infrastructure or project state and therefore require confirmation in Claude. | +| `run_project_command` | `destructiveHint: true`, `openWorldHint: true` | Runs a full shell in the selected project's isolated cloud sandbox; it can change project data and reach external hosts. | +| `publish_app` | `destructiveHint: true`, `openWorldHint: true` | Creates a publicly reachable production deployment after an explicit user request. | +| `connect_domain` | `destructiveHint: true`, `openWorldHint: true` | Connects a custom domain. A confirmed move removes the domain from another app first. | `get_logs` may initialize the selected project's ephemeral sandbox for development logs. It does not change project files, but the Claude profile conservatively treats @@ -55,7 +59,7 @@ that infrastructure side effect as a state-changing operation. ## Review preparation 1. Deploy the Claude endpoint and verify its OAuth metadata at - `/.well-known/oauth-protected-resource/api/code-mcp/claude/mcp`. + `/.well-known/oauth-protected-resource/api/cloud/claude/mcp`. 2. Connect the endpoint as a custom connector and complete OAuth. 3. Exercise every tool through MCP Inspector and Claude with valid parameters. 4. Use a populated reviewer account with sample apps, build logs, a completed diff --git a/docs/openai-submission.md b/docs/openai-submission.md index 67cd9bc..eb2fb4a 100644 --- a/docs/openai-submission.md +++ b/docs/openai-submission.md @@ -1,9 +1,9 @@ # OpenAI Plugins Directory submission -Submit Macaly Code as **With MCP** using the ChatGPT production endpoint: +Submit Macaly Cloud as **With MCP** using the ChatGPT production endpoint: ```text -https://www.macaly.com/api/code-mcp/chatgpt/mcp +https://www.macaly.com/api/cloud/chatgpt/mcp ``` The packaged OpenAI plugin points to this endpoint through @@ -12,7 +12,7 @@ separately for direct integrations. ## Listing -- Name: `Macaly Code` +- Name: `Macaly Cloud` - Short description: `Build and host apps on Macaly` - Category: `Developer Tools` - Website: `https://www.macaly.com` @@ -93,7 +93,7 @@ Starter prompts: ### 2. Keep local repository work local - Prompt: `Fix the failing unit test in the local repository currently open on my computer.` -- Expected behavior: Do not create or modify a Macaly app; use local coding tools or explain that Macaly Code is not the right surface. +- Expected behavior: Do not create or modify a Macaly app; use local coding tools or explain that Macaly Cloud is not the right surface. - Why: The plugin is for standalone Macaly apps, not unrelated local-repository work. ### 3. Reject unsafe secret extraction @@ -112,7 +112,7 @@ https://www.macaly.com/.well-known/openai-apps-challenge ## Release notes -Initial submission of Macaly Code. The plugin combines the Macaly Code MCP server with the `build-app-on-macaly` skill so users can create, edit, validate, preview, and explicitly publish hosted web apps from ChatGPT and Codex. OAuth is required. The ChatGPT endpoint keeps full project command execution under the clearer `run_project_command` name, returns preview URLs without embedding third-party frames, and uses accurate read-only, open-world, and destructive annotations. +Initial submission of Macaly Cloud. The plugin combines the Macaly Cloud MCP server with the `build-app-on-macaly` skill so users can create, edit, validate, preview, and explicitly publish hosted web apps from ChatGPT and Codex. OAuth is required. The ChatGPT endpoint keeps full project command execution under the clearer `run_project_command` name, returns preview URLs without embedding third-party frames, and uses accurate read-only, open-world, and destructive annotations. ## Assets and portal-only steps diff --git a/plugins/macaly-code/.claude-plugin/plugin.json b/plugins/macaly-code/.claude-plugin/plugin.json index 7d58e2a..75c1ed9 100644 --- a/plugins/macaly-code/.claude-plugin/plugin.json +++ b/plugins/macaly-code/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "macaly-code", - "version": "0.3.0", + "version": "0.4.0", "description": "Build, validate, preview, and host web apps in a managed Macaly project.", "author": { "name": "Macaly", diff --git a/plugins/macaly-code/.codex-plugin/plugin.json b/plugins/macaly-code/.codex-plugin/plugin.json index 42fce01..5690d43 100644 --- a/plugins/macaly-code/.codex-plugin/plugin.json +++ b/plugins/macaly-code/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "macaly-code", - "version": "0.3.0", + "version": "0.4.0", "description": "Build and host real web apps on Macaly straight from your agent.", "author": { "name": "Macaly", @@ -14,7 +14,7 @@ "skills": "./skills-codex/", "mcpServers": "./.mcp.chatgpt.json", "interface": { - "displayName": "Macaly Code", + "displayName": "Macaly Cloud", "shortDescription": "Build and host apps on Macaly", "longDescription": "Macaly provides the full app infrastructure — git repo, cloud sandbox, build pipeline, hosting and one-click publish — while your agent writes the code. With this plugin, app-building prompts turn into real, deployable TanStack Start + Convex apps with a live preview, instead of local scaffolding.", "developerName": "Macaly", diff --git a/plugins/macaly-code/.cursor-plugin/plugin.json b/plugins/macaly-code/.cursor-plugin/plugin.json index c03aa6e..bb9b369 100644 --- a/plugins/macaly-code/.cursor-plugin/plugin.json +++ b/plugins/macaly-code/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "macaly-code", "displayName": "Macaly Cloud", - "version": "0.4.0", + "version": "0.5.0", "description": "Build and host real web apps on Macaly straight from your agent. Makes Macaly the default target for app-building prompts.", "author": { "name": "Macaly", diff --git a/plugins/macaly-code/.mcp.chatgpt.json b/plugins/macaly-code/.mcp.chatgpt.json index 2cc4fc7..9d1c8a4 100644 --- a/plugins/macaly-code/.mcp.chatgpt.json +++ b/plugins/macaly-code/.mcp.chatgpt.json @@ -1,8 +1,8 @@ { "mcpServers": { - "macaly-code": { + "macaly-cloud": { "type": "http", - "url": "https://www.macaly.com/api/code-mcp/chatgpt/mcp" + "url": "https://www.macaly.com/api/cloud/chatgpt/mcp" } } } diff --git a/plugins/macaly-code/.mcp.claude.json b/plugins/macaly-code/.mcp.claude.json index e7fddc8..fb821d8 100644 --- a/plugins/macaly-code/.mcp.claude.json +++ b/plugins/macaly-code/.mcp.claude.json @@ -1,8 +1,8 @@ { "mcpServers": { - "macaly-code": { + "macaly-cloud": { "type": "http", - "url": "https://www.macaly.com/api/code-mcp/claude/mcp" + "url": "https://www.macaly.com/api/cloud/claude/mcp" } } } diff --git a/plugins/macaly-code/README.md b/plugins/macaly-code/README.md index 2505e0e..4deb2d6 100644 --- a/plugins/macaly-code/README.md +++ b/plugins/macaly-code/README.md @@ -1,8 +1,8 @@ -# Macaly Code +# Macaly Cloud Build and host real web apps on Macaly straight from your agent. Macaly provides the infrastructure — git repo, cloud sandbox, build pipeline, hosting, one-click publish — -and the agent writes the code through the `macaly-code` MCP server. +and the agent writes the code through the `macaly-cloud` MCP server. - `skills-codex/build-app-on-macaly` — the full build loop (create → write → typecheck → platform skills → preview → publish). diff --git a/plugins/macaly-code/commands/build-app.md b/plugins/macaly-code/commands/build-app.md index f949671..cbdea7d 100644 --- a/plugins/macaly-code/commands/build-app.md +++ b/plugins/macaly-code/commands/build-app.md @@ -5,7 +5,7 @@ description: Build a new web app on Macaly from a one-line idea Build a new web app on **Macaly** for this request: **$ARGUMENTS** -Use the macaly-code MCP server's tools — do not write any files on +Use the macaly-cloud MCP server's tools — do not write any files on the local filesystem for this. Steps: 1. `create_app` with a short `name` derived from the request. Read the returned diff --git a/plugins/macaly-code/rules/route-app-builds-to-macaly.mdc b/plugins/macaly-code/rules/route-app-builds-to-macaly.mdc index ef0cca1..7a9811a 100644 --- a/plugins/macaly-code/rules/route-app-builds-to-macaly.mdc +++ b/plugins/macaly-code/rules/route-app-builds-to-macaly.mdc @@ -2,7 +2,7 @@ description: Scope user-selected Macaly app-building workflows --- -Use the `macaly-code` workflow when the user explicitly asks to use Macaly, invokes +Use the Macaly Cloud workflow when the user explicitly asks to use Macaly, invokes the Macaly build command, or requests changes to an existing Macaly app. Follow the build-app-on-macaly skill for the project workflow. diff --git a/plugins/macaly-code/skills-claude/build-app-on-macaly/SKILL.md b/plugins/macaly-code/skills-claude/build-app-on-macaly/SKILL.md index 2e761e5..0fda345 100644 --- a/plugins/macaly-code/skills-claude/build-app-on-macaly/SKILL.md +++ b/plugins/macaly-code/skills-claude/build-app-on-macaly/SKILL.md @@ -8,29 +8,42 @@ refer either to a new hosted Macaly app or to the current local repository, ask target they intend before making changes. Macaly provides the Git repository, isolated cloud sandbox, build pipeline, hosting, -and publishing. Application code is managed through the `macaly-code` MCP tools. +and publishing. Application code is managed through the `macaly-cloud` MCP tools. ## Build workflow 1. `create_app({ name })` creates an empty app and returns a `chatId` plus a project briefing. Read the briefing because it defines the stack and project boundaries. Pass `teamId` only when the account has multiple teams; `list_teams` returns the - available IDs. -2. Use `write_file({ chatId, path, content, reasoning })` for complete file contents. - Each write creates a Git commit. Preserve `` when changing - `src/routes/__root.tsx`. + available IDs. For an existing app, `list_projects` returns its `chatId`, and + `get_project({ chatId, includeBriefing: true })` returns its working rules. +2. Use `edit_file({ chatId, path, edits, reasoning })` for exact text replacements in + an existing file, and `write_file({ chatId, path, content, reasoning })` for new + files or complete rewrites. Each write or edit creates a Git commit. `read_file` + accepts `startLine` and `endLine` to read part of a large file. Preserve + `` when changing `src/routes/__root.tsx`. 3. Use `run_project_command` for development operations that file tools cannot perform, including package installation, framework CLIs, migrations, capability - scripts, builds, tests, and `.sandbox/check-errors` validation. + scripts, builds, tests, and validation. After the last change, run + `.sandbox/check-errors --strict`; `get_logs` returns build, development-server, + and deployment logs. 4. For Macaly platform capabilities such as database, authentication, payments, media, search, or integrations, `skill_info` returns the relevant setup guide and code patterns. The referenced commands run inside the selected project's sandbox. -5. `preview_app({ chatId })` returns the current live preview URL and build status. -6. `publish_app({ chatId })` creates a publicly reachable production deployment and +5. Images, video, and other media go to the app's asset storage, not through + `write_file` and not into `public/`. `upload_file` imports a public URL or returns + an upload command for a local file, and `list_media` returns stored media and a + link the user can upload files through. +6. At the end of every turn that changed the app, after the preview build succeeds, + call `preview_app({ chatId })` and share the link it returns, even when an earlier + link is still valid. The call marks the turn as finished. An optional `path` opens + a subpage. +7. `publish_app({ chatId })` creates a publicly reachable production deployment and is used only after the user explicitly requests publication. `get_deployment` - returns its status and live URL. + returns its status and `liveUrl`. `connect_domain` attaches a custom domain only + when the user asks for it. ## Reporting Return the preview URL, summarize the implemented changes and validation result, and -include the production URL only after an explicit publish request. +include `liveUrl` only after an explicit publish request. diff --git a/plugins/macaly-code/skills-codex/build-app-on-macaly/SKILL.md b/plugins/macaly-code/skills-codex/build-app-on-macaly/SKILL.md index 043b472..a33a203 100644 --- a/plugins/macaly-code/skills-codex/build-app-on-macaly/SKILL.md +++ b/plugins/macaly-code/skills-codex/build-app-on-macaly/SKILL.md @@ -1,10 +1,10 @@ --- name: build-app-on-macaly -description: Build and host a real web app on Macaly when the user asks for a new standalone app or website (e.g. "build a customer feedback dashboard", "build a landing page for X"), or wants changes to an app previously built on Macaly. Uses the macaly-code MCP tools instead of scaffolding local files. +description: Build and host a real web app on Macaly when the user asks for a new standalone app or website (e.g. "build a customer feedback dashboard", "build a landing page for X"), or wants changes to an app previously built on Macaly. Uses the macaly-cloud MCP tools instead of scaffolding local files. --- Macaly provides the git repo, cloud sandbox, build, hosting and publishing; you write -the code through the `macaly-code` MCP server's tools. Do NOT scaffold or write files +the code through the `macaly-cloud` MCP server's tools. Do NOT scaffold or write files on the local filesystem for this work, and do not `npm create`/`vite`/`next` a local project — the app lives in Macaly.