Skip to main content
All tools return JSON-encoded results as text content. Each result follows the same discriminated union pattern used by the core library.

facet-list

List all facets declared by the project with their name, version, description, and install status. Input: None Output: JSON-encoded ListResult:
{
  "facets": [
    {
      "name": "viper",
      "version": "1.2.0",
      "description": "Planning and execution framework",
      "source": "remote",
      "installed": true,
      "requires": ["gh --version"],
      "resources": [
        { "type": "skill", "name": "viper-planning" },
        { "type": "agent", "name": "viper-agent" }
      ]
    }
  ]
}

facet-add

Cache a remote facet by URL, making it available to install. Input:
ParameterTypeDescription
urlstringURL of the remote facet.yaml manifest
Output: JSON-encoded CacheResult:
// Success
{ "success": true, "name": "viper", "version": "1.2.0" }

// Error
{ "success": false, "error": "Failed to fetch manifest: ..." }

facet-install

Install a facet by name, making its resources active in the project. Input:
ParameterTypeDescription
namestringName of the facet to install
Output: JSON-encoded InstallResult:
// Success
{
  "success": true,
  "facet": "viper",
  "resources": [
    { "name": "viper-planning", "type": "skill" },
    { "name": "viper-agent", "type": "agent" }
  ]
}

// Not found
{ "success": false, "facet": "viper", "reason": "not_found" }
When called through MCP, prerequisite approval is skipped (onPrereqApproval is not provided). Prereq checks still run if previously confirmed.

facet-update

Re-fetch a cached remote facet to check for updates. Input:
ParameterTypeDescription
namestringName of the remote facet to update
Output: JSON-encoded UpdateResult:
// Updated
{ "success": true, "name": "viper", "version": "1.3.0", "updated": true }

// Already current
{ "success": true, "name": "viper", "version": "1.2.0", "updated": false }

// Error
{ "success": false, "name": "viper", "error": "No remote facet named \"viper\" declared" }

facet-remove

Remove a facet from the project, uninstalling its resources and removing it from dependencies. Input:
ParameterTypeDescription
namestringName of the facet to remove
Output: JSON-encoded UninstallResult:
// Success
{
  "success": true,
  "facet": "viper",
  "removed": [
    { "name": "viper-planning", "type": "skill" },
    { "name": "viper-agent", "type": "agent" }
  ]
}

// Not found
{ "success": false, "facet": "viper", "reason": "not_found" }