← WebMCP Directory

Tool tree

acoustom.vercel.app

CommerceTools verified
Website
Acoustom
Explore capabilities
    get_acoustom_overviewAnswer

    Returns what Acoustom is, what the agent can do here, what the platform deliberately does not do, the page map, and the capability-to-tool mapping. The first call for any new session.

    View tool JSON
    {
      "name": "get_acoustom_overview",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns what Acoustom is, what the agent can do here, what the platform deliberately does not do, the page map, and the capability-to-tool mapping. The first call for any new session.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    list_acoustom_skillsAnswer

    Returns every skill available to the agent in this session: a one-line description, when to load it, and the tool names it expects the agent to call. Use get_acoustom_skill to read the full instructions for a single skill.

    View tool JSON
    {
      "name": "list_acoustom_skills",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns every skill available to the agent in this session: a one-line description, when to load it, and the tool names it expects the agent to call. Use get_acoustom_skill to read the full instructions for a single skill.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_acoustom_skillAnswer

    Returns the full instructions for a single Acoustom skill by name. Load a specialised skill before running a workflow it owns; load acoustom-guided-discovery for broad or combined requests.

    View tool JSON
    {
      "name": "get_acoustom_skill",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the full instructions for a single Acoustom skill by name. Load a specialised skill before running a workflow it owns; load acoustom-guided-discovery for broad or combined requests.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "acoustom-guided-discovery",
              "acoustom-speaker-recommendation",
              "acoustom-speaker-comparison",
              "acoustom-custom-speaker-build",
              "acoustom-room-simulation"
            ]
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    }
    list_webmcp_toolsAnswer

    Returns every tool this WebMCP host has registered, grouped by capability. Use get_webmcp_tool_contract to inspect a single tool’s full input and response schema before calling it.

    View tool JSON
    {
      "name": "list_webmcp_tools",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns every tool this WebMCP host has registered, grouped by capability. Use get_webmcp_tool_contract to inspect a single tool’s full input and response schema before calling it.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_webmcp_tool_contractAnswer

    Returns the input schema and response schema for a registered Acoustom WebMCP tool. Backend response schemas reference the live FastAPI OpenAPI document.

    View tool JSON
    {
      "name": "get_webmcp_tool_contract",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the input schema and response schema for a registered Acoustom WebMCP tool. Backend response schemas reference the live FastAPI OpenAPI document.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "toolName": {
            "type": "string",
            "enum": [
              "get_acoustom_overview",
              "list_acoustom_skills",
              "get_acoustom_skill",
              "list_webmcp_tools",
              "get_webmcp_tool_contract",
              "get_user_context",
              "get_acoustom_workflow",
              "list_products",
              "get_product",
              "recommend_speakers",
              "compare_speakers",
              "set_comparison_selection",
              "get_room_simulation_presets",
              "list_reference_tracks",
              "set_reference_track",
              "upload_reference_audio",
              "set_music_preferences",
              "attach_room_reference_images",
              "get_room_estimate_contract",
              "apply_agent_room_estimate",
              "get_current_room_spec",
              "get_live_simulation_result",
              "set_listening_lab_speaker",
              "refresh_room_simulation",
              "get_room_reference_images",
              "get_shared_simulated_audio",
              "get_custom_speaker_builder_options",
              "validate_custom_speaker_build",
              "generate_custom_build_sheet",
              "list_saved_custom_configurations",
              "get_saved_custom_configuration",
              "save_custom_configuration",
              "delete_saved_custom_configuration",
              "list_local_builds",
              "save_local_build",
              "delete_local_build",
              "rename_local_build",
              "get_cart",
              "get_wishlist",
              "add_to_cart",
              "update_cart_quantity",
              "remove_from_cart",
              "toggle_wishlist",
              "get_navigation_context",
              "navigate_acoustom",
              "simulate_speaker_in_room",
              "simulate_custom_speaker_in_room"
            ]
          }
        },
        "required": [
          "toolName"
        ],
        "additionalProperties": false
      }
    }
    get_user_contextAnswer

    Returns the live state of the user’s view: the visible page, the comparison selection, the listening lab’s selected speaker, room and current simulation, the active custom build, music preferences, and the bag. Read this first when returning to a session or before a handoff.

    View tool JSON
    {
      "name": "get_user_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the live state of the user’s view: the visible page, the comparison selection, the listening lab’s selected speaker, room and current simulation, the active custom build, music preferences, and the bag. Read this first when returning to a session or before a handoff.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_acoustom_workflowAnswer

    Returns the four objective-aligned agent workflows (recommend, compare, custom build, integrated guided discovery), their tool order, purpose, and the output fields to carry to each next step, plus same-view navigation rules. An agent without prior context should call this after get_acoustom_overview.

    View tool JSON
    {
      "name": "get_acoustom_workflow",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the four objective-aligned agent workflows (recommend, compare, custom build, integrated guided discovery), their tool order, purpose, and the output fields to carry to each next step, plus same-view navigation rules. An agent without prior context should call this after get_acoustom_overview.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_navigation_contextAnswer

    Returns the current visible Acoustom page, selected product where applicable, supported destinations, the user-facing sections that can be focused, the full navigation schema, and the navigation policy. Use before navigating when the current page is unknown.

    View tool JSON
    {
      "name": "get_navigation_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the current visible Acoustom page, selected product where applicable, supported destinations, the user-facing sections that can be focused, the full navigation schema, and the navigation policy. Use before navigating when the current page is unknown.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    navigate_acoustomAction

    Moves the visible Acoustom app to a supported in-app destination and can carry the relevant context in the same call: productNames fills the comparison matrix, speakerName selects the listening-lab speaker, buildId opens a saved build in the custom builder, trackId loads a reference track. Use only when showing the page materially helps collaboration. This cannot navigate to arbitrary URLs, checkout, payment, or purchase.

    View tool JSON
    {
      "name": "navigate_acoustom",
      "kind": "act",
      "impl": "imperative",
      "description": "Moves the visible Acoustom app to a supported in-app destination and can carry the relevant context in the same call: productNames fills the comparison matrix, speakerName selects the listening-lab speaker, buildId opens a saved build in the custom builder, trackId loads a reference track. Use only when showing the page materially helps collaboration. This cannot navigate to arbitrary URLs, checkout, payment, or purchase.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "enum": [
              "home",
              "catalog",
              "product_detail",
              "compare",
              "listening_lab",
              "custom_design"
            ],
            "description": "A supported visible Acoustom destination. Never infer or construct URLs."
          },
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Required when destination is product_detail. Must be a catalog product name."
          },
          "sectionId": {
            "type": "string",
            "enum": [
              "top",
              "story",
              "speakers",
              "journal",
              "support",
              "specifications",
              "comparison",
              "room",
              "simulation"
            ],
            "description": "Optional visible section to focus after navigation when that section exists on the destination. Use get_navigation_context to discover valid sections for the current destination."
          },
          "productNames": {
            "type": "object",
            "description": "Optional comparison selection to load in the same call. catalogProductNames and customBuildIds are kept in their respective slots.",
            "properties": {
              "catalogProductNames": {
                "type": "array",
                "minItems": 0,
                "maxItems": 5,
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                }
              },
              "customBuildIds": {
                "type": "array",
                "minItems": 0,
                "maxItems": 5,
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                }
              }
            },
            "additionalProperties": false
          },
          "buildId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Local build id to open in the custom design builder (destination must be custom_design)."
          },
          "speakerName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Speaker to select in the listening lab (destination must be listening_lab). Use the catalog name or \"custom-reference\" for the active custom build."
          },
          "trackId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Reference track to load in the listening lab (destination listening_lab)."
          }
        },
        "required": [
          "destination"
        ],
        "additionalProperties": false
      }
    }
    recommend_speakersAction

    Ranks catalog speakers for room size and listening preference, with optional format, budget (USD per pair), and feedback. Returns transparent matching reasons; use get_product and simulation to inspect recommendations. Room size and sound profile are required so an empty request cannot be mistaken for a meaningful recommendation.

    View tool JSON
    {
      "name": "recommend_speakers",
      "kind": "act",
      "impl": "imperative",
      "description": "Ranks catalog speakers for room size and listening preference, with optional format, budget (USD per pair), and feedback. Returns transparent matching reasons; use get_product and simulation to inspect recommendations. Room size and sound profile are required so an empty request cannot be mistaken for a meaningful recommendation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "roomSize": {
            "type": "string",
            "enum": [
              "small",
              "medium",
              "large"
            ]
          },
          "soundProfile": {
            "type": "string",
            "enum": [
              "balanced",
              "reference",
              "warm",
              "immersive"
            ]
          },
          "preferredFormat": {
            "type": "string",
            "enum": [
              "standmount",
              "floorstanding",
              "active"
            ]
          },
          "budgetUsd": {
            "type": "number",
            "minimum": 0,
            "description": "USD per pair."
          },
          "feedback": {
            "type": "string",
            "maxLength": 2000,
            "description": "Optional user feedback that the chatbot should consider when explaining or refining the recommendation."
          }
        },
        "required": [
          "roomSize",
          "soundProfile"
        ],
        "additionalProperties": false
      }
    }
    list_productsAnswer

    Returns the current Acoustom catalog: name, type, price, tone, and category.

    View tool JSON
    {
      "name": "list_products",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the current Acoustom catalog: name, type, price, tone, and category.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_productAnswer

    Returns complete current-page details and specifications for one catalog speaker.

    View tool JSON
    {
      "name": "get_product",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns complete current-page details and specifications for one catalog speaker.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Exact or case-insensitive Acoustom product name."
          }
        },
        "required": [
          "productName"
        ],
        "additionalProperties": false
      }
    }
    compare_speakersAction

    Returns a column-per-speaker comparison for two to five catalog speakers and/or local custom builds. Prices are USD per pair; a custom build’s price is the configured component total from validation. Pass includeSimulation:true to run every column through the current live listening-lab room and return the complete simulation result: simulation id, impulse-response URLs, RT60, early decay time, C80 clarity, D50 definition, frequency response, and speaker performance. The result depends on the room the user is currently simulating in, so call apply_agent_room_estimate or get_current_room_spec first when the room is unknown.

    View tool JSON
    {
      "name": "compare_speakers",
      "kind": "act",
      "impl": "imperative",
      "description": "Returns a column-per-speaker comparison for two to five catalog speakers and/or local custom builds. Prices are USD per pair; a custom build’s price is the configured component total from validation. Pass includeSimulation:true to run every column through the current live listening-lab room and return the complete simulation result: simulation id, impulse-response URLs, RT60, early decay time, C80 clarity, D50 definition, frequency response, and speaker performance. The result depends on the room the user is currently simulating in, so call apply_agent_room_estimate or get_current_room_spec first when the room is unknown.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productNames": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "customBuildIds": {
            "type": "array",
            "minItems": 0,
            "maxItems": 5,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "description": "Optional local custom build ids from list_local_builds. Builds that have not been validated carry empty specifications until they are revalidated."
          },
          "includeSimulation": {
            "type": "boolean",
            "default": false,
            "description": "When true, simulate every column in the current live listening-lab room and return the complete simulation data alongside the specifications."
          }
        },
        "additionalProperties": false
      }
    }
    set_comparison_selectionAction

    Loads up to five catalog speakers and/or local custom builds into the comparison matrix without changing the visible page. Use navigate_acoustom(destination: compare, productNames) to do the same and also land on the comparison page.

    View tool JSON
    {
      "name": "set_comparison_selection",
      "kind": "act",
      "impl": "imperative",
      "description": "Loads up to five catalog speakers and/or local custom builds into the comparison matrix without changing the visible page. Use navigate_acoustom(destination: compare, productNames) to do the same and also land on the comparison page.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "catalogProductNames": {
            "type": "array",
            "minItems": 0,
            "maxItems": 5,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "customBuildIds": {
            "type": "array",
            "minItems": 0,
            "maxItems": 5,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          }
        },
        "additionalProperties": false
      }
    }
    get_room_simulation_presetsAnswer

    Returns the room-acoustic presets accepted by simulate_speaker_in_room.

    View tool JSON
    {
      "name": "get_room_simulation_presets",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the room-acoustic presets accepted by simulate_speaker_in_room.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    list_reference_tracksAnswer

    Returns the reference tracks the listening lab can audition. Use set_reference_track to load one.

    View tool JSON
    {
      "name": "list_reference_tracks",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the reference tracks the listening lab can audition. Use set_reference_track to load one.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    set_reference_trackAction

    Loads a reference track into the listening lab without moving the page. The track is identified by id from list_reference_tracks. The user still needs to press play in the lab; this only chooses the track.

    View tool JSON
    {
      "name": "set_reference_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Loads a reference track into the listening lab without moving the page. The track is identified by id from list_reference_tracks. The user still needs to press play in the lab; this only chooses the track.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string",
            "enum": [
              "piano",
              "voice",
              "electronic",
              "ambient",
              "keys"
            ]
          }
        },
        "required": [
          "trackId"
        ],
        "additionalProperties": false
      }
    }
    upload_reference_audioAction

    Loads agent-provided reference audio into the listening lab. Pass a data URL containing an audio file; the audio remains in this browser and is not uploaded to Acoustom servers.

    View tool JSON
    {
      "name": "upload_reference_audio",
      "kind": "act",
      "impl": "imperative",
      "description": "Loads agent-provided reference audio into the listening lab. Pass a data URL containing an audio file; the audio remains in this browser and is not uploaded to Acoustom servers.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataUrl": {
            "type": "string",
            "description": "A data URL such as data:audio/wav;base64,...",
            "maxLength": 35000000
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "dataUrl",
          "fileName"
        ],
        "additionalProperties": false
      }
    }
    set_music_preferencesAction

    Stores a short summary of the user’s listening habits so the reasoning, recommendations, and visible page share the same context. Acoustom has no Spotify or playlist integration; this tool only records what the agent already knows.

    View tool JSON
    {
      "name": "set_music_preferences",
      "kind": "act",
      "impl": "imperative",
      "description": "Stores a short summary of the user’s listening habits so the reasoning, recommendations, and visible page share the same context. Acoustom has no Spotify or playlist integration; this tool only records what the agent already knows.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string",
            "maxLength": 1000
          },
          "genres": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            }
          },
          "tracks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "artist": {
                  "type": "string",
                  "maxLength": 200
                }
              },
              "required": [
                "title"
              ],
              "additionalProperties": false
            }
          },
          "source": {
            "type": "string",
            "maxLength": 64,
            "description": "Where the agent obtained this, e.g. \"spotify_playlist\" or \"conversation\"."
          }
        },
        "required": [
          "summary"
        ],
        "additionalProperties": false
      }
    }
    get_room_estimate_contractAnswer

    Returns the schema and collaboration guidance for translating a user-provided room image into editable simulation inputs. This tool does not analyse images itself.

    View tool JSON
    {
      "name": "get_room_estimate_contract",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the schema and collaboration guidance for translating a user-provided room image into editable simulation inputs. This tool does not analyse images itself.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    attach_room_reference_imagesAction

    Pushes image URLs the agent already holds into the listening-lab room reference panel so the user can see them. Acoustom has no built-in image understanding; the estimate is the agent’s.

    View tool JSON
    {
      "name": "attach_room_reference_images",
      "kind": "act",
      "impl": "imperative",
      "description": "Pushes image URLs the agent already holds into the listening-lab room reference panel so the user can see them. Acoustom has no built-in image understanding; the estimate is the agent’s.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "images": {
            "type": "array",
            "minItems": 1,
            "maxItems": 6,
            "items": {
              "type": "object",
              "required": [
                "imageUrl"
              ],
              "properties": {
                "imageUrl": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024
                },
                "fileName": {
                  "type": "string",
                  "maxLength": 200
                },
                "mimeType": {
                  "type": "string",
                  "maxLength": 64
                }
              },
              "additionalProperties": false
            }
          },
          "guidance": {
            "type": "string",
            "maxLength": 500,
            "description": "Optional one-line note shown alongside the images in the lab."
          }
        },
        "required": [
          "images"
        ],
        "additionalProperties": false
      }
    }
    get_room_reference_imagesAnswer

    Returns temporary, user-approved room-image URLs uploaded in Listening Lab. Inspect every returned image before inferring an editable room estimate. If no references are returned, the user can attach images directly to the agent conversation or call attach_room_reference_images with image URLs you already hold.

    View tool JSON
    {
      "name": "get_room_reference_images",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns temporary, user-approved room-image URLs uploaded in Listening Lab. Inspect every returned image before inferring an editable room estimate. If no references are returned, the user can attach images directly to the agent conversation or call attach_room_reference_images with image URLs you already hold.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    apply_agent_room_estimateAction

    Applies an agent’s best-effort image-based room estimate to the live browser simulation controls. speakerPositions and listener are optional; when only dimensions and a preset are known, Acoustom fills a sensible default stereo layout. The estimate is collaborative, editable, and intentionally not a hard confirmation gate.

    View tool JSON
    {
      "name": "apply_agent_room_estimate",
      "kind": "act",
      "impl": "imperative",
      "description": "Applies an agent’s best-effort image-based room estimate to the live browser simulation controls. speakerPositions and listener are optional; when only dimensions and a preset are known, Acoustom fills a sensible default stereo layout. The estimate is collaborative, editable, and intentionally not a hard confirmation gate.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "width": {
            "type": "number",
            "minimum": 2,
            "maximum": 20
          },
          "length": {
            "type": "number",
            "minimum": 2,
            "maximum": 20
          },
          "height": {
            "type": "number",
            "minimum": 2,
            "maximum": 10
          },
          "presetId": {
            "type": "string",
            "enum": [
              "living_room",
              "reflective",
              "absorptive"
            ]
          },
          "speakerPositions": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "object",
              "properties": {
                "x": {
                  "type": "number"
                },
                "y": {
                  "type": "number"
                },
                "z": {
                  "type": "number"
                },
                "rotation": {
                  "type": "number",
                  "default": 0
                },
                "directivity": {
                  "type": "string",
                  "enum": [
                    "omni",
                    "cardioid"
                  ],
                  "default": "omni",
                  "description": "Optional source directivity. Omit for omni."
                }
              },
              "required": [
                "x",
                "y",
                "z"
              ],
              "additionalProperties": false
            }
          },
          "listener": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "z": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ],
            "additionalProperties": false
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 500
            }
          },
          "confidence": {
            "type": "object",
            "properties": {
              "dimensions": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              "materials": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              "layout": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "description": "Best-effort room estimate derived collaboratively from a user-provided image. speakerPositions and listener are optional when only dimensions are known; Acoustom fills sensible defaults."
      }
    }
    get_current_room_specAnswer

    Returns the room dimensions, acoustic preset, stereo speaker positions, and listener position currently used by the listening lab. Use after a room-image estimate is applied or a user edits the room, before explaining or explicitly overriding a simulation.

    View tool JSON
    {
      "name": "get_current_room_spec",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the room dimensions, acoustic preset, stereo speaker positions, and listener position currently used by the listening lab. Use after a room-image estimate is applied or a user edits the room, before explaining or explicitly overriding a simulation.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    set_listening_lab_speakerAction

    Selects the speaker the listening lab will simulate. Pass a catalog product name, or "custom-reference" to simulate the most recently validated custom build. Use navigate_acoustom(destination: listening_lab, speakerName) to do the same and also move the page.

    View tool JSON
    {
      "name": "set_listening_lab_speaker",
      "kind": "act",
      "impl": "imperative",
      "description": "Selects the speaker the listening lab will simulate. Pass a catalog product name, or \"custom-reference\" to simulate the most recently validated custom build. Use navigate_acoustom(destination: listening_lab, speakerName) to do the same and also move the page.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "speakerName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Catalog product name or \"custom-reference\"."
          }
        },
        "required": [
          "speakerName"
        ],
        "additionalProperties": false
      }
    }
    refresh_room_simulationAction

    Forces the listening lab to re-run the simulation against its current room and selected speaker. The lab usually re-runs automatically; use this when the user changed controls outside the lab or you want a guaranteed fresh result.

    View tool JSON
    {
      "name": "refresh_room_simulation",
      "kind": "act",
      "impl": "imperative",
      "description": "Forces the listening lab to re-run the simulation against its current room and selected speaker. The lab usually re-runs automatically; use this when the user changed controls outside the lab or you want a guaranteed fresh result.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_live_simulation_resultAnswer

    Returns the simulation result the listening lab is currently displaying, including the profile provenance. Use this instead of re-running a simulation through the API when the user has not changed the room or speaker since the last run.

    View tool JSON
    {
      "name": "get_live_simulation_result",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the simulation result the listening lab is currently displaying, including the profile provenance. Use this instead of re-running a simulation through the API when the user has not changed the room or speaker since the last run.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_shared_simulated_audioAnswer

    Returns the playable URL for the latest browser-rendered WAV that the user explicitly shared with the agent. The URL expires automatically.

    View tool JSON
    {
      "name": "get_shared_simulated_audio",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the playable URL for the latest browser-rendered WAV that the user explicitly shared with the agent. The URL expires automatically.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_custom_speaker_builder_optionsAnswer

    Returns server-owned custom-speaker platforms. All other accepted builder values are enumerated by validate_custom_speaker_build.

    View tool JSON
    {
      "name": "get_custom_speaker_builder_options",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns server-owned custom-speaker platforms. All other accepted builder values are enumerated by validate_custom_speaker_build.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    fill_custom_builder_formAction

    Fills the visible custom-design builder form on the user's screen with the supplied choices, exactly as if the user had clicked them. Use for the choices you gathered from conversation or a recommendation. If the user is not on the custom-design page, call navigate_acoustom(destination: "custom_design") first. The user sees and can change every value.

    View tool JSON
    {
      "name": "fill_custom_builder_form",
      "kind": "act",
      "impl": "imperative",
      "description": "Fills the visible custom-design builder form on the user's screen with the supplied choices, exactly as if the user had clicked them. Use for the choices you gathered from conversation or a recommendation. If the user is not on the custom-design page, call navigate_acoustom(destination: \"custom_design\") first. The user sees and can change every value.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "object",
            "description": "Builder choices to apply. Only the fields you pass are changed.",
            "properties": {
              "format": {
                "type": "string",
                "enum": [
                  "standmount",
                  "floorstanding",
                  "subwoofer"
                ]
              },
              "platform": {
                "type": "string",
                "enum": [
                  "two_way_compact",
                  "two_way_extended",
                  "three_way_reference",
                  "subwoofer_active"
                ]
              },
              "enclosure": {
                "type": "string",
                "enum": [
                  "ported",
                  "sealed"
                ]
              },
              "character": {
                "type": "string",
                "enum": [
                  "tight",
                  "balanced",
                  "extended"
                ]
              },
              "size": {
                "type": "string",
                "enum": [
                  "compact",
                  "standard",
                  "large"
                ]
              },
              "grille": {
                "type": "string",
                "enum": [
                  "none",
                  "magnetic_fabric",
                  "perforated_metal"
                ]
              },
              "base": {
                "type": "string",
                "enum": [
                  "plinth",
                  "slim_feet",
                  "stand"
                ]
              },
              "edge": {
                "type": "string",
                "enum": [
                  "soft_radius",
                  "sculpted_radius"
                ]
              },
              "finish": {
                "type": "string",
                "enum": [
                  "walnut",
                  "black_ash",
                  "satin_white"
                ]
              },
              "personalisation": {
                "type": "string",
                "enum": [
                  "none",
                  "engraving",
                  "pattern",
                  "printed_panel",
                  "decal",
                  "custom_artwork"
                ]
              }
            },
            "additionalProperties": false
          },
          "preferences": {
            "type": "object",
            "description": "Optional brief-question answers shown on the builder's first step. Stored as user preferences, separate from the custom-speaker configuration spec.",
            "properties": {
              "soundProfile": {
                "type": "string",
                "enum": [
                  "warm",
                  "balanced",
                  "immersive"
                ]
              },
              "roomSize": {
                "type": "string",
                "enum": [
                  "small",
                  "medium",
                  "large"
                ]
              }
            },
            "additionalProperties": false
          },
          "buildName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "focusStep": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7,
            "description": "Optional builder step to open so the user sees the filled fields: 0 brief, 1 format, 2 platform, 3 bass, 4 cabinet, 5 finish, 6 personalisation, 7 review."
          }
        },
        "required": [],
        "anyOf": [
          {
            "required": [
              "fields"
            ]
          },
          {
            "required": [
              "preferences"
            ]
          }
        ],
        "additionalProperties": false
      }
    }
    validate_custom_speaker_buildAction

    Validates and derives a curated build. Returns the validated build plus the USD component pricing breakdown and total used by the custom builder. Treat pricing as an estimate; the backend remains authoritative for engineering values.

    View tool JSON
    {
      "name": "validate_custom_speaker_build",
      "kind": "act",
      "impl": "imperative",
      "description": "Validates and derives a curated build. Returns the validated build plus the USD component pricing breakdown and total used by the custom builder. Treat pricing as an estimate; the backend remains authoritative for engineering values.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "integer",
            "const": 1,
            "default": 1
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "brief": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "format": {
                "type": "string",
                "enum": [
                  "standmount",
                  "floorstanding",
                  "subwoofer"
                ]
              },
              "soundProfile": {
                "type": "string",
                "enum": [
                  "balanced",
                  "reference",
                  "warm",
                  "immersive"
                ]
              },
              "roomSize": {
                "type": "string",
                "enum": [
                  "small",
                  "medium",
                  "large"
                ]
              },
              "listeningDistanceM": {
                "type": "number",
                "minimum": 1.2,
                "maximum": 6
              }
            },
            "required": [
              "format",
              "soundProfile",
              "roomSize",
              "listeningDistanceM"
            ]
          },
          "platformId": {
            "type": "string",
            "enum": [
              "two_way_compact",
              "two_way_extended",
              "three_way_reference",
              "subwoofer_active"
            ]
          },
          "bass": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "alignment": {
                "type": "string",
                "enum": [
                  "sealed",
                  "ported"
                ]
              },
              "bassCharacter": {
                "type": "string",
                "enum": [
                  "tight",
                  "balanced",
                  "extended"
                ]
              },
              "tuningHz": {
                "type": "number",
                "minimum": 24,
                "maximum": 65
              },
              "netVolumeLitres": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 250
              },
              "portInnerDiameterMm": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 250
              },
              "portLengthMm": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000
              },
              "dampingDescription": {
                "type": "string",
                "minLength": 3,
                "maxLength": 500
              }
            },
            "required": [
              "alignment",
              "bassCharacter"
            ]
          },
          "cabinet": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "size": {
                "type": "string",
                "enum": [
                  "compact",
                  "standard",
                  "large"
                ]
              },
              "finish": {
                "type": "string",
                "enum": [
                  "walnut",
                  "oak",
                  "black_ash",
                  "satin_white",
                  "satin_black",
                  "deep_blue",
                  "custom_colour"
                ]
              },
              "finishFamily": {
                "type": "string",
                "enum": [
                  "veneer",
                  "paint",
                  "premium"
                ]
              },
              "grille": {
                "type": "string",
                "enum": [
                  "none",
                  "magnetic_fabric",
                  "perforated_metal"
                ]
              },
              "base": {
                "type": "string",
                "enum": [
                  "plinth",
                  "slim_feet",
                  "stand"
                ]
              },
              "edgeProfile": {
                "type": "string",
                "enum": [
                  "soft_radius",
                  "sculpted_radius"
                ],
                "default": "soft_radius"
              }
            },
            "required": [
              "size",
              "finish",
              "finishFamily",
              "grille",
              "base"
            ]
          },
          "personalisation": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "none",
                  "engraving",
                  "pattern",
                  "printed_panel",
                  "decal",
                  "custom_artwork"
                ],
                "default": "none"
              },
              "engraving": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "text": {
                    "type": "string",
                    "maxLength": 32
                  },
                  "font": {
                    "type": "string",
                    "enum": [
                      "modern_sans",
                      "classic_serif"
                    ]
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "rear_badge",
                      "side_lower"
                    ]
                  }
                },
                "required": [
                  "text",
                  "font",
                  "placement"
                ]
              },
              "artwork": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "application": {
                    "type": "string",
                    "enum": [
                      "side_panel",
                      "rear_panel",
                      "grille_badge"
                    ]
                  },
                  "treatment": {
                    "type": "string",
                    "enum": [
                      "matte_decal",
                      "uv_print",
                      "inlaid_pattern"
                    ]
                  },
                  "rightsConfirmed": {
                    "type": "boolean"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "not_required",
                      "pending_upload",
                      "under_review",
                      "approved",
                      "rejected"
                    ]
                  }
                },
                "required": [
                  "application",
                  "treatment",
                  "rightsConfirmed"
                ]
              }
            },
            "required": [
              "kind"
            ]
          }
        },
        "required": [
          "name",
          "brief",
          "platformId",
          "bass",
          "cabinet",
          "personalisation"
        ]
      }
    }
    generate_custom_build_sheetAction

    Validates a custom configuration and renders a downloadable two-angle catalog build-sheet PNG. Returns the validated build, the USD pricing estimate, and imageDataUrl, which an agent can present as an image attachment. The custom builder must be open in this browser so its 3D renderer is available.

    View tool JSON
    {
      "name": "generate_custom_build_sheet",
      "kind": "act",
      "impl": "imperative",
      "description": "Validates a custom configuration and renders a downloadable two-angle catalog build-sheet PNG. Returns the validated build, the USD pricing estimate, and imageDataUrl, which an agent can present as an image attachment. The custom builder must be open in this browser so its 3D renderer is available.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "integer",
            "const": 1,
            "default": 1
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "brief": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "format": {
                "type": "string",
                "enum": [
                  "standmount",
                  "floorstanding",
                  "subwoofer"
                ]
              },
              "soundProfile": {
                "type": "string",
                "enum": [
                  "balanced",
                  "reference",
                  "warm",
                  "immersive"
                ]
              },
              "roomSize": {
                "type": "string",
                "enum": [
                  "small",
                  "medium",
                  "large"
                ]
              },
              "listeningDistanceM": {
                "type": "number",
                "minimum": 1.2,
                "maximum": 6
              }
            },
            "required": [
              "format",
              "soundProfile",
              "roomSize",
              "listeningDistanceM"
            ]
          },
          "platformId": {
            "type": "string",
            "enum": [
              "two_way_compact",
              "two_way_extended",
              "three_way_reference",
              "subwoofer_active"
            ]
          },
          "bass": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "alignment": {
                "type": "string",
                "enum": [
                  "sealed",
                  "ported"
                ]
              },
              "bassCharacter": {
                "type": "string",
                "enum": [
                  "tight",
                  "balanced",
                  "extended"
                ]
              },
              "tuningHz": {
                "type": "number",
                "minimum": 24,
                "maximum": 65
              },
              "netVolumeLitres": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 250
              },
              "portInnerDiameterMm": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 250
              },
              "portLengthMm": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000
              },
              "dampingDescription": {
                "type": "string",
                "minLength": 3,
                "maxLength": 500
              }
            },
            "required": [
              "alignment",
              "bassCharacter"
            ]
          },
          "cabinet": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "size": {
                "type": "string",
                "enum": [
                  "compact",
                  "standard",
                  "large"
                ]
              },
              "finish": {
                "type": "string",
                "enum": [
                  "walnut",
                  "oak",
                  "black_ash",
                  "satin_white",
                  "satin_black",
                  "deep_blue",
                  "custom_colour"
                ]
              },
              "finishFamily": {
                "type": "string",
                "enum": [
                  "veneer",
                  "paint",
                  "premium"
                ]
              },
              "grille": {
                "type": "string",
                "enum": [
                  "none",
                  "magnetic_fabric",
                  "perforated_metal"
                ]
              },
              "base": {
                "type": "string",
                "enum": [
                  "plinth",
                  "slim_feet",
                  "stand"
                ]
              },
              "edgeProfile": {
                "type": "string",
                "enum": [
                  "soft_radius",
                  "sculpted_radius"
                ],
                "default": "soft_radius"
              }
            },
            "required": [
              "size",
              "finish",
              "finishFamily",
              "grille",
              "base"
            ]
          },
          "personalisation": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "none",
                  "engraving",
                  "pattern",
                  "printed_panel",
                  "decal",
                  "custom_artwork"
                ],
                "default": "none"
              },
              "engraving": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "text": {
                    "type": "string",
                    "maxLength": 32
                  },
                  "font": {
                    "type": "string",
                    "enum": [
                      "modern_sans",
                      "classic_serif"
                    ]
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "rear_badge",
                      "side_lower"
                    ]
                  }
                },
                "required": [
                  "text",
                  "font",
                  "placement"
                ]
              },
              "artwork": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "application": {
                    "type": "string",
                    "enum": [
                      "side_panel",
                      "rear_panel",
                      "grille_badge"
                    ]
                  },
                  "treatment": {
                    "type": "string",
                    "enum": [
                      "matte_decal",
                      "uv_print",
                      "inlaid_pattern"
                    ]
                  },
                  "rightsConfirmed": {
                    "type": "boolean"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "not_required",
                      "pending_upload",
                      "under_review",
                      "approved",
                      "rejected"
                    ]
                  }
                },
                "required": [
                  "application",
                  "treatment",
                  "rightsConfirmed"
                ]
              }
            },
            "required": [
              "kind"
            ]
          }
        },
        "required": [
          "name",
          "brief",
          "platformId",
          "bass",
          "cabinet",
          "personalisation"
        ]
      }
    }
    list_saved_custom_configurationsAnswer

    Lists the signed-in user’s durable custom speaker designs. Use an id from this result to load or edit a shared configuration.

    View tool JSON
    {
      "name": "list_saved_custom_configurations",
      "kind": "answer",
      "impl": "imperative",
      "description": "Lists the signed-in user’s durable custom speaker designs. Use an id from this result to load or edit a shared configuration.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_saved_custom_configurationAnswer

    Loads one saved custom-speaker configuration, its current revision, and the same USD pricing estimate shown by the custom builder.

    View tool JSON
    {
      "name": "get_saved_custom_configuration",
      "kind": "answer",
      "impl": "imperative",
      "description": "Loads one saved custom-speaker configuration, its current revision, and the same USD pricing estimate shown by the custom builder.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "configurationId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "required": [
          "configurationId"
        ],
        "additionalProperties": false
      }
    }
    save_custom_configurationAction

    Creates or updates a saved custom-speaker design and returns the same USD pricing estimate shown by the custom builder. For an update, pass the id and current revision returned by get_saved_custom_configuration; changes are recorded as an agent revision.

    View tool JSON
    {
      "name": "save_custom_configuration",
      "kind": "act",
      "impl": "imperative",
      "description": "Creates or updates a saved custom-speaker design and returns the same USD pricing estimate shown by the custom builder. For an update, pass the id and current revision returned by get_saved_custom_configuration; changes are recorded as an agent revision.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "configurationId": {
            "type": "string",
            "maxLength": 128
          },
          "expectedRevision": {
            "type": "integer",
            "minimum": 1
          },
          "configuration": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "version": {
                "type": "integer",
                "const": 1,
                "default": 1
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "brief": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "format": {
                    "type": "string",
                    "enum": [
                      "standmount",
                      "floorstanding",
                      "subwoofer"
                    ]
                  },
                  "soundProfile": {
                    "type": "string",
                    "enum": [
                      "balanced",
                      "reference",
                      "warm",
                      "immersive"
                    ]
                  },
                  "roomSize": {
                    "type": "string",
                    "enum": [
                      "small",
                      "medium",
                      "large"
                    ]
                  },
                  "listeningDistanceM": {
                    "type": "number",
                    "minimum": 1.2,
                    "maximum": 6
                  }
                },
                "required": [
                  "format",
                  "soundProfile",
                  "roomSize",
                  "listeningDistanceM"
                ]
              },
              "platformId": {
                "type": "string",
                "enum": [
                  "two_way_compact",
                  "two_way_extended",
                  "three_way_reference",
                  "subwoofer_active"
                ]
              },
              "bass": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "alignment": {
                    "type": "string",
                    "enum": [
                      "sealed",
                      "ported"
                    ]
                  },
                  "bassCharacter": {
                    "type": "string",
                    "enum": [
                      "tight",
                      "balanced",
                      "extended"
                    ]
                  },
                  "tuningHz": {
                    "type": "number",
                    "minimum": 24,
                    "maximum": 65
                  },
                  "netVolumeLitres": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 250
                  },
                  "portInnerDiameterMm": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 250
                  },
                  "portLengthMm": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 1000
                  },
                  "dampingDescription": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 500
                  }
                },
                "required": [
                  "alignment",
                  "bassCharacter"
                ]
              },
              "cabinet": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "size": {
                    "type": "string",
                    "enum": [
                      "compact",
                      "standard",
                      "large"
                    ]
                  },
                  "finish": {
                    "type": "string",
                    "enum": [
                      "walnut",
                      "oak",
                      "black_ash",
                      "satin_white",
                      "satin_black",
                      "deep_blue",
                      "custom_colour"
                    ]
                  },
                  "finishFamily": {
                    "type": "string",
                    "enum": [
                      "veneer",
                      "paint",
                      "premium"
                    ]
                  },
                  "grille": {
                    "type": "string",
                    "enum": [
                      "none",
                      "magnetic_fabric",
                      "perforated_metal"
                    ]
                  },
                  "base": {
                    "type": "string",
                    "enum": [
                      "plinth",
                      "slim_feet",
                      "stand"
                    ]
                  },
                  "edgeProfile": {
                    "type": "string",
                    "enum": [
                      "soft_radius",
                      "sculpted_radius"
                    ],
                    "default": "soft_radius"
                  }
                },
                "required": [
                  "size",
                  "finish",
                  "finishFamily",
                  "grille",
                  "base"
                ]
              },
              "personalisation": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "none",
                      "engraving",
                      "pattern",
                      "printed_panel",
                      "decal",
                      "custom_artwork"
                    ],
                    "default": "none"
                  },
                  "engraving": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "text": {
                        "type": "string",
                        "maxLength": 32
                      },
                      "font": {
                        "type": "string",
                        "enum": [
                          "modern_sans",
                          "classic_serif"
                        ]
                      },
                      "placement": {
                        "type": "string",
                        "enum": [
                          "rear_badge",
                          "side_lower"
                        ]
                      }
                    },
                    "required": [
                      "text",
                      "font",
                      "placement"
                    ]
                  },
                  "artwork": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "assetId": {
                        "type": "string"
                      },
                      "application": {
                        "type": "string",
                        "enum": [
                          "side_panel",
                          "rear_panel",
                          "grille_badge"
                        ]
                      },
                      "treatment": {
                        "type": "string",
                        "enum": [
                          "matte_decal",
                          "uv_print",
                          "inlaid_pattern"
                        ]
                      },
                      "rightsConfirmed": {
                        "type": "boolean"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "not_required",
                          "pending_upload",
                          "under_review",
                          "approved",
                          "rejected"
                        ]
                      }
                    },
                    "required": [
                      "application",
                      "treatment",
                      "rightsConfirmed"
                    ]
                  }
                },
                "required": [
                  "kind"
                ]
              }
            },
            "required": [
              "name",
              "brief",
              "platformId",
              "bass",
              "cabinet",
              "personalisation"
            ]
          }
        },
        "required": [
          "configuration"
        ],
        "additionalProperties": false
      }
    }
    simulate_speaker_in_roomAction

    Runs a speaker-specific stereo room simulation for one catalog speaker. Returns its profile provenance, in-room frequency response, impulse-response URLs, and RT60. Detailed room surfaces and cardioid sources are optional.

    View tool JSON
    {
      "name": "simulate_speaker_in_room",
      "kind": "act",
      "impl": "imperative",
      "description": "Runs a speaker-specific stereo room simulation for one catalog speaker. Returns its profile provenance, in-room frequency response, impulse-response URLs, and RT60. Detailed room surfaces and cardioid sources are optional.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Exact or case-insensitive Acoustom product name."
          },
          "width": {
            "type": "number",
            "minimum": 2,
            "maximum": 20,
            "description": "Metres."
          },
          "length": {
            "type": "number",
            "minimum": 2,
            "maximum": 20,
            "description": "Metres."
          },
          "height": {
            "type": "number",
            "minimum": 2,
            "maximum": 10,
            "description": "Metres."
          },
          "roomPreset": {
            "type": "string",
            "enum": [
              "living_room",
              "reflective",
              "absorptive"
            ],
            "default": "living_room"
          },
          "surfaceAbsorption": {
            "type": "object",
            "description": "Optional absorption coefficients (0 reflective to 1 absorbent) by room surface. Omit to use roomPreset.",
            "properties": {
              "floor": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "ceiling": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "north": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "south": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "east": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "west": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              }
            },
            "additionalProperties": false
          },
          "speakerPositions": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "object",
              "properties": {
                "x": {
                  "type": "number"
                },
                "y": {
                  "type": "number"
                },
                "z": {
                  "type": "number"
                },
                "rotation": {
                  "type": "number",
                  "default": 0
                },
                "directivity": {
                  "type": "string",
                  "enum": [
                    "omni",
                    "cardioid"
                  ],
                  "default": "omni",
                  "description": "Optional source directivity. Omit for omni."
                }
              },
              "required": [
                "x",
                "y",
                "z"
              ],
              "additionalProperties": false
            },
            "description": "Optional exact left/right speaker positions in metres. When omitted, Acoustom uses its default stereo layout."
          },
          "listener": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "z": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ],
            "additionalProperties": false,
            "description": "Optional listening position in metres. Provide with speakerPositions for a custom layout."
          }
        },
        "required": [
          "productName",
          "width",
          "length",
          "height"
        ],
        "additionalProperties": false
      }
    }
    simulate_custom_speaker_in_roomAction

    Runs a validated custom build in the current live listening-lab room by default. Pass the returned build unchanged. Omit room fields to use the browser room dimensions, preset, stereo positions, and listener position, including a user-edited or image-derived room estimate. Supply room fields only to intentionally override those live values.

    View tool JSON
    {
      "name": "simulate_custom_speaker_in_room",
      "kind": "act",
      "impl": "imperative",
      "description": "Runs a validated custom build in the current live listening-lab room by default. Pass the returned build unchanged. Omit room fields to use the browser room dimensions, preset, stereo positions, and listener position, including a user-edited or image-derived room estimate. Supply room fields only to intentionally override those live values.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "build": {
            "type": "object",
            "required": [
              "derived"
            ],
            "properties": {
              "derived": {
                "type": "object",
                "required": [
                  "simulationProfile"
                ]
              }
            }
          },
          "width": {
            "type": "number",
            "minimum": 2,
            "maximum": 20,
            "description": "Metres."
          },
          "length": {
            "type": "number",
            "minimum": 2,
            "maximum": 20,
            "description": "Metres."
          },
          "height": {
            "type": "number",
            "minimum": 2,
            "maximum": 10,
            "description": "Metres."
          },
          "roomPreset": {
            "type": "string",
            "enum": [
              "living_room",
              "reflective",
              "absorptive"
            ],
            "default": "living_room"
          },
          "surfaceAbsorption": {
            "type": "object",
            "description": "Optional absorption coefficients (0 reflective to 1 absorbent) by room surface. Omit to use roomPreset.",
            "properties": {
              "floor": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "ceiling": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "north": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "south": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "east": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "west": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              }
            },
            "additionalProperties": false
          },
          "speakerPositions": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "object",
              "properties": {
                "x": {
                  "type": "number"
                },
                "y": {
                  "type": "number"
                },
                "z": {
                  "type": "number"
                },
                "rotation": {
                  "type": "number",
                  "default": 0
                },
                "directivity": {
                  "type": "string",
                  "enum": [
                    "omni",
                    "cardioid"
                  ],
                  "default": "omni",
                  "description": "Optional source directivity. Omit for omni."
                }
              },
              "required": [
                "x",
                "y",
                "z"
              ],
              "additionalProperties": false
            },
            "description": "Optional exact left/right speaker positions in metres. When omitted, Acoustom uses its default stereo layout."
          },
          "listener": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "z": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ],
            "additionalProperties": false,
            "description": "Optional listening position in metres. Provide with speakerPositions for a custom layout."
          }
        },
        "required": [
          "build"
        ],
        "additionalProperties": false
      }
    }
    get_cartAnswer

    Returns current shopping-bag items and total item count.

    View tool JSON
    {
      "name": "get_cart",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns current shopping-bag items and total item count.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_wishlistAnswer

    Returns names of catalog speakers currently saved in the wishlist.

    View tool JSON
    {
      "name": "get_wishlist",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns names of catalog speakers currently saved in the wishlist.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    add_to_cartAction

    Adds one to ten pairs of a catalog speaker to the current shopping bag. The bag is browser-local; it is not a checkout or purchase.

    View tool JSON
    {
      "name": "add_to_cart",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds one to ten pairs of a catalog speaker to the current shopping bag. The bag is browser-local; it is not a checkout or purchase.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Exact or case-insensitive Acoustom product name."
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 1
          }
        },
        "required": [
          "productName"
        ],
        "additionalProperties": false
      }
    }
    update_cart_quantityAction

    Sets a speaker quantity in the current bag; use zero to remove it. The bag is browser-local.

    View tool JSON
    {
      "name": "update_cart_quantity",
      "kind": "act",
      "impl": "imperative",
      "description": "Sets a speaker quantity in the current bag; use zero to remove it. The bag is browser-local.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Exact or case-insensitive Acoustom product name."
          },
          "quantity": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10
          }
        },
        "required": [
          "productName",
          "quantity"
        ],
        "additionalProperties": false
      }
    }
    remove_from_cartAction

    Removes a catalog speaker completely from the current shopping bag. The bag is browser-local.

    View tool JSON
    {
      "name": "remove_from_cart",
      "kind": "act",
      "impl": "imperative",
      "description": "Removes a catalog speaker completely from the current shopping bag. The bag is browser-local.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Exact or case-insensitive Acoustom product name."
          }
        },
        "required": [
          "productName"
        ],
        "additionalProperties": false
      }
    }
    toggle_wishlistAction

    Saves a catalog speaker to the wishlist, or removes it if already saved. The wishlist is browser-local.

    View tool JSON
    {
      "name": "toggle_wishlist",
      "kind": "act",
      "impl": "imperative",
      "description": "Saves a catalog speaker to the wishlist, or removes it if already saved. The wishlist is browser-local.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Exact or case-insensitive Acoustom product name."
          }
        },
        "required": [
          "productName"
        ],
        "additionalProperties": false
      }
    }
    delete_saved_custom_configurationSensitive Action

    Permanently deletes a saved custom-speaker configuration from the signed-in user's account. Use a configurationId from list_saved_custom_configurations.

    View tool JSON
    {
      "name": "delete_saved_custom_configuration",
      "kind": "transact",
      "impl": "imperative",
      "description": "Permanently deletes a saved custom-speaker configuration from the signed-in user's account. Use a configurationId from list_saved_custom_configurations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "configurationId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "required": [
          "configurationId"
        ],
        "additionalProperties": false
      }
    }
    list_local_buildsAnswer

    Lists custom speaker builds saved in this browser's local storage. Available without signing in. Each build stores the full spec data and the validated engineering profile so it can be simulated and compared.

    View tool JSON
    {
      "name": "list_local_builds",
      "kind": "answer",
      "impl": "imperative",
      "description": "Lists custom speaker builds saved in this browser's local storage. Available without signing in. Each build stores the full spec data and the validated engineering profile so it can be simulated and compared.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    save_local_buildAction

    Creates or updates a custom speaker build in this browser's local storage without requiring sign-in. Validates the configuration against the server and persists the derived engineering profile so the build can be simulated and compared. If buildId is provided, updates that build; otherwise creates a new one. The configuration follows the same schema as validate_custom_speaker_build.

    View tool JSON
    {
      "name": "save_local_build",
      "kind": "act",
      "impl": "imperative",
      "description": "Creates or updates a custom speaker build in this browser's local storage without requiring sign-in. Validates the configuration against the server and persists the derived engineering profile so the build can be simulated and compared. If buildId is provided, updates that build; otherwise creates a new one. The configuration follows the same schema as validate_custom_speaker_build.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "buildId": {
            "type": "string",
            "maxLength": 128,
            "description": "Existing build ID to update. Omit to create a new build."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "configuration": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "version": {
                "type": "integer",
                "const": 1,
                "default": 1
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "brief": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "format": {
                    "type": "string",
                    "enum": [
                      "standmount",
                      "floorstanding",
                      "subwoofer"
                    ]
                  },
                  "soundProfile": {
                    "type": "string",
                    "enum": [
                      "balanced",
                      "reference",
                      "warm",
                      "immersive"
                    ]
                  },
                  "roomSize": {
                    "type": "string",
                    "enum": [
                      "small",
                      "medium",
                      "large"
                    ]
                  },
                  "listeningDistanceM": {
                    "type": "number",
                    "minimum": 1.2,
                    "maximum": 6
                  }
                },
                "required": [
                  "format",
                  "soundProfile",
                  "roomSize",
                  "listeningDistanceM"
                ]
              },
              "platformId": {
                "type": "string",
                "enum": [
                  "two_way_compact",
                  "two_way_extended",
                  "three_way_reference",
                  "subwoofer_active"
                ]
              },
              "bass": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "alignment": {
                    "type": "string",
                    "enum": [
                      "sealed",
                      "ported"
                    ]
                  },
                  "bassCharacter": {
                    "type": "string",
                    "enum": [
                      "tight",
                      "balanced",
                      "extended"
                    ]
                  },
                  "tuningHz": {
                    "type": "number",
                    "minimum": 24,
                    "maximum": 65
                  },
                  "netVolumeLitres": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 250
                  },
                  "portInnerDiameterMm": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 250
                  },
                  "portLengthMm": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 1000
                  },
                  "dampingDescription": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 500
                  }
                },
                "required": [
                  "alignment",
                  "bassCharacter"
                ]
              },
              "cabinet": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "size": {
                    "type": "string",
                    "enum": [
                      "compact",
                      "standard",
                      "large"
                    ]
                  },
                  "finish": {
                    "type": "string",
                    "enum": [
                      "walnut",
                      "oak",
                      "black_ash",
                      "satin_white",
                      "satin_black",
                      "deep_blue",
                      "custom_colour"
                    ]
                  },
                  "finishFamily": {
                    "type": "string",
                    "enum": [
                      "veneer",
                      "paint",
                      "premium"
                    ]
                  },
                  "grille": {
                    "type": "string",
                    "enum": [
                      "none",
                      "magnetic_fabric",
                      "perforated_metal"
                    ]
                  },
                  "base": {
                    "type": "string",
                    "enum": [
                      "plinth",
                      "slim_feet",
                      "stand"
                    ]
                  },
                  "edgeProfile": {
                    "type": "string",
                    "enum": [
                      "soft_radius",
                      "sculpted_radius"
                    ],
                    "default": "soft_radius"
                  }
                },
                "required": [
                  "size",
                  "finish",
                  "finishFamily",
                  "grille",
                  "base"
                ]
              },
              "personalisation": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "none",
                      "engraving",
                      "pattern",
                      "printed_panel",
                      "decal",
                      "custom_artwork"
                    ],
                    "default": "none"
                  },
                  "engraving": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "text": {
                        "type": "string",
                        "maxLength": 32
                      },
                      "font": {
                        "type": "string",
                        "enum": [
                          "modern_sans",
                          "classic_serif"
                        ]
                      },
                      "placement": {
                        "type": "string",
                        "enum": [
                          "rear_badge",
                          "side_lower"
                        ]
                      }
                    },
                    "required": [
                      "text",
                      "font",
                      "placement"
                    ]
                  },
                  "artwork": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "assetId": {
                        "type": "string"
                      },
                      "application": {
                        "type": "string",
                        "enum": [
                          "side_panel",
                          "rear_panel",
                          "grille_badge"
                        ]
                      },
                      "treatment": {
                        "type": "string",
                        "enum": [
                          "matte_decal",
                          "uv_print",
                          "inlaid_pattern"
                        ]
                      },
                      "rightsConfirmed": {
                        "type": "boolean"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "not_required",
                          "pending_upload",
                          "under_review",
                          "approved",
                          "rejected"
                        ]
                      }
                    },
                    "required": [
                      "application",
                      "treatment",
                      "rightsConfirmed"
                    ]
                  }
                },
                "required": [
                  "kind"
                ]
              }
            },
            "required": [
              "name",
              "brief",
              "platformId",
              "bass",
              "cabinet",
              "personalisation"
            ]
          },
          "setAsActive": {
            "type": "boolean",
            "default": true,
            "description": "When true (default), mark the build as active so the listening lab uses it. The build is also written to session storage as the live custom-reference profile."
          }
        },
        "required": [
          "name",
          "configuration"
        ],
        "additionalProperties": false
      }
    }
    delete_local_buildSensitive Action

    Deletes a custom speaker build from this browser's local storage. Does not require sign-in. If the build has been synced to an account, it remains on the server.

    View tool JSON
    {
      "name": "delete_local_build",
      "kind": "transact",
      "impl": "imperative",
      "description": "Deletes a custom speaker build from this browser's local storage. Does not require sign-in. If the build has been synced to an account, it remains on the server.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "buildId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "required": [
          "buildId"
        ],
        "additionalProperties": false
      }
    }
    rename_local_buildAction

    Renames a custom speaker build in this browser's local storage without requiring sign-in.

    View tool JSON
    {
      "name": "rename_local_build",
      "kind": "act",
      "impl": "imperative",
      "description": "Renames a custom speaker build in this browser's local storage without requiring sign-in.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "buildId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "buildId",
          "name"
        ],
        "additionalProperties": false
      }
    }