| Name | Description |
| actionType (required=false) | {{parameter.description}} |
| term (required=false) | {{parameter.description}} |
| fromTs (required=false) | {{parameter.description}} |
| toTs (required=false) | {{parameter.description}} |
| Name | Description |
| (required=true) | {{parameter.description}} |
{{action.description}}
| Name | Description |
| actionType (required=true) | {{parameter.description}} |
| action (required=true) | {{parameter.description}} |
| Name | Description |
| tag (required=false) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| reason (required=true) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| Name | Description |
| alertName (required=true) | {{parameter.description}} |
Anonymous Session provides the ability to offer tokens to store assets against like Zoom call ids. You can also combine them with passwords as an extra security step.
Anonymous Session provides the ability to offer tokens to store assets against like Zoom call ids. You can also combine them with passwords as an extra security step.
The audio monitor enables the monitoring of volume levels from the microphone.
The audio recorder enables the recording of audio files that can be saved to the server or downloaded.
The audio recorder enables the recording of audio files that can be saved to the server or downloaded.
×The barcode scanner makes use of the Quagga javascript library.
We have chosen to only capture EAN barcodes at present.
In your pages page.js file, include the barcode scanner script. If you want to keep a reference to your barcode scanner, add a variable to hold it.
Within your OpenForum init function, request a barcode scanner, passing it the element where you want the video feed to be displayed and the function you want called when a barcode has been detected.
If you want to keep a reference to your barcode scanner, add a callback function to recieve a reference to the created scanner.
The scanner will immediately start scanning for barcodes. When one is found, the callback function will be called passing in the code.
Comprehensive guide to MCP tools, prompts, and resources for OpenForum integration
This reference provides detailed documentation for all available MCP (Model Context Protocol) tools, prompts, and resources in the HomeLab Claude environment. Each tool includes descriptions, parameters, usage examples, and integration patterns for seamless OpenForum development.
CLASSIFICATION: System Control Interface
FUNCTION: Initiate Claude Desktop restart sequence to reload MCP configurations
DESCRIPTION: This tool provides programmatic control over the Claude Desktop application lifecycle. When invoked, it triggers a clean restart of the Claude Desktop environment, which forces a reload of all MCP tool definitions, prompts, and resources from their registry files. This is essential after creating new tools, modifying existing ones, or updating configuration files like tool-list.json. The optional prompt parameter allows you to request user confirmation before the restart occurs.
ACCESS PROTOCOL: Request "restart" or "reload MCP tools" via voice command
PARAMETERS:
prompt (boolean) - Enable confirmation dialog before system restartCLASSIFICATION: Development Environment
FUNCTION: Create, test, and deploy new MCP tools within the system matrix
DESCRIPTION: A comprehensive development toolkit for building and managing MCP tools in the OpenForum environment. This meta-tool streamlines the entire development lifecycle by providing commands to create new tool files from templates, validate JavaScript syntax, register tools in the tool-list.json registry, and browse the tool directory structure. It eliminates manual file manipulation and reduces errors by automating the deployment process. The tool also provides direct access to read existing tool source code and restart Claude Desktop to test newly created or modified tools.
ACCESS PROTOCOL: Development workflow for MCP tool creation
AVAILABLE OPERATIONS:
create - Instantiate new tool from source codetest - Execute syntax validation protocolsdeploy - Integration with tool-list.json registrylist - Display all available system toolsread - Access tool source coderestart - Reload Claude Desktop matrixtemplate - Retrieve tool construction templatelistfiles - Browse directory matrix structuresCLASSIFICATION: Code Compilation Matrix
FUNCTION: Compile and execute Java code, run Maven build protocols
DESCRIPTION: A full-featured Java development environment that bridges Claude AI with Java compilation and execution capabilities. This tool handles both standalone Java file compilation using javac and comprehensive Maven project management including building, testing, packaging, and executing Java applications. It manages classpaths, working directories, and command-line arguments automatically. Perfect for rapid prototyping, testing Java snippets, running Maven builds, executing test suites, and creating new Maven projects with specified group and artifact IDs. The tool captures both standard output and error streams to provide complete feedback on compilation and execution results.
ACCESS PROTOCOL: Java development and testing environment
AVAILABLE OPERATIONS:
compile_java - Compile .java source filesrun_java - Execute compiled Java classescompile_and_run - Combined compilation and executionmaven_compile - Maven compilation phasemaven_test - Execute Maven test suitemaven_package - Generate Maven packagemaven_clean - Clean Maven project artifactsmaven_exec - Execute Java main classcreate_maven_project - Initialize new Maven projectStructured conversation initiators with expert guidance protocols for specific domains.
CLASSIFICATION: Development Assistant Protocol
FUNCTION: Expert guidance for MCP tool development
DESCRIPTION: An AI-powered expert assistant prompt that provides specialized guidance throughout the MCP tool development process. When activated, Claude assumes the role of an experienced MCP developer who can help design tool architectures, write clean JavaScript code for OpenForum integration, debug issues, suggest best practices, and explain MCP protocol specifications. This prompt is particularly valuable for understanding the nuances of tool parameter definitions, error handling patterns, and OpenForum helper class usage.
ACCESS PROTOCOL: "Use the MCP tool developer prompt to help me..."
PARAMETERS:
tool_type (optional) - Specify tool categorycomplexity (optional) - Define complexity levelspecific_help (optional) - Target assistance areaCLASSIFICATION: Code Analysis Protocol
FUNCTION: Expert Java code review and optimization recommendations
DESCRIPTION: A specialized code review prompt that transforms Claude into an expert Java code reviewer with deep knowledge of best practices, design patterns, performance optimization, and common pitfalls. When invoked, this prompt enables comprehensive analysis of Java code including style consistency, potential bugs, security vulnerabilities, performance bottlenecks, and architectural improvements. It can focus on specific aspects like thread safety, memory management, or Java version-specific features based on your requirements.
ACCESS PROTOCOL: "Use the Java code reviewer prompt to..."
PARAMETERS:
review_focus (optional) - Specify review focus areacode_complexity (optional) - Define code complexity leveljava_version (optional) - Target Java versionData source access points, file systems, and system information repositories.
URI: openforum://HomeLab/Claude/tools
CLASSIFICATION: File System Browser
FUNCTION: Browse MCP tool files and configuration matrices
DESCRIPTION: A dynamic resource that provides real-time inventory of all MCP tools in the system. When accessed, it scans the HomeLab/Claude directory for .sjs tool files, cross-references them with tool-list.json, and returns detailed metadata including file sizes, modification dates, registration status, and tool descriptions. This resource is invaluable for system auditing, discovering available tools, and identifying orphaned or unregistered tools that may need attention.
DATA FORMAT: JSON metadata with tool information, file statistics, and registry status
URI: openforum://system/logs
CLASSIFICATION: System Monitoring Interface
FUNCTION: Access system logs and MCP interaction history
DESCRIPTION: A comprehensive logging resource that aggregates system events, MCP tool invocations, error messages, and server activity into a readable format. It provides insight into what tools have been called, when they were executed, what errors occurred, and overall system health. Essential for troubleshooting tool failures, monitoring system performance, and understanding the flow of MCP communications between Claude and the OpenForum server.
DATA FORMAT: Server status reports, recent events, error summaries
URI: openforum://projects/files
CLASSIFICATION: Project Analysis System
FUNCTION: Browse and analyze project files across development workspace
DESCRIPTION: A workspace analysis resource that scans configured project directories and generates comprehensive summaries including file counts, directory structures, programming language distributions, and project statistics. It helps Claude understand your project landscape without manually exploring the filesystem. Useful for project overviews, identifying codebases to work with, and getting quick insights into project composition and organization.
DATA FORMAT: Project summaries, file statistics, directory structures
"compile my Java project""run Maven tests"CLASSIFICATION: Tool Registry Database
FUNCTION: Defines available MCP tools in the system matrix
{
"toolName": {
"pageName": "/HomeLab/Claude",
"fileName": "ToolName.sjs"
}
}
CLASSIFICATION: Prompt Registry Database
FUNCTION: Defines available MCP prompts in the system
{
"promptName": {
"pageName": "/HomeLab/Claude",
"fileName": "PromptName.sjs"
}
}
CLASSIFICATION: Resource Registry Database
FUNCTION: Defines available MCP resources in the system
{
"resourceName": {
"pageName": "/HomeLab/Claude",
"fileName": "ResourceName.sjs"
}
}
/web/content/default/HomeLab/Claude/*.sjs files + tool-list.json*Prompt.sjs files + prompt-list.json*Resource.sjs files + resource-list.jsonfile.getFileAsString(), file.saveStringToFile()js.getObject() for dynamic loading/web/content/TOOL NOT FOUND: Verify tool-list.json and restart Claude Desktop
SYNTAX ERRORS: Use MCPDevTool test action to validate code
FILE PERMISSIONS: Ensure OpenForum has read/write access
JAVA COMPILATION: Check classpath and file path configurations
Documentation Version: 1.0.0
MCP Server: OpenForum JavaScript Server
Last Updated: Generated dynamically from active tool registry
Support: For issues or questions, consult the MCP Tools Guide
The content editor is a two panel editor. It is intended for pages that just contain text and images rather than those that are part of a web application.
The content editor is a two panel editor. It is intended for pages that just contain text and images rather than those that are part of a web application.
The two panels can be resized by dragging the separator between them.
The left hand panel gives an over view of the page being edited at the top, a list of pages to edit in the middle and a view of the image library at the bottom.
The right hand panel gives a view of the page content for editing. At the top is the title as shown on the browser tab and below are the sections of the page.
Above and below each page section are + buttons that will add content either above or below existing elements of content. There are also up and down buttons to move the content up and down the sections in the page.

On clicking + you are presented with a list of blocks that can be added to the page.

For simple formatted text and images, the WYSIWYG block allows you to enter text and type set it adding text styles, links and lists etc.
To add an image into the WYSIWYG panel, find the image in the image library in the left hand pane or select to upload one. Drag the image into the WYSIWYG content block. Click on it to set any alternative text or its placement in the text.
A number of other block types are available that add either configurable page elements or page layouts.
To see how your page will look once published, click on Preview at the top of the left hand pane. This will save the page to a space for unpublished pages and make the page visible in another browser tab. Saving the page once the preview has been opened will automatically update the preview tab.
Once you are happy with your page, click Publish and the page will be published to the live area of your website.
To create a new page select Create A New Page. In the popup window, enter the new pages title and optionally select a category. Select Create New Page and a new page will be added to the list and the editor for the page opened.

The data transformer is intended take text from the input and transform it, then place it in the output. No data is shared or sent to our server unless you choose to save it. To do this you will need to have an Electric Llama Company account
To perform a data transformation, you have to do all the hard work, by writing Javascript in the code editor at the bottom of the screen.
The text in the input editor is made available as the variable input and the text in the output can be set by setting the output variable.
A number of useful transformer examples are given below to get you started.
If you have an Electric Llama Company account, you can save any transformers you have written for later use, alternatively each text editor has a download to desktop option.
You can drag and drop files into any of the editors on the transformer page.
The data transformer is intended take text from the input and transform it, then place it in the output. No data is shared or sent to our server unless you choose to save it. To do this you will need to have an Electric Llama Company account
To perform a data transformation, you have to do all the hard work, by writing Javascript in the code editor at the bottom of the screen.
The text in the input editor is made available as the variable input and the text in the output can be set by setting the output variable.
A number of useful transformer examples are given below to get you started.
If you have an Electric Llama Company account, you can save any transformers you have written for later use, alternatively each text editor has a download to desktop option.
You can drag and drop files into any of the editors on the transformer page.
The Data Transformer has a few helper functions to make common actions easier.
These functions are provided by an instance of the DataTransformer or DT for short.
Often input data is based on a record per line.
DT.toLines( data, rowSeparator ) converts the data to an array of lines of text.
DT.linesToString( lines, separator ) converts an array of lines to a string
DT.forEachLine( fn, data) apply a function to each line of text in the data.
DT.toTable(data, rowSeparator, cellSeparator);
DT.tableToString(table, rowSeparator, cellSeparator);
DT.NL the new line character
DT.TAB the tab character
| Name | Description |
| Name | Description |
| pageName (required=true) | {{parameter.description}} |
| category (required=true) | {{parameter.description}} |
| Name | Description |
| category (required=false) | {{parameter.description}} |
| Name | Description |
| Name | Description |
| imageData (required=true) | {{parameter.description}} |
A menu bar editor.
A menu bar editor.
The Publisher AddOn enables the publishing of packages from the developent area of a site into prodction.
All text files in the package (page and sub pages) are translated before publishing. References to Development are removed so a path /MyPage becomes /MyPage
Deletions are not processed immediately, but placed in a deletions script file to run later.
The Publisher AddOn enables the publishing of packages from the developent area of a site into prodction.
All text files in the package (page and sub pages) are translated before publishing. References to Development are removed so a path /MyPage becomes /MyPage
Deletions are not processed immediately, but placed in a deletions script file to run later.
Include script: } Function to generate 3 sizes of QR Code }
Include script:
The Release AddOn enables the releaseing of packages for use on other sites.
The Release AddOn enables the releaseing of packages for use on other sites.
Include DB.sjs on your sjs file
Check SSL Certificates on remote sites
Check SSL Certificates on remote sites
| Name | Description |
| domain (required=true) | {{parameter.description}} |
| Name | Description |
The OpenForum tester is based around a simple idea. There are three stages to a test:
The testing frame work is based on a fluent style interface. Methods are chained together to create meaningful flows of actions.
The OpenForum tester is based around a simple idea. There are three stages to a test:
The testing frame work is based on a fluent style interface. Methods are chained together to create meaningful flows of actions.
To create a simple test on the server, first import the test framework:
You can run the test using the Tester Client by supplying the pageName and test fileName then pressing run tests. Here is a link to fill in the fields for you. /OpenForum/AddOn/Tester?pageName=/OpenForum/AddOn/Tester/QuickReference&testFileName=example.test.sjs
Alternatively you can call the Tester get method: https://open-forum.onestonesoup.org/OpenForum/AddOn/Tester?action=runTest&pageName=/OpenForum/AddOn/Tester/QuickReference&testScript=example.test.sjs or run the test on the server using the Server Console editor plugin
Full Reference| Name | Description |
| pageName (required=true) | {{parameter.description}} |
| ignoreChanges (required=false) | {{parameter.description}} |
| Name | Description |
| pageName (required=true) | {{parameter.description}} |
| Name | Description |
| Name | Description |
| row (required=true) | {{parameter.description}} |
| indexName (required=true) | {{parameter.description}} |
| pageName (required=true) | {{parameter.description}} |
| fileName (required=true) | {{parameter.description}} |
Adds user feedback buttons to a page.
Adds user feedback buttons to a page.
An implementation of Work Queues to manage tasks that need to be processed sequentially.
--8<--
An implementation of Work Queues to manage tasks that need to be processed sequentially.
-->8--| Name | Description |
| name (required=true) | {{parameter.description}} |
| status (required=true) | {{parameter.description}} |
| slaTime (required=true) | {{parameter.description}} |
| data (required=true) | {{parameter.description}} |
| queue (required=true) | {{parameter.description}} |
| Name | Description |
| Name | Description |
| queue (required=true) | {{parameter.description}} |
| Name | Description |
| queue (required=true) | {{parameter.description}} |
| itemId (required=true) | {{parameter.description}} |
| Name | Description |
| fromQueue (required=true) | {{parameter.description}} |
| itemId (required=true) | {{parameter.description}} |
| toQueue (required=) | {{parameter.description}} |
| Name | Description |
| status (required=true) | {{parameter.description}} |
| itemId (required=true) | {{parameter.description}} |
| queue (required=) | {{parameter.description}} |
| Name | Description |
| queue (required=true) | {{parameter.description}} |
| itemId (required=true) | {{parameter.description}} |
| Name | Description |
| queue (required=true) | {{parameter.description}} |
| itemId (required=true) | {{parameter.description}} |
| Name | Description |
| queue (required=true) | {{parameter.description}} |
| itemId (required=true) | {{parameter.description}} |
| Name | Description |
| name (required=true) | {{parameter.description}} |
| status (required=true) | {{parameter.description}} |
| slaTime (required=true) | {{parameter.description}} |
| data (required=true) | {{parameter.description}} |
| queue (required=true) | {{parameter.description}} |