Lumo Userscripts
Lumo Userscripts
Scripts you can ask for.
A native MV3 userscript manager with a standard MCP endpoint. Lumo can create, edit and enable scripts through it — with your approval.
An extension agents can operate.
Lumo connects over MCP, asks once for approval, then creates, edits and enables scripts inside the same conversation that read the page.
- Read-only until you allow writes
- Review mode keeps new scripts disabled
- Every write is audited
Read, write, review.
A probe decides whether the provider is usable; three independent switches decide what the agent may do.
Lumo
MCP client
Lumo Userscripts
MCP provider
L0 probe: installed, enabled, authorized?
sendMessage(extId, { channel: 'lumo:probe' })Stateless service + status
{ service, status: { enabled, authorized, ready } }You approve the caller once
settings → agent → allowedExtensionIdsL1 session: MCP over a runtime port
connect(extId, { name: 'lumo:mcp' })The agent calls the tool surface
tools/list · tools/callEndpoint
Off by default.
Writes
A second switch.
Review
New scripts stay disabled.
listThe library, or the scripts that run on a URL.
readgetMetadata and paged source code.
readdiagnosticsRuntime availability, registrations and errors.
readset_enabledEnable or disable a script.
writecreateValidate metadata and save a new script.
writeeditAtomic anchored edits.
writeupdateReplace the source or metadata overrides.
writeinstallInstall from a URL with its dependencies.
writedeleteMove a script to the recycle bin.
writeInstall once. Run everywhere.
Paste a URL, drop a file or use the clipboard. The install page shows the script's reach first.
- URL, file and clipboard install
- @require and @resource resolution
- Permission-aware updates
A real editor, not a textarea.
CodeMirror 6, metadata validation, overrides, values and resources — the same script the agent can edit.
- CodeMirror 6
- Metadata validation and overrides
- Values and resources in place
Native registration, two engines.
Scripts run through chrome.userScripts. A MAIN-world runner serves page scripts; an isolated host runs sandboxed ones.
GM_setValue
Per-script storage
GM_xmlhttpRequest
Cross-origin requests
GM_cookie
Cookie access
GM_download
Managed downloads
GM_notification
System notifications
GM_registerMenuCommand
Script commands
GM_addStyle
Scoped styles
GM_addElement
DOM injection
GM_setClipboard
Clipboard write
GM_getTab
Tab state
unsafeWindow
Page-world access
GM.* aliases
Promised API
1// Read once, write on change.2const theme = GM_getValue('theme', 'system');3GM_registerMenuCommand('Toggle theme', () => {4 GM_setValue('theme', theme === 'dark' ? 'light' : 'dark');5});Nothing runs without your say.
Permissions are visible before install. Updates wait for approval. Logs and the recycle bin are one click away.
| Permission | Why |
|---|---|
| userScripts | Dynamic script registration |
| storage, unlimitedStorage | Settings and bounded metadata |
| tabs, activeTab, webNavigation, scripting | Tab context and diagnostics |
| declarativeNetRequest | Redirect .user.js navigations to install |
| cookies, downloads | GM_cookie, GM_download |
| notifications, contextMenus, alarms, clipboardWrite | GM APIs and background jobs |
Recycle bin
Deleted scripts stay recoverable.
Backups
Export and restore JSON or ZIP.
Update checks
New permissions need a decision.
Logs
Registration and runtime diagnostics.
Chrome 138+ and one switch.
Chrome requires you to allow user scripts for the extension once.
Also from Lumo
Want the page understood first?
Lumo reads the page, calls browser and DevTools tools, and can drive this manager over MCP.