Connect the platform MCP server
read as.mdGuuey runs an MCP server over its own platform API. Connect it to the coding agent you already work in — Claude Code, Cursor, or any client that speaks MCP over HTTP — and that agent can do what guuey does from the terminal: list and create apps, deploy, manage environment variables and secrets, read logs, rotate widget keys, and write the chat theme. Every tool call is the same authenticated request the CLI makes; nothing is cached, re-authorized or reshaped on the way, and an upstream 401, 403 or 404 comes back as a tool error carrying that status.
The endpoint
Section titled “The endpoint”https://platform-mcp.guuey.com/mcpStreamable HTTP, stateless — no session id to keep — on MCP protocol 2025-06-18. The server identifies itself as guuey-platform.
Authentication
Section titled “Authentication”The server takes your personal token — the same one the CLI uses — and forwards it verbatim:
- Your personal access token (
guuey_user_…) — the keyguuey logindelivers. Mint one in the console under Settings → API keys;guuey login --token guuey_user_…accepts the same key, so it is the one credential for both doors. - Service tokens (
guuey_svc_…) and workspace keys (guuey_wkz_…) are refused at this door — it takes a personal token only. CI automation keeps using those through the CLI, not through this server.
Send it as Authorization: Bearer <token>. An unauthenticated request answers 401 with a WWW-Authenticate header pointing at https://platform-mcp.guuey.com/.well-known/oauth-protected-resource/mcp; clients that implement MCP’s OAuth discovery follow that document to Guuey’s authorization server (https://oauth.guuey.com, which publishes registration, authorization and token endpoints with PKCE), register themselves, and sign you in with your Guuey account instead of a pasted token.
Connect a client
Section titled “Connect a client”Claude Code:
claude mcp add --transport http guuey-platform https://platform-mcp.guuey.com/mcp \ --header "Authorization: Bearer guuey_user_…"Any client that reads an mcpServers map (Cursor, Windsurf, the MCP inspector, and most others):
{ "mcpServers": { "guuey-platform": { "url": "https://platform-mcp.guuey.com/mcp", "headers": { "Authorization": "Bearer guuey_user_…" } } }}Keep the token in the client’s secret store or an environment variable, never in a file you commit.
What the agent can do
Section titled “What the agent can do”| Tool | What it is |
|---|---|
whoami |
Who the token belongs to — { userId, keyId? }, nothing richer. |
apps_list, apps_get, apps_create, apps_update |
Your apps. The argument is id (not appId). apps_update also sets the look: chatTheme is the same document guuey apps update --chat-theme-file sends (null clears it; every hosted surface follows within minutes), brandAccent is a full replacement (null clears). |
deploy_upload, deploy_trigger |
A deploy. For code deploys, deploy_upload presigns the upload of the source tarball and comes first — its returned s3Key goes into deploy_trigger as sourceTarballKey; a declarative (no-code) deploy needs only deploy_trigger. |
deployments_list, deployment_get, deployment_status |
Build history and the state of one build. |
env_list, env_set, env_delete |
Environment variables. env_list returns names only — values never leave the platform. env_delete is destructive. |
secrets_set, secrets_list, secrets_unset |
A hosted MCP server’s secrets — again names only, never values. secrets_unset is destructive (and idempotent). |
logs_fetch |
The app’s runtime logs. |
mcp_servers_list, mcp_server_get |
Your hosted MCP servers (workspaceId defaults to your personal workspace when omitted). |
widget_keys_create, widget_keys_rotate, widget_keys_revoke |
The widget signing keys. widget_keys_revoke is destructive; there is no list — the platform exposes none. |
Everything else the platform API can do — deleting or archiving an app, billing, membership, undeploy, deleting a hosted MCP server — is deliberately not on this server. Those stay with the CLI and the console, where a person confirms them.
The chat theme door
Section titled “The chat theme door”This is the door the console’s Copy prompt on Design → Chat theme names: a coding agent with this server connected can read the theme it proposes back into the app with apps_update { "id": "<appId>", "chatTheme": <the document> } and verify it with apps_get. The document, its validation and its precedence over the brand accent are all on Theming.