ScriptCompiler
Server Details
Create motion and play it on The Handy, Autoblow, VacuGlide, Kiiroo, OSSM and Lovense toys.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
16 toolsclear_pointsClear pointsDestructiveInspect
Delete points. Give axis to clear one axis, or leave it out for every axis. Give from_ms and to_ms to clear only that range. Only when the user asks to clear, delete or start over.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| to_ms | No | End of the time range in milliseconds. | |
| from_ms | No | Start of the time range in milliseconds on the video timeline. | |
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
control_playbackControl playbackInspect
Play, pause or jump to at_ms in the user's editor, for example to have the user watch and feel one part. play and pause need a loaded video.
| Name | Required | Description | Default |
|---|---|---|---|
| at_ms | No | Start of the time range in milliseconds on the video timeline. | |
| action | Yes | ||
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
create_motionCreate motionRead-onlyIdempotentInspect
Render a described motion (or exact funscript points) and show it without playing it on a device. Needs no connection key. To play it afterwards, call play_motion with the same motion.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Short name for the motion, for example Slow build-up. Used as the funscript title and download file name. | |
| device | No | The device the motion is fitted to. | handy |
| repeat | No | Play the whole motion this many times in a row. | |
| actions | No | Exact funscript points, for example from a pasted funscript. Use instead of sections. | |
| sections | No | The motion as consecutive sections. Use this for described motion. |
derive_axisDerive axisInspect
Build target_axis from source_axis over the whole script. method follow makes a scaled, optionally inverted copy shifted by delay_ms and position_offset, for example a gentler, delayed surge from the stroke. method per_stroke puts one point on each stroke of the source, moving between target_min (at the bottom) and target_max (at the top), best for vibrate.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| invert | No | ||
| method | No | follow | |
| delay_ms | No | ||
| target_max | No | ||
| target_min | No | ||
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. | |
| source_axis | Yes | ||
| target_axis | Yes | ||
| position_offset | No |
edit_chaptersEdit chaptersInspect
Change the chapters: add (name, from_ms, to_ms), rename (name, new_name), retime (name, from_ms, to_ms), remove (name) or clear_all. Chapters are found by exact name and overlapping neighbours are trimmed. Only when the user asks for a chapter change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| to_ms | No | End of the time range in milliseconds. | |
| action | Yes | ||
| from_ms | No | Start of the time range in milliseconds on the video timeline. | |
| new_name | No | ||
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
edit_pointsEdit pointsInspect
Add, move or delete single points on one axis at exact times. Every other point stays as it is. add puts each point exactly where given and replaces an existing point within replace_within_ms of it. remove_at_ms deletes the point nearest each time, within replace_within_ms. To move a point, remove its old time and add the new one. Points are not speed fitted; the result lists any part now too fast for devices. Lands in the editor at once as one Undo step.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Points to put at exact times. | |
| axis | No | Axis. stroke is the main up and down axis. | stroke |
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. | |
| remove_at_ms | No | Times in milliseconds of points to delete. | |
| replace_within_ms | No | How close counts as the same point. |
export_funscriptFunscript fileRead-onlyIdempotentInspect
The motion as a .funscript file with ScriptCompiler metadata, for the motion card's Download button.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Short name for the motion, for example Slow build-up. Used as the funscript title and download file name. | |
| device | No | The device the motion is fitted to. | handy |
| repeat | No | Play the whole motion this many times in a row. | |
| actions | No | Exact funscript points, for example from a pasted funscript. Use instead of sections. | |
| sections | No | The motion as consecutive sections. Use this for described motion. |
look_at_videoLook at videoRead-onlyIdempotentInspect
See frames of the user's video as small pictures: one at at_ms, or up to 6 spread evenly from from_ms to to_ms. Use it to see what happens in a part, not to time single strokes. Only works after the user turns on Let my AI see video frames.
| Name | Required | Description | Default |
|---|---|---|---|
| at_ms | No | Start of the time range in milliseconds on the video timeline. | |
| count | No | ||
| to_ms | No | End of the time range in milliseconds. | |
| from_ms | No | Start of the time range in milliseconds on the video timeline. | |
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
play_motionPlay motionInspect
Render a described motion (or exact funscript points) and play it on the user's device, replacing anything already playing. Returns what will actually play.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Short name for the motion, for example Slow build-up. Used as the funscript title and download file name. | |
| device | No | Which device the key belongs to. bluetooth covers every Bluetooth toy paired on the ToyController phone screen. | handy |
| repeat | No | Play the whole motion this many times in a row. | |
| actions | No | Exact funscript points, for example from a pasted funscript. Use instead of sections. | |
| sections | No | The motion as consecutive sections. Use this for described motion. | |
| connection_key | Yes | The device's connection key (Handy) or device token (Autoblow, VacuGlide) from the manufacturer's app, or the Device ID on the ToyController phone screen (Bluetooth toys). |
read_pointsRead pointsRead-onlyIdempotentInspect
The points of one axis between from_ms and to_ms, thinned out evenly past 400 points, plus a summary of that range: main stroke frequency, position range and whether it builds or winds down.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | Axis. stroke is the main up and down axis. | |
| to_ms | Yes | ||
| from_ms | Yes | ||
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
read_scriptRead scriptRead-onlyIdempotentInspect
Overview of the script open in the user's ScriptCompiler editor: each axis with its points, range, strokes and speed, parts too fast for devices (over 400 units per second), chapters, the video length, the play position, the user's selection, whether video frames are allowed, and the editor tools run_editor_tool can run. Call it first, and again after the user edits.
| Name | Required | Description | Default |
|---|---|---|---|
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
run_editor_toolRun editor toolInspect
Run one of the editor's own Tools panel tools (Smoothing, Speed Limiter, Simplify and the rest) on an axis, as if the user ran it. read_script lists the ids and settings. Give from_ms and to_ms for one range, or leave both out for the whole axis. A tool marked needs ScriptCompiler Pro cannot run: tell the user it is part of Pro and do not copy its effect another way. Lands as one Undo step.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Axis. stroke is the main up and down axis. | stroke |
| tool | Yes | Tool id from read_script, for example smoothing. | |
| to_ms | No | End of the time range in milliseconds. | |
| params | No | The tool's settings by name. | |
| from_ms | No | Start of the time range in milliseconds on the video timeline. | |
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
stop_motionStop motionIdempotentInspect
Stop whatever is playing on the user's device.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | Which device the key belongs to. bluetooth covers every Bluetooth toy paired on the ToyController phone screen. | handy |
| connection_key | Yes | The device's connection key (Handy) or device token (Autoblow, VacuGlide) from the manufacturer's app, or the Device ID on the ToyController phone screen (Bluetooth toys). |
Output Schema
| Name | Required | Description |
|---|---|---|
| device | Yes | |
| stopped | Yes |
undo_last_changeUndo last changeInspect
Undo the last change you made in the editor. It refuses when the user edited those axes since, so it never undoes the user's own work.
| Name | Required | Description | Default |
|---|---|---|---|
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. |
write_coordinated_axesWrite coordinated axesInspect
Write several axes at once from one shared stroke rhythm, so all axes keep the same beat. schedule is an ordered, gap-free list of cycles (start_ms, duration_ms, kind stroke or hold, and for strokes bottom 0, top 100, peak_frac 0.5 and intensity 50 unless given). One stroke cycle is one full down and up. A hold pauses where the last cycle ended or at its position. Each axis spec is tracking (curve snap, ease, settle, hold-peak or rise, phase_lag 0-1, amplitude, baseline, per_cycle_track) or static (position, ease_in_ms). amplitude scales the schedule depth: the stroke axis always uses amplitude 50 and baseline 50, companions use a smaller amplitude. Set speed with duration_ms and depth with bottom and top. Pass target_duration_ms when the user asks for a length; the call fails if the schedule does not match it. Lands as one Undo step and returns measured stats.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule | Yes | ||
| axis_specs | Yes | ||
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. | |
| target_duration_ms | No |
write_pointsWrite pointsInspect
Replace a time range on one axis with a described motion (sections, the same as play_motion) or with exact points. With sections the motion starts at from_ms and replaces what was there until it ends. With actions the points keep their own times, or are moved so the first one lands on from_ms. The motion is fitted to 400 units per second like the Speed Limiter unless fit_to_device_speed is false. Lands in the editor at once as one Undo step. To add, move or delete single points without replacing a range, use edit_points.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | Axis. stroke is the main up and down axis. | stroke |
| repeat | No | ||
| actions | No | Exact points. | |
| from_ms | No | Start of the time range in milliseconds on the video timeline. | |
| sections | No | The motion as consecutive sections. | |
| editor_code | No | The editor code the user reads from the editor's AI panel under Your own AI, for example K7P4QX. Leave it out when connected with the account address. | |
| fit_to_device_speed | No |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
- First observed
clear_points - First observed
control_playback - First observed
create_motion - First observed
derive_axis - First observed
edit_chapters - First observed
edit_points - First observed
export_funscript - First observed
look_at_video - First observed
play_motion - First observed
read_points - First observed
read_script - First observed
run_editor_tool - First observed
stop_motion - First observed
undo_last_change - First observed
write_coordinated_axes - First observed
write_points
Related MCP Connectors
Uncensored image, image-to-video and chat generation for adult apps. OpenAI-compatible, pay per use.
- SpicyGenOAuthai.spicygen
AI adult image, character and movie generator (18+). Characters, images, videos, movies, credits.
Create short-form scripts and paced audio, then hand clips to ScriptSeen's on-device video maker.
Chat with adult (18+) AI companions that remember you, send photos and voice notes and run your toy.
1
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTurn words, images, and audio into an animated video with MP4 export.MIT

postward-creative-mcpofficial
AlicenseBqualityBmaintenanceEnables AI assistants to generate images, videos, music, and voiceovers with your own provider keys, and edit video locally with ffmpeg — all on your machine with no account, watermark, or telemetry.3562 npmMIT
OpenScreenofficial
AlicenseAqualityNot gradedmaintenanceOpen-source screen recorder and video editor that coding agents drive over stdio: record, edit, export demo videos and add shader effects.552 npm4,518MIT- AlicenseAqualityCmaintenanceEnables AI assistants to generate animated overlays and edit short videos — cutting clips together, removing pauses, adding captions, and exporting overlays as MP4, MOV or WebM with transparent or green-screen backgrounds. All rendering, transcription and media handling happen locally on the user's own computer.11MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.