Skip to main content

MCP Server

SpAItial hosts a remote Model Context Protocol (MCP) server so AI agents — Cursor, Claude, VS Code, Cline, and anything else that speaks MCP — can generate and manage 3D worlds directly, without you writing any API glue.

https://mcp.spaitial.ai/mcp

It's a stateless, streamable-HTTP server. Every tool maps 1:1 onto the Developer API, so an agent can prompt → generate → poll → download a splat or mesh entirely on its own.

Discovery

Agents that support MCP Server Cards can discover the hosted server from:

https://mcp.spaitial.ai/.well-known/mcp/server-card.json

The card advertises the streamable-HTTP endpoint, auth schemes, and supported MCP surfaces. A compatibility alias is also available at https://mcp.spaitial.ai/.well-known/mcp.json.

Install

Pick your agent below. Everywhere you see spt_live_YOUR_KEY, replace it with your real key. The server accepts the key as either X-Spaitial-Api-Key: <key> or Authorization: Bearer <key>.

Add spaitial MCP server to Cursor

Clicking the badge opens Cursor and pre-fills the server. After it's added, open Settings → MCP, edit the spaitial server, and replace the placeholder key with your own.

Tools

ToolMaps to
list_modelsGET /v1/models
create_worldPOST /v1/worlds — text / image URL / base64 / file_id / panorama_id, is_pano, output_format, visibility, webhook, idempotency
edit_panoramaPOST /v1/panoramas/edit — edit a completed API-created world/request, or iterate on a pano_..., with an optional reference image set
list_panoramasGET /v1/panoramas
get_panoramaGET /v1/panoramas/:id
get_edited_panorama_download_urlGET /v1/panoramas/:id/download (resolved signed URL)
get_world_statusGET /v1/worlds/requests/:id/status
get_worldGET /v1/worlds/requests/:id
list_world_requestsGET /v1/worlds/requests
get_splat_download_urlGET /v1/worlds/requests/:id/splat (resolved signed URL)
get_panorama_download_urlGET /v1/worlds/requests/:id/panorama (resolved signed URL)
update_worldPATCH /v1/worlds/requests/:id
cancel_worldPOST /v1/worlds/requests/:id/cancel
start_mesh_exportPOST /v1/worlds/requests/:id/exports/:type
get_mesh_exportGET /v1/worlds/requests/:id/exports/:type

Each tool returns the same JSON shapes documented in the API reference, including the standard error envelope.

Example prompts

Once installed, just ask your agent in natural language:

  • "Generate a Spaitial world of an empty cozy reading nook and give me the splat download URL when it's done."
  • "Edit world <world-id>: change the rug to yellow, then show me the edited panorama."
  • "Add this attached sofa to pano_..., then create a new world from the result."
  • "List my recent world generations and their statuses."
  • "Export a simplified collision mesh for request req_... and download it when ready."

The agent calls create_world, polls get_world_status, then get_splat_download_url / start_mesh_export — the same flow you'd script against the REST API, driven by the model.

For app-style edits, the agent calls edit_panorama, lets you inspect the returned pano_... with get_edited_panorama_download_url, optionally iterates by passing that pano_... back to edit_panorama, then calls create_world with panorama_id when you're satisfied.

Notes

  • Authentication is identical to the REST API — the same spt_live_ / spt_test_ keys and scopes apply per tool.
  • Generation time is ~5–10 minutes (Echo 2 - Standard); agents should poll get_world_status rather than block.
  • Panorama edits are synchronous and return a pano_... artifact. There is no aspect-ratio option; edited panoramas stay valid for world generation.
  • Downloads return short-lived signed URLs (~5 min); resolve them just before fetching.
  • Prefer scripting instead? See the LLM Skills page for a self-contained REST reference, or install the skill with npx skills add spaitial-dev/spaitial-api-skill.