PinchTab SMCP Plugins
This directory holds plugins for SMCP (Model Context Protocol server for the Animus/Letta/Sanctum ecosystem). SMCP discovers plugins by scanning a directory for plugins/<name>/cli.py and running python cli.py --describe to get tool schemas.
SMCP contract (reference)
Instructions below match the SMCP plugin contract. If your SMCP version differs, prefer sanctumos/smcp and its docs.
- Discovery: SMCP scans the directory set in
MCP_PLUGINS_DIR(or its defaultplugins/). For each subdirectory<name>that contains a filecli.py, it runspython cli.py --describeand expects a single JSON object on stdout with:plugin:{ "name", "version", "description" }commands: array of{ "name", "description", "parameters": [ { "name", "type", "description", "required", "default" } ] }
- Fallback: If
--describeis not supported, SMCP may runpython cli.py --helpand scrape an "Available commands:" section (no param schemas). - Tool naming: Registered tools are
<plugin>__<command>(double underscore), e.g.pinchtab__navigate. Legacyplugin.commandmay still be supported. - Execution: For a tool call, SMCP runs
python cli.py <command> --arg1 val1 --arg2 val2 .... Argument names use kebab-case (--base-url,--instance-id). SMCP maps underscores to dashes; booleanstruebecome--flagonly; arrays become repeated--arg item. Default timeout is 300 seconds. The plugin must print a single JSON object to stdout; SMCP returns it as the tool result. - Plugin layout: Each plugin must live in a folder
<name>/withcli.py(required, and must be executable).__init__.py,README.md, andrequirements.txtare optional.
Installation (PinchTab plugin)
Point SMCP at this plugins directory
- Set
MCP_PLUGINS_DIRto the path of this directory (the one that contains thepinchtabfolder). - Example: if the repo is at
/home/me/pinchtab, setMCP_PLUGINS_DIR=/home/me/pinchtab/plugins. SMCP will then findpinchtab/cli.pyand discover the plugin. - Alternatively, copy the
pinchtabfolder into your existing SMCP plugins directory so you have.../plugins/pinchtab/cli.py.
- Set
Make the CLI executable
chmod +x /path/to/plugins/pinchtab/cli.pyNo Python dependencies for this plugin (stdlib only). Skip
pip install -r requirements.txtfor runtime.Restart the SMCP server so it rescans and loads the plugin.
Verify discovery
From the repo root:
python3 plugins/pinchtab/cli.py --describe | head -30
You should see JSON with "plugin": {"name": "pinchtab", ...} and "commands": [...].
PinchTab URL and auth
- The plugin defaults to
--base-url http://localhost:9867(orchestrator). Agents passbase_url, and optionallytokenandinstance_id, per tool call; no plugin-specific env vars are required. - If PinchTab is protected with
PINCHTAB_TOKEN, agents must passtokenin the tool arguments (or configure it in your MCP server if it supports per-plugin env).
pinchtab
Full SMCP plugin for the PinchTab HTTP API: health, instances, instance-start/stop, tabs, navigate, snapshot, action, actions, text, screenshot, pdf, evaluate, cookies-get, stealth-status.
- Path:
pinchtab/(so SMCP seesplugins/pinchtab/cli.py). - Describe:
python cli.py --describereturns the JSON schema above. - Tests:
cd pinchtab && python3 -m venv .venv && .venv/bin/pip install pytest && .venv/bin/pytest tests/ -v
See pinchtab/README.md for command list and usage.