Skip to content

MCP Server

The Autoblow MCP server lets AI assistants that support the Model Context Protocol control your Autoblow Ultra or Vacuglide. You ask in plain words (“start slow”, “write me a 10-minute session that slowly builds”, “stop”) and the assistant calls the matching device commands for you.

Every HTTP API command is available as a tool, except SPIFFS diagnostics. The VacuPump and the Ultra 2 are not supported yet.

  • A device token. Follow the Ultra setup guide or the Vacuglide setup guide to get yours.
  • An online device. The server can only reach a device that is connected to the Autoblow cloud. On the Vacuglide, hold the mode button for about 2.5 seconds to turn online mode on.
  • An AI app that supports remote MCP servers, also called connectors.

The server runs at:

https://mcp.autoblow.com/mcp

Send your device token in the Authorization header:

Authorization: Bearer YOUR_DEVICE_TOKEN
Terminal window
claude mcp add --transport http autoblow https://mcp.autoblow.com/mcp \
--header "Authorization: Bearer YOUR_DEVICE_TOKEN"

Some apps let you add a connector by URL but cannot set headers. For those, put the token in the URL:

https://mcp.autoblow.com/mcp?token=YOUR_DEVICE_TOKEN

Each connection controls the one device its token belongs to. To use an Ultra and a Vacuglide, add two connections, each with its own token, for example autoblow-ultra and autoblow-vacuglide.

Once connected, ask your assistant things like:

  • “Is my Vacuglide connected?”
  • “Start slow.” / “A little faster.” / “Set it to 60%.”
  • “Full strokes on my Ultra, 40% speed.”
  • “Write me a 10-minute session that slowly builds and ends strong.”
  • “A steady 120 BPM rhythm.”
  • “Stop.”

For a request that describes a pattern, the assistant writes a script and uploads it with sync_script_upload_funscript, then plays it with sync_script_start.

ultra_oscillate_stop and vacuglide_target_speed_stop stop the device whatever it is doing, including a playing script. When you ask your assistant to stop, it calls one of these.

The assistant needs a moment to decide to call the tool, so saying “stop” is not instant. The buttons on the device always work.

ToolWhat it does
get_connection_statusWhether the device is online, its type and its cluster
get_device_infoDevice type, hardware and firmware version, firmware status, MAC address
get_stateCurrent mode, selected local script, speeds and sync script position
local_script_start / local_script_stopResume or pause the local script
local_script_listThe local scripts loaded on the device, by slot (on the Ultra this also pauses the device)
local_script_swap / local_script_moveReorder local script slots
sync_script_upload_funscriptUpload a funscript (time in ms, position 0 to 100) and load it, ready to play
sync_script_upload_funscript_urlDownload a funscript from a URL and load it
sync_script_upload_csv / sync_script_upload_csv_urlSame, for time_ms,position CSV scripts
sync_script_load_tokenLoad a previously uploaded script by its token
sync_script_start / sync_script_stopPlay the loaded script from a position, or pause it
sync_script_offsetShift the script against the video, in ms (positive runs the device ahead)
sync_script_loopLoop the script on or off
firmware_update_info / firmware_update_startCheck for and install the latest firmware
ToolWhat it does
ultra_oscillate_setStroke between two positions at a speed (all 0 to 100; the positions at least 10 apart)
ultra_oscillate_startResume oscillating with the last settings
ultra_oscillate_stopStop, whatever the Ultra is doing
ultra_gotoMove the stroker to a position at a speed
ultra_local_script_setPlay a local script (0 to 9) at a speed level (0 to 9)
ultra_local_script_replaceReplace a local script slot with a script from the library
ToolWhat it does
vacuglide_target_speed_setRun the motor at a speed, 0 to 100%
vacuglide_target_speed_stopStop, whatever the Vacuglide is doing
vacuglide_local_script_setPlay a local script (0 to 29) from the start
vacuglide_local_script_replaceReplace a local script slot with a script from the library
vacuglide_valve_stroke_plus / vacuglide_valve_stroke_minusOpen or close the stroke plus or stroke minus valve

A tool for one device refuses to run on the other.

Scripts that the assistant writes are funscripts: a list of { at, pos } actions, with time in ms and position from 0 to 100. The two devices play them differently, and the tool descriptions tell the assistant how:

  • Ultra: the stroker follows the positions. A move can be at most 400 position units per second (a full 0 to 100 move takes at least 250 ms) and at least 70 ms long.
  • Vacuglide: the speed of each move sets the motor speed. 600 position units per second is 100% (a 0 to 100 move in about 170 ms), and faster moves are capped there. Below about 25 units per second (4%) the motor stalls.

Uploaded scripts are stored for 9 days under the token the upload returns, so you can load them again with sync_script_load_token.

What you seeWhat to do
{ "connected": false }The device is offline. Turn it on and put it in online mode.
HTTP 401The request has no device token. Check the Authorization header or the ?token= URL.
”This tool is for the Autoblow Ultra; the device is a vacuglide”The assistant picked the other device’s tool. Ask again, naming your device.
A request is rejected before it reaches the deviceA value is out of range, for example a speed above 100.