publish_plugin
Publish a package to the workspace's private catalog and enable it for this project. The slug is derived from the name (lowercased, de-duplicated with -2/-3 suffixes against the workspace's catalog).
warning
The source code is stored as inert display data for the plugin's detail view — it is never executed and never ships into runs or generation bundles.
Request
POST /api/v1/ops/projects/{project}/plugins
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
project | path | string | yes | The project's public id. |
name | body | string | yes | The plugin's display name. The slug is derived from it. |
description | body | string | no | Short description shown in the catalog. |
category | body | string | no | Catalog category. Default Data & Utilities. |
version | body | string | no | Version string. Default 1.0.0. |
tools | body | string[] | no | Tool names the plugin advertises. |
source | body | string | no | Source code, shown on the plugin's detail view. |
filename | body | string | no | Display filename for the source. Default index.js. |
visibility | body | string | no | private (default) or public. |
- cURL
- CLI
- MCP
curl -X POST -H "Authorization: Bearer $TESTVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My Plugin", "description": "Test-data helpers.", "tools": ["make_customer"]}' \
"$TESTVIBE_SERVER/api/v1/ops/projects/$PROJECT/plugins"
testvibe plugins publish --name "My Plugin" --description "Test-data helpers." \
--tools "make_customer" --file source.js --visibility private
Tool publish_plugin — required name; optional description, category, version, tools, source, filename, visibility.
Response
201 Created — the created plugin document (same shape as a list_plugins entry), including the derived slug:
{
"slug": "my-plugin",
"name": "My Plugin",
"publisher": "Acme Inc",
"category": "Data & Utilities",
"version": "1.0.0",
"official": false,
"builtin": false,
"installed": true,
"tools": ["make_customer"]
}
Errors
| HTTP | When |
|---|---|
400 invalid_request | Missing name, or malformed JSON. |
404 not_found | No such project in this workspace. |