MCP server
Rendel's MCP tools, which a coding agent uses to set up or sync an app, and how a refusal comes back.
Rendel runs an MCP server at https://rendel.ai/api/mcp (streamable HTTP, stateless JSON-RPC). A coding agent connects to it, signs in through your browser for one app, and uses these tools to fill in the console while it works in your code. Set up with AI says how to connect Claude Code.
The tools call the same operations as the Setup API, so either path writes the same rows. Their names and descriptions never change for an app: an allow rule on mcp__rendel__* approves exactly these.
Tools
| Tool | What it does |
|---|---|
rendel_start({app, tool, model?, os?, detected?}) | Call first. Connects to the app named in the prompt (app, its slug) and tells Overview the agent has connected. Returns the app, whether this is a setup or a sync (and, for a sync, the change the developer described), both publishable keys, the SDK versions and snippets, and the setup guide. Calling it again is harmless |
rendel_get_context | What Rendel already holds: links and description, what was read from the app's website, the current appearance, experience, knowledge, actions and screens (each with its external_key and origin), the latest build's manifest, and facts |
rendel_report_progress({events, detected?}) | Progress on the steps the server cannot see (discover, install, identity, verify), or a step skipped or failed; up to 50 events a call |
rendel_set_appearance | The look, from the app's theme, with where each value was read from, into the draft. Answers with any contrast warnings and their fixes |
rendel_upload_logo({filename, content_base64}) | The logo from the repository: PNG, JPEG, WebP or SVG, up to 2 MB, as base64, into the draft |
rendel_set_experience | Name, tone, instructions, guardrails, topics to decline, languages, welcome title and line, up to four suggestions, into the draft |
rendel_upsert_knowledge({items}) | Public URLs (Rendel fetches them) or texts written from the app's code and copy, by external_key; up to 25 items and 2 MB a call. {op: "archive", external_key} archives one |
rendel_declare_screens({screens, archive}) | The screens the code registers with registerRoute, with the file and deep link; shown as planned until a build proves them |
rendel_upsert_actions({items}) | The app's REST endpoints as HTTP actions, by external_key, up to 50 a call. auth: "user" sends the signed-in person's token (https only); one that needs a shared key is saved off |
rendel_status({wait_for?}) | What the server knows now: the app has called in, knowledge is indexed, screens still missing, the Go live checks. wait_for (app_ready or knowledge_ready) waits up to about 50 seconds for that flag |
rendel_run_smoke({latest?}) | Three to five questions from the configuration, each judged grounded or backed by an action; up to 2.5 minutes. latest: true returns the last run |
rendel_complete({summary, files_changed, human_todos}) | Finishes with a summary, the files changed and the to-dos. A first setup also publishes the drafts and goes live when its four checks pass. Ends the session |
rendel_fail({reason, step?}) | Stops with the reason and the step, shown on Overview. Ends the session |
On a live app (a sync) every write becomes a proposal in Sync review instead of a change.
Refusals
A refusal comes back as a tool result with isError: true and a fixed message, so the agent reads it and carries on or stops. Only a missing or expired sign-in is an HTTP 401. Nothing in a result is text Rendel read from elsewhere: rendel_get_context gives ids, titles, addresses and external_keys, never a crawled page.
| When | The result says |
|---|---|
| A write carries something that looks like a credential | Which field, and that keys are entered in the console |
| A value fails its schema | The field and what it expects |
| The session has ended or been stopped | That the session is closed; start again from Overview |
| The app is live and this is a setup | To use Sync with code |
Access
The agent signs in with OAuth 2.1: you approve it in your browser for one app, and the grant lasts until that setup ends, with access tokens that last an hour, refreshed only while the session is open. Stop the session (on Overview, or Settings → AI setup sessions) and the agent's access ends at its next call. Nothing is stored in your repository or your prompt. Clients find the server's details at:
https://rendel.ai/.well-known/oauth-protected-resource/api/mcphttps://rendel.ai/.well-known/oauth-authorization-server(PKCE with S256 only; dynamic client registration and client ID metadata documents)