Skip to main content

Overview

TypingMind plugin can be completely described using a JSON object. Below is the description of each feature of the plugin and their corresponding JSON schema. Plugin name, title, icon, overview, GitHub source URL, and authentication type, and permissions are defined as the following example:
You can use these values in permissions:
  • read_user_message: read the latest user message and its attachments.
  • read_chat_attachments: read the chat files that the AI sends in typingmind-attachment parameters.
User settings example:
Plugin context example:
OAuth config example:
Plugin functions is defined as an array of multiple function. Here is an example for a function with HTTP Action implementation type.
Here is an example for a function with JavaScript implementation type.
Here is an example for a function with MCP implementation type.

Chat file parameters

A parameter of the type typingmind-attachment gets a file from the chat. An array of this type gets more than one file. If the plugin has the read_chat_attachments permission, the JavaScript function receives the files in resources.attachments.
For more information, refer to Chat file parameters.

JavaScript source files

For plugins hosted on GitHub, a JavaScript entry in pluginFunctions can use codeFile instead of an inline code string. This keeps the implementation in a separate .js file. codeFile is a path relative to the repository root, where plugin.json is stored. For example, "codeFile": "functions/add-numbers.js" loads that file from the same repository and branch as plugin.json. Example function configuration in plugin.json:
Contents of functions/add-numbers.js:
The file must define a top-level function with the same name as openaiSpec.name.
  • Use codeFile only in JavaScript entries in pluginFunctions. Set "implementationType": "javascript" in these entries.
  • Existing inline code strings are still supported. If both codeFile and code are set, the file contents take precedence.
  • TypingMind reads the file during GitHub import and stores its contents as code. The file is not fetched on each function call.
  • Import fails if the referenced file cannot be fetched; it does not fall back to inline code.
  • For standalone JSON imports or the JSON Editor, include the implementation in code. File references are resolved by the GitHub importer.

Complete example

Below is a complete example JSON source for the “Web Search (Serp)” plugin: