lovision-mcp
Lovision MCP lets external agents create, understand, edit, preview, export, and hand off real Lovision native designs. Treat it as a governed design workflow interface, not raw canvas CRUD: sessions, target resolution, permissions, capability profiles, Blueprint, quality checks, receipts, and recovery actions are all part of the contract.
The Remote MCP server should be registered as lovision-remote. Its endpoint is:
https://mcp.lovision.ai/
Lovision MCP is Early Access. If OAuth does not start after connecting the server, the user may need Lovision to enable MCP for their account and provide the current authorization method.
First Call: lovision.session.init
On any new conversation or after SESSION_NOT_FOUND, call lovision.session.init before using other Lovision tools.
Pass:
runtime: use remote-web when connected through lovision-remote / https://mcp.lovision.ai; use desktop-local only when connected through lovision-desktop / Lovision Desktop Local MCP; use internal only for trusted internal environments.
agentCredential: normally omit this. Remote MCP OAuth clients must rely on the MCP transport Authorization bearer from login/re-auth. Desktop Local MCP normally does not require Oneauth login; only pass a local dev credential when a local bridge explicitly documents one.
target: any known projectId, documentId, pageId, or mode.
Do not guess targets. If the user did not provide a clear project/document/page, use project tools to resolve the target or ask a short clarification before writing.
Canonical Workflow
For design creation or meaningful edits:
lovision.session.init
-> target resolution / lovision.projects.open / lovision.document.create
-> lovision.document.getContext + lovision.capabilities.list
-> lovision.knowledge.* / fonts / tokens / components / media as needed
-> lovision.blueprint.validate
-> lovision.blueprint.apply or capability-gated advanced tools
-> lovision.quality.check + lovision.preview.capture
-> targeted repair if needed
-> lovision.export or lovision.workflow.submit if requested
-> lovision.session.finishWork
For read-only requests, stop after context, lookup, preview, quality, export, or project listing as appropriate, then call finishWork unless the user explicitly wants the session left open.
Tool Routing
Session and lifecycle:
lovision.session.init
lovision.session.status
lovision.capabilities.list
lovision.production.status
lovision.session.finishWork
lovision.session.abortWork
Project operations:
- Projects:
lovision.projects.list, get, create, update, duplicate, move, delete, restore, export, open
- Folders:
lovision.folders.list, create, update, delete
- User metadata:
lovision.projectFavorites.set, lovision.projectRecents.list
- Sharing:
lovision.projectSharing.get, updateLinkAccess, invite, revoke, updateRole
Document, pages, viewport, and lookup:
lovision.document.create
lovision.document.getContext
lovision.lookup
- Pages:
lovision.pages.list, switch, create, rename, duplicate, delete, getBackground, setBackground
- Selection and viewport:
lovision.selection.set, lovision.viewport.fit, lovision.viewport.focus
- Layout guides:
lovision.layoutGuides.getFrame, setFrame, addFrameGuide
Design creation and editing:
- Blueprint:
lovision.blueprint.validate, lovision.blueprint.apply
- Streaming design:
lovision.design.stream.start, applyChunk, finalize, abort
- Advanced node editing:
lovision.nodes.apply
- Text ranges:
lovision.textStyles.applyRange
- Components:
lovision.components.list, lovision.components.get, lovision.componentSets.create
- Schema lookup:
lovision.schema.get
Design system data:
- Fonts:
lovision.fonts.summary, list, resolve, warm
- Tokens:
lovision.tokens.summary, resolve, propose, commitProposal
- Knowledge:
lovision.knowledge.list, lovision.knowledge.get
Assets, media, and local files:
- Media acquisition:
lovision.media.acquire
- Binary resources:
lovision.binary.create, read, dispose
- Image insertion:
lovision.assets.insertImage
- Workflow input resolution:
lovision.assets.resolveWorkflowInput
- Local files:
lovision.localFiles.requestAccess, listGrants, read, revoke
Quality and delivery:
lovision.quality.check
lovision.preview.capture
lovision.export
lovision.workflow.submit
Hard Rules
- Use Host Facade backed writes. Never invent payloads that depend on engine stores, Liveblocks internals, React state, renderer internals, raw patches, or
extraFields.data.config.
- Prefer Blueprint for complex design work. Use
lovision.blueprint.validate and lovision.blueprint.apply for structured creation and patching.
- Use canonical public payload fields. Text should use
text.content, text.layout.mode, text.baseStyle, and text.styleRanges. Shapes/vectors/images should use fields such as shape, shapeParams, cornerRadius, vectorPath, and imageRef.
- Respect capability profile. Discovery is not authorization. Trust
session.init, document.getContext, and capabilities.list over guesses. Invocation-time enforcement is expected.
- Write safely. Include
expectedVersion and idempotencyKey when a write tool accepts them.
- Verify user-visible changes. After meaningful writes, run
quality.check and preview.capture; patch actionable findings when practical.
- Do not roll back committed mutations because delivery failed. Preview, export, workflow, or asset-staging failures should produce a safe stopping point and resume action.
- Preserve media provenance. Use Lovision-generated or product media first, licensed fallback second, explicit placeholder last. Keep unresolved media findings visible.
- Resolve fonts and tokens before relying on them. Use
lovision.fonts.* and lovision.tokens.*.
- Do not read arbitrary local paths. Desktop Local MCP file access must go through
lovision.localFiles.* grants. Remote MCP cannot read local files.
- Finish non-trivial sessions. Use
lovision.session.finishWork with changed nodes, artifacts, unresolved findings, and resume action. Use abortWork only for cancellation or unrecoverable setup failure.
Capability And Error Handling
Maturity tiers:
unknown
claimed
verified
trusted-internal
Runtime values:
remote-web
desktop-local
internal
Common structured errors:
PERMISSION_DENIED: explain the missing permission or ask the user to re-authorize.
CAPABILITY_NOT_AVAILABLE: pick a supported fallback or report the limitation.
REQUIRES_AGENT_MATURITY: do not retry blindly; explain that this agent/client is not trusted enough for that tool.
APPROVAL_REQUIRED: surface the approval request and wait for the user/client.
RATE_LIMITED or QUOTA_EXCEEDED: stop at a safe point and include a resume action.
SESSION_NOT_FOUND: call lovision.session.init again.
Media Ladder
When the design needs media:
- Use Lovision generation or an existing Lovision product asset.
- Use a licensed external fallback only if generation/product asset is unavailable or unsuitable.
- Use an explicit placeholder only as a last resort, and include a quality finding or handoff note.
Supported binary image MIME types currently include image/png, image/jpeg, image/webp, and image/svg+xml. lovision.binary.create is capped at 10 MB.
Setup Notes
Remote MCP config:
{
"mcpServers": {
"lovision-remote": {
"type": "streamable-http",
"url": "https://mcp.lovision.ai/"
}
}
}
Claude Code manual setup:
claude mcp add --transport http lovision-remote https://mcp.lovision.ai/
Codex manual setup:
codex mcp add lovision-remote --url https://mcp.lovision.ai/
codex mcp login lovision-remote
Desktop Local MCP should be a separate server, typically named lovision-desktop. It uses the loopback URL and bearer secret shown in Lovision Desktop Settings > MCP. Do not hand-write a Desktop config without the copied Authorization header.
Claude / Cursor Desktop Local MCP config shape:
{
"mcpServers": {
"lovision-desktop": {
"type": "http",
"url": "http://127.0.0.1:3846/mcp",
"headers": {
"Authorization": "Bearer <copied-from-lovision-desktop>"
}
}
}
}
Codex Desktop Local MCP config shape:
[mcp_servers.lovision-desktop]
type = "http"
url = "http://127.0.0.1:3846/mcp"
[mcp_servers.lovision-desktop.http_headers]
Authorization = "Bearer <copied-from-lovision-desktop>"
Always copy the actual Desktop config because the port and secret are local to the user's machine.
1---2name: lovision-mcp3description: READ THIS BEFORE calling any Lovision MCP tool. Use whenever the Lovision MCP server is connected or the user mentions Lovision, lovision.ai, mcp.lovision.ai, Lovision Desktop Local MCP, a Lovision project/document/canvas, Blueprint design generation, project operations, quality checks, preview/export, or asks an external agent to create, inspect, modify, or hand off native Lovision design work. Always initialize with lovision.session.init first, resolve the target before writing, read document context and capabilities before edits, prefer Blueprint for structured design work, run quality and preview after meaningful writes, and finish with lovision.session.finishWork.4---56# lovision-mcp78Lovision MCP lets external agents create, understand, edit, preview, export, and hand off real Lovision native designs. Treat it as a governed design workflow interface, not raw canvas CRUD: sessions, target resolution, permissions, capability profiles, Blueprint, quality checks, receipts, and recovery actions are all part of the contract.910The Remote MCP server should be registered as `lovision-remote`. Its endpoint is:1112```text13https://mcp.lovision.ai/14```1516Lovision MCP is Early Access. If OAuth does not start after connecting the server, the user may need Lovision to enable MCP for their account and provide the current authorization method.1718## First Call: `lovision.session.init`1920On any new conversation or after `SESSION_NOT_FOUND`, call `lovision.session.init` before using other Lovision tools.2122Pass:2324- `runtime`: use `remote-web` when connected through `lovision-remote` / `https://mcp.lovision.ai`; use `desktop-local` only when connected through `lovision-desktop` / Lovision Desktop Local MCP; use `internal` only for trusted internal environments.25- `agentCredential`: normally omit this. Remote MCP OAuth clients must rely on the MCP transport `Authorization` bearer from login/re-auth. Desktop Local MCP normally does not require Oneauth login; only pass a local dev credential when a local bridge explicitly documents one.26- `target`: any known `projectId`, `documentId`, `pageId`, or `mode`.2728Do not guess targets. If the user did not provide a clear project/document/page, use project tools to resolve the target or ask a short clarification before writing.2930## Canonical Workflow3132For design creation or meaningful edits:3334```text35lovision.session.init36 -> target resolution / lovision.projects.open / lovision.document.create37 -> lovision.document.getContext + lovision.capabilities.list38 -> lovision.knowledge.* / fonts / tokens / components / media as needed39 -> lovision.blueprint.validate40 -> lovision.blueprint.apply or capability-gated advanced tools41 -> lovision.quality.check + lovision.preview.capture42 -> targeted repair if needed43 -> lovision.export or lovision.workflow.submit if requested44 -> lovision.session.finishWork45```4647For read-only requests, stop after context, lookup, preview, quality, export, or project listing as appropriate, then call `finishWork` unless the user explicitly wants the session left open.4849## Tool Routing5051Session and lifecycle:5253- `lovision.session.init`54- `lovision.session.status`55- `lovision.capabilities.list`56- `lovision.production.status`57- `lovision.session.finishWork`58- `lovision.session.abortWork`5960Project operations:6162- Projects: `lovision.projects.list`, `get`, `create`, `update`, `duplicate`, `move`, `delete`, `restore`, `export`, `open`63- Folders: `lovision.folders.list`, `create`, `update`, `delete`64- User metadata: `lovision.projectFavorites.set`, `lovision.projectRecents.list`65- Sharing: `lovision.projectSharing.get`, `updateLinkAccess`, `invite`, `revoke`, `updateRole`6667Document, pages, viewport, and lookup:6869- `lovision.document.create`70- `lovision.document.getContext`71- `lovision.lookup`72- Pages: `lovision.pages.list`, `switch`, `create`, `rename`, `duplicate`, `delete`, `getBackground`, `setBackground`73- Selection and viewport: `lovision.selection.set`, `lovision.viewport.fit`, `lovision.viewport.focus`74- Layout guides: `lovision.layoutGuides.getFrame`, `setFrame`, `addFrameGuide`7576Design creation and editing:7778- Blueprint: `lovision.blueprint.validate`, `lovision.blueprint.apply`79- Streaming design: `lovision.design.stream.start`, `applyChunk`, `finalize`, `abort`80- Advanced node editing: `lovision.nodes.apply`81- Text ranges: `lovision.textStyles.applyRange`82- Components: `lovision.components.list`, `lovision.components.get`, `lovision.componentSets.create`83- Schema lookup: `lovision.schema.get`8485Design system data:8687- Fonts: `lovision.fonts.summary`, `list`, `resolve`, `warm`88- Tokens: `lovision.tokens.summary`, `resolve`, `propose`, `commitProposal`89- Knowledge: `lovision.knowledge.list`, `lovision.knowledge.get`9091Assets, media, and local files:9293- Media acquisition: `lovision.media.acquire`94- Binary resources: `lovision.binary.create`, `read`, `dispose`95- Image insertion: `lovision.assets.insertImage`96- Workflow input resolution: `lovision.assets.resolveWorkflowInput`97- Local files: `lovision.localFiles.requestAccess`, `listGrants`, `read`, `revoke`9899Quality and delivery:100101- `lovision.quality.check`102- `lovision.preview.capture`103- `lovision.export`104- `lovision.workflow.submit`105106## Hard Rules1071081. **Use Host Facade backed writes.** Never invent payloads that depend on engine stores, Liveblocks internals, React state, renderer internals, raw patches, or `extraFields.data.config`.1092. **Prefer Blueprint for complex design work.** Use `lovision.blueprint.validate` and `lovision.blueprint.apply` for structured creation and patching.1103. **Use canonical public payload fields.** Text should use `text.content`, `text.layout.mode`, `text.baseStyle`, and `text.styleRanges`. Shapes/vectors/images should use fields such as `shape`, `shapeParams`, `cornerRadius`, `vectorPath`, and `imageRef`.1114. **Respect capability profile.** Discovery is not authorization. Trust `session.init`, `document.getContext`, and `capabilities.list` over guesses. Invocation-time enforcement is expected.1125. **Write safely.** Include `expectedVersion` and `idempotencyKey` when a write tool accepts them.1136. **Verify user-visible changes.** After meaningful writes, run `quality.check` and `preview.capture`; patch actionable findings when practical.1147. **Do not roll back committed mutations because delivery failed.** Preview, export, workflow, or asset-staging failures should produce a safe stopping point and resume action.1158. **Preserve media provenance.** Use Lovision-generated or product media first, licensed fallback second, explicit placeholder last. Keep unresolved media findings visible.1169. **Resolve fonts and tokens before relying on them.** Use `lovision.fonts.*` and `lovision.tokens.*`.11710. **Do not read arbitrary local paths.** Desktop Local MCP file access must go through `lovision.localFiles.*` grants. Remote MCP cannot read local files.11811. **Finish non-trivial sessions.** Use `lovision.session.finishWork` with changed nodes, artifacts, unresolved findings, and resume action. Use `abortWork` only for cancellation or unrecoverable setup failure.119120## Capability And Error Handling121122Maturity tiers:123124- `unknown`125- `claimed`126- `verified`127- `trusted-internal`128129Runtime values:130131- `remote-web`132- `desktop-local`133- `internal`134135Common structured errors:136137- `PERMISSION_DENIED`: explain the missing permission or ask the user to re-authorize.138- `CAPABILITY_NOT_AVAILABLE`: pick a supported fallback or report the limitation.139- `REQUIRES_AGENT_MATURITY`: do not retry blindly; explain that this agent/client is not trusted enough for that tool.140- `APPROVAL_REQUIRED`: surface the approval request and wait for the user/client.141- `RATE_LIMITED` or `QUOTA_EXCEEDED`: stop at a safe point and include a resume action.142- `SESSION_NOT_FOUND`: call `lovision.session.init` again.143144## Media Ladder145146When the design needs media:1471481. Use Lovision generation or an existing Lovision product asset.1492. Use a licensed external fallback only if generation/product asset is unavailable or unsuitable.1503. Use an explicit placeholder only as a last resort, and include a quality finding or handoff note.151152Supported binary image MIME types currently include `image/png`, `image/jpeg`, `image/webp`, and `image/svg+xml`. `lovision.binary.create` is capped at 10 MB.153154## Setup Notes155156Remote MCP config:157158```json159{160 "mcpServers": {161 "lovision-remote": {162 "type": "streamable-http",163 "url": "https://mcp.lovision.ai/"164 }165 }166}167```168169Claude Code manual setup:170171```bash172claude mcp add --transport http lovision-remote https://mcp.lovision.ai/173```174175Codex manual setup:176177```bash178codex mcp add lovision-remote --url https://mcp.lovision.ai/179codex mcp login lovision-remote180```181182Desktop Local MCP should be a separate server, typically named `lovision-desktop`. It uses the loopback URL and bearer secret shown in Lovision Desktop `Settings > MCP`. Do not hand-write a Desktop config without the copied `Authorization` header.183184Claude / Cursor Desktop Local MCP config shape:185186```json187{188 "mcpServers": {189 "lovision-desktop": {190 "type": "http",191 "url": "http://127.0.0.1:3846/mcp",192 "headers": {193 "Authorization": "Bearer <copied-from-lovision-desktop>"194 }195 }196 }197}198```199200Codex Desktop Local MCP config shape:201202```toml203[mcp_servers.lovision-desktop]204type = "http"205url = "http://127.0.0.1:3846/mcp"206207[mcp_servers.lovision-desktop.http_headers]208Authorization = "Bearer <copied-from-lovision-desktop>"209```210211Always copy the actual Desktop config because the port and secret are local to the user's machine.