Orbix 360º

Connect AI assistants to Orbix360

Orbix360 has an MCP server: the open standard AI assistants such as Claude, ChatGPT and Cursor use to work with other apps. Connect one, and you can ask it in plain words to build and edit your 360° tours.

Server address

https://orbix360.com/mcp

What your assistant can do

  • Create, rename and delete tours, and make them public or private.

  • Add 360° photos from a web address or from your computer, and check when they are ready.

  • Rename and reorder the photos in a tour, and choose the view each photo opens on.

  • Look at a photo, so it can find doorways and objects before it places anything.

  • Add scenes made with your own AI image generator, such as a staging concept or a "what it could look like" view.

  • Add navigation hotspots between photos, info hotspots and flat images.

  • Get the links to view, share and embed a tour.

It cannot buy anything, start or cancel a subscription, or change your account settings. Your plan's limits apply exactly as in the web app: see Pricing.

Connect your assistant

Most assistants sign in through your browser: you approve the connection on an Orbix360 page, and nothing secret is copied anywhere.

Claude (claude.ai)

  1. Open Settings → Connectors and choose Add custom connector.

  2. Name it Orbix360 and paste the server address.

  3. Choose Connect. A browser window opens on Orbix360: sign in if asked, check what the app may do and choose Allow.

Claude Desktop

  1. A connector you add on claude.ai is available in Claude Desktop too.

  2. Or, in Claude Desktop, open Settings → Connectors, choose Add custom connector and paste the server address.

  3. Choose Connect. A browser window opens on Orbix360: sign in if asked, check what the app may do and choose Allow.

Claude Code

  1. Run the command below in a terminal.

  2. In Claude Code, type /mcp, pick orbix360 and choose Authenticate.

  3. A browser window opens on Orbix360: sign in if asked, check what the app may do and choose Allow.

Run in a terminal:

claude mcp add --transport http orbix360 https://orbix360.com/mcp

Cursor

  1. Add the configuration below to ~/.cursor/mcp.json (or the project's .cursor/mcp.json).

  2. Open Cursor Settings → MCP and choose Connect next to orbix360.

  3. A browser window opens on Orbix360: sign in if asked, check what the app may do and choose Allow.

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "orbix360": {
      "url": "https://orbix360.com/mcp"
    }
  }
}

ChatGPT

  1. Turn on developer mode: Settings → Apps & Connectors → Advanced settings.

  2. Choose Create, name the connector Orbix360, paste the server address and pick OAuth as the authentication.

  3. A browser window opens on Orbix360: sign in if asked, check what the app may do and choose Allow.

Other assistants

  1. Look in the assistant's settings for MCP servers, connectors, custom apps or integrations, and an option to add a remote server by its address (it may be called HTTP or Streamable HTTP). There is nothing to install.

  2. Paste the server address. If it asks how to sign in, choose OAuth (or "sign in" / "authenticate") and leave any client ID and secret empty: Orbix360 registers the assistant by itself. If it can only send a fixed header or API key, use a personal access token instead (see Personal access tokens below).

  3. A browser window opens on Orbix360: sign in if asked, check what the app may do and choose Allow.

Use a personal access token instead

Scripts and assistants that cannot sign in through the browser can use a personal access token. Create one on Account → AI Tools / MCP, replace <YOUR_TOKEN> below with it, and treat it like a password: it is shown only once. Go to Account → AI Tools / MCP

Claude Code. Run in a terminal:

claude mcp add --transport http orbix360 https://orbix360.com/mcp --header "Authorization: Bearer <YOUR_TOKEN>"

Cursor. Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "orbix360": {
      "url": "https://orbix360.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Other clients. Point any MCP client that takes a request header (Streamable HTTP) at the address, with this header:

URL: https://orbix360.com/mcp
Header: Authorization: Bearer <YOUR_TOKEN>

Steps checked in October 2026; menus in these apps change from time to time.

Limits

  • 60 tool calls per minute and 300 changes per hour for each account.

  • 20 rendered views per minute and 300 per hour.

  • Every tool answers within about 45 seconds. Longer work, such as processing a photo, returns at once with a status the assistant checks again.

Your plan's limits on tours, photos per tour and file size apply as in the web app; making a tour private or embedding it needs a Pro account or a Premium Tour.

Positions in a photo

Assistants name places in a photo with two angles in degrees, measured on the 360° photo itself:

  • yaw goes left to right: 0 is the centre of the photo and it grows to the right, up to 180 at the right edge (which is also the left edge, -180).

  • pitch goes up and down: 0 is the horizon, +90 straight up and -90 straight down.

yaw -180yaw -90yaw 0yaw 90yaw 180+90+450-45-90centre of the photo (yaw 0, pitch 0)pitch +90: straight up

They do not depend on the direction a photo opens on, so a hotspot stays put when you change the opening view. The rendered views an assistant asks for carry labelled 30° gridlines, so it can read a place's yaw and pitch off the picture.

AI-generated scenes

Your assistant can add a 360° scene made with your own AI image generator: ChatGPT or Gemini image generation, an image-generation MCP server, or your own image API key. Orbix360 never generates the image and never calls an AI model for it, so it costs nothing extra and works on every plan, under your plan's usual photo limits.

How the image gets to Orbix360:

  • An assistant that can run commands (Claude Code, Cursor): it saves the image and uploads it with the command create_photo_upload gives it.

  • A chat assistant with an image tool that answers a web address: add_photo_from_url.

  • A chat app that generates the image in the conversation (ChatGPT): download the image, then open the upload link the assistant gives you, signed in to Orbix360, and drop the file there. The link works once, for 2 hours.

Either way the assistant sends the image with generated: true. Most generators do not make the 2:1 equirectangular shape a 360° photo needs, and their left and right edges do not quite meet. Orbix360 accepts any shape from 1.74:1 to 2.40:1, stretches it to 2:1 and blends the edges so no seam shows. A generator that makes true 2:1 equirectangular panoramas, such as Blockade Labs Skybox, needs no stretch; only its seam is smoothed. Other shapes are refused. PNG and WebP are accepted as well as JPEG.

The add_generated_scene prompt below walks an assistant through it.

Things to ask

Make a tour called "Lake House" from these 6 listing photos, link the rooms through their doorways and add a note on the wood stove in the living room.

In my "Downtown Loft" tour, put the photos in walking order from the entrance and give each one a title from what it shows.

Add an info hotspot on the fireplace in the second photo of "Lake House" that says "Restored 1920s mantel".

Make "Lake House" open on the view of the lake, then give me the share link and the embed code.

Look at every photo in "Office Fit-out" and tell me which rooms are not linked to each other yet.

One editor at a time

Don't edit the same tour in the Orbix360 web editor while an assistant is working on it. The editor's Save stores the tour as it was when you opened it, so it would overwrite the assistant's changes.

Stop an assistant

Revoke its access at any time: disconnect the app under Connected apps, or revoke its personal access token, both on Account → AI Tools / MCP. It loses access on its next request.

Tools

Every tool the server offers, generated from the server's own definitions. Assistants pick the tools themselves; this list is for people building or checking an agent.

Who am I

whoami · Who am I

Reads only
Needs read access (tours:read)

Returns the Orbix360 account this connection acts for: user id, display name, email, plan, and the permissions the token carries. Call it to check the connection works.

No inputs.

Example: whoami {}

Account and tours

get_account · Account and plan limits

Reads only
Needs read access (tours:read)

Returns the plan this account is on, whether it may make tours private and use its own branding (no watermark, embedding), how many multi-image and single-image tours it has and may still create (including any bonus and its cap), the photo-count and file-size caps for one tour (null = no cap), and the Pricing and Billing page addresses. Call it before creating a tour or adding photos.

No inputs.

Example: get_account {}

list_tours · List my tours

Reads only
Needs read access (tours:read)

Lists this account's tours, newest created first, a page at a time. Each tour has its id, name, kind (single- or multi-image), scene count, visibility, last-changed time and a thumbnail. Pass nameContains to search by name (case-insensitive) and the previous answer's nextCursor as cursor for the next page; nextCursor is null on the last page. A filtered search reads a bounded number of tours per call: when scanLimited is true, continue with nextCursor.

limit · integer · optional
Tours per page, 1–50 (default 20). (at least 1, at most 50)
cursor · string · optional
nextCursor from the previous answer of the same search. (at least 1 character, up to 2048 characters)
nameContains · string · optional
Only tours whose name contains this text (case-insensitive). (up to 200 characters)
InputTypeRequiredWhat it is
limitintegernoTours per page, 1–50 (default 20). (at least 1, at most 50)
cursorstringnonextCursor from the previous answer of the same search. (at least 1 character, up to 2048 characters)
nameContainsstringnoOnly tours whose name contains this text (case-insensitive). (up to 200 characters)

Example: list_tours { "nameContains": "lake house" }

get_tour · Read a tour

Reads only
Needs read access (tours:read)

Returns one of your tours as the viewer shows it: name, visibility, autorotate, the premium state, stateRevision (quote it when you edit the tour), the scenes in order (title, whether the title is only a "Photo N" placeholder, photo type, thumbnail, processing status ready / processing / missing / unknown, heading = the yaw the scene opens on, and generated = sent as AI-generated), and every navigation hotspot, info hotspot and flat image with its position as yaw / pitch in degrees on the scene's panorama: yaw 0 = the photo's centre column, positive to the right, in (-180, 180]; pitch 0 = the horizon, +90 = straight up.

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)

Example: get_tour { "tourId": "…" }

create_tour · Create tour

Makes changes
Needs read and change access (tours:write)

Creates a new 360° virtual tour in the account. kind "multi" holds several photos linked by navigation hotspots; "single" holds one photo. Visibility defaults to public; private needs a Pro plan. Free accounts can create a limited number of tours. Returns the tour id, links to view and edit it, and what to do next.

Counts toward the plan's tour allowance.

name · string · required
The tour name, up to 200 characters. (at least 1 character, up to 200 characters)
kind · one of: multi, single · required
"multi" for a multi-image tour, "single" for a single-image tour.
visibility · one of: public, private · optional
Defaults to "public". "private" needs a Pro plan.
InputTypeRequiredWhat it is
namestringyesThe tour name, up to 200 characters. (at least 1 character, up to 200 characters)
kindone of: multi, singleyes"multi" for a multi-image tour, "single" for a single-image tour.
visibilityone of: public, privatenoDefaults to "public". "private" needs a Pro plan.

Example: create_tour { "name": "Lake House", "kind": "multi" }

update_tour · Update tour

Makes changes
Needs read and change access (tours:write)

Changes a tour's name, visibility and/or auto-rotation. Give at least one of them. All the given settings change together, or none do when one is refused. Making a tour private needs a Pro plan or a Premium Tour on that tour. Settings the tour already has are left as they are, so repeating a call changes nothing.

Private tours need a Pro account or a Premium Tour.

tourId · string · required
The tour id. (a fixed format)
name · string · optional
A new name, up to 200 characters. (at least 1 character, up to 200 characters)
visibility · one of: public, private · optional
"private" needs a Pro plan or a Premium Tour on this tour.
autorotate · boolean · optional
Whether the tour turns slowly on its own when opened.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id. (a fixed format)
namestringnoA new name, up to 200 characters. (at least 1 character, up to 200 characters)
visibilityone of: public, privateno"private" needs a Pro plan or a Premium Tour on this tour.
autorotatebooleannoWhether the tour turns slowly on its own when opened.

Example: update_tour { "tourId": "…", "visibility": "private" }

delete_tour · Delete tour

Makes changes
Cannot be undone
Needs read and change access (tours:write)

Permanently deletes a tour and its photos. This cannot be undone. confirmName must be the tour's exact current name, as the owner confirmed it. A Premium Tour subscription on the tour stops renewing; the answer says so.

Cannot be undone. Needs the tour's exact current name as confirmName, so confirm with the owner first.

tourId · string · required
The tour id. (a fixed format)
confirmName · string · required
The tour's exact current name, confirmed with the owner.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id. (a fixed format)
confirmNamestringyesThe tour's exact current name, confirmed with the owner.

Example: delete_tour { "tourId": "…", "confirmName": "Lake House" }

Photos

add_photo_from_url · Add a photo from a URL

Makes changes
Needs read and change access (tours:write)

Add a 360° photo to one of the user's tours from a public https URL. The server downloads the image (JPEG, PNG or WebP), checks it, and adds it as the last scene of the tour. 360_mono photos must be equirectangular: twice as wide as tall (2:1). Use 360_pano for a wider panorama. For an image made by an AI image generator (yours or the user's), set generated: true: a 360_mono image from 1.74:1 to 2.40:1 (16:9 to 2.4:1) is then stretched to 2:1 and its left and right edges blended so no seam shows. Returns status "processing": call get_photo_status with the photo id until it is "ready" before placing hotspots on it. For a file on this computer, use create_photo_upload instead.

With generated: true, an AI-generated image from 1.74:1 to 2.40:1 is stretched to 2:1 and its seam blended.

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
url · string · required
A public https URL of the image itself (not a web page showing it). (up to 2048 characters)
title · string · optional
The scene title, e.g. "Kitchen". (at least 1 character, up to 200 characters)
photoType · one of: 360_mono, 360_pano · required
360_mono for an equirectangular 2:1 photo; 360_pano for a wider panorama.
generated · boolean · optional
Set true for an image made by an AI image generator. A 360_mono image from 1.74:1 to 2.40:1 is then stretched to 2:1 and its seam blended; without it, a 360_mono image must already be 2:1.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)
urlstringyesA public https URL of the image itself (not a web page showing it). (up to 2048 characters)
titlestringnoThe scene title, e.g. "Kitchen". (at least 1 character, up to 200 characters)
photoTypeone of: 360_mono, 360_panoyes360_mono for an equirectangular 2:1 photo; 360_pano for a wider panorama.
generatedbooleannoSet true for an image made by an AI image generator. A 360_mono image from 1.74:1 to 2.40:1 is then stretched to 2:1 and its seam blended; without it, a 360_mono image must already be 2:1.

Example: add_photo_from_url { "tourId": "…", "url": "https://example.com/living-room.jpg", "photoType": "360_mono" }

create_photo_upload · Upload a photo from this computer or the browser

Makes changes
Needs read and change access (tours:write)

Prepare an upload of a photo file into one of the user's tours. It works in every client, including web and chat apps that cannot run commands. In a chat or web app, and whenever the user attached the photos to the conversation: you cannot send the file yourself and do not need to. Call this tool once per photo, give the user each uploadPage.url, and ask them to open it in a browser signed in to Orbix360 and drop that photo there (each link takes one file, once, within 2 hours). Do not ask the user to run commands. Agents that can run shell commands on the computer holding the file: run the returned command exactly as given, from the folder the filename is relative to. Either way, then call get_photo_status with the photo id until it is "ready". The file must be a JPEG; a 360_mono photo must be equirectangular (2:1). Size, format and shape are checked after the upload: a file that fails is removed and get_photo_status says why. The upload address and the page link work for this one photo only. If they expire before the file is sent, call create_photo_upload again with the same photoId for new ones (nothing new is added to the tour). For an image on the web, use add_photo_from_url instead. For an image made by an AI image generator, set generated: true: the file may then also be a PNG or WebP, and a 360_mono image from 1.74:1 to 2.40:1 (16:9 to 2.4:1) is stretched to 2:1 with its left and right edges blended.

Works in every client: answers an uploadPage link (signed-in owner, 2 hours, one file) that chat and web apps hand to the user, and an upload command for agents that can run shell commands.

With generated: true the file may also be a PNG or WebP; pass photoId to get a new command and link for a photo still waiting for its file.

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
filename · string · required
The .jpg / .jpeg file (or .png / .webp with generated: true). In a chat or web app, its name as the user attached it or will drop it, e.g. R0010027.jpg. For an agent with a shell, its local path, as the upload command should name it. (at least 1 character, up to 255 characters)
photoType · one of: 360_mono, 360_pano · optional
360_mono for an equirectangular 2:1 photo; 360_pano for a wider panorama. Required unless photoId is given.
title · string · optional
The scene title, e.g. "Living room". (at least 1 character, up to 200 characters)
generated · boolean · optional
Set true for an image made by an AI image generator: PNG / WebP are accepted, and a 360_mono image from 1.74:1 to 2.40:1 is stretched to 2:1 and its seam blended.
photoId · string · optional
To get a new command and page link for a photo that is still waiting for its file (e.g. after the link expired). Returns the same photo id; nothing new is added to the tour. (a fixed format)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)
filenamestringyesThe .jpg / .jpeg file (or .png / .webp with generated: true). In a chat or web app, its name as the user attached it or will drop it, e.g. R0010027.jpg. For an agent with a shell, its local path, as the upload command should name it. (at least 1 character, up to 255 characters)
photoTypeone of: 360_mono, 360_panono360_mono for an equirectangular 2:1 photo; 360_pano for a wider panorama. Required unless photoId is given.
titlestringnoThe scene title, e.g. "Living room". (at least 1 character, up to 200 characters)
generatedbooleannoSet true for an image made by an AI image generator: PNG / WebP are accepted, and a 360_mono image from 1.74:1 to 2.40:1 is stretched to 2:1 and its seam blended.
photoIdstringnoTo get a new command and page link for a photo that is still waiting for its file (e.g. after the link expired). Returns the same photo id; nothing new is added to the tour. (a fixed format)

Example: create_photo_upload { "tourId": "…", "filename": "kitchen.jpg", "photoType": "360_mono" }

get_photo_status · Check photo status

Reads only
Needs read access (tours:read)

Check whether photos added with add_photo_from_url or create_photo_upload are ready. Each photo is pending_upload (run its upload command), processing (call again in a few seconds), ready, failed (with a reason; the photo has been removed from the tour), or not_found. generated says whether the photo was sent as AI-generated. One call waits up to about 10 seconds for photos that are still processing. Keep calling until every photo is ready or failed (allSettled is true).

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
photoIds · list of string · required
Up to 20 photo ids returned by add_photo_from_url or create_photo_upload. (at least 1 item, up to 20 items)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)
photoIdslist of stringyesUp to 20 photo ids returned by add_photo_from_url or create_photo_upload. (at least 1 item, up to 20 items)

Example: get_photo_status { "tourId": "…", "photoIds": ["…"] }

Scenes

update_scene · Rename a scene

Makes changes
Needs read and change access (tours:write)

Sets the title of one photo (scene) in a tour, as Organize Photos does in the Orbix360 web editor. Get the tour id and scene ids from get_tour. The title is trimmed and may be up to 200 characters. Returns the tour's scenes in order afterwards.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
sceneId · string or integer · required
The scene (photo) id, as get_tour lists it.
title · string · required
The new scene title.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
sceneIdstring or integeryesThe scene (photo) id, as get_tour lists it.
titlestringyesThe new scene title.

Example: update_scene { "tourId": "…", "sceneId": "…", "title": "Kitchen" }

reorder_scenes · Reorder scenes

Makes changes
Needs read and change access (tours:write)

Sets the order of a multi-image tour's photos (scenes), as Organize Photos does in the Orbix360 web editor. `order` must list every scene id from get_tour exactly once, first scene first. A photo still shown under a position placeholder such as "Photo 3" keeps that title. Returns the scenes in the new order.

Every scene id exactly once.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
order · list of string or integer · required
Every scene id of the tour exactly once, in the new order. (at least 1 item, up to 500 items)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
orderlist of string or integeryesEvery scene id of the tour exactly once, in the new order. (at least 1 item, up to 500 items)

Example: reorder_scenes { "tourId": "…", "order": ["…", "…", "…"] }

set_scene_heading · Set the direction a scene opens on

Makes changes
Needs read and change access (tours:write)

Sets the direction a visitor first faces when a scene opens, as Change Orientation does in the Orbix360 web editor, and regenerates the scene's thumbnail from the photo looking that way. yaw is in degrees on the scene's photo (0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180]), the same coordinates render_view draws: find the place with render_view and pass its yaw. pitch (default 0) only tilts the thumbnail; every scene opens level with the horizon. The tour's first scene's thumbnail is the tour's card image and share image. The photo must be ready (see get_photo_status). Look at the result with render_view centred on the heading if needed.

Also regenerates the scene's thumbnail; the first scene's is the tour's card.

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
sceneId · string or integer · required
The scene (photo) id, as get_tour lists it.
yaw · number · required
The direction to open on, degrees; 0 = the photo's centre column, positive to the right. Wrapped into (-180, 180].
pitch · number · optional
Tilts the thumbnail only, degrees; 0 = horizon, +90 = straight up. Not stored. Default 0. (at least -90, at most 90)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)
sceneIdstring or integeryesThe scene (photo) id, as get_tour lists it.
yawnumberyesThe direction to open on, degrees; 0 = the photo's centre column, positive to the right. Wrapped into (-180, 180].
pitchnumbernoTilts the thumbnail only, degrees; 0 = horizon, +90 = straight up. Not stored. Default 0. (at least -90, at most 90)

Example: set_scene_heading { "tourId": "…", "sceneId": "…", "yaw": 40 }

delete_scene · Delete a scene

Makes changes
Cannot be undone
Needs read and change access (tours:write)

Permanently deletes one photo (scene) from a multi-image tour, with its image files and every navigation hotspot that leads to it. This cannot be undone. A tour always keeps at least one photo. Get the tour id and scene ids from get_tour. Returns the remaining scenes in order.

Cannot be undone; a tour always keeps one photo.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
sceneId · string or integer · required
The scene (photo) id, as get_tour lists it.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
sceneIdstring or integeryesThe scene (photo) id, as get_tour lists it.

Example: delete_scene { "tourId": "…", "sceneId": "…" }

Seeing a scene

render_panorama · See a whole scene

Reads only
Needs read access (tours:read)

Renders one of your scenes' whole 360° photo, flattened into a 2048 × 1024 picture (equirectangular: x is yaw from -180 at the left through 0 at the centre to 180 at the right, where yaw 0 = the photo's centre column, not the scene's opening direction; y is pitch from +90 at the top to -90 at the bottom), with a yaw scale every 30° along the top, pitch marks on the left, and the existing navigation hotspots (N1…), info hotspots (I1…) and flat-image outlines (F1…) labelled and listed with their full ids and coordinates. A cheap first look to see the room layout; then use render_view to look closer before placing anything, since the panorama is distorted near the top and bottom. Clients that limit picture size may shrink it. Works on your private tours; the photo must be ready (see get_photo_status).

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
sceneId · string or integer · required
The scene (photo) id, as get_tour lists it.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)
sceneIdstring or integeryesThe scene (photo) id, as get_tour lists it.

Example: render_panorama { "tourId": "…", "sceneId": "…" }

render_view · Look at a scene

Reads only
Needs read access (tours:read)

Renders what a visitor sees in one of your scenes looking in a direction, as a JPEG picture you can look at, so you can find things (a door, a fireplace) and read their position before placing a hotspot. The picture is an undistorted 4:3 view centred on yaw / pitch (degrees on the scene's panorama: yaw 0 = the photo's centre column, not the scene's opening direction, positive to the right; pitch 0 = the horizon, +90 = straight up), fov degrees wide (horizontal, 30-120, default 90). Gridlines every 30° are labelled with their yaw (meridians) and pitch (parallels) values, so a point between two lines can be interpolated; existing navigation hotspots (N1…), info hotspots (I1…) and flat-image outlines (F1…) are drawn and listed with their full ids and coordinates in the answer. To check a position, render again centred on it: the point is then at the centre of the picture. Use render_panorama first for a cheap look at the whole scene. Works on your private tours; the photo must be ready (see get_photo_status).

Renders have their own per-minute and per-hour limit.

tourId · string · required
The tour id, as list_tours returns it. (up to 32 characters, a fixed format)
sceneId · string or integer · required
The scene (photo) id, as get_tour lists it.
yaw · number · optional
Direction to look, degrees; 0 = the photo's centre column, positive to the right. Any value is wrapped into (-180, 180]. Default 0.
pitch · number · optional
Up / down, degrees; 0 = horizon, +90 = straight up. Default 0. (at least -90, at most 90)
fov · number · optional
Horizontal field of view in degrees (30-120); smaller zooms in. Default 90. (at least 30, at most 120)
width · integer · optional
Picture width in pixels (256-1568); the height is three quarters of it. Default 1024. (at least 256, at most 1568)
showHotspots · boolean · optional
Draw existing hotspots and flat-image outlines with their labels. Default true.
grid · boolean · optional
Draw the 30° yaw / pitch gridlines. Default true.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours returns it. (up to 32 characters, a fixed format)
sceneIdstring or integeryesThe scene (photo) id, as get_tour lists it.
yawnumbernoDirection to look, degrees; 0 = the photo's centre column, positive to the right. Any value is wrapped into (-180, 180]. Default 0.
pitchnumbernoUp / down, degrees; 0 = horizon, +90 = straight up. Default 0. (at least -90, at most 90)
fovnumbernoHorizontal field of view in degrees (30-120); smaller zooms in. Default 90. (at least 30, at most 120)
widthintegernoPicture width in pixels (256-1568); the height is three quarters of it. Default 1024. (at least 256, at most 1568)
showHotspotsbooleannoDraw existing hotspots and flat-image outlines with their labels. Default true.
gridbooleannoDraw the 30° yaw / pitch gridlines. Default true.

Example: render_view { "tourId": "…", "sceneId": "…", "yaw": 40, "pitch": -5, "fov": 60 }

Hotspots

add_nav_hotspot · Link two scenes

Makes changes
Needs read and change access (tours:write)

Adds a navigation hotspot in one scene of a multi-image tour that takes visitors to another scene, as the web editor's Navigation Hotspots panel does. Get scene ids from get_tour and read the place (a doorway, a path) off render_view first. A pair of scenes has at most one link each way: calling again for the same pair moves the existing link. Give returnYaw and returnPitch to also place the link back from toSceneId to fromSceneId in the same call. Returns the hotspot(s) and a link that opens the tour on the scene.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
fromSceneId · string or integer · required
The scene the hotspot is placed in.
toSceneId · string or integer · required
The scene the hotspot leads to (another scene of the same tour).
yaw · number · required
Where the hotspot sits in fromSceneId: degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitch · number · required
Where the hotspot sits in fromSceneId: degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
returnYaw · number · optional
Optional: where the way back sits in toSceneId (give with returnPitch): degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
returnPitch · number · optional
Optional: where the way back sits in toSceneId (give with returnYaw): degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
fromSceneIdstring or integeryesThe scene the hotspot is placed in.
toSceneIdstring or integeryesThe scene the hotspot leads to (another scene of the same tour).
yawnumberyesWhere the hotspot sits in fromSceneId: degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitchnumberyesWhere the hotspot sits in fromSceneId: degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
returnYawnumbernoOptional: where the way back sits in toSceneId (give with returnPitch): degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
returnPitchnumbernoOptional: where the way back sits in toSceneId (give with returnYaw): degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)

Example: add_nav_hotspot { "tourId": "…", "fromSceneId": "…", "toSceneId": "…", "yaw": 40, "pitch": -5, "returnYaw": -150, "returnPitch": -3 }

add_info_hotspot · Add an info hotspot

Makes changes
Needs read and change access (tours:write)

Adds an info hotspot to a scene: an icon visitors open to read a title and a description, as the web editor's Info Hotspots panel does. Get scene ids from get_tour and read the place off render_view first. Title: up to 50 characters; description: up to 2,000 characters, newlines kept. Text is plain: any HTML markup is removed. iconStyle "dark" draws a dark icon for bright backgrounds (default "light"). Works on single-image tours too. Returns the stored hotspot.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
sceneId · string or integer · required
A scene (photo) id, as get_tour lists it.
yaw · number · required
Where the hotspot sits: degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitch · number · required
Where the hotspot sits: degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
title · string · required
Up to 50 characters of plain text. (up to 1000 characters)
description · string · optional
Up to 2,000 characters of plain text; newlines are kept. (up to 20000 characters)
iconStyle · one of: light, dark · optional
"light" (default) or "dark".
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
sceneIdstring or integeryesA scene (photo) id, as get_tour lists it.
yawnumberyesWhere the hotspot sits: degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitchnumberyesWhere the hotspot sits: degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
titlestringyesUp to 50 characters of plain text. (up to 1000 characters)
descriptionstringnoUp to 2,000 characters of plain text; newlines are kept. (up to 20000 characters)
iconStyleone of: light, darkno"light" (default) or "dark".

Example: add_info_hotspot { "tourId": "…", "sceneId": "…", "yaw": 10, "pitch": -20, "title": "Wood stove" }

update_info_hotspot · Change an info hotspot

Makes changes
Needs read and change access (tours:write)

Changes an existing info hotspot: any of title (up to 50 characters), description (up to 2,000), iconStyle, and its place (yaw with pitch). Only the fields you give change. Get hotspot ids from get_tour (infoHotspots). An info hotspot stays in its scene: to put it in another scene, remove it and add a new one. Returns the hotspot as stored.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
hotspotId · string · required
The info hotspot id, as get_tour lists it. (at least 1 character, up to 200 characters)
sceneId · string or integer · optional
Optional: the hotspot's own scene (refused if it is another scene).
title · string · optional
Up to 50 characters of plain text. (up to 1000 characters)
description · string · optional
Up to 2,000 characters of plain text. (up to 20000 characters)
iconStyle · one of: light, dark · optional
"light" or "dark".
yaw · number · optional
The new place (give with pitch): degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitch · number · optional
The new place (give with yaw): degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
hotspotIdstringyesThe info hotspot id, as get_tour lists it. (at least 1 character, up to 200 characters)
sceneIdstring or integernoOptional: the hotspot's own scene (refused if it is another scene).
titlestringnoUp to 50 characters of plain text. (up to 1000 characters)
descriptionstringnoUp to 2,000 characters of plain text. (up to 20000 characters)
iconStyleone of: light, darkno"light" or "dark".
yawnumbernoThe new place (give with pitch): degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitchnumbernoThe new place (give with yaw): degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)

Example: update_info_hotspot { "tourId": "…", "hotspotId": "…", "description": "Installed 2024." }

remove_hotspot · Remove a hotspot

Makes changes
Cannot be undone
Needs read and change access (tours:write)

Removes one navigation or info hotspot from a tour. Get hotspot ids from get_tour (navHotspots, infoHotspots). Removing a navigation link leaves the link back from the other scene in place; remove it too if you want both gone. Flat images are removed with remove_flat_image.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
hotspotId · string · required
The navigation or info hotspot id, as get_tour lists it. (at least 1 character, up to 200 characters)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
hotspotIdstringyesThe navigation or info hotspot id, as get_tour lists it. (at least 1 character, up to 200 characters)

Example: remove_hotspot { "tourId": "…", "hotspotId": "…" }

Flat images

add_flat_image · Place a flat image

Makes changes
Needs read and change access (tours:write)

Places a flat picture (a logo, a sign, a floor plan) in a scene, as the web editor's Flat Images panel does. url must be a public https address of a JPEG, PNG or WebP image of at most 20 MB; it is stored with the tour (shrunk to at most 4096 px; PNG and WebP keep their transparency). Get scene ids from get_tour and choose the place with render_view; render_view then shows the picture's outline. scale 0.5 – 2 (default 1) sets its size, rotation (degrees) turns it in its own plane. Returns the stored flat image.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
sceneId · string or integer · required
A scene (photo) id, as get_tour lists it.
url · string · required
A public https address of a JPEG, PNG or WebP image (at most 20 MB). (at least 1 character, up to 2048 characters)
yaw · number · required
Where the picture's centre sits: degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitch · number · required
Where the picture's centre sits: degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
scale · number · optional
Size: 0.5 – 2, default 1. (at least 0.5, at most 2)
rotation · number · optional
Turn in the picture's own plane, degrees (stored in [0, 360)); default 0.
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
sceneIdstring or integeryesA scene (photo) id, as get_tour lists it.
urlstringyesA public https address of a JPEG, PNG or WebP image (at most 20 MB). (at least 1 character, up to 2048 characters)
yawnumberyesWhere the picture's centre sits: degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitchnumberyesWhere the picture's centre sits: degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
scalenumbernoSize: 0.5 – 2, default 1. (at least 0.5, at most 2)
rotationnumbernoTurn in the picture's own plane, degrees (stored in [0, 360)); default 0.

Example: add_flat_image { "tourId": "…", "sceneId": "…", "url": "https://example.com/floor-plan.png", "yaw": 0, "pitch": 0 }

update_flat_image · Change a flat image

Makes changes
Needs read and change access (tours:write)

Changes an existing flat image: scale (0.5 – 2), rotation (degrees, absolute) and its place (yaw with pitch). Only the fields you give change. Get flat image ids from get_tour (flatImages). To use another picture, remove this one and add a new one.

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
flatImageId · string · required
The flat image id, as get_tour lists it. (at least 1 character, up to 200 characters)
scale · number · optional
Size: 0.5 – 2. (at least 0.5, at most 2)
rotation · number · optional
Turn in the picture's own plane, degrees (absolute, stored in [0, 360)).
yaw · number · optional
The new place (give with pitch): degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitch · number · optional
The new place (give with yaw): degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
flatImageIdstringyesThe flat image id, as get_tour lists it. (at least 1 character, up to 200 characters)
scalenumbernoSize: 0.5 – 2. (at least 0.5, at most 2)
rotationnumbernoTurn in the picture's own plane, degrees (absolute, stored in [0, 360)).
yawnumbernoThe new place (give with pitch): degrees on the scene's photo: 0 = the photo's centre column, positive to the right; any value is wrapped into (-180, 180].
pitchnumbernoThe new place (give with yaw): degrees: 0 = the horizon, +90 = straight up, -90 = straight down. (at least -90, at most 90)

Example: update_flat_image { "tourId": "…", "flatImageId": "…", "scale": 1.5 }

remove_flat_image · Remove a flat image

Makes changes
Cannot be undone
Needs read and change access (tours:write)

Removes one flat image from its scene. Get flat image ids from get_tour (flatImages).

tourId · string · required
The tour id, as list_tours and get_tour list it. (at least 1 character)
flatImageId · string · required
The flat image id, as get_tour lists it. (at least 1 character, up to 200 characters)
InputTypeRequiredWhat it is
tourIdstringyesThe tour id, as list_tours and get_tour list it. (at least 1 character)
flatImageIdstringyesThe flat image id, as get_tour lists it. (at least 1 character, up to 200 characters)

Example: remove_flat_image { "tourId": "…", "flatImageId": "…" }

Prompts

Ready-made instructions some assistants offer in a menu (for example the + or / menu in Claude). Pick one, fill in the blanks, and the assistant follows the whole workflow.

Add an AI-generated scene (add_generated_scene)

Makes a 360° scene with your own AI image generator (a staging concept, a "what it could look like" view) and adds it to one of your tours; Orbix360 stretches it to 2:1 and blends its seam.

Fill in

  • tour (required): The tour's name or id (up to 200 characters).

  • brief (required): What the scene should show, e.g. "the living room staged in mid-century modern" (up to 2,000 characters).

Add hotspots to a tour (add_hotspots_to_tour)

Looks at every scene of one of your tours, links the scenes with navigation hotspots and adds the info hotspots you ask for.

Fill in

  • tour (required): The tour's name or id (up to 200 characters).

  • brief (optional): Optional: which rooms connect and what to point out (up to 2,000 characters).

Build a tour from photos (build_tour_from_photos)

Creates a tour from your 360° photos, links the scenes, adds notes, sets each scene's opening view and hands back the share links.

Fill in

  • name (required): The tour name (up to 200 characters).

  • photos (required): The photos: public https URLs, local file paths and/or the names of photos attached in the chat, one per line or comma-separated (up to 50).

  • kind (optional): "multi" (default) for a walkable tour of several photos, "single" for one photo.

  • brief (optional): Optional: which rooms connect, what to point out, anything else the tour should show (up to 2,000 characters).

Questions

What is MCP?

The Model Context Protocol (MCP) is an open standard that lets AI assistants use other apps. The Orbix360 MCP server lets an assistant you connect create and edit the 360° tours in your account.

Which AI assistants work with Orbix360?

Claude, ChatGPT, Cursor and any other assistant that supports remote MCP servers. Most sign in through your browser; the others can use a personal access token.

Does connecting an assistant cost extra?

No. It works on every plan at no extra cost, and your plan's limits on tours, photos and file size apply exactly as in the web app.

Is my account safe when an assistant is connected?

You approve each assistant on an Orbix360 page, and it cannot buy anything, change a subscription or change your account settings. You can disconnect it at any time under Connected apps.

Can my assistant use my own 360° photos?

Yes. It can add photos from a web address, or give you an upload link where you drop each photo in your browser.


Help

New to this? Read the step-by-step help article: Connect an AI assistant to Orbix360

  • Powered By
  • Orbix 360º