Iru (formerly Kandji) MCP Server - AI-driven device management through Model Context Protocol
This is a 23-tool MDM integration server with generally adequate naming and descriptions, but several systematic gaps reduce overall quality. Tool names follow verb_noun patterns (search_, get_, list_, execute_) which is strong. Most tools have descriptions in the 40-200 character range, appropriate for LLM parsing. However, schema completeness varies: some tools (e.g., get_device_details, search_devices_by_criteria) have well-typed input schemas with enum constraints, but others lack visible output schema documentation. Error handling is minimal, there is a confirmation pattern for destructive actions (execute_device_action with confirm flag), but no recovery guidance in error messages. The tool set is well-composed (each tool has a single responsibility) and parameter naming is consistent (device_id, user_id, cve_id all use type suffixes), but description quality for parameters is inconsistent, some are detailed, others are bare one-liners. The destructive action tool (execute_device_action) properly gates erase with confirmation, which is good security practice. Overall, the server is functional but falls short of 'A' grade precision in output documentation and error messaging.
Execute device actions (lock, restart, shutdown, erase). REQUIRES explicit confirmation (confirm=true) for all actions. Erase action is DESTRUCTIVE and will wipe the device.
Get organization-wide compliance summary showing compliant vs non-compliant devices by platform.
Retrieve device activity history for a specific device.
Retrieve installed apps for a specific device.
Retrieve detailed information about a specific device by its UUID. Returns hardware specs, software version, user info, and MDM status.
Retrieve library items assigned to a specific device.
Output schemas not documented in tool definitions. For tools like get_compliance_summary, list_blueprints, get_device_apps, get_device_library_items, get_device_parameters, LLMs cannot predict the response structure, making it impossible to plan chained calls or extract nested fields reliably.
Error handling lacks recovery guidance. execute_device_action requires confirm=true but has no error response documented for what happens if confirm=false or if the action fails mid-execution. Other tools (e.g., search_devices_by_criteria) have no documented error conditions or recovery paths.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get lost mode details for a specific device.
Get device parameters and settings for a specific device.
Get current status and MDM information for a specific device.
Get Kandji tenant licensing and utilization information. Shows total licenses, used licenses, available licenses, and utilization percentage.
Get configured tags from Kandji. Optionally filter by search term.
Get detailed threat information.
Get specific user details by user ID.
Get detailed information about a specific CVE vulnerability.
List all devices affected by a specific CVE vulnerability.
List all software packages affected by a specific CVE vulnerability.
List audit events with optional filtering and pagination.
Get behavioral threat detections from Kandji security monitoring.
List all device blueprints in the Kandji tenant. Blueprints define device configurations and policies.
List users from user directory integrations with optional filtering.
List all vulnerabilities grouped by CVE with optional filtering and pagination.
List all vulnerability detections across the entire device fleet.
Filter devices by name, platform, or blueprint. Use this to find devices matching specific criteria.
Some parameter descriptions are minimal (under 30 chars) and lack format/range constraints. E.g., 'sort_by' in list_vulnerabilities has description 'Field to sort by' with no examples of valid fields; 'filter' in list_vulnerability_detections is 'JSON filter string' with no schema for the JSON structure.
Pagination parameters inconsistently named and documented. Some tools use 'page' (list_vulnerabilities, list_affected_devices), others use 'after' (list_vulnerability_detections), others use 'offset' (get_device_activity, list_audit_events). No tool documents whether results are capped or how to detect end-of-results.
Some tools accept free-form string parameters (e.g., 'classification' in list_behavioral_detections, 'threat_id' in list_behavioral_detections) without enum constraints or documented valid values. This invites LLM hallucination of invalid values.