{"_id":"@avantguardllc/halopsa-mcp","_rev":"5-5b46c44e29329663e6db4b988560878a","name":"@avantguardllc/halopsa-mcp","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.0":{"name":"@avantguardllc/halopsa-mcp","version":"1.0.0","keywords":["mcp","claude","halopsa","halo","psa","msp","itsm","decision-tree"],"author":{"name":"AvantGuard LLC"},"license":"Apache-2.0","_id":"@avantguardllc/halopsa-mcp@1.0.0","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"bin":{"halopsa-mcp":"dist/index.js"},"dist":{"shasum":"a246852adf672c4718a2657e5b2841458830fa20","tarball":"https://registry.npmjs.org/@avantguardllc/halopsa-mcp/-/halopsa-mcp-1.0.0.tgz","fileCount":87,"integrity":"sha512-HQ4y2utBKpFL4G6HaadhwBuJpC747n5u5Hy0QbSfx7xYLJMZFbtah8shgQrGqiJOTiHhfVUV7KH+Bg5HVARYEA==","signatures":[{"sig":"MEQCIBmdApF6+MPPXtbkl1JpALr0swWBxqSDrhx8x8SkpKUAAiBovL8/yi8Bjb86tH+yDN2SYcJHyEztjUj+zR9rC1musQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240260},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2fba0e01fcf930aa285d48d92f2aa605c83a07f5","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"_npmVersion":"10.8.2","description":"HaloPSA MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","@avantguardllc/node-halopsa":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","@typescript-eslint/parser":"^6.19.0","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/halopsa-mcp_1.0.0_1777981306308_0.30840709930421206","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@avantguardllc/halopsa-mcp","version":"1.1.0","keywords":["mcp","claude","halopsa","halo","psa","msp","itsm","decision-tree"],"author":{"name":"AvantGuard LLC"},"license":"Apache-2.0","_id":"@avantguardllc/halopsa-mcp@1.1.0","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"bin":{"halopsa-mcp":"dist/index.js"},"dist":{"shasum":"0da89593fbef6ef2aeea77182ad3bbb7ff1b9079","tarball":"https://registry.npmjs.org/@avantguardllc/halopsa-mcp/-/halopsa-mcp-1.1.0.tgz","fileCount":91,"integrity":"sha512-EYlXfpl3Ae7Y3aIzY17T3vqplwR27ozyqn9iPNGjUqVO1yonziVjvZ8AxPT7a/Ko+RZIwBgbrPotVcIilXiMfg==","signatures":[{"sig":"MEUCIG4x4U994LYejI1s3zz2lTUs3X7NJAgQJi4zUSMBSwEkAiEAhOUfmj4PcAU++lTWPOmMRxQEY/3Lp10C0xutimPNr6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252728},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5d0a345568a74f5067feee99b9d9145387d3aeac","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"_npmVersion":"10.8.2","description":"HaloPSA MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","@avantguardllc/node-halopsa":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","@typescript-eslint/parser":"^6.19.0","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/halopsa-mcp_1.1.0_1778023359742_0.13279131423475365","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@avantguardllc/halopsa-mcp","version":"1.1.1","keywords":["mcp","claude","halopsa","halo","psa","msp","itsm","decision-tree"],"author":{"name":"AvantGuard LLC"},"license":"Apache-2.0","_id":"@avantguardllc/halopsa-mcp@1.1.1","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"bin":{"halopsa-mcp":"dist/index.js"},"dist":{"shasum":"aa349e54224638b306a49783fe0c7e21b228e38a","tarball":"https://registry.npmjs.org/@avantguardllc/halopsa-mcp/-/halopsa-mcp-1.1.1.tgz","fileCount":91,"integrity":"sha512-45Lsyyfc+DVA7AlIbCykEGBXXAjhzH+kbcBKF5Tow67rIiG1UFSHqiRIHGPy/Qo/mQBecqZRyBbODkn5SwB0wA==","signatures":[{"sig":"MEYCIQDPhhfvZDs33c5Rg6yk/JwZbm/l4qwOArVlpN7DaheHQwIhAKVMx5uZVpGEyJ04TL7B5xeTRvkPyaQxfKQN0qmiIZZl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1af31ff3b30aa2060cf71f1d2335c5c64599e4fd","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"_npmVersion":"10.8.2","description":"HaloPSA MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","@avantguardllc/node-halopsa":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","@typescript-eslint/parser":"^6.19.0","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/halopsa-mcp_1.1.1_1778024948256_0.36405915270442213","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@avantguardllc/halopsa-mcp","version":"1.1.2","keywords":["mcp","claude","halopsa","halo","psa","msp","itsm","decision-tree"],"author":{"name":"AvantGuard LLC"},"license":"Apache-2.0","_id":"@avantguardllc/halopsa-mcp@1.1.2","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"bin":{"halopsa-mcp":"dist/index.js"},"dist":{"shasum":"38a6f38d744acd74e82c2857e5ddb3612727470f","tarball":"https://registry.npmjs.org/@avantguardllc/halopsa-mcp/-/halopsa-mcp-1.1.2.tgz","fileCount":123,"integrity":"sha512-Kut4V/CaidCkQAynYP6jqejlwqyurjXFyeyvGwYwst877guUi61RwR5rum1Zye6EFPtQxVsfMow2Unqbl0XqAA==","signatures":[{"sig":"MEQCIHYpcBeH61YGkbOJbCPIvFu0S60I5CSP5LAOSlDkOlUVAiBgt4577j081tJiOs0kYSGKaRD/sOIm8aaLyQEgVW2lZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339607},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9ce982b1ee44340326125017f87ceb420f84d1cb","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:mcpb":"node scripts/pack-mcpb.js","typecheck":"tsc --noEmit","test:watch":"vitest","validate:mcpb":"mcpb validate manifest.json"},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"_npmVersion":"10.8.2","description":"HaloPSA MCP server with decision tree architecture for Claude","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","@avantguardllc/node-halopsa":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","vitest":"^1.2.0","typescript":"^5.3.3","@types/node":"^20.11.0","@typescript-eslint/parser":"^6.19.0","@typescript-eslint/eslint-plugin":"^6.19.0"},"_npmOperationalInternal":{"tmp":"tmp/halopsa-mcp_1.1.2_1778070655385_0.7798355430921224","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@avantguardllc/halopsa-mcp","version":"1.1.3","description":"HaloPSA MCP server with decision tree architecture for Claude","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"halopsa-mcp":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","lint":"eslint src --ext .ts","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","pack:mcpb":"node scripts/pack-mcpb.js","validate:mcpb":"mcpb validate manifest.json"},"keywords":["mcp","claude","halopsa","halo","psa","msp","itsm","decision-tree"],"author":{"name":"AvantGuard LLC"},"license":"Apache-2.0","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","@avantguardllc/node-halopsa":"^1.0.2"},"devDependencies":{"@types/node":"^20.11.0","eslint":"^8.56.0","@typescript-eslint/eslint-plugin":"^6.19.0","@typescript-eslint/parser":"^6.19.0","typescript":"^5.3.3","vitest":"^1.2.0"},"engines":{"node":">=20.0.0"},"_id":"@avantguardllc/halopsa-mcp@1.1.3","gitHead":"066c9d8118ce9f6d41569944b11677cea82636a8","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-TjmTPptK6HhFpqrvFN2Y7ViOj0J5OSpekFdcmkNd9A+TWMZzsRF2PkwS8EExVmox35u+MHTx0E/ApkLTMFJS4A==","shasum":"d636f029c828cda6c14ac1ef4767133c23907661","tarball":"https://registry.npmjs.org/@avantguardllc/halopsa-mcp/-/halopsa-mcp-1.1.3.tgz","fileCount":123,"unpackedSize":346771,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYyGovmIyy03LgyPz1XF0OJD5qyTqLEabHKylJbeTUsQIgJTnVD8Bs1tS6m8IAjCTMQwBgaEMWztzIQJkRVOPYsqU="}]},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"directories":{},"maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/halopsa-mcp_1.1.3_1778072019302_0.18437353448683114"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-05T11:41:46.207Z","modified":"2026-05-06T12:53:39.554Z","1.0.0":"2026-05-05T11:41:46.488Z","1.1.0":"2026-05-05T23:22:39.944Z","1.1.1":"2026-05-05T23:49:08.453Z","1.1.2":"2026-05-06T12:30:55.551Z","1.1.3":"2026-05-06T12:53:39.458Z"},"author":{"name":"AvantGuard LLC"},"license":"Apache-2.0","keywords":["mcp","claude","halopsa","halo","psa","msp","itsm","decision-tree"],"description":"HaloPSA MCP server with decision tree architecture for Claude","maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"readme":"# HaloPSA MCP Server\n\nA Model Context Protocol (MCP) server for interacting with HaloPSA, featuring a decision tree architecture for efficient tool loading.\n\n## Architecture\n\nThis MCP server uses a **hierarchical tool loading approach** instead of exposing all tools upfront:\n\n1. **Navigation Phase**: Initially exposes only a navigation tool (`halopsa_navigate`)\n2. **Domain Selection**: User selects a domain (tickets, clients, assets, agents, invoices, workflows, and more)\n3. **Domain Tools**: Server exposes domain-specific tools after selection\n4. **Lazy Loading**: Domain handlers and the HaloPSA client are loaded on-demand\n\nThis architecture provides:\n- Reduced cognitive load (fewer tools to choose from)\n- Faster initial load times\n- Better organization of related operations\n- Clear navigation state\n\n## Installation\n\n```bash\nnpm install @avantguardllc/halopsa-mcp\n```\n\n## Configuration\n\nSet the following environment variables:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `HALOPSA_CLIENT_ID` | Yes | OAuth 2.0 Client ID |\n| `HALOPSA_CLIENT_SECRET` | Yes | OAuth 2.0 Client Secret |\n| `HALOPSA_TENANT` | One of | Tenant name (e.g., `yourcompany`) |\n| `HALOPSA_BASE_URL` | these | Explicit base URL (e.g., `https://yourcompany.halopsa.com`) |\n\n## Usage\n\n### Running Standalone\n\n```bash\n# Set credentials\nexport HALOPSA_CLIENT_ID=\"your-client-id\"\nexport HALOPSA_CLIENT_SECRET=\"your-client-secret\"\nexport HALOPSA_TENANT=\"yourcompany\"\n\n# Run the server\nnpx @avantguardllc/halopsa-mcp\n```\n\n### Claude Desktop Configuration\n\nAdd to your Claude Desktop `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"halopsa\": {\n      \"command\": \"npx\",\n      \"args\": [\"@avantguardllc/halopsa-mcp\"],\n      \"env\": {\n        \"HALOPSA_CLIENT_ID\": \"your-client-id\",\n        \"HALOPSA_CLIENT_SECRET\": \"your-client-secret\",\n        \"HALOPSA_TENANT\": \"yourcompany\"\n      }\n    }\n  }\n}\n```\n\n### Docker\n\n```bash\ndocker build -t halopsa-mcp .\ndocker run -e HALOPSA_CLIENT_ID=xxx -e HALOPSA_CLIENT_SECRET=*** -e HALOPSA_TENANT=yourcompany halopsa-mcp\n```\n\n## Available Domains\n\n### Tickets\nManage support tickets, create new tickets, update status, add actions/notes.\n\nTools:\n- `halopsa_tickets_list` - List tickets with filters\n- `halopsa_tickets_get` - Get ticket details\n- `halopsa_tickets_create` - Create a new ticket\n- `halopsa_tickets_update` - Update an existing ticket\n- `halopsa_tickets_add_action` - Add a note/action to a ticket\n\n### Clients\nManage companies/clients in HaloPSA.\n\nTools:\n- `halopsa_clients_list` - List clients\n- `halopsa_clients_get` - Get client details\n- `halopsa_clients_create` - Create a new client\n- `halopsa_clients_search` - Search clients by name\n\n### Assets\nManage configuration items/assets.\n\nTools:\n- `halopsa_assets_list` - List assets with filters\n- `halopsa_assets_get` - Get asset details\n- `halopsa_assets_search` - Search assets\n- `halopsa_assets_list_types` - List available asset types\n\n### Agents\nView technicians and teams.\n\nTools:\n- `halopsa_agents_list` - List agents/technicians\n- `halopsa_agents_get` - Get agent details\n- `halopsa_teams_list` - List teams\n\n### Invoices\nView billing and invoices.\n\nTools:\n- `halopsa_invoices_list` - List invoices with filters\n- `halopsa_invoices_get` - Get invoice details\n\n### Workflows\nManage HaloPSA automation workflows — ticket routing, approval chains, escalations, and SLA actions.\n\nTools:\n- `halopsa_workflows_list` - List all workflows\n- `halopsa_workflows_get` - Get a single workflow by ID\n- `halopsa_workflows_steps` - Get all workflow steps\n- `halopsa_workflows_create` - Create a new workflow\n- `halopsa_workflows_delete` - Delete a workflow by ID\n\n### Ticket Types\nManage ticket type definitions used to categorize tickets.\n\nTools:\n- `halopsa_tickettypes_list` - List all ticket types\n- `halopsa_tickettypes_get` - Get a specific ticket type by ID\n- `halopsa_tickettypes_create` - Create or update a ticket type\n- `halopsa_tickettypes_delete` - Delete a ticket type by ID\n\n### Statuses\nManage ticket status definitions.\n\nTools:\n- `halopsa_statuses_list` - List all statuses\n- `halopsa_statuses_get` - Get a specific status by ID\n- `halopsa_statuses_create` - Create or update a status\n- `halopsa_statuses_delete` - Delete a status by ID\n\n### Outcomes\nManage ticket outcome/resolution definitions.\n\nTools:\n- `halopsa_outcomes_list` - List all outcomes\n- `halopsa_outcomes_get` - Get a specific outcome by ID\n- `halopsa_outcomes_create` - Create or update an outcome\n- `halopsa_outcomes_delete` - Delete an outcome by ID\n\n### Actions\nManage ticket action templates used for notes, updates, and replies.\n\nTools:\n- `halopsa_actions_list` - List all action templates\n- `halopsa_actions_get` - Get a specific action template by ID\n- `halopsa_actions_create` - Create or update an action template\n- `halopsa_actions_delete` - Delete an action template by ID\n\n### Custom Fields\nManage custom field definitions that extend entities like tickets, clients, and assets.\n\nTools:\n- `halopsa_customfields_list` - List all custom field definitions\n- `halopsa_customfields_get` - Get a specific custom field by ID\n- `halopsa_customfields_create` - Create or update a custom field definition\n- `halopsa_customfields_delete` - Delete a custom field definition by ID\n\n### Custom Tables\nManage custom table definitions for structured data linked to entities.\n\nTools:\n- `halopsa_customtables_list` - List all custom tables\n- `halopsa_customtables_get` - Get a specific custom table by ID\n- `halopsa_customtables_create` - Create or update a custom table\n- `halopsa_customtables_delete` - Delete a custom table by ID\n\n### Custom Tabs\nManage custom tab layouts on entity detail views.\n\nTools:\n- `halopsa_customtabs_list` - List all custom tabs\n- `halopsa_customtabs_get` - Get a specific custom tab by ID\n- `halopsa_customtabs_create` - Create or update a custom tab\n- `halopsa_customtabs_delete` - Delete a custom tab by ID\n\n### Custom Buttons\nManage custom button definitions on entity views.\n\nTools:\n- `halopsa_custombuttons_list` - List all custom buttons\n- `halopsa_custombuttons_get` - Get a specific custom button by ID\n- `halopsa_custombuttons_create` - Create or update a custom button\n- `halopsa_custombuttons_delete` - Delete a custom button by ID\n\n## Navigation Tools\n\nAlways available:\n- `halopsa_navigate` - Select a domain to work with\n- `halopsa_status` - Show current state and credential status\n- `halopsa_back` - Return to main menu (when in a domain)\n\n## Example Workflow\n\n```\nUser: Check my tickets\nClaude: [calls halopsa_navigate with domain=\"tickets\"]\n       -> Navigated to tickets domain. Available tools: ...\n\nUser: List open tickets\nClaude: [calls halopsa_tickets_list with open_only=true]\n       -> [ticket list results]\n\nUser: Now show me clients\nClaude: [calls halopsa_back]\n       -> Navigated back to main menu.\n       [calls halopsa_navigate with domain=\"clients\"]\n       -> Navigated to clients domain.\n```\n\n## Rate Limiting\n\nHaloPSA has a rate limit of 500 requests per 3-minute window. The client handles this with automatic request throttling.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}