{
  "$schema": "./tools.config.schema.json",
  "_comment": "Tool configuration for mcp-min. Edit descriptions and enable/disable tools without touching JS code.",
  "tools": {
    "envs-list": {
      "enabled": true,
      "description": "List configured environments from .pos (name and url)"
    },
    "logs-fetch": {
      "enabled": true,
      "description": "Fetch recent logs in batches (NDJSON semantics, returns JSON array here). Mirrors pos-cli fetch-logs."
    },
    "liquid-exec": {
      "enabled": true,
      "description": "Render a Liquid template on a platformOS instance (pass-through to /api/app_builder/liquid_exec)."
    },
    "graphql-exec": {
      "enabled": true,
      "description": "Execute GraphQL query/mutation on a platformOS instance via /api/graph."
    },
    "generators-list": {
      "enabled": true,
      "description": "List available generators discovered under **/generators/*/index.js with required and optional args"
    },
    "generators-help": {
      "enabled": true,
      "description": "Show detailed help for a specific generator"
    },
    "generators-run": {
      "enabled": true,
      "description": "Run a yeoman generator by path with arguments and options"
    },
    "migrations-list": {
      "enabled": true,
      "description": "List migrations deployed to the server with their current status."
    },
    "migrations-generate": {
      "enabled": true,
      "description": "Generate a migration on server and write local file unless skipWrite=true."
    },
    "migrations-run": {
      "enabled": true,
      "description": "Run a specific migration identified by timestamp or full name."
    },
    "deploy-start": {
      "enabled": true,
      "description": "Deploy to platformOS instance. Creates archive from app/ and modules/ directories, uploads it, and deploys assets directly to S3."
    },
    "deploy-status": {
      "enabled": true,
      "description": "Get current deployment status using Gateway.getStatus(id)."
    },
    "deploy-wait": {
      "enabled": true,
      "description": "Wait for deployment to finish. Polls Gateway.getStatus(id) every intervalMs (default 1000ms) and errors on status=error."
    },
    "data-import": {
      "enabled": true,
      "description": "Import data to platformOS instance. Accepts JSON (converted to CSV internally) or ZIP file with CSV files."
    },
    "data-import-status": {
      "enabled": true,
      "description": "Check the status of a data import job. Poll until status is \"done\" or \"failed\"."
    },
    "data-export": {
      "enabled": true,
      "description": "Start data export from platformOS instance. Returns job ID for status polling. When complete, status will include data or zip_file_url."
    },
    "data-export-status": {
      "enabled": true,
      "description": "Check the status of a data export job. When done, returns data (JSON) or zip_file_url (ZIP)."
    },
    "data-clean": {
      "enabled": true,
      "description": "Start data clean operation to remove data from a platformOS instance. DESTRUCTIVE - requires confirmation. Returns job ID for status polling."
    },
    "data-clean-status": {
      "enabled": true,
      "description": "Check the status of a data clean job. Poll until status is \"done\" or \"failed\"."
    },
    "data-validate": {
      "enabled": true,
      "description": "Validate JSON data against platformOS schemas before import. Checks required fields (id, type, properties, created_at, updated_at), verifies types match schema files in app/schema/, and validates property names and types."
    },
    "unit-tests-run": {
      "enabled": true,
      "description": "Run platformOS tests via /_tests/run endpoint. Returns parsed test results with assertions count, failures, and timing."
    },
    "tests-run-async": {
      "enabled": true,
      "description": "Trigger a background platformOS test run via /_tests/run_async. Returns immediately with a run ID. Use tests-run-async-result to poll for completion."
    },
    "tests-run-async-result": {
      "enabled": true,
      "description": "Check the result of an async test run by ID via /_tests/results/:id. Returns status: pending, success, failed, or error. Poll until done=true."
    },
    "check": {
      "enabled": false,
      "description": "Run platformos-check linter to analyze the app for best practice violations. Checks Liquid and JSON files. Requires Ruby gem. Superseded by check-run."
    },
    "check-run": {
      "enabled": true,
      "description": "Run platformos-check Node.js linter on the app. Analyzes Liquid/JSON files for violations. No Ruby required. Requires @platformos/platformos-check-node."
    },
    "sync-file": {
      "enabled": true,
      "description": "Sync a file with a platformOS instance (upload or delete)."
    },
    "uploads-push": {
      "enabled": true,
      "description": "Upload a ZIP file containing property uploads to platformOS instance. The ZIP should contain files referenced by upload-type properties."
    },
    "constants-list": {
      "enabled": true,
      "description": "List all constants configured on a platformOS instance."
    },
    "constants-set": {
      "enabled": true,
      "description": "Set a constant on a platformOS instance. Creates or updates the constant."
    },
    "constants-unset": {
      "enabled": true,
      "description": "Delete a constant from a platformOS instance."
    },
    "instance-create": {
      "enabled": true,
      "description": "Create a new platformOS instance via Partner Portal API. Returns job acknowledgment."
    },
    "partners-list": {
      "enabled": true,
      "description": "List partners from Partner Portal. Optionally fetch billing plans for a specific partner."
    },
    "partner-get": {
      "enabled": true,
      "description": "Get partner details including available billing plans from Partner Portal."
    },
    "endpoints-list": {
      "enabled": true,
      "description": "List available regions/endpoints for instance creation from Partner Portal."
    },
    "env-add": {
      "enabled": true,
      "description": "Add environment to .pos config. Streams verification URL for user to open, polls for authorization (up to 60s), then saves token."
    }
  }
}