ScriptCompiler
REMOTE · MCP.SCRIPTCOMPILER.COM · 2 COMPONENTS
Create motion and play it on The Handy, Autoblow, VacuGlide, Kiiroo, OSSM and Lovense toys.
Available components
Last scanned (22 hours ago)
Scores higher than 58% of remote servers
Reachable. Last reached 4 Nov 2026.
Category IoT and Hardware
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (clear_points). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3327 tokens (~195/item across 17 items; 16 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management43
- Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 70% of tool parameters carry a description.Partial
- Structured output schemas are declared (6% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- 22 Oct 26 66
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://mcp.scriptcompiler.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=scriptcompiler.com | CN=WE1,O=Google Trust Services,C=US | 2 Nov 2026 | 31 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 8458e5c5e9f737c70e664eb96a1eb2ed |
| SANs: scriptcompiler.com, *.scriptcompiler.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.scriptcompiler.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| scriptcompiler.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.scriptcompiler.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.scriptcompiler.com/mcp | HTTPS enforced | 301 | https://mcp.scriptcompiler.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
clear_points Clear points ~127
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 | Type | Req | Description |
|---|---|---|---|
| axis | – | – | – |
| editor_code | – | – | 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. |
| from_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| to_ms | – | – | End of the time range in milliseconds. |
No output schema declared.
No examples provided.
control_playback Control playback ~107
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 | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| at_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| editor_code | – | – | 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. |
No output schema declared.
No examples provided.
create_motion Create motion ~143
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 | Type | Req | Description |
|---|---|---|---|
| actions | – | – | Exact funscript points, for example from a pasted funscript. Use instead of sections. |
| device | string | – | The device the motion is fitted to. |
| repeat | integer | – | Play the whole motion this many times in a row. |
| sections | – | – | The motion as consecutive sections. Use this for described motion. |
| title | – | – | Short name for the motion, for example Slow build-up. Used as the funscript title and download file name. |
No output schema declared.
No examples provided.
derive_axis Derive axis ~194
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 | Type | Req | Description |
|---|---|---|---|
| delay_ms | number | – | – |
| editor_code | – | – | 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. |
| invert | boolean | – | – |
| method | string | – | – |
| position_offset | number | – | – |
| scale | number | – | – |
| source_axis | string | yes | – |
| target_axis | string | yes | – |
| target_max | number | – | – |
| target_min | number | – | – |
No output schema declared.
No examples provided.
edit_chapters Edit chapters ~160
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 | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| editor_code | – | – | 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. |
| from_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| name | – | – | – |
| new_name | – | – | – |
| to_ms | – | – | End of the time range in milliseconds. |
No output schema declared.
No examples provided.
edit_points Edit points ~209
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 | Type | Req | Description |
|---|---|---|---|
| add | – | – | Points to put at exact times. |
| axis | string | – | Axis. stroke is the main up and down axis. |
| editor_code | – | – | 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 | – | – | Times in milliseconds of points to delete. |
| replace_within_ms | integer | – | How close counts as the same point. |
No output schema declared.
No examples provided.
export_funscript Funscript file ~128
The motion as a .funscript file with ScriptCompiler metadata, for the motion card's Download button.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | – | – | Exact funscript points, for example from a pasted funscript. Use instead of sections. |
| device | string | – | The device the motion is fitted to. |
| repeat | integer | – | Play the whole motion this many times in a row. |
| sections | – | – | The motion as consecutive sections. Use this for described motion. |
| title | – | – | Short name for the motion, for example Slow build-up. Used as the funscript title and download file name. |
No output schema declared.
No examples provided.
look_at_video Look at video ~163
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 | Type | Req | Description |
|---|---|---|---|
| at_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| count | integer | – | – |
| editor_code | – | – | 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. |
| from_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| to_ms | – | – | End of the time range in milliseconds. |
No output schema declared.
No examples provided.
play_motion Play motion ~194
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 | Type | Req | Description |
|---|---|---|---|
| actions | – | – | Exact funscript points, for example from a pasted funscript. Use instead of sections. |
| connection_key | string | 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). |
| device | string | – | Which device the key belongs to. bluetooth covers every Bluetooth toy paired on the ToyController phone screen. |
| repeat | integer | – | Play the whole motion this many times in a row. |
| sections | – | – | The motion as consecutive sections. Use this for described motion. |
| title | – | – | Short name for the motion, for example Slow build-up. Used as the funscript title and download file name. |
No output schema declared.
No examples provided.
read_points Read points ~124
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 | Type | Req | Description |
|---|---|---|---|
| axis | string | yes | Axis. stroke is the main up and down axis. |
| editor_code | – | – | 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. |
| from_ms | integer | yes | – |
| to_ms | integer | yes | – |
No output schema declared.
No examples provided.
read_script Read script ~127
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 | Type | Req | Description |
|---|---|---|---|
| editor_code | – | – | 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. |
No output schema declared.
No examples provided.
run_editor_tool Run editor tool ~219
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 | Type | Req | Description |
|---|---|---|---|
| axis | string | – | Axis. stroke is the main up and down axis. |
| editor_code | – | – | 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. |
| from_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| params | – | – | The tool's settings by name. |
| to_ms | – | – | End of the time range in milliseconds. |
| tool | string | yes | Tool id from read_script, for example smoothing. |
No output schema declared.
No examples provided.
stop_motion Stop motion ~91
Stop whatever is playing on the user's device.
| Name | Type | Req | Description |
|---|---|---|---|
| connection_key | string | 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). |
| device | string | – | Which device the key belongs to. bluetooth covers every Bluetooth toy paired on the ToyController phone screen. |
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | yes | – |
| stopped | boolean | yes | – |
No examples provided.
undo_last_change Undo last change ~80
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 | Type | Req | Description |
|---|---|---|---|
| editor_code | – | – | 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. |
No output schema declared.
No examples provided.
write_coordinated_axes Write coordinated axes ~276
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 | Type | Req | Description |
|---|---|---|---|
| axis_specs | array | yes | – |
| editor_code | – | – | 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. |
| schedule | array | yes | – |
| target_duration_ms | – | – | – |
No output schema declared.
No examples provided.
write_points Write points ~231
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 | Type | Req | Description |
|---|---|---|---|
| actions | – | – | Exact points. |
| axis | string | – | Axis. stroke is the main up and down axis. |
| editor_code | – | – | 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 | boolean | – | – |
| from_ms | – | – | Start of the time range in milliseconds on the video timeline. |
| repeat | integer | – | – |
| sections | – | – | The motion as consecutive sections. |
No output schema declared.
No examples provided.
How do I install the ScriptCompiler MCP server?
ScriptCompiler is a hosted endpoint at https://mcp.scriptcompiler.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.scriptcompiler.com
claude mcp add --transport http com-scriptcompiler-scriptcompiler 'https://mcp.scriptcompiler.com/mcp'
What is the ScriptCompiler MCP server?
ScriptCompiler is an MCP server listed in the public MCP registry as com.scriptcompiler/scriptcompiler. Create motion and play it on The Handy, Autoblow, VacuGlide, Kiiroo, OSSM and Lovense toys. This page covers its hosted endpoint (https://mcp.scriptcompiler.com/mcp).
Is the ScriptCompiler MCP server safe to use?
ScriptCompiler scores 72 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ScriptCompiler MCP server expose?
ScriptCompiler exposes 16 tools: create_motion, export_funscript, play_motion, stop_motion, read_script, and 11 more. Their descriptions and schemas cost roughly 2,573 tokens of context every time the server is loaded.
Does the ScriptCompiler MCP server require authentication?
No. We connected to ScriptCompiler without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the ScriptCompiler MCP server still maintained?
ScriptCompiler is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.