gradeNot graded
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
}
}