Connect with OAuth
API and MCP access require Personal or above. Add https://sunrose.dev/mcp as a remote custom connector in an MCP client that supports OAuth discovery.
Complete Sunrose’s sign-in and consent flow, choosing Read only or Read and write. You can inspect and disconnect connected apps under API in the console.
https://sunrose.dev/mcp Connect with an API key
If your client accepts an Authorization header, create a Sunrose API key and send it as a bearer token to the same endpoint. Choose only the permissions the integration needs.
For example, a Claude Code client with HTTP MCP support can be configured with the command below. Replace YOUR_API_KEY with your own key. Avoid leaving a real key in shared shell history or documentation.
claude mcp add --transport http sunrose https://sunrose.dev/mcp \
--header "Authorization: Bearer YOUR_API_KEY" Connect from Codex
Codex can use the same endpoint. Add the server, then sign in with the OAuth flow, choosing Read only or Read and write on Sunrose’s consent screen.
codex mcp add sunrose --url https://sunrose.dev/mcp
codex mcp login sunrose Available tools
The server advertises each tool’s input schema, and whether it only reads or can take something down, through tools/list. Your MCP client uses that to construct calls and to decide when to ask you first.
list_projectsOptional includeArchived. List workspace projects with state, whether the served version is a review or a plain preview, and open comments.
get_projectprojectId. Read versions, approval status, addresses, and review links (with their ids, never their secrets).
list_feedbackprojectId; optional status, visibility, and limit (1–200). Read reviewer comments, with the version that fixes each (fixedIn) and, on a reply, the comment it answers.
get_usageNo inputs. Plan, projects, storage, and files this month against their limits, plus per-upload limits.
set_feedback_statuscommentId and status: open, in_progress, ready, or resolved. Changes internal status only, and returns the comment’s project, page, and wording.
reply_to_feedbackcommentId and body; optional shared (default true). The reviewer reads the reply under their own comment next time they open their link. Nothing is emailed; false keeps it as an internal note.
mark_feedback_fixedcommentIds (up to 50) and optional version (default: the current one). Records the version that addresses them and moves open comments to ready. The reviewer sees nothing.
create_review_linkprojectId and audience (client or team); optional expiresInDays, approvalEnabled, feedbackDueAt, and allowDownload. Returns a review URL.
revoke_review_linksessionId from get_project. Turns a review link off at once. To reopen review, make a new link.
extend_review_linksessionId from get_project. Turns an expired client link back on for another full period at the same address.
set_current_versionprojectId and versionId. Serve an existing version (roll back or forward). Requires a plan with version restore.
publish_sitefiles plus name for a new project, or projectId for a new version. Optional mode: review or show. Up to 5 MB.
begin_publishfiles (path and exact size, up to 200) plus name or projectId; optional mode. Returns a signed upload URL for each file, for sites over 5 MB.
finish_publishsessionId from begin_publish, after every file is uploaded. Checks each file’s size, then makes the version live.
archive_projectprojectId. Takes a project off the air without deleting anything. It frees a project slot, but its files still count toward your storage. Reversible.
unarchive_projectprojectId. Brings an archived project back. Refused if your plan’s project limit is full.
Publish files through MCP
For publish_site, each file needs a path and either text or base64 content. Paths are relative to the site root. Include index.html and all required assets in every version.
A publish_site call accepts up to 5 MB of decoded file content, because the files travel through the conversation. For larger sites, call begin_publish with each file’s path and exact size; it returns a signed upload URL for each file. Upload each file’s raw bytes to its URL yourself, with the headers returned (a shell or script is enough), then call finish_publish. Nothing is live until finish_publish. This needs a client that can run commands, such as Claude Code. Workspace plan limits and safety checks apply to every path.
{
"name": "My preview",
"mode": "review",
"files": [
{
"path": "index.html",
"text": "<!doctype html><title>Preview</title><h1>Hello</h1>"
}
]
} Permissions and transport
The endpoint uses Streamable HTTP with JSON responses, without persistent MCP sessions or a server-sent event stream. It accepts OAuth access tokens or API keys; a signed-in browser cookie alone is not authentication.
A connection acts as the person who authorised it, with their current role: a viewer’s connection cannot write. Connections cannot delete projects, manage domains, set preview passwords, change search indexing, create API keys, manage billing or the team, or approve other connections. To take a site down, archive it: that is reversible, keeps every version and comment, and is undone with unarchive_project. Read-only connections cannot publish or change feedback. Feature-specific plan allowances still apply.
OAuth discovery and token lifecycle
Discovery is available at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server. Public clients register at POST /oauth/register, then use authorization code flow with required PKCE S256.
The authorization endpoint is /oauth/authorize; tokens are exchanged at /oauth/token and revoked at /oauth/revoke. Scopes are read and write. Access tokens last one hour; refresh tokens last 30 days and rotate on use.
A reused authorization code or refresh token revokes the affected connection’s tokens. Let your MCP client manage credentials and refreshes, and disconnect unused apps from API.