AI PLATE/ DocsBack to AI Plate
Documentation / Plugins
YOUR AI PLATE HANDBOOK

Your first plugin

Create a complete JavaScript-backed greeting tool.

Desktop source reviewed October 5, 2026

1. Create plugin.json

Create hello-tools/plugin.json with this complete manifest. The JavaScript is an async function body: params contains the input; return a JSON-serializable object. Do not wrap the code in a module export.

plugin.json
{
  "id": "hello_tools",
  "name": "Hello Tools",
  "version": "1.0.0",
  "description": "A minimal greeting tool for AI Plate.",
  "enabled": true,
  "tools": [
    {
      "name": "hello_tools_greet",
      "description": "Greet someone by name.",
      "parametersJsonSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name to greet"
          }
        },
        "required": [
          "name"
        ]
      },
      "handler": {
        "type": "javascript",
        "code": "if (typeof params.name !== 'string' || !params.name.trim()) return { error: 'A name is required.' };\nreturn { greeting: 'Hello, ' + params.name.trim() + '!' };"
      }
    }
  ]
}
json

2. Package and install

PowerShell — from the parent folder
Compress-Archive -Path .\hello-tools\* -DestinationPath .\hello-tools.plugin.zip
powershell
  • Open desktop Settings → Plugins and import hello-tools.plugin.zip.
  • Enable Hello Tools.
  • Ask: “Use hello_tools_greet to greet Ada.”
  • Expected tool result: { "greeting": "Hello, Ada!" }.
Download Hello Tools starter

3. Test the edge cases

Test a missing name and a non-string name. Both should return an error object. Manifest schemas describe inputs to the model; your handler must still validate them.

Sample tool input
{ "name": "Ada" }
json
Implementation sources

Paths in your AI Plate source checkout:

  • core/plugin-manager.ts
  • core/types.ts
AI Plate product & developer documentation · Static reference, no API keys collected.